From 56c450bf0f440979383dfb25b0654aca5c6cee4f Mon Sep 17 00:00:00 2001 From: jos Date: Sat, 15 Apr 2017 12:28:46 +0200 Subject: [PATCH] Released v5.6.0 --- HISTORY.md | 13 +- dist/jsoneditor-minimalist.js | 422 +- dist/jsoneditor-minimalist.map | 2 +- dist/jsoneditor-minimalist.min.js | 12 +- dist/jsoneditor.css | 1 - dist/jsoneditor.js | 14420 +++++++++++++------------- dist/jsoneditor.map | 2 +- dist/jsoneditor.min.css | 2 +- dist/jsoneditor.min.js | 33 +- docs/api.md | 6 +- examples/09_readonly_text_mode.html | 8 +- gulpfile.js | 3 +- package.json | 16 +- 13 files changed, 7405 insertions(+), 7535 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 59eab00..1fb8337 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,11 +3,18 @@ https://github.com/josdejong/jsoneditor -## not yet released, version 5.5.12 +## 2017-04-15, version 5.6.0 -- Fixed #309: already loaded version of Ace being overwritten by the embedded - version of JSONEditor. +- Implemented readonly option for modes `text` and `code.` + Thanks @walkerrandolphsmith. +- Upgraded dependencies (`brance` and `ajv`) to the latest versions. +- Fixed not being able to move focus to enum select box when clicking + a JSON Schema warning. +- Fixed #309: already loaded version of Ace being overwritten by the + embedded version of JSONEditor. - Fixed #368: Mode selection drop down not fully visible on small screen. +- Fixed #253: Optimize the input experience of Chinese IME. + Thanks @chinesedfan. ## 2017-01-06, version 5.5.11 diff --git a/dist/jsoneditor-minimalist.js b/dist/jsoneditor-minimalist.js index 76584f9..35c43bb 100644 --- a/dist/jsoneditor-minimalist.js +++ b/dist/jsoneditor-minimalist.js @@ -24,8 +24,8 @@ * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.5.11 - * @date 2017-04-14 + * @version 5.6.0 + * @date 2017-04-15 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -4896,7 +4896,11 @@ return /******/ (function(modules) { // webpackBootstrap case 'value': default: - if (dom.value && !this._hasChilds()) { + if (dom.select) { + // enum select box + dom.select.focus(); + } + else if (dom.value && !this._hasChilds()) { dom.value.focus(); util.selectContentEditable(dom.value); } @@ -7983,14 +7987,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var ace; - try { - ace = __webpack_require__(13); - } - catch (err) { - // failed to load ace, no problem, we will fall back to plain text - } - + var ace = __webpack_require__(13); var ModeSwitcher = __webpack_require__(11); var util = __webpack_require__(4); @@ -8014,6 +8011,8 @@ return /******/ (function(modules) { // webpackBootstrap * triggered on change * {function} onModeChange Callback method * triggered after setMode + * {function} onEditable Determine if textarea is readOnly + * readOnly defaults true * {Object} ace A custom instance of * Ace editor. * {boolean} escapeUnicode If true, unicode @@ -8036,6 +8035,7 @@ return /******/ (function(modules) { // webpackBootstrap // grab ace from options if provided var _ace = options.ace ? options.ace : ace; + // TODO: make the option options.ace deprecated, it's not needed anymore (see #309) // determine mode this.mode = (options.mode == 'code') ? 'code' : 'text'; @@ -8049,8 +8049,13 @@ return /******/ (function(modules) { // webpackBootstrap // determine theme this.theme = options.theme || DEFAULT_THEME; - if (this.theme === DEFAULT_THEME && window.ace) { - __webpack_require__(17); + if (this.theme === DEFAULT_THEME && _ace) { + try { + __webpack_require__(17); + } + catch (err) { + console.error(err); + } } var me = this; @@ -8122,6 +8127,11 @@ return /******/ (function(modules) { // webpackBootstrap }); } + var emptyNode = {}; + var isReadOnly = (this.options.onEditable + && typeof(this.options.onEditable === 'function') + && !this.options.onEditable(emptyNode)); + this.content = document.createElement('div'); this.content.className = 'jsoneditor-outer'; this.frame.appendChild(this.content); @@ -8137,6 +8147,7 @@ return /******/ (function(modules) { // webpackBootstrap var aceEditor = _ace.edit(this.editorDom); aceEditor.$blockScrolling = Infinity; aceEditor.setTheme(this.theme); + aceEditor.setOptions({ readOnly: isReadOnly }); aceEditor.setShowPrintMargin(false); aceEditor.setFontSize(13); aceEditor.getSession().setMode('ace/mode/json'); @@ -8184,6 +8195,7 @@ return /******/ (function(modules) { // webpackBootstrap textarea.spellcheck = false; this.content.appendChild(textarea); this.textarea = textarea; + this.textarea.readOnly = isReadOnly; // register onchange event if (this.textarea.oninput === null) { @@ -8483,12 +8495,25 @@ return /******/ (function(modules) { // webpackBootstrap /* 13 */ /***/ function(module, exports, __webpack_require__) { - // load brace - var ace = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"brace\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); + var ace + if (window.ace) { + // use the already loaded instance of Ace + ace = window.ace + } + else { + try { + // load brace + ace = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"brace\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); - // load required ace modules - __webpack_require__(14); - __webpack_require__(16); + // load required Ace plugins + __webpack_require__(14); + __webpack_require__(16); + } + catch (err) { + // failed to load brace (can be minimalist bundle). + // No worries, the editor will fall back to plain text if needed. + } + } module.exports = ace; @@ -8605,363 +8630,6 @@ return /******/ (function(modules) { // webpackBootstrap exports.MatchingBraceOutdent = MatchingBraceOutdent; }); - ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(acequire, exports, module) { - "use strict"; - - var oop = acequire("../../lib/oop"); - var Behaviour = acequire("../behaviour").Behaviour; - var TokenIterator = acequire("../../token_iterator").TokenIterator; - var lang = acequire("../../lib/lang"); - - var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; - var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - var context; - var contextCache = {}; - var initContext = function(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(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() { - 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) { - 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) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && 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; - } 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 - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || 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)) { - 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/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; @@ -9172,7 +8840,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports) { module.exports.id = 'ace/mode/json_worker'; - module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener(\"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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"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){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; + module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener(\"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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"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){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }, /* 16 */ @@ -9222,6 +8890,7 @@ return /******/ (function(modules) { // webpackBootstrap }\ .ace_search_field {\ background-color: white;\ + color: black;\ border-right: 1px solid #cbcbcb;\ border: 0 none;\ -webkit-box-sizing: border-box;\ @@ -9641,6 +9310,7 @@ return /******/ (function(modules) { // webpackBootstrap .ace-jsoneditor.ace_editor {\ font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ line-height: 1.3;\ + background-color: #fff;\ }\ .ace-jsoneditor .ace_print-margin {\ width: 1px;\ diff --git a/dist/jsoneditor-minimalist.map b/dist/jsoneditor-minimalist.map index 2cd8022..d28e55e 100644 --- a/dist/jsoneditor-minimalist.map +++ b/dist/jsoneditor-minimalist.map @@ -1 +1 @@ -{"version":3,"sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","node","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","search","hasOwnProperty","debounce","bind","Function","content","table","params","field","value","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","updateDom","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","index","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","splice","obj","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","charAt","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","quote","parseKey","specialValues","key","regexp","test","match","join","escapeUnicodeChars","replace","charCodeAt","toString","a","b","object","Number","String","Boolean","RegExp","isUrlRegex","isUrl","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","str","hash","popStack","n","stack","vstack","lstack","lex","token","self","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","path","getPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","fieldText","_escapeHTML","_updateSchema","_updateDomIndexes","_findSchema","_findEnum","composite","oneOf","anyOf","allOf","childSchema","properties","_createDomValue","href","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","sre","dre","hre","ore","s","insensitive","x","y","xN","yN","xD","parseInt","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","MAX_ERRORS","DEFAULT_THEME","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","force","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","acequire","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","Behaviour","TokenIterator","lang","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","session","getCursorPosition","getSelectionRange","getTextRange","getWrapBehavioursEnabled","isSaneInsertion","inMultiSelectMode","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","stringRepeat","clearMaybeInsertedClosing","next_indent","getTabString","isMultiLine","leftChar","getTokenAt","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","tokenRe","isWordBefore","isWordAfter","iterator","$matchTokenType","getCurrentToken","iterator2","stepForward","getCurrentTokenRow","types","bracket","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","src","searchboxCss","HashHandler","keyUtil","importCssString","showReplaceForm","div","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","isDark","cssClass","cssText"],"mappings":"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","file":"jsoneditor-minimalist.map"} \ No newline at end of file +{"version":3,"sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","node","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","search","hasOwnProperty","debounce","bind","Function","content","table","params","field","value","_setRoot","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","updateDom","recurse","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","index","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","splice","obj","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","charAt","prev","chars","match","quote","test","pp","specialValues","key","regexp","join","escapeUnicodeChars","replace","charCodeAt","toString","a","b","object","Number","String","Boolean","RegExp","isUrlRegex","isUrl","getAbsoluteLeft","elem","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","additionalProperty","insideRect","margin","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","str","hash","lex","token","self","lexer","stack","vstack","lstack","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","n","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","unput","less","pastInput","past","upcomingInput","pre","tempMatch","lines","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","searchFieldActive","searchValueActive","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","path","getPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","count","checkbox","tdCheckbox","checked","enum","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","fieldText","_escapeHTML","_updateSchema","_updateDomIndexes","_findSchema","_findEnum","composite","oneOf","anyOf","allOf","childSchema","properties","_createDomValue","href","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","re","sre","dre","hre","s","insensitive","x","y","xN","yN","xD","parseInt","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","emptyNode","isReadOnly","editorDom","edit","$blockScrolling","Infinity","setTheme","setOptions","readOnly","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","acequire","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","session","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","isMultiLine","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CstyleBehaviour","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","src","lang","HashHandler","keyUtil","importCssString","showReplaceForm","div","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","getTextRange","isDark","cssClass","cssText"],"mappings":"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","file":"jsoneditor-minimalist"} \ No newline at end of file diff --git a/dist/jsoneditor-minimalist.min.js b/dist/jsoneditor-minimalist.min.js index f2285da..e635260 100644 --- a/dist/jsoneditor-minimalist.min.js +++ b/dist/jsoneditor-minimalist.min.js @@ -24,12 +24,10 @@ * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.5.11 - * @date 2017-04-14 + * @version 5.6.0 + * @date 2017-04-15 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e,t,n){if(!(this instanceof i))throw new Error('JSONEditor constructor called without "new".');var o=l.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,n)}var o;try{o=n(!function(){var e=new Error('Cannot find module "ajv"');throw e.code="MODULE_NOT_FOUND",e}())}catch(r){}var s=n(1),a=n(12),l=n(4);i.modes={},i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._create=function(e,t,n){this.container=e,this.options=t||{},this.json=n||{};var i=this.options.mode||"tree";this.setMode(i)},i.prototype.destroy=function(){},i.prototype.set=function(e){this.json=e},i.prototype.get=function(){return this.json},i.prototype.setText=function(e){this.json=l.parse(e)},i.prototype.getText=function(){return JSON.stringify(this.json)},i.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},i.prototype.getName=function(){return this.options&&this.options.name},i.prototype.setMode=function(e){var t,n,o=this.container,r=l.extend({},this.options),s=r.mode;r.mode=e;var a=i.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==a.data;if(n=this.getName(),t=this[c?"getText":"get"](),this.destroy(),l.clear(this),l.extend(this,a.mixin),this.create(o,r),this.setName(n),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(d){console.error(d)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(d){console.error(d)}}catch(d){this._onError(d)}},i.prototype.getMode=function(){return this.options.mode},i.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},i.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(n){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},i.prototype.validate=function(){},i.prototype.refresh=function(){},i.registerMode=function(e){var t,n;if(l.isArray(e))for(t=0;te&&n.scrollTop>0?this.autoScrollStep=(i+s-e)/3:e>r-s&&o+n.scrollTop3?(n.scrollTop+=o/3,i.animateCallback=t,i.animateTimeout=setTimeout(a,50)):(t&&t(!0),n.scrollTop=s,delete i.animateTimeout,delete i.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var n=t.target;e(t),"BUTTON"==n.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var n=document.createElement("button");n.type="button",n.className="jsoneditor-expand-all",n.title="Expand all fields",n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var i=document.createElement("button");if(i.type="button",i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var o=document.createElement("button");o.type="button",o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.type="button",s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value&&e.target!=t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,n=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+n*n),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var n=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){n._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){n._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var n=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;n&&i&&(this.multiselection.nodes=this._findTopLevelNodes(n,i),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var n=e.getNodePath(),i=t.getNodePath(),o=0;o=0},i.prototype.canRedo=function(){return this.index=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function r(){for(d+=2;di;i++){var r=n[i];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,n;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,n;window.getSelection&&document.createRange&&(n=document.createRange(),n.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(n))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var n=window.getSelection();if(n){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,n){var i=void 0==n;if(i&&(n={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return n.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],d=c?c.nodeName:void 0;d&&"DIV"!=d&&"P"!=d&&"BR"!=d&&(r+="\n",n.flush()),r+=t.getInnerText(l,n),n.set("\n")}else"BR"==l.nodeName?(r+=n.flush(),n.set("\n")):r+=t.getInnerText(l,n)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?n.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,n,i,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.addEventListener(n,i,o),i;if(e.attachEvent){var r=function(){return i.call(e,window.event)};return e.attachEvent("on"+n,r),r}},t.removeEventListener=function(e,n,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.removeEventListener(n,i,o)):e.detachEvent&&e.detachEvent("on"+n,i)},t.parsePath=function s(e){var t,n;if(0===e.length)return[];var i=e.match(/^\.(\w+)/);if(i)t=i[1],n=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var o=e.indexOf("]");if(-1===o)throw new SyntaxError("Character ] expected in path");if(1===o)throw new SyntaxError("Index expected after [");var r=e.substring(1,o);"'"===r[0]&&(r='"'+r.substring(1,r.length-1)+'"'),t="*"===r?r:JSON.parse(r),n=e.substr(o+1)}return[t].concat(s(n))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var n=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(n)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,n){var i=void 0!==n?n:0;return t.left-i>=e.left&&t.right+i<=e.right&&t.top-i>=e.top&&t.bottom+i<=e.bottom},t.debounce=function(e,t,n){var i;return function(){var o=this,r=arguments,s=function(){i=null,n||e.apply(o,r)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var n=t.length,i=0,o=e.length,r=t.length;t.charAt(i)===e.charAt(i)&&n>i;)i++;for(;t.charAt(r-1)===e.charAt(o-1)&&r>i&&o>0;)r--,o--;return{start:i,end:r}}},function(e,t,n){var i=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,n,i,o,r,s){var a=r.length-1;switch(o){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g,"\x0B").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=r[a-1];case 13:this.$={};break;case 14:this.$=r[a-1];break;case 15:this.$=[r[a-2],r[a]];break;case 16:this.$={},this.$[r[a][0]]=r[a][1];break;case 17:this.$=r[a-2],r[a-2][r[a][0]]=r[a][1];break;case 18:this.$=[];break;case 19:this.$=r[a-1];break;case 20:this.$=[r[a]];break;case 21:this.$=r[a-2],r[a-2].push(r[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(e){o.length=o.length-2*e,r.length=r.length-e,s.length=s.length-e}function n(){var e;return e=i.lexer.lex()||1,"number"!=typeof e&&(e=i.symbols_[e]||e),e}var i=this,o=[0],r=[null],s=[],a=this.table,l="",c=0,d=0,h=0,u=2,p=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var f=this.lexer.yylloc;s.push(f),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var m,g,v,y,b,w,x,_,E,C={};;){if(v=o[o.length-1],this.defaultActions[v]?y=this.defaultActions[v]:(null==m&&(m=n()),y=a[v]&&a[v][m]),"undefined"==typeof y||!y.length||!y[0]){if(!h){E=[];for(w in a[v])this.terminals_[w]&&w>2&&E.push("'"+this.terminals_[w]+"'");var S="";S=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:f,expected:E})}if(3==h){if(m==p)throw new Error(S||"Parsing halted.");d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,m=n()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(S||"Parsing halted.");t(1),v=o[o.length-1]}g=m,m=u,v=o[o.length-1],y=a[v]&&a[v][u],h=3}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(y[0]){case 1:o.push(m),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(y[1]),m=null,g?(m=g,g=null):(d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,h>0&&h--);break;case 2:if(x=this.productions_[y[1]][1],C.$=r[r.length-x],C._$={first_line:s[s.length-(x||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(x||1)].first_column,last_column:s[s.length-1].last_column},b=this.performAction.call(C,l,d,c,this.yy,y[1],r,s),"undefined"!=typeof b)return b;x&&(o=o.slice(0,-1*x*2),r=r.slice(0,-1*x),s=s.slice(0,-1*x)),o.push(this.productions_[y[1]][0]),r.push(C.$),s.push(C._$),_=a[o[o.length-2]][o[o.length-1]],o.push(_);break; -case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=n,i=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse.bind(i)},function(e,t){"use strict";function n(e,t){var n=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var i=document.createElement("table");this.dom.table=i,i.className="jsoneditor-search",t.appendChild(i);var o=document.createElement("tbody");this.dom.tbody=o,i.appendChild(o);var r=document.createElement("tr");o.appendChild(r);var s=document.createElement("td");r.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),r.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var d=document.createElement("tbody");c.appendChild(d),r=document.createElement("tr"),d.appendChild(r);var h=document.createElement("button");h.type="button",h.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(h),r.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){n._onDelayedSearch(e)},u.onchange=function(e){n._onSearch()},u.onkeydown=function(e){n._onKeyDown(e)},u.onkeyup=function(e){n._onKeyUp(e)},h.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),r.appendChild(s);var p=document.createElement("button");p.type="button",p.title="Next result (Enter)",p.className="jsoneditor-next",p.onclick=function(){n.next()},s=document.createElement("td"),s.appendChild(p),r.appendChild(s);var f=document.createElement("button");f.type="button",f.title="Previous result (Shift+Enter)",f.className="jsoneditor-previous",f.onclick=function(){n.previous()},s=document.createElement("td"),s.appendChild(f),r.appendChild(s)}n.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},n.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,n=void 0!=this.resultIndex?this.resultIndex-1:t;0>n&&(n=t),this._setActiveResult(n,e)}},n.prototype._setActiveResult=function(e,t){if(this.activeResult){var n=this.activeResult.node,i=this.activeResult.elem;"field"==i?delete n.searchFieldActive:delete n.searchValueActive,n.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,n=t.length>0?t:void 0;if(n!=this.lastText||e)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},n.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=n},function(e,t,n){"use strict";function i(e,t){function n(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.type="button",l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(e){e.preventDefault(),i.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");h.type="button",s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(e){e.preventDefault(),i._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),n(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var i=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");l.type="button",o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),n(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var n=24*(e.length+(t.submenu?t.submenu.length:0));i.maxHeight=Math.max(i.maxHeight,n)})}var o=n(4);i.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n==t.expandedItem&&n.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},i.visibleMenu=void 0,i.prototype.show=function(e,t){this.hide();var n=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(n=!1)}if(n){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),i.visibleMenu&&i.visibleMenu.hide(),i.visibleMenu=this},i.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}i.visibleMenu==this&&(i.visibleMenu=void 0)},i.prototype._onExpandItem=function(e){var t=this,n=e==this.expandedItem,i=this.expandedItem;if(i&&(i.ul.style.height="0",i.ul.style.padding="",setTimeout(function(){t.expandedItem!=i&&(i.ul.style.display="",o.removeClassName(i.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!n){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"jsoneditor-selected"),this.expandedItem=e}},i.prototype._onKeyDown=function(e){var t,n,i,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),n=t.indexOf(s),0==n&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),n=t.indexOf(s),n==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&i.focus()),l=!0):38==a?(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&"jsoneditor-expand"==i.className&&(i=t[n-2]),i||(i=t[t.length-1]),i&&i.focus(),l=!0):39==a?(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&(r=t[n+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},i.prototype._isChildOf=function(e,t){for(var n=e.parentNode;n;){if(n==t)return!0;n=n.parentNode}return!1},e.exports=i},function(e,t,n){"use strict";function i(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),i.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),i.prototype.DEBOUNCE_INTERVAL)}var o=n(9),r=n(7),s=n(10),a=n(4);i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},i.prototype.getPath=function(){for(var e=this,t=[];e;){var n=e.parent?"array"!=e.parent.type?e.field:e.index:void 0;void 0!==n&&t.unshift(n),e=e.parent}return t},i.prototype.findNode=function(e){for(var t=a.parsePath(e),n=this;n&&t.length>0;){var i=t.shift();if("number"==typeof i){if("array"!==n.type)throw new Error("Cannot get child node at index "+i+": node is no array");n=n.childs[i]}else{if("object"!==n.type)throw new Error("Cannot get child node "+i+": node is no object");n=n.childs.filter(function(e){return e.field===i})[0]}}return n},i.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},i.prototype.setError=function(e,t){this.getDom(),this.error=e;var n=this.dom.tdError;if(e){n||(n=document.createElement("td"),this.dom.tdError=n,this.dom.tdValue.parentNode.appendChild(n));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.type="button",o.className="jsoneditor-schema-error",o.appendChild(i),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)n=e[s],void 0===n||n instanceof Function||(o=new i(this.editor,{value:n}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(n=e[l],void 0===n||n instanceof Function||(o=new i(this.editor,{field:l,value:n}),this.appendChild(o)));this.value="",this.editor.options.sortObjectKeys===!0&&this.sort("asc")}else this.childs=void 0,this.value=e;this.previousValue=this.value},i.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},i.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},i.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},i.prototype.clone=function(){var e=new i(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(n){var i=n.clone();i.setParent(e),t.push(i)}),e.childs=t}else e.childs=void 0;return e},i.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},i.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},i.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,n=t?t.parentNode:void 0;if(n){var i=this.getAppend(),o=t.nextSibling;o?n.insertBefore(i,o):n.appendChild(i),this.childs.forEach(function(e){n.insertBefore(e.getDom(),i),e.showChilds()})}}},i.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},i.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},i.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),n=this.getAppend(),i=n?n.parentNode:void 0;n&&i&&i.insertBefore(t,n),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.moveBefore=function(e,t){if(this._hasChilds()){var n=this.dom.tr?this.dom.tr.parentNode:void 0;if(n){var i=document.createElement("tr");i.style.height=n.clientHeight+"px",n.appendChild(i)}e.parent&&e.parent.removeChild(e),t instanceof l?this.appendChild(e):this.insertBefore(e,t),n&&n.removeChild(i)}},i.prototype.moveTo=function(e,t){if(e.parent==this){var n=this.childs.indexOf(e);t>n&&t++}var i=this.childs[t]||this.append;this.moveBefore(e,i)},i.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var n=this.childs.indexOf(t);if(-1==n)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(n,0,e)}if(this.expanded){var i=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(i,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.insertAfter=function(e,t){if(this._hasChilds()){var n=this.childs.indexOf(t),i=this.childs[n+1];i?this.insertBefore(e,i):this.appendChild(e)}},i.prototype.search=function(e){var t,n=[],i=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(i),-1!=t&&(this.searchField=!0,n.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),n=n.concat(r)}if(void 0!=i){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(i),-1!=t&&(this.searchValue=!0,n.push({node:this,elem:"value"}))}this._updateDomValue()}return n},i.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,n=!1;t;)t.expand(n),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},i.focusElement=void 0,i.prototype.focus=function(e){if(i.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},i.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},i.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},i.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var n=0,i=t.length;i>n;n++)if(t[n].containsNode(e))return!0;return!1},i.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var n=e.clone();e.clearDom(),t?this.insertBefore(n,t):this.appendChild(n)}},i.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var n=this.childs.splice(t,1)[0];return n.parent=null,this.updateDom({updateIndexes:!0}),n}}},i.prototype._remove=function(e){this.removeChild(e)},i.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var n,i=this.dom.tr?this.dom.tr.parentNode:void 0;n=this.expanded?this.getAppend():this.getDom();var o=n&&n.parentNode?n.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),"string"!=t&&"auto"!=t||(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),"string"!=t&&"auto"!=t||(this.expanded=!0)):this.expanded=!1,i&&(o?i.insertBefore(this.getDom(),o):i.appendChild(this.getDom())),this.showChilds()}else this.type=e;"auto"!=e&&"string"!=e||("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},i.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(i){if(this.value=void 0,e!==!0)throw i}},i.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(String(this.previousValue),String(this.value));n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:n}),this.previousValue=this.value},i.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(this.previousField,this.field);n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:n}),this.previousField=this.field},i.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],n=this.value,i="auto"==this.type?a.type(n):this.type,o="string"==i&&a.isUrl(n);t.push("jsoneditor-"+i),o&&t.push("jsoneditor-url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==i||"object"==i){var s=this.childs?this.childs.length:0;e.title=this.type+" containing "+s+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";if("boolean"===i&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),this["enum"]&&this.editable.value){if(!this.dom.select){this.dom.select=document.createElement("select"),this.id=this.field+"_"+(new Date).getUTCMilliseconds(),this.dom.select.id=this.id,this.dom.select.name=this.dom.select.id,this.dom.select.option=document.createElement("option"),this.dom.select.option.value="",this.dom.select.option.innerHTML="--",this.dom.select.appendChild(this.dom.select.option);for(var l=0;l0&&(e=this.childs.filter(function(e){return-1!==n.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var i=0;i0&&(e=e.concat(r))}return e},i.prototype.clearDom=function(){this.dom={}},i.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var n=document.createElement("button");n.type="button",e.drag=n,n.className="jsoneditor-dragarea",n.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(n)}e.tr.appendChild(t);var i=document.createElement("td"),o=document.createElement("button");o.type="button",e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",i.appendChild(e.menu),e.tr.appendChild(i)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},i.onDragStart=function(e,t){if(!Array.isArray(e))return i.onDragStart([e],t);if(0!==e.length){var n=e[0],o=e[e.length-1],r=i.getNodeFromTarget(t.target),s=o._nextSibling(),l=n.editor,c=a.getAbsoluteTop(r.dom.tr)-a.getAbsoluteTop(n.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){i.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){i.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:n.getLevel()},document.body.style.cursor="move",t.preventDefault()}},i.onDrag=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n,o,r,s,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(n=E.dom.tr,p=a.getAbsoluteTop(n),g=n.offsetHeight,p>w){o=n;do o=o.previousSibling,h=i.getNodeFromTarget(o),f=o?a.getAbsoluteTop(o):0;while(o&&f>w);h&&!h.parent&&(h=void 0),h||(d=n.parentNode.firstChild,o=d?d.nextSibling:void 0,h=i.getNodeFromTarget(o),h==E&&(h=void 0)),h&&(o=h.dom.tr,f=o?a.getAbsoluteTop(o):0,w>f+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),r=s;do u=i.getNodeFromTarget(r),r&&(v=r.nextSibling?a.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling;while(r&&w>p+y);if(u&&u.parent){var S=x-b.drag.mouseX,j=Math.round(S/24/2),N=b.drag.level+j,k=u.getLevel();for(o=u.dom.tr.previousSibling;N>k&&o;){h=i.getNodeFromTarget(o);var A=e.some(function(e){return e===h||h._isChildOf(e)});if(A);else{if(!(h instanceof l))break;var O=h.parent.childs;if(O.length==e.length&&O[e.length-1]==C)break;u=i.getNodeFromTarget(o),k=u.getLevel()}o=o.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),_=!0)}}}_&&(b.drag.mouseX=x,b.drag.level=E.getLevel()),b.startAutoScroll(w),t.preventDefault()}},i.onDragEnd=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n=e[0],o=n.editor,r=n.parent,s=r.childs.indexOf(n),l=r.childs[s+e.length]||r.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:o.drag.oldSelection,newSelection:o.getSelection(),oldBeforeNode:o.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&o._onAction("moveNodes",c),document.body.style.cursor=o.drag.oldCursor,o.highlighter.unlock(), -e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&o.highlighter.unhighlight()}),delete o.drag,o.mousemove&&(a.removeEventListener(window,"mousemove",o.mousemove),delete o.mousemove),o.mouseup&&(a.removeEventListener(window,"mouseup",o.mouseup),delete o.mouseup),o.stopAutoScroll(),t.preventDefault()}},i.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},i.prototype._createDomField=function(){return document.createElement("div")},i.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},i.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},i.prototype.updateValue=function(e){this.value=e,this.updateDom()},i.prototype.updateField=function(e){this.field=e,this.updateDom()},i.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var n=this.dom.field;if(n){this.fieldEditable?(n.contentEditable=this.editable.field,n.spellcheck=!1,n.className="jsoneditor-field"):n.className="jsoneditor-readonly";var i;i=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",n.innerHTML=this._escapeHTML(i),this._updateSchema()}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;"array"==this.type?(o.innerHTML="["+r+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(o.innerHTML="{"+r+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(o.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},i.prototype._updateSchema=function(){this.editor&&this.editor.options&&(this.schema=i._findSchema(this.editor.options.schema,this.getPath()),this.schema?this["enum"]=i._findEnum(this.schema):delete this["enum"])},i._findEnum=function(e){if(e["enum"])return e["enum"];var t=e.oneOf||e.anyOf||e.allOf;if(t){var n=t.filter(function(e){return e["enum"]});if(n.length>0)return n[0]["enum"]}return null},i._findSchema=function(e,t){for(var n=e,i=0;i0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(i.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(i.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var S=this._firstNode();S&&S.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var j=this._previousElement(p);j&&this.focus(this._getElementName(j)),v=!0}else if(g&&m&&y){if(x.expanded){var N=x.getAppend();o=N?N.nextSibling:void 0}else{var k=x.getDom();o=k.nextSibling}o&&(n=i.getNodeFromTarget(o),r=o.nextSibling,T=i.getNodeFromTarget(r),n&&n instanceof l&&1!=x.parent.childs.length&&T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(i.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){k=w.getDom();var O=k.previousSibling;O&&(t=i.getNodeFromTarget(O),t&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)n=this._nextNode(),n&&(this.editor.deselect(!0),n.focus(i.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)n=this._nextNode(),n&&(h=this.editor.multiselection,h.start=h.start||this,h.end=n,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),n.focus("field")),v=!0;else if(g&&m&&y){n=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=n&&(n._nextNode()||n.parent.append);T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},i.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,n=t.parentNode,i=n.scrollTop;n.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(n.appendChild(t),n.scrollTop=i)},i.onRemove=function(e){if(!Array.isArray(e))return i.onRemove([e]);if(e&&e.length>0){var t=e[0],n=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();i.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:n,index:r,oldSelection:s,newSelection:a})}},i.onDuplicate=function(e){if(!Array.isArray(e))return i.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],n=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return n.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:n,oldSelection:r,newSelection:l})}},i.prototype._onInsertBefore=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onInsertAfter=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onAppend=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var n=this.editor.getSelection();this.changeType(e);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:n,newSelection:i})}},i.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,n="array"==this.type?"value":"field";this.hideChilds();var i=this.childs,r=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,i){return t*o(e[n],i[n])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:i,oldSort:r,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},i.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},i.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},i.blurNodes=function(e){if(!Array.isArray(e))return void i.blurNodes([e]);var t=e[0],n=t.parent,o=t.getIndex();n.childs[o+e.length]?n.childs[o+e.length].focus():n.childs[o-1]?n.childs[o-1].focus():n.focus()},i.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},i.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do n=n.previousSibling,e=i.getNodeFromTarget(n);while(n&&e instanceof l&&!e.isVisible())}return e},i.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do n=n.nextSibling,e=i.getNodeFromTarget(n);while(n&&e instanceof l&&!e.isVisible())}return e},i.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.firstChild;e=i.getNodeFromTarget(n)}return e},i.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.lastChild;for(e=i.getNodeFromTarget(n);n&&e instanceof l&&!e.isVisible();)n=n.previousSibling,e=i.getNodeFromTarget(n)}return e},i.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},i.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},i.prototype._getElementName=function(e){var t=this.dom;for(var n in t)if(t.hasOwnProperty(n)&&t[n]==e)return n;return null},i.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},i.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},i.prototype.showContextMenu=function(e,t){var n=this,o=i.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:o.auto,click:function(){n._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:o.array,click:function(){n._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:o.object,click:function(){n._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:o.string,click:function(){n._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){n.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){n.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){n.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=n.parent.childs;n==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){n._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){i.onDuplicate(n)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){i.onRemove(n)}}))}var c=new r(s,{close:t});c.show(e,this.editor.content)},i.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},i.prototype._stringCast=function(e){var t=e.toLowerCase(),n=Number(e),i=parseFloat(e);return""==e?"":"null"==t?null:"true"==t?!0:"false"==t?!1:isNaN(n)||isNaN(i)?e:n},i.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),n=JSON.stringify(t),i=n.substring(1,n.length-1);return this.editor.options.escapeUnicode===!0&&(i=a.escapeUnicodeChars(i)),i},i.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',n=a.parse(t);return n.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},i.prototype._escapeJSON=function(e){for(var t="",n=0;nm)return-1;if(m>g)return 1}for(var v=0,y=Math.max(p.length,f.length);y>v;v++){if(i=!(p[v]||"").match(c)&&parseFloat(p[v])||p[v]||0,o=!(f[v]||"").match(c)&&parseFloat(f[v])||f[v]||0,isNaN(i)!==isNaN(o))return isNaN(i)?1:-1;if(typeof i!=typeof o&&(i+="",o+=""),o>i)return-1;if(i>o)return 1}return 0}},function(e,t,n){"use strict";function i(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,"tree"===this.editor.options.mode){e.tdDrag=document.createElement("td");var n=document.createElement("td");e.tdMenu=n;var i=document.createElement("button");i.type="button",i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",e.menu=i,n.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var n=e.text;n&&(n.innerHTML="(empty "+this.parent.type+")");var i=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&i.appendChild(e.tdDrag),e.tdMenu&&i.appendChild(e.tdMenu),i.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&i.removeChild(e.tdDrag),e.tdMenu&&i.removeChild(e.tdMenu),i.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,n){var i=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}]}],a=new r(s,{close:n});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,r=i.menu;if(n==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),o.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){o.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=n(4),r=n(7);e.exports=i},function(e,t,n){"use strict";function i(e,t,n,i){for(var r={code:{text:"Code",title:"Switch to code highlighter",click:function(){i("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){i("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){i("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){i("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){i("view")}}},s=[],a=0;a0){var r=n.length>l;if(r){n=n.slice(0,l);var a=this.validateSchema.errors.length-l;n.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+n.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var d=c.clientHeight;this.content.style.marginBottom=-d+"px",this.content.style.paddingBottom=d+"px"}if(this.aceEditor){var h=!1;this.aceEditor.resize(h)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,n){var i=n(!function(){var e=new Error('Cannot find module "brace"');throw e.code="MODULE_NOT_FOUND",e}());n(14),n(16),e.exports=i},function(e,t,n){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 i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],d={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,d.rangeCount!=e.multiSelect.rangeCount&&(d={rangeCount:e.multiSelect.rangeCount})),d[t]?i=d[t]:void(i=d[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return u(c,d,"{","}");if(p.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var f=l.substring(s.column,s.column+1);if("}"==f){var m=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var g="";p.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var y=this.$getIndent(o.getLine(v.row))}else{if(!g)return void p.clearMaybeInsertedClosing();var y=this.$getIndent(l)}var b=y+o.getTabString();return{text:"\n"+b+"\n"+y+g,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=i.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=i.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if('"'==o||"'"==o){h(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&n.getWrapBehavioursEnabled())return u(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),d=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),m=i.getTokenAt(l.row,l.column+1);if("\\"==d&&f&&/escape/.test(f.type))return null;var g,v=f&&/string|escape/.test(f.type),y=!m||/string|escape/.test(m.type);if(p==r)g=v!==y;else{if(v&&!y)return null;if(v&&y)return null;var b=i.$mode.tokenRe;b.lastIndex=0;var w=b.test(d);b.lastIndex=0;var x=b.test(d);if(w||x)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;g=!0}return{text:g?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),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 i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=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)))};i.inherits(s,r),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 i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o=e.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,n);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],n,s);var a=e.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],n,s):e.getCommentFoldRange(n,s,-1)}}},this.getSectionRange=function(e,t){var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns?new o(s,i,d,t.length):void 0}}.call(s.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,i){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(i+=n)}return 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 d(["ace"],n(15),"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(h.prototype),t.Mode=h})},function(e,t){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener("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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"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){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n\x0B\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; -},function(e,t){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 i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; 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 { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .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; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .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; -moz-box-sizing: border-box; box-sizing: border-box; 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; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");i.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),d=function(e,t,n){var o=i.createElement("div");o.innerHTML=c,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),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.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var n=e.target||e.srcElement,i=n.getAttribute("action");i&&t[i]?t[i]():t.$searchBarKb.commands[i]&&t.$searchBarKb.commands[i].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(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(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(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(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},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 o=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}),r=!o&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},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;i.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.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(d.prototype),t.SearchBox=d,t.Search=function(e,t){var n=e.searchBox||new d(e);n.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var o=a.getInternetExplorerVersion();if(-1!=o&&o<9)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var o;try{o=i(!function(){var e=new Error('Cannot find module "ajv"');throw e.code="MODULE_NOT_FOUND",e}())}catch(e){}var r=i(1),s=i(12),a=i(4);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=a.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,o=this.container,r=a.extend({},this.options),s=r.mode;r.mode=e;var l=n.modes[e];if(!l)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==l.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),a.clear(this),a.extend(this,l.mixin),this.create(o,r),this.setName(i),this[c?"setText":"set"](t),"function"==typeof l.load)try{l.load.call(this)}catch(e){console.error(e)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(e){console.error(e)}}catch(e){this._onError(e)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(e){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},n.prototype.validate=function(){},n.prototype.refresh=function(){},n.registerMode=function(e){var t,i;if(a.isArray(e))for(t=0;t0?this.autoScrollStep=(n+24-e)/3:e>r-24&&o+i.scrollTop3?(i.scrollTop+=o/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.type="button",i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.type="button",n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var o=document.createElement("button");o.type="button",o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.type="button",s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value&&e.target!=t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),o=0;o=0},n.prototype.canRedo=function(){return this.index=0;){var t=o[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&"\t"!==t)return t;e--}return""}())?function(){for(var e=["null","true","false"],i="",n=t(),s=/[a-zA-Z_$\d]/;s.test(n);)i+=n,r++,n=t();-1===e.indexOf(i)?o.push('"'+i+'"'):o.push(i)}():(o.push(a),r++)}return o.join("")},t.escapeUnicodeChars=function(e){return e.replace(/[\u007F-\uFFFF]/g,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})},t.validate=function(e){void 0!==n?n.parse(e):JSON.parse(e)},t.extend=function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},t.clear=function(e){for(var t in e)e.hasOwnProperty(t)&&delete e[t];return e},t.type=function(e){return null===e?"null":void 0===e?"undefined":e instanceof Number||"number"==typeof e?"number":e instanceof String||"string"==typeof e?"string":e instanceof Boolean||"boolean"==typeof e?"boolean":e instanceof RegExp||"regexp"==typeof e?"regexp":t.isArray(e)?"array":"object"};var o=/^https?:\/\/\S+$/;t.isUrl=function(e){return("string"==typeof e||e instanceof String)&&o.test(e)},t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left+window.pageXOffset||document.scrollLeft||0},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top+window.pageYOffset||document.scrollTop||0},t.addClassName=function(e,t){var i=e.className.split(" ");-1==i.indexOf(t)&&(i.push(t),e.className=i.join(" "))},t.removeClassName=function(e,t){var i=e.className.split(" "),n=i.indexOf(t);-1!=n&&(i.splice(n,1),e.className=i.join(" "))},t.stripFormatting=function(e){for(var i=e.childNodes,n=0,o=i.length;n=0;a--){var l=s[a];!0===l.specified&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){if(window.getSelection()){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,i){if(void 0==i&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var n=e.childNodes,o="",r=0,s=n.length;r5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var o=this,r=arguments,s=function(){n=null,i||e.apply(o,r)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var i=t.length,n=0,o=e.length,r=t.length;t.charAt(n)===e.charAt(n)&&nn&&o>0;)r--,o--;return{start:n,end:r}}},function(e,t,i){var n=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,o,r,s){var a=r.length-1;switch(o){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=r[a-1];case 13:this.$={};break;case 14:this.$=r[a-1];break;case 15:this.$=[r[a-2],r[a]];break;case 16:this.$={},this.$[r[a][0]]=r[a][1];break;case 17:this.$=r[a-2],r[a-2][r[a][0]]=r[a][1];break;case 18:this.$=[];break;case 19:this.$=r[a-1];break;case 20:this.$=[r[a]];break;case 21:this.$=r[a-2],r[a-2].push(r[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=i.lexer.lex()||1,"number"!=typeof e&&(e=i.symbols_[e]||e),e}var i=this,n=[0],o=[null],r=[],s=this.table,a="",l=0,c=0,d=0,h=2;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;r.push(u),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var p,f,m,g,v,y,b,w,x,_={};;){if(m=n[n.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null==p&&(p=t()),g=s[m]&&s[m][p]),void 0===g||!g.length||!g[0]){if(!d){x=[];for(y in s[m])this.terminals_[y]&&y>2&&x.push("'"+this.terminals_[y]+"'");var E="";E=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+x.join(", ")+", got '"+this.terminals_[p]+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:u,expected:x})}if(3==d){if(1==p)throw new Error(E||"Parsing halted.");c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,p=t()}for(;;){if(h.toString()in s[m])break;if(0==m)throw new Error(E||"Parsing halted.");!function(e){n.length=n.length-2*e,o.length=o.length-e,r.length=r.length-e}(1),m=n[n.length-1]}f=p,p=h,m=n[n.length-1],g=s[m]&&s[m][h],d=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+p);switch(g[0]){case 1:n.push(p),o.push(this.lexer.yytext),r.push(this.lexer.yylloc),n.push(g[1]),p=null,f?(p=f,f=null):(c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,d>0&&d--);break;case 2:if(b=this.productions_[g[1]][1],_.$=o[o.length-b],_._$={first_line:r[r.length-(b||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(b||1)].first_column,last_column:r[r.length-1].last_column},void 0!==(v=this.performAction.call(_,a,c,l,this.yy,g[1],o,r)))return v;b&&(n=n.slice(0,-1*b*2),o=o.slice(0,-1*b),r=r.slice(0,-1*b)),n.push(this.productions_[g[1]][0]),o.push(_.$),r.push(_._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t){"use strict";function i(e,t){var i=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var n=document.createElement("table");this.dom.table=n,n.className="jsoneditor-search",t.appendChild(n);var o=document.createElement("tbody");this.dom.tbody=o,n.appendChild(o);var r=document.createElement("tr");o.appendChild(r);var s=document.createElement("td");r.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),r.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var d=document.createElement("tbody");c.appendChild(d),r=document.createElement("tr"),d.appendChild(r);var h=document.createElement("button");h.type="button",h.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(h),r.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){i._onDelayedSearch(e)},u.onchange=function(e){i._onSearch()},u.onkeydown=function(e){i._onKeyDown(e)},u.onkeyup=function(e){i._onKeyUp(e)},h.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),r.appendChild(s);var p=document.createElement("button");p.type="button",p.title="Next result (Enter)",p.className="jsoneditor-next",p.onclick=function(){i.next()},s=document.createElement("td"),s.appendChild(p),r.appendChild(s);var f=document.createElement("button");f.type="button",f.title="Previous result (Shift+Enter)",f.className="jsoneditor-previous",f.onclick=function(){i.previous()},s=document.createElement("td"),s.appendChild(f),r.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;i<0&&(i=t),this._setActiveResult(i,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node;"field"==this.activeResult.elem?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var n=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?n.searchFieldActive=!0:n.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],n.updateDom(),n.scrollTo(function(){t&&n.focus(o)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,i){"use strict";function n(e,t){function i(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.type="button",l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");h.type="button",s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(e){e.preventDefault(),n._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),i(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var n=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");l.type="button",o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var o=i(4);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",o.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),0==(i=t.indexOf(s))&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),(i=t.indexOf(s))==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),(n=t[i-1])&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),r=t[i+1],r&&"jsoneditor-expand"==r.className&&(r=t[i+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){"use strict";function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var o=i(9),r=i(7),s=i(10),a=i(4);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getPath=function(){for(var e=this,t=[];e;){var i=e.parent?"array"!=e.parent.type?e.field:e.index:void 0;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=a.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.type="button",o.className="jsoneditor-schema-error",o.appendChild(n),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;t0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(r))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");i.type="button",e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),o=document.createElement("button");o.type="button",e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],o=e[e.length-1],r=n.getNodeFromTarget(t.target),s=o._nextSibling(),l=i.editor,c=a.getAbsoluteTop(r.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,o,r,s,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(i=E.dom.tr,p=a.getAbsoluteTop(i),g=i.offsetHeight,wf+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),r=s;do{u=n.getNodeFromTarget(r),r&&(v=r.nextSibling?a.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling}while(r&&w>p+y);if(u&&u.parent){var j=x-b.drag.mouseX,S=Math.round(j/24/2),N=b.drag.level+S,k=u.getLevel();for(o=u.dom.tr.previousSibling;k0)return i[0].enum}return null},n._findSchema=function(e,t){for(var i=e,n=0;n0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(n.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(n.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(n.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var j=this._firstNode();j&&j.focus(n.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(p);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(x.expanded){var N=x.getAppend();o=N?N.nextSibling:void 0}else{var k=x.getDom();o=k.nextSibling}o&&(i=n.getNodeFromTarget(o),r=o.nextSibling,T=n.getNodeFromTarget(r),i&&i instanceof l&&1!=x.parent.childs.length&&T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){k=w.getDom();var O=k.previousSibling;O&&(t=n.getNodeFromTarget(O))&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()}))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)i=this._nextNode(),i&&(h=this.editor.multiselection,h.start=h.start||this,h.end=i,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),i.focus("field")),v=!0;else if(g&&m&&y){i=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=i&&(i._nextNode()||i.parent.append);T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();n.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:r,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:r,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onAppend=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,r=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*o(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:r,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,o=t.getIndex();i.childs[o+e.length]?i.childs[o+e.length].focus():i.childs[o-1]?i.childs[o-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.previousSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.nextSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.showContextMenu=function(e,t){var i=this,o=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:o.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:o.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:o.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:o.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;i==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}new r(s,{close:t}).show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t||"false"!=t&&(isNaN(i)||isNaN(n)?e:i)},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return!0===this.editor.options.escapeUnicode&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"';return a.parse(t).replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;im)return 1}for(var g=0,v=Math.max(u.length,p.length);go)return 1}return 0}},function(e,t,i){"use strict";function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,"tree"===this.editor.options.mode){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.type="button",n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onAppend("","","string")}}]}];new r(s,{close:i}).show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom;if(i==n.menu&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var r=this.editor.highlighter;r.highlight(this.parent),r.lock(),o.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){o.removeClassName(n.menu,"jsoneditor-selected"),r.unlock(),r.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=i(4),r=i(7);e.exports=n},function(e,t,i){"use strict";function n(e,t,i,n){for(var r={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a0){if(i.length>3){i=i.slice(0,3);var n=this.validateSchema.errors.length-3;i.push("("+n+" more errors...)")}var o=document.createElement("div");o.innerHTML=''+i.map(function(e){return''+("string"==typeof e?'":"")+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=o,this.frame.appendChild(o);var s=o.clientHeight;this.content.style.marginBottom=-s+"px",this.content.style.paddingBottom=s+"px"}if(this.aceEditor){this.aceEditor.resize(!1)}},e.exports=[{mode:"text",mixin:s,data:"text",load:s.format},{mode:"code",mixin:s,data:"text",load:s.format}]},function(e,t,i){var n;if(window.ace)n=window.ace;else try{n=i(!function(){var e=new Error('Cannot find module "brace"');throw e.code="MODULE_NOT_FOUND",e}()),i(14),i(16)}catch(e){}e.exports=n},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var i=e.getLine(t),o=i.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=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)))};n.inherits(s,r),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,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var o=this._getFoldWidgetBase(e,t,i);return!o&&this.startRegionRe.test(n)?"start":o},this.getFoldWidgetRange=function(e,t,i,n){var o=e.getLine(i);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,i);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],i,s);var a=e.getCommentFoldRange(i,s+r[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),r=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(n==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),r=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is)return new o(s,n,d,t.length)}}.call(s.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 o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){t.match(/^.*[\{\(\[]\s*$/)&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new d(["ace"],i(15),"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(h.prototype),t.Mode=h})},function(e,t){e.exports.id="ace/mode/json_worker", +e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener("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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"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){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if("[object Object]"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:"\t"},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws="\t\\n\v\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'},function(e,t){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,i){"use strict";var n=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");n.importCssString("\t.ace_search {\tbackground-color: #ddd;\tborder: 1px solid #cbcbcb;\tborder-top: 0 none;\tmax-width: 325px;\toverflow: hidden;\tmargin: 0;\tpadding: 4px;\tpadding-right: 6px;\tpadding-bottom: 0;\tposition: absolute;\ttop: 0px;\tz-index: 99;\twhite-space: normal;\t}\t.ace_search.left {\tborder-left: 0 none;\tborder-radius: 0px 0px 5px 0px;\tleft: 0;\t}\t.ace_search.right {\tborder-radius: 0px 0px 0px 5px;\tborder-right: 0 none;\tright: 0;\t}\t.ace_search_form, .ace_replace_form {\tborder-radius: 3px;\tborder: 1px solid #cbcbcb;\tfloat: left;\tmargin-bottom: 4px;\toverflow: hidden;\t}\t.ace_search_form.ace_nomatch {\toutline: 1px solid red;\t}\t.ace_search_field {\tbackground-color: white;\tcolor: black;\tborder-right: 1px solid #cbcbcb;\tborder: 0 none;\t-webkit-box-sizing: border-box;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tfloat: left;\theight: 22px;\toutline: 0;\tpadding: 0 7px;\twidth: 214px;\tmargin: 0;\t}\t.ace_searchbtn,\t.ace_replacebtn {\tbackground: #fff;\tborder: 0 none;\tborder-left: 1px solid #dcdcdc;\tcursor: pointer;\tfloat: left;\theight: 22px;\tmargin: 0;\tposition: relative;\t}\t.ace_searchbtn:last-child,\t.ace_replacebtn:last-child {\tborder-top-right-radius: 3px;\tborder-bottom-right-radius: 3px;\t}\t.ace_searchbtn:disabled {\tbackground: none;\tcursor: default;\t}\t.ace_searchbtn {\tbackground-position: 50% 50%;\tbackground-repeat: no-repeat;\twidth: 27px;\t}\t.ace_searchbtn.prev {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \t}\t.ace_searchbtn.next {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \t}\t.ace_searchbtn_close {\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\tborder-radius: 50%;\tborder: 0 none;\tcolor: #656565;\tcursor: pointer;\tfloat: right;\tfont: 16px/16px Arial;\theight: 14px;\tmargin: 5px 1px 9px 5px;\tpadding: 0;\ttext-align: center;\twidth: 14px;\t}\t.ace_searchbtn_close:hover {\tbackground-color: #656565;\tbackground-position: 50% 100%;\tcolor: white;\t}\t.ace_replacebtn.prev {\twidth: 54px\t}\t.ace_replacebtn.next {\twidth: 27px\t}\t.ace_button {\tmargin-left: 2px;\tcursor: pointer;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\toverflow: hidden;\topacity: 0.7;\tborder: 1px solid rgba(100,100,100,0.23);\tpadding: 1px;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tcolor: black;\t}\t.ace_button:hover {\tbackground-color: #eee;\topacity:1;\t}\t.ace_button:active {\tbackground-color: #ddd;\t}\t.ace_button.checked {\tborder-color: #3399ff;\topacity:1;\t}\t.ace_search_options{\tmargin-bottom: 3px;\ttext-align: right;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\t}","ace_searchbox");var l=''.replace(/>\s+/g,">"),c=function(e,t,i){var o=n.createElement("div");o.innerHTML=l,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),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.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,i,n){var o=a.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(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(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(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(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var o=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:i}),r=!o&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},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;n.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.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){(e.searchBox||new c(e)).show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter {\tbackground: #ebebeb;\tcolor: #333\t}\t\t.ace-jsoneditor.ace_editor {\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\tline-height: 1.3;\tbackground-color: #fff;\t}\t.ace-jsoneditor .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8\t}\t.ace-jsoneditor .ace_scroller {\tbackground-color: #FFFFFF\t}\t.ace-jsoneditor .ace_text-layer {\tcolor: gray\t}\t.ace-jsoneditor .ace_variable {\tcolor: #1a1a1a\t}\t.ace-jsoneditor .ace_cursor {\tborder-left: 2px solid #000000\t}\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\tborder-left: 0px;\tborder-bottom: 1px solid #000000\t}\t.ace-jsoneditor .ace_marker-layer .ace_selection {\tbackground: lightgray\t}\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px #FFFFFF;\tborder-radius: 2px\t}\t.ace-jsoneditor .ace_marker-layer .ace_step {\tbackground: rgb(255, 255, 0)\t}\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid #BFBFBF\t}\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\tbackground: #FFFBD1\t}\t.ace-jsoneditor .ace_gutter-active-line {\tbackground-color : #dcdcdc\t}\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\tborder: 1px solid lightgray\t}\t.ace-jsoneditor .ace_invisible {\tcolor: #BFBFBF\t}\t.ace-jsoneditor .ace_keyword,\t.ace-jsoneditor .ace_meta,\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\tcolor: #AF956F\t}\t.ace-jsoneditor .ace_keyword.ace_operator {\tcolor: #484848\t}\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\tcolor: #96DC5F\t}\t.ace-jsoneditor .ace_constant.ace_language {\tcolor: darkorange\t}\t.ace-jsoneditor .ace_constant.ace_numeric {\tcolor: red\t}\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\tcolor: #BF78CC\t}\t.ace-jsoneditor .ace_invalid {\tcolor: #FFFFFF;\tbackground-color: #FF002A;\t}\t.ace-jsoneditor .ace_fold {\tbackground-color: #AF956F;\tborder-color: #000000\t}\t.ace-jsoneditor .ace_storage,\t.ace-jsoneditor .ace_support.ace_class,\t.ace-jsoneditor .ace_support.ace_function,\t.ace-jsoneditor .ace_support.ace_other,\t.ace-jsoneditor .ace_support.ace_type {\tcolor: #C52727\t}\t.ace-jsoneditor .ace_string {\tcolor: green\t}\t.ace-jsoneditor .ace_comment {\tcolor: #BCC8BA\t}\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\tcolor: #606060\t}\t.ace-jsoneditor .ace_markup.ace_underline {\ttext-decoration: underline\t}\t.ace-jsoneditor .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\t}',e("../lib/dom").importCssString(t.cssText,t.cssClass)})}])}); //# sourceMappingURL=jsoneditor-minimalist.map \ No newline at end of file diff --git a/dist/jsoneditor.css b/dist/jsoneditor.css index d78754a..173c927 100644 --- a/dist/jsoneditor.css +++ b/dist/jsoneditor.css @@ -205,7 +205,6 @@ div.jsoneditor { box-sizing: border-box; width: 100%; height: 100%; - overflow: hidden; position: relative; padding: 0; line-height: 100%; diff --git a/dist/jsoneditor.js b/dist/jsoneditor.js index 48af9d1..7021e96 100644 --- a/dist/jsoneditor.js +++ b/dist/jsoneditor.js @@ -24,8 +24,8 @@ * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.5.11 - * @date 2017-04-14 + * @version 5.6.0 + * @date 2017-04-15 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -93,9 +93,9 @@ return /******/ (function(modules) { // webpackBootstrap // no problem... when we need Ajv we will throw a neat exception } - var treemode = __webpack_require__(51); - var textmode = __webpack_require__(62); - var util = __webpack_require__(54); + var treemode = __webpack_require__(2); + var textmode = __webpack_require__(13); + var util = __webpack_require__(5); /** * @constructor JSONEditor @@ -474,405 +474,527 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { + var require;var require;/* WEBPACK VAR INJECTION */(function(global) {(function(f){if(true){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ - function errorsText(errors, options) { - errors = errors || self.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + var Cache = module.exports = function Cache() { + this._cache = {}; + }; - var text = ''; - for (var i=0; i= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; + } + + + function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; + + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); + } + + + var DATE_TIME_SEPARATOR = /t|\s/i; + function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); + } + + + function hostname(str) { + // https://tools.ietf.org/html/rfc1034#section-3.5 + // https://tools.ietf.org/html/rfc1123#section-2 + return str.length <= 255 && HOSTNAME.test(str); + } + + + var NOT_URI_FRAGMENT = /\/|\:/; + function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); + } + + + function regex(str) { + try { + new RegExp(str); + return true; + } catch(e) { + return false; } } -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { + function compareDate(d1, d2) { + if (!(d1 && d2)) return; + if (d1 > d2) return 1; + if (d1 < d2) return -1; + if (d1 === d2) return 0; + } + + function compareTime(t1, t2) { + if (!(t1 && t2)) return; + t1 = t1.match(TIME); + t2 = t2.match(TIME); + if (!(t1 && t2)) return; + t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); + t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); + if (t1 > t2) return 1; + if (t1 < t2) return -1; + if (t1 === t2) return 0; + } + + + function compareDateTime(dt1, dt2) { + if (!(dt1 && dt2)) return; + dt1 = dt1.split(DATE_TIME_SEPARATOR); + dt2 = dt2.split(DATE_TIME_SEPARATOR); + var res = compareDate(dt1[0], dt2[0]); + if (res === undefined) return; + return res || compareTime(dt1[1], dt2[1]); + } + + },{"./util":11}],6:[function(require,module,exports){ 'use strict'; - var resolve = __webpack_require__(3) - , util = __webpack_require__(11) - , stableStringify = __webpack_require__(12) - , async = __webpack_require__(17); + var resolve = require('./resolve') + , util = require('./util') + , stableStringify = require('json-stable-stringify') + , async = require('../async'); - var beautify = (function() { try { return __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"js-beautify\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).js_beautify; } catch(e) {/*empty*/} })(); + var beautify; - var validateGenerator = __webpack_require__(18); + function loadBeautify(){ + if (beautify === undefined) { + var name = 'js-beautify'; + try { beautify = require(name).js_beautify; } + catch(e) { beautify = false; } + } + } + + var validateGenerator = require('../dotjs/validate'); + + /** + * Functions below are used inside compiled validations function + */ + + var co = require('co'); + var ucs2length = util.ucs2length; + var equal = require('./equal'); + + // this error is thrown by async schemas to return validation errors via exception + var ValidationError = require('./validation_error'); module.exports = compile; @@ -897,15 +1019,42 @@ return /******/ (function(modules) { // webpackBootstrap , patternsHash = {} , defaults = [] , defaultsHash = {} - , customRules = []; + , customRules = [] + , keepSourceCode = opts.sourceCode !== false; root = root || { schema: schema, refVal: refVal, refs: refs }; + var c = checkCompiling.call(this, schema, root, baseId); + var compilation = this._compilations[c.index]; + if (c.compiling) return (compilation.callValidate = callValidate); + var formats = this._formats; var RULES = this.RULES; - return localCompile(schema, root, localRefs, baseId); + try { + var v = localCompile(schema, root, localRefs, baseId); + compilation.validate = v; + var cv = compilation.callValidate; + if (cv) { + cv.schema = v.schema; + cv.errors = null; + cv.refs = v.refs; + cv.refVal = v.refVal; + cv.root = v.root; + cv.$async = v.$async; + if (keepSourceCode) cv.sourceCode = v.sourceCode; + } + return v; + } finally { + endCompiling.call(this, schema, root, baseId); + } + function callValidate() { + var validate = compilation.validate; + var result = validate.apply(null, arguments); + callValidate.errors = validate.errors; + return result; + } function localCompile(_schema, _root, localRefs, baseId) { var isRoot = !_root || (_root && _root.schema == _schema); @@ -942,6 +1091,7 @@ return /******/ (function(modules) { // webpackBootstrap + sourceCode; if (opts.beautify) { + loadBeautify(); /* istanbul ignore else */ if (beautify) sourceCode = beautify(sourceCode, opts.beautify); else console.error('"npm install js-beautify" to use beautify option'); @@ -953,7 +1103,36 @@ return /******/ (function(modules) { // webpackBootstrap validateCode = $async && transpile ? transpile(sourceCode) : sourceCode; - eval(validateCode); + + var makeValidate = new Function( + 'self', + 'RULES', + 'formats', + 'root', + 'refVal', + 'defaults', + 'customRules', + 'co', + 'equal', + 'ucs2length', + 'ValidationError', + validateCode + ); + + validate = makeValidate( + self, + RULES, + formats, + root, + refVal, + defaults, + customRules, + co, + equal, + ucs2length, + ValidationError + ); + refVal[0] = validate; } catch(e) { console.error('Error compiling schema, function code:', validateCode); @@ -965,8 +1144,14 @@ return /******/ (function(modules) { // webpackBootstrap validate.refs = refs; validate.refVal = refVal; validate.root = isRoot ? validate : _root; - if ($async) validate.async = true; - validate.sourceCode = sourceCode; + if ($async) validate.$async = true; + if (keepSourceCode) validate.sourceCode = sourceCode; + if (opts.sourceCode === true) { + validate.source = { + patterns: patterns, + defaults: defaults + }; + } return validate; } @@ -980,7 +1165,7 @@ return /******/ (function(modules) { // webpackBootstrap refCode = 'refVal[' + refIndex + ']'; return resolvedRef(_refVal, refCode); } - if (!isRoot) { + if (!isRoot && root.refs) { var rootRefId = root.refs[ref]; if (rootRefId !== undefined) { _refVal = root.refVal[rootRefId]; @@ -1021,7 +1206,7 @@ return /******/ (function(modules) { // webpackBootstrap function resolvedRef(refVal, code) { return typeof refVal == 'object' ? { code: code, schema: refVal, inline: true } - : { code: code, async: refVal && refVal.async }; + : { code: code, $async: refVal && refVal.$async }; } function usePattern(regexStr) { @@ -1053,15 +1238,25 @@ return /******/ (function(modules) { // webpackBootstrap } function useCustomRule(rule, schema, parentSchema, it) { + var validateSchema = rule.definition.validateSchema; + if (validateSchema && self._opts.validateSchema !== false) { + var valid = validateSchema(schema); + if (!valid) { + var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); + if (self._opts.validateSchema == 'log') console.error(message); + else throw new Error(message); + } + } + var compile = rule.definition.compile , inline = rule.definition.inline , macro = rule.definition.macro; var validate; if (compile) { - validate = compile.call(self, schema, parentSchema); + validate = compile.call(self, schema, parentSchema, it); } else if (macro) { - validate = macro.call(self, schema, parentSchema); + validate = macro.call(self, schema, parentSchema, it); if (opts.validateSchema !== false) self.validateSchema(validate, true); } else if (inline) { validate = inline.call(self, it, rule.keyword, schema, parentSchema); @@ -1080,6 +1275,60 @@ return /******/ (function(modules) { // webpackBootstrap } + /** + * Checks if the schema is currently compiled + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) + */ + function checkCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var index = compIndex.call(this, schema, root, baseId); + if (index >= 0) return { index: index, compiling: true }; + index = this._compilations.length; + this._compilations[index] = { + schema: schema, + root: root, + baseId: baseId + }; + return { index: index, compiling: false }; + } + + + /** + * Removes the schema from the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + */ + function endCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var i = compIndex.call(this, schema, root, baseId); + if (i >= 0) this._compilations.splice(i, 1); + } + + + /** + * Index of schema compilation in the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Integer} compilation index + */ + function compIndex(schema, root, baseId) { + /* jshint validthis: true */ + for (var i=0; i', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = __webpack_require__(7); - - function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; - } - - Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a puny coded representation of "domain". - // It only converts the part of the domain name that - // has non ASCII characters. I.e. it dosent matter if - // you call it with a domain that already is in ASCII. - var domainArray = this.hostname.split('.'); - var newOut = []; - for (var i = 0; i < domainArray.length; ++i) { - var s = domainArray[i]; - newOut.push(s.match(/[^A-Za-z0-9_-]/) ? - 'xn--' + punycode.encode(s) : s); - } - this.hostname = newOut.join('.'); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; - }; - - // format a parsed object into a url string - function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); - } - - Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; - }; - - function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); - } - - Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); - }; - - function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); - } - - Url.prototype.resolveObject = function(relative) { - if (isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - Object.keys(this).forEach(function(k) { - result[k] = this[k]; - }, this); - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - Object.keys(relative).forEach(function(k) { - if (k !== 'protocol') - result[k] = relative[k]; + RULES.forEach(function (group) { + group.rules = group.rules.map(function (keyword) { + ALL.push(keyword); + var rule = RULES.all[keyword] = { + keyword: keyword, + code: ruleModules[keyword] + }; + return rule; }); + }); - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } + RULES.keywords = toHash(ALL.concat(KEYWORDS)); + RULES.types = toHash(TYPES); + RULES.custom = {}; - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - Object.keys(relative).forEach(function(k) { - result[k] = relative[k]; - }); - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host) && (last === '.' || last === '..') || - last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last == '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; + return RULES; }; - Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; - }; - - function isString(arg) { - return typeof arg === "string"; - } - - function isObject(arg) { - return typeof arg === 'object' && arg !== null; - } - - function isNull(arg) { - return arg === null; - } - function isNullOrUndefined(arg) { - return arg == null; - } - - -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */ - ;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - true - ) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return punycode; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - - }(this)); - - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)(module), (function() { return this; }()))) - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } - - -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { - + },{"./_rules":3,"./util":11}],9:[function(require,module,exports){ 'use strict'; - exports.decode = exports.parse = __webpack_require__(8); - exports.encode = exports.stringify = __webpack_require__(9); + var util = require('./util'); + module.exports = SchemaObject; -/***/ }, -/* 8 */ -/***/ function(module, exports) { - - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - 'use strict'; - - // If obj.hasOwnProperty has been overridden, then calling - // obj.hasOwnProperty(prop) will break. - // See: https://github.com/joyent/node/issues/1707 - function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); + function SchemaObject(obj) { + util.copy(obj, this); } - module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (Array.isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; - }; - - -/***/ }, -/* 9 */ -/***/ function(module, exports) { - - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - + },{"./util":11}],10:[function(require,module,exports){ 'use strict'; - var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; + // https://mathiasbynens.be/notes/javascript-encoding + // https://github.com/bestiejs/punycode.js - punycode.ucs2.decode + module.exports = function ucs2length(str) { + var length = 0 + , len = str.length + , pos = 0 + , value; + while (pos < len) { + length++; + value = str.charCodeAt(pos++); + if (value >= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } } + return length; }; - module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return Object.keys(obj).map(function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (Array.isArray(obj[k])) { - return obj[k].map(function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); - }; - - -/***/ }, -/* 10 */ -/***/ function(module, exports) { - - 'use strict'; - - module.exports = function equal(a, b) { - if (a === b) return true; - - var arrA = Array.isArray(a) - , arrB = Array.isArray(b) - , i; - - if (arrA && arrB) { - if (a.length != b.length) return false; - for (i = 0; i < a.length; i++) - if (!equal(a[i], b[i])) return false; - return true; - } - - if (arrA != arrB) return false; - - if (a && b && typeof a === 'object' && typeof b === 'object') { - var keys = Object.keys(a); - - if (keys.length !== Object.keys(b).length) return false; - - for (i = 0; i < keys.length; i++) - if (b[keys[i]] === undefined) return false; - - for (i = 0; i < keys.length; i++) - if(!equal(a[keys[i]], b[keys[i]])) return false; - - return true; - } - - return false; - }; - - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - + },{}],11:[function(require,module,exports){ 'use strict'; @@ -2874,13 +1713,14 @@ return /******/ (function(modules) { // webpackBootstrap toHash: toHash, getProperty: getProperty, escapeQuotes: escapeQuotes, - ucs2length: ucs2length, + ucs2length: require('./ucs2length'), varOccurences: varOccurences, varReplace: varReplace, cleanUpCode: cleanUpCode, cleanUpVarErrors: cleanUpVarErrors, schemaHasRules: schemaHasRules, - stableStringify: __webpack_require__(12), + schemaHasRulesExcept: schemaHasRulesExcept, + stableStringify: require('json-stable-stringify'), toQuotedString: toQuotedString, getPathExpr: getPathExpr, getPath: getPath, @@ -2910,7 +1750,8 @@ return /******/ (function(modules) { // webpackBootstrap 'typeof ' + data + EQUAL + '"object"' + AND + NOT + 'Array.isArray(' + data + '))'; case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1))'; + NOT + '(' + data + ' % 1)' + + AND + data + EQUAL + data + ')'; default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; } } @@ -2939,16 +1780,19 @@ return /******/ (function(modules) { // webpackBootstrap var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); - function coerceToTypes(dataTypes) { + function coerceToTypes(optionCoerceTypes, dataTypes) { if (Array.isArray(dataTypes)) { var types = []; for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; + return str.replace(SINGLE_QUOTE, '\\$&') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/\f/g, '\\f') + .replace(/\t/g, '\\t'); } @@ -3044,6 +1872,11 @@ return /******/ (function(modules) { // webpackBootstrap } + function schemaHasRulesExcept(schema, rules, exceptKeyword) { + for (var key in schema) if (key != exceptKeyword && rules[key]) return true; + } + + function toQuotedString(str) { return '\'' + escapeQuotes(str) + '\''; } @@ -3065,20 +1898,29 @@ return /******/ (function(modules) { // webpackBootstrap } + var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/; var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; function getData($data, lvl, paths) { - var matches = $data.match(RELATIVE_JSON_POINTER); - if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data); - var up = +matches[1]; - var jsonPointer = matches[2]; - if (jsonPointer == '#') { - if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } + var up, jsonPointer, data, matches; + if ($data === '') return 'rootData'; + if ($data[0] == '/') { + if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data); + jsonPointer = $data; + data = 'rootData'; + } else { + matches = $data.match(RELATIVE_JSON_POINTER); + if (!matches) throw new Error('Invalid JSON-pointer: ' + $data); + up = +matches[1]; + jsonPointer = matches[2]; + if (jsonPointer == '#') { + if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - var data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; + } var expr = data; var segments = jsonPointer.split('/'); @@ -3118,12 +1960,4132 @@ return /******/ (function(modules) { // webpackBootstrap return str.replace(/~1/g, '/').replace(/~0/g, '~'); } + },{"./ucs2length":10,"json-stable-stringify":42}],12:[function(require,module,exports){ + 'use strict'; -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { + module.exports = ValidationError; - var json = typeof JSON !== 'undefined' ? JSON : __webpack_require__(13); + + function ValidationError(errors) { + this.message = 'validation failed'; + this.errors = errors; + this.ajv = this.validation = true; + } + + + ValidationError.prototype = Object.create(Error.prototype); + ValidationError.prototype.constructor = ValidationError; + + },{}],13:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__formatLimit(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + out += 'var ' + ($valid) + ' = undefined;'; + if (it.opts.format === false) { + out += ' ' + ($valid) + ' = true; '; + return out; + } + var $schemaFormat = it.schema.format, + $isDataFormat = it.opts.v5 && $schemaFormat.$data, + $closingBraces = ''; + if ($isDataFormat) { + var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr), + $format = 'format' + $lvl, + $compare = 'compare' + $lvl; + out += ' var ' + ($format) + ' = formats[' + ($schemaValueFormat) + '] , ' + ($compare) + ' = ' + ($format) + ' && ' + ($format) + '.compare;'; + } else { + var $format = it.formats[$schemaFormat]; + if (!($format && $format.compare)) { + out += ' ' + ($valid) + ' = true; '; + return out; + } + var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare'; + } + var $isMax = $keyword == 'formatMaximum', + $exclusiveKeyword = 'formatExclusive' + ($isMax ? 'Maximum' : 'Minimum'), + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $result = 'result' + $lvl; + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_formatExclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var ' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = ' + ($exclusive) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); + if (!$exclusive) { + out += '='; + } + out += ' 0;'; + } + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '}'; + return out; + } + + },{}],14:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limit(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $isMax = $keyword == 'maximum', + $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $notOp = $isMax ? '>' : '<'; + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ') || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp); + if ($exclusive) { + out += '='; + } + out += ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') {'; + } + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schema) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],15:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limitItems(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],16:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limitLength(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],17:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limitProperties(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],18:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_allOf(it, $keyword) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $allSchemasEmpty = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $allSchemasEmpty = false; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + if ($allSchemasEmpty) { + out += ' if (true) { '; + } else { + out += ' ' + ($closingBraces.slice(0, -1)) + ' '; + } + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],19:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_anyOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $noEmptySchema = $schema.every(function($sch) { + return it.util.schemaHasRules($sch, it.RULES.all); + }); + if ($noEmptySchema) { + var $currentBaseId = $it.baseId; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + },{}],20:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_constant(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('constant') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to constant\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + return out; + } + + },{}],21:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_custom(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $rule = this, + $definition = 'definition' + $lvl, + $rDef = $rule.definition; + var $compile, $inline, $macro, $ruleValidate, $validateCode; + if ($isData && $rDef.$data) { + $validateCode = 'keywordValidate' + $lvl; + var $validateSchema = $rDef.validateSchema; + out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; + } else { + $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); + $schemaValue = 'validate.schema' + $schemaPath; + $validateCode = $ruleValidate.code; + $compile = $rDef.compile; + $inline = $rDef.inline; + $macro = $rDef.macro; + } + var $ruleErrs = $validateCode + '.errors', + $i = 'i' + $lvl, + $ruleErr = 'ruleErr' + $lvl, + $asyncKeyword = $rDef.async; + if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); + if (!($inline || $macro)) { + out += '' + ($ruleErrs) + ' = null;'; + } + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($validateSchema) { + out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') {'; + } + if ($inline) { + if ($rDef.statements) { + out += ' ' + ($ruleValidate.validate) + ' '; + } else { + out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; + } + } else if ($macro) { + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $ruleValidate.validate; + $it.schemaPath = ''; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($code); + } else { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + out += ' ' + ($validateCode) + '.call( '; + if (it.opts.passContext) { + out += 'this'; + } else { + out += 'self'; + } + if ($compile || $rDef.schema === false) { + out += ' , ' + ($data) + ' '; + } else { + out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; + } + out += ' , (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; + var def_callRuleValidate = out; + out = $$outStack.pop(); + if ($rDef.errors === false) { + out += ' ' + ($valid) + ' = '; + if ($asyncKeyword) { + out += '' + (it.yieldAwait); + } + out += '' + (def_callRuleValidate) + '; '; + } else { + if ($asyncKeyword) { + $ruleErrs = 'customErrors' + $lvl; + out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = ' + (it.yieldAwait) + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; + } else { + out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; + } + } + } + if ($rDef.modifying) { + out += ' ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; + } + if ($validateSchema) { + out += ' }'; + } + if ($rDef.valid) { + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + out += ' if ( '; + if ($rDef.valid === undefined) { + out += ' !'; + if ($macro) { + out += '' + ($nextValid); + } else { + out += '' + ($valid); + } + } else { + out += ' ' + (!$rDef.valid) + ' '; + } + out += ') { '; + $errorKeyword = $rule.keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + var def_customError = out; + out = $$outStack.pop(); + if ($inline) { + if ($rDef.errors) { + if ($rDef.errors != 'full') { + out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } else if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],26:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_multipleOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schema) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],27:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_not(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + var $allErrorsOption; + if ($it.opts.allErrors) { + $allErrorsOption = $it.opts.allErrors; + $it.opts.allErrors = false; + } + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (' + ($nextValid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; + } + + },{}],28:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_oneOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false;'; + var $currentBaseId = $it.baseId; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } else { + out += ' var ' + ($nextValid) + ' = true; '; + } + if ($i) { + out += ' if (' + ($nextValid) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + out += ' if (' + ($nextValid) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; + } + + },{}],29:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_pattern(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],30:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_patternRequired(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $key = 'key' + $lvl, + $matched = 'patternMatched' + $lvl, + $closingBraces = '', + $ownProperties = it.opts.ownProperties; + out += 'var ' + ($valid) + ' = true;'; + var arr1 = $schema; + if (arr1) { + var $pProperty, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $pProperty = arr1[i1 += 1]; + out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { '; + if ($ownProperties) { + out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; + } + out += ' ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } '; + var $missingPattern = it.util.escapeQuotes($pProperty); + out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingPattern: \'' + ($missingPattern) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have property matching pattern \\\'' + ($missingPattern) + '\\\'\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + } + out += '' + ($closingBraces); + return out; + } + + },{}],31:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_properties(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $key = 'key' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt; + var $schemaKeys = Object.keys($schema || {}), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + var $required = it.schema.required; + if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); + if (it.opts.v5) { + var $pgProperties = it.schema.patternGroups || {}, + $pgPropertyKeys = Object.keys($pgProperties); + } + out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; + if ($checkAdditional) { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + if ($ownProperties) { + out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; + } + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 5) { + out += ' || validate.schema' + ($schemaPath) + '[' + ($key) + '] '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; + } + } + } + if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { + var arr3 = $pgPropertyKeys; + if (arr3) { + var $pgProperty, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $pgProperty = arr3[$i += 1]; + out += ' || ' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + ' + $key + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + out += ' ' + ($nextValid) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have additional properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr4 = $schemaKeys; + if (arr4) { + var $propertyKey, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $propertyKey = arr4[i4 += 1]; + var $sch = $schema[$propertyKey]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if (' + ($useData) + ' === undefined) { ' + ($nextValid) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if (' + ($useData) + ' === undefined) { ' + ($nextValid) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + var arr5 = $pPropertyKeys; + if (arr5) { + var $pProperty, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $pProperty = arr5[i5 += 1]; + var $sch = $pProperties[$pProperty]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + if ($ownProperties) { + out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; + } + out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (it.opts.v5) { + var arr6 = $pgPropertyKeys; + if (arr6) { + var $pgProperty, i6 = -1, + l6 = arr6.length - 1; + while (i6 < l6) { + $pgProperty = arr6[i6 += 1]; + var $pgSchema = $pgProperties[$pgProperty], + $sch = $pgSchema.schema; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; + $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; + out += ' var pgPropCount' + ($lvl) + ' = 0; for (var ' + ($key) + ' in ' + ($data) + ') { '; + if ($ownProperties) { + out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; + } + out += ' if (' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ')) { pgPropCount' + ($lvl) + '++; '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + var $pgMin = $pgSchema.minimum, + $pgMax = $pgSchema.maximum; + if ($pgMin !== undefined || $pgMax !== undefined) { + out += ' var ' + ($valid) + ' = true; '; + var $currErrSchemaPath = $errSchemaPath; + if ($pgMin !== undefined) { + var $limit = $pgMin, + $reason = 'minimum', + $moreOrLess = 'less'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($pgMax !== undefined) { + out += ' else '; + } + } + if ($pgMax !== undefined) { + var $limit = $pgMax, + $reason = 'maximum', + $moreOrLess = 'more'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],32:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_ref(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $async, $refCode; + if ($schema == '#' || $schema == '#/') { + if (it.isRoot) { + $async = it.async; + $refCode = 'validate'; + } else { + $async = it.root.schema.$async === true; + $refCode = 'root.refVal[0]'; + } + } else { + var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); + if ($refVal === undefined) { + var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; + if (it.opts.missingRefs == 'fail') { + console.log($message); + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; + } + if (it.opts.verbose) { + out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + if ($breakOnError) { + out += ' if (false) { '; + } + } else if (it.opts.missingRefs == 'ignore') { + console.log($message); + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + var $error = new Error($message); + $error.missingRef = it.resolve.url(it.baseId, $schema); + $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); + throw $error; + } + } else if ($refVal.inline) { + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $refVal.schema; + $it.schemaPath = ''; + $it.errSchemaPath = $schema; + var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); + out += ' ' + ($code) + ' '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + } + } else { + $async = $refVal.$async === true; + $refCode = $refVal.code; + } + } + if ($refCode) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + if (it.opts.passContext) { + out += ' ' + ($refCode) + '.call(this, '; + } else { + out += ' ' + ($refCode) + '( '; + } + out += ' ' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; + var __callValidate = out; + out = $$outStack.pop(); + if ($async) { + if (!it.async) throw new Error('async schema referenced by sync schema'); + out += ' try { '; + if ($breakOnError) { + out += 'var ' + ($valid) + ' ='; + } + out += ' ' + (it.yieldAwait) + ' ' + (__callValidate) + '; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + } + } else { + out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } + } + return out; + } + + },{}],33:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_required(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $vSchema = 'schema' + $lvl; + if (!$isData) { + if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { + var $required = []; + var arr1 = $schema; + if (arr1) { + var $property, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $property = arr1[i1 += 1]; + var $propertySch = it.schema.properties[$property]; + if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { + $required[$required.length] = $property; + } + } + } + } else { + var $required = $schema; + } + } + if ($isData || $required.length) { + var $currentErrorPath = it.errorPath, + $loopRequired = $isData || $required.length >= it.opts.loopRequired; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var _$property, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + _$property = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty(_$property); + out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $reqProperty, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $reqProperty = arr3[i3 += 1]; + var $prop = it.util.getProperty($reqProperty), + $missingProperty = it.util.escapeQuotes($reqProperty); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $reqProperty, it.opts.jsonPointers); + } + out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; + } + + },{}],34:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_switch(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $ifPassed = 'ifPassed' + it.level, + $currentBaseId = $it.baseId, + $shouldContinue; + out += 'var ' + ($ifPassed) + ';'; + var arr1 = $schema; + if (arr1) { + var $sch, $caseIndex = -1, + l1 = arr1.length - 1; + while ($caseIndex < l1) { + $sch = arr1[$caseIndex += 1]; + if ($caseIndex && !$shouldContinue) { + out += ' if (!' + ($ifPassed) + ') { '; + $closingBraces += '}'; + } + if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + $it.schema = $sch.if; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + $it.createErrors = true; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($ifPassed) + ' = ' + ($nextValid) + '; if (' + ($ifPassed) + ') { '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; + } else { + out += ' ' + ($ifPassed) + ' = true; '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } + } + $shouldContinue = $sch.continue + } + } + out += '' + ($closingBraces) + 'var ' + ($valid) + ' = ' + ($nextValid) + '; '; + out = it.util.cleanUpCode(out); + return out; + } + + },{}],35:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_uniqueItems(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + },{}],36:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_validate(it, $keyword) { + var out = ''; + var $async = it.schema.$async === true; + if (it.isTop) { + var $top = it.isTop, + $lvl = it.level = 0, + $dataLvl = it.dataLevel = 0, + $data = 'data'; + it.rootId = it.resolve.fullPath(it.root.schema.id); + it.baseId = it.baseId || it.rootId; + if ($async) { + it.async = true; + var $es7 = it.opts.async == 'es7'; + it.yieldAwait = $es7 ? 'await' : 'yield'; + } + delete it.isTop; + it.dataPathArr = [undefined]; + out += ' var validate = '; + if ($async) { + if ($es7) { + out += ' (async function '; + } else { + if (it.opts.async == 'co*') { + out += 'co.wrap'; + } + out += '(function* '; + } + } else { + out += ' (function '; + } + out += ' (data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; var vErrors = null; '; + out += ' var errors = 0; '; + out += ' if (rootData === undefined) rootData = data;'; + } else { + var $lvl = it.level, + $dataLvl = it.dataLevel, + $data = 'data' + ($dataLvl || ''); + if (it.schema.id) it.baseId = it.resolve.url(it.baseId, it.schema.id); + if ($async && !it.async) throw new Error('async schema in sync schema'); + out += ' var errs_' + ($lvl) + ' = errors;'; + } + var $valid = 'valid' + $lvl, + $breakOnError = !it.opts.allErrors, + $closingBraces1 = '', + $closingBraces2 = ''; + var $typeSchema = it.schema.type, + $typeIsArray = Array.isArray($typeSchema); + if ($typeSchema && it.opts.coerceTypes) { + var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); + if ($coerceToTypes) { + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type', + $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; + out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; + var $dataType = 'dataType' + $lvl, + $coerced = 'coerced' + $lvl; + out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; + if (it.opts.coerceTypes == 'array') { + out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; + } + out += ' var ' + ($coerced) + ' = undefined; '; + var $bracesCoercion = ''; + var arr1 = $coerceToTypes; + if (arr1) { + var $type, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $type = arr1[$i += 1]; + if ($i) { + out += ' if (' + ($coerced) + ' === undefined) { '; + $bracesCoercion += '}'; + } + if (it.opts.coerceTypes == 'array' && $type != 'array') { + out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; + } + if ($type == 'string') { + out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; + } else if ($type == 'number' || $type == 'integer') { + out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; + if ($type == 'integer') { + out += ' && !(' + ($data) + ' % 1)'; + } + out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; + } else if ($type == 'boolean') { + out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; + } else if ($type == 'null') { + out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; + } else if (it.opts.coerceTypes == 'array' && $type == 'array') { + out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; + } + } + } + out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' ' + ($data) + ' = ' + ($coerced) + '; '; + if (!$dataLvl) { + out += 'if (' + ($parentData) + ' !== undefined)'; + } + out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } } '; + } + } + var $refKeywords; + if (it.schema.$ref && ($refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'))) { + if (it.opts.extendRefs == 'fail') { + throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '"'); + } else if (it.opts.extendRefs == 'ignore') { + $refKeywords = false; + console.log('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); + } else if (it.opts.extendRefs !== true) { + console.log('$ref: all keywords used in schema at path "' + it.errSchemaPath + '". It will change in the next major version, see issue #260. Use option { extendRefs: true } to keep current behaviour'); + } + } + if (it.schema.$ref && !$refKeywords) { + out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; + if ($breakOnError) { + out += ' } if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } else { + var arr2 = it.RULES; + if (arr2) { + var $rulesGroup, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $rulesGroup = arr2[i2 += 1]; + if ($shouldUseGroup($rulesGroup)) { + if ($rulesGroup.type) { + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; + } + if (it.opts.useDefaults && !it.compositeRule) { + if ($rulesGroup.type == 'object' && it.schema.properties) { + var $schema = it.schema.properties, + $schemaKeys = Object.keys($schema); + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if ($sch.default !== undefined) { + var $passData = $data + it.util.getProperty($propertyKey); + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { + var arr4 = it.schema.items; + if (arr4) { + var $sch, $i = -1, + l4 = arr4.length - 1; + while ($i < l4) { + $sch = arr4[$i += 1]; + if ($sch.default !== undefined) { + var $passData = $data + '[' + $i + ']'; + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } + } + var arr5 = $rulesGroup.rules; + if (arr5) { + var $rule, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $rule = arr5[i5 += 1]; + if ($shouldUseRule($rule)) { + out += ' ' + ($rule.code(it, $rule.keyword)) + ' '; + if ($breakOnError) { + $closingBraces1 += '}'; + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces1) + ' '; + $closingBraces1 = ''; + } + if ($rulesGroup.type) { + out += ' } '; + if ($typeSchema && $typeSchema === $rulesGroup.type) { + var $typeChecked = true; + out += ' else { '; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + } + if ($breakOnError) { + out += ' if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } + } + } + } + if ($typeSchema && !$typeChecked && !(it.opts.coerceTypes && $coerceToTypes)) { + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type', + $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; + out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + } + if ($breakOnError) { + out += ' ' + ($closingBraces2) + ' '; + } + if ($top) { + if ($async) { + out += ' if (errors === 0) return true; '; + out += ' else throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; '; + out += ' return errors === 0; '; + } + out += ' }); return validate;'; + } else { + out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; + } + out = it.util.cleanUpCode(out); + if ($top && $breakOnError) { + out = it.util.cleanUpVarErrors(out, $async); + } + + function $shouldUseGroup($rulesGroup) { + for (var i = 0; i < $rulesGroup.rules.length; i++) + if ($shouldUseRule($rulesGroup.rules[i])) return true; + } + + function $shouldUseRule($rule) { + return it.schema[$rule.keyword] !== undefined || ($rule.keyword == 'properties' && (it.schema.additionalProperties === false || typeof it.schema.additionalProperties == 'object' || (it.schema.patternProperties && Object.keys(it.schema.patternProperties).length) || (it.opts.v5 && it.schema.patternGroups && Object.keys(it.schema.patternGroups).length))); + } + return out; + } + + },{}],37:[function(require,module,exports){ + 'use strict'; + + var IDENTIFIER = /^[a-z_$][a-z0-9_$\-]*$/i; + var customRuleCode = require('./dotjs/custom'); + + module.exports = { + add: addKeyword, + get: getKeyword, + remove: removeKeyword + }; + + /** + * Define custom keyword + * @this Ajv + * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). + * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. + */ + function addKeyword(keyword, definition) { + /* jshint validthis: true */ + /* eslint no-shadow: 0 */ + var RULES = this.RULES; + + if (RULES.keywords[keyword]) + throw new Error('Keyword ' + keyword + ' is already defined'); + + if (!IDENTIFIER.test(keyword)) + throw new Error('Keyword ' + keyword + ' is not a valid identifier'); + + if (definition) { + if (definition.macro && definition.valid !== undefined) + throw new Error('"valid" option cannot be used with macro keywords'); + + var dataType = definition.type; + if (Array.isArray(dataType)) { + var i, len = dataType.length; + for (i=0; i 2) res = slice.call(arguments, 1); + resolve(res); + }); + }); + } + + /** + * Convert an array of "yieldables" to a promise. + * Uses `Promise.all()` internally. + * + * @param {Array} obj + * @return {Promise} + * @api private + */ + + function arrayToPromise(obj) { + return Promise.all(obj.map(toPromise, this)); + } + + /** + * Convert an object of "yieldables" to a promise. + * Uses `Promise.all()` internally. + * + * @param {Object} obj + * @return {Promise} + * @api private + */ + + function objectToPromise(obj){ + var results = new obj.constructor(); + var keys = Object.keys(obj); + var promises = []; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var promise = toPromise.call(this, obj[key]); + if (promise && isPromise(promise)) defer(promise, key); + else results[key] = obj[key]; + } + return Promise.all(promises).then(function () { + return results; + }); + + function defer(promise, key) { + // predefine the key in the result + results[key] = undefined; + promises.push(promise.then(function (res) { + results[key] = res; + })); + } + } + + /** + * Check if `obj` is a promise. + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ + + function isPromise(obj) { + return 'function' == typeof obj.then; + } + + /** + * Check if `obj` is a generator. + * + * @param {Mixed} obj + * @return {Boolean} + * @api private + */ + + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj.throw; + } + + /** + * Check if `obj` is a generator function. + * + * @param {Mixed} obj + * @return {Boolean} + * @api private + */ + function isGeneratorFunction(obj) { + var constructor = obj.constructor; + if (!constructor) return false; + if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true; + return isGenerator(constructor.prototype); + } + + /** + * Check for plain object. + * + * @param {Mixed} val + * @return {Boolean} + * @api private + */ + + function isObject(val) { + return Object == val.constructor; + } + + },{}],42:[function(require,module,exports){ + var json = typeof JSON !== 'undefined' ? JSON : require('jsonify'); module.exports = function (obj, opts) { if (!opts) opts = {}; @@ -3208,19 +6170,11 @@ return /******/ (function(modules) { // webpackBootstrap return keys; }; + },{"jsonify":43}],43:[function(require,module,exports){ + exports.parse = require('./lib/parse'); + exports.stringify = require('./lib/stringify'); -/***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { - - exports.parse = __webpack_require__(14); - exports.stringify = __webpack_require__(15); - - -/***/ }, -/* 14 */ -/***/ function(module, exports) { - + },{"./lib/parse":44,"./lib/stringify":45}],44:[function(require,module,exports){ var at, // The index of the current character ch, // The current character escapee = { @@ -3495,11 +6449,7 @@ return /******/ (function(modules) { // webpackBootstrap }({'': result}, '')) : result; }; - -/***/ }, -/* 15 */ -/***/ function(module, exports) { - + },{}],45:[function(require,module,exports){ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, @@ -3655,4734 +6605,1914 @@ return /******/ (function(modules) { // webpackBootstrap return str('', {'': value}); }; + },{}],46:[function(require,module,exports){ + (function (global){ + /*! https://mths.be/punycode v1.4.1 by @mathias */ + ;(function(root) { -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + + }(this)); + + }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + },{}],47:[function(require,module,exports){ + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. 'use strict'; - var util = __webpack_require__(11); - - module.exports = SchemaObject; - - function SchemaObject(obj) { - util.copy(obj, this); + // If obj.hasOwnProperty has been overridden, then calling + // obj.hasOwnProperty(prop) will break. + // See: https://github.com/joyent/node/issues/1707 + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); } + module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; + }; + + var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; + }; + + },{}],48:[function(require,module,exports){ + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } + }; + + module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); + }; + + var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; + }; + + function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; + } + + var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; + }; + + },{}],49:[function(require,module,exports){ + 'use strict'; + + exports.decode = exports.parse = require('./decode'); + exports.encode = exports.stringify = require('./encode'); + + },{"./decode":47,"./encode":48}],50:[function(require,module,exports){ + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + var punycode = require('punycode'); + var util = require('./util'); + + exports.parse = urlParse; + exports.resolve = urlResolve; + exports.resolveObject = urlResolveObject; + exports.format = urlFormat; + + exports.Url = Url; + + function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; + } + + // Reference: RFC 3986, RFC 1808, RFC 2396 + + // define these here so at least they only have to be + // compiled once on the first module load. + var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; + } + + Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = + (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) + continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; + }; + + // format a parsed object into a url string + function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); + } + + Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + util.isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; + }; + + function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); + } + + Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); + }; + + function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); + } + + Url.prototype.resolveObject = function(relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') + result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host || srcPath.length > 1) && + (last === '.' || last === '..') || last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + }; + + Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; + }; + + },{"./util":51,"punycode":46,"querystring":49}],51:[function(require,module,exports){ 'use strict'; module.exports = { - setup: setupAsync, - compile: compileAsync + isString: function(arg) { + return typeof(arg) === 'string'; + }, + isObject: function(arg) { + return typeof(arg) === 'object' && arg !== null; + }, + isNull: function(arg) { + return arg === null; + }, + isNullOrUndefined: function(arg) { + return arg == null; + } }; + },{}],"ajv":[function(require,module,exports){ + 'use strict'; - var util = __webpack_require__(11); + var compileSchema = require('./compile') + , resolve = require('./compile/resolve') + , Cache = require('./cache') + , SchemaObject = require('./compile/schema_obj') + , stableStringify = require('json-stable-stringify') + , formats = require('./compile/formats') + , rules = require('./compile/rules') + , v5 = require('./v5') + , util = require('./compile/util') + , async = require('./async') + , co = require('co'); - var ASYNC = { - '*': checkGenerators, - 'co*': checkGenerators, - 'es7': checkAsyncFunction - }; + module.exports = Ajv; - var TRANSPILE = { - 'nodent': getNodent, - 'regenerator': getRegenerator - }; + Ajv.prototype.compileAsync = async.compile; - var MODES = [ - { async: 'co*' }, - { async: 'es7', transpile: 'nodent' }, - { async: 'co*', transpile: 'regenerator' } - ]; + var customKeyword = require('./keyword'); + Ajv.prototype.addKeyword = customKeyword.add; + Ajv.prototype.getKeyword = customKeyword.get; + Ajv.prototype.removeKeyword = customKeyword.remove; + Ajv.ValidationError = require('./compile/validation_error'); - - var regenerator, nodent; - - - function setupAsync(opts, required) { - if (required !== false) required = true; - var async = opts.async - , transpile = opts.transpile - , check; - - switch (typeof transpile) { - case 'string': - var get = TRANSPILE[transpile]; - if (!get) throw new Error('bad transpiler: ' + transpile); - return (opts._transpileFunc = get(opts, required)); - case 'undefined': - case 'boolean': - if (typeof async == 'string') { - check = ASYNC[async]; - if (!check) throw new Error('bad async mode: ' + async); - return (opts.transpile = check(opts, required)); - } - - for (var i=0; i 2) res = slice.call(arguments, 1); - resolve(res); + var schemaObj = new SchemaObject({ + id: id, + schema: schema, + localRefs: localRefs, + jsonStr: jsonStr, + meta: meta }); - }); - } - /** - * Convert an array of "yieldables" to a promise. - * Uses `Promise.all()` internally. - * - * @param {Array} obj - * @return {Promise} - * @api private - */ + if (id[0] != '#' && shouldAddSchema) self._refs[id] = schemaObj; + self._cache.put(jsonStr, schemaObj); - function arrayToPromise(obj) { - return Promise.all(obj.map(toPromise, this)); - } + if (willValidate && recursiveMeta) validateSchema(schema, true); - /** - * Convert an object of "yieldables" to a promise. - * Uses `Promise.all()` internally. - * - * @param {Object} obj - * @return {Promise} - * @api private - */ - - function objectToPromise(obj){ - var results = new obj.constructor(); - var keys = Object.keys(obj); - var promises = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var promise = toPromise.call(this, obj[key]); - if (promise && isPromise(promise)) defer(promise, key); - else results[key] = obj[key]; + return schemaObj; } - return Promise.all(promises).then(function () { - return results; - }); - function defer(promise, key) { - // predefine the key in the result - results[key] = undefined; - promises.push(promise.then(function (res) { - results[key] = res; - })); + + function _compile(schemaObj, root) { + if (schemaObj.compiling) { + schemaObj.validate = callValidate; + callValidate.schema = schemaObj.schema; + callValidate.errors = null; + callValidate.root = root ? root : callValidate; + if (schemaObj.schema.$async === true) + callValidate.$async = true; + return callValidate; + } + schemaObj.compiling = true; + + var currentOpts; + if (schemaObj.meta) { + currentOpts = self._opts; + self._opts = self._metaOpts; + } + + var v; + try { v = compileSchema.call(self, schemaObj.schema, root, schemaObj.localRefs); } + finally { + schemaObj.compiling = false; + if (schemaObj.meta) self._opts = currentOpts; + } + + schemaObj.validate = v; + schemaObj.refs = v.refs; + schemaObj.refVal = v.refVal; + schemaObj.root = v.root; + return v; + + + function callValidate() { + var _validate = schemaObj.validate; + var result = _validate.apply(null, arguments); + callValidate.errors = _validate.errors; + return result; + } + } + + + /** + * Convert array of error message objects to string + * @param {Array} errors optional array of validation errors, if not passed errors from the instance are used. + * @param {Object} options optional options with properties `separator` and `dataVar`. + * @return {String} human readable string with all errors descriptions + */ + function errorsText(errors, options) { + errors = errors || self.errors; + if (!errors) return 'No errors'; + options = options || {}; + var separator = options.separator === undefined ? ', ' : options.separator; + var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + + var text = ''; + for (var i=0; i= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; - } - - - function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); - } - - - var DATE_TIME_SEPARATOR = /t|\s/i; - function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return date(dateTime[0]) && time(dateTime[1], true); - } - - - function hostname(str) { - // http://tools.ietf.org/html/rfc1034#section-3.5 - return str.length <= 255 && HOSTNAME.test(str); - } - - - var NOT_URI_FRAGMENT = /\/|\:/; - function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); - } - - - function regex(str) { - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } - } - - - function compareDate(d1, d2) { - if (!(d1 && d2)) return; - if (d1 > d2) return 1; - if (d1 < d2) return -1; - if (d1 === d2) return 0; - } - - - function compareTime(t1, t2) { - if (!(t1 && t2)) return; - t1 = t1.match(TIME); - t2 = t2.match(TIME); - if (!(t1 && t2)) return; - t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); - t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); - if (t1 > t2) return 1; - if (t1 < t2) return -1; - if (t1 === t2) return 0; - } - - - function compareDateTime(dt1, dt2) { - if (!(dt1 && dt2)) return; - dt1 = dt1.split(DATE_TIME_SEPARATOR); - dt2 = dt2.split(DATE_TIME_SEPARATOR); - var res = compareDate(dt1[0], dt2[0]); - if (res === undefined) return; - return res || compareTime(dt1[1], dt2[1]); - } - - -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var ruleModules = __webpack_require__(24) - , util = __webpack_require__(11); - - module.exports = function rules() { - var RULES = [ - { type: 'number', - rules: [ 'maximum', 'minimum', 'multipleOf'] }, - { type: 'string', - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, - { type: 'array', - rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] }, - { type: 'object', - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] }, - { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } - ]; - - RULES.all = [ 'type', 'additionalProperties', 'patternProperties' ]; - RULES.keywords = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ]; - RULES.types = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; - - RULES.forEach(function (group) { - group.rules = group.rules.map(function (keyword) { - RULES.all.push(keyword); - return { - keyword: keyword, - code: ruleModules[keyword] - }; - }); - }); - - RULES.keywords = util.toHash(RULES.all.concat(RULES.keywords)); - RULES.all = util.toHash(RULES.all); - RULES.types = util.toHash(RULES.types); - - return RULES; - }; - - -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - //all requires must be explicit because browserify won't work with dynamic requires - module.exports = { - '$ref': __webpack_require__(25), - allOf: __webpack_require__(26), - anyOf: __webpack_require__(27), - dependencies: __webpack_require__(28), - enum: __webpack_require__(29), - format: __webpack_require__(30), - items: __webpack_require__(31), - maximum: __webpack_require__(32), - minimum: __webpack_require__(32), - maxItems: __webpack_require__(33), - minItems: __webpack_require__(33), - maxLength: __webpack_require__(34), - minLength: __webpack_require__(34), - maxProperties: __webpack_require__(35), - minProperties: __webpack_require__(35), - multipleOf: __webpack_require__(36), - not: __webpack_require__(37), - oneOf: __webpack_require__(38), - pattern: __webpack_require__(39), - properties: __webpack_require__(40), - required: __webpack_require__(41), - uniqueItems: __webpack_require__(42), - validate: __webpack_require__(18) - }; - - -/***/ }, -/* 25 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_ref(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $async, $refCode; - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - $async = it.async; - $refCode = 'validate'; - } else { - $async = it.root.schema.$async === true; - $refCode = 'root.refVal[0]'; - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; - if (it.opts.missingRefs == 'fail') { - console.log($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - console.log($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - var $error = new Error($message); - $error.missingRef = it.resolve.url(it.baseId, $schema); - $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); - throw $error; - } - } else if ($refVal.inline) { - var $it = it.util.copy(it); - $it.level++; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - } - } else { - $async = $refVal.async; - $refCode = $refVal.code; - } - } - if ($refCode) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - if (it.opts.passContext) { - out += ' ' + ($refCode) + '.call(this, '; - } else { - out += ' ' + ($refCode) + '( '; - } - out += ' ' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - if ($dataLvl) { - out += ' , data' + (($dataLvl - 1) || '') + ' , ' + (it.dataPathArr[$dataLvl]) + ' '; - } else { - out += ' , parentData , parentDataProperty '; - } - out += ') '; - var __callValidate = out; - out = $$outStack.pop(); - if ($async) { - if (!it.async) throw new Error('async schema referenced by sync schema'); - out += ' try { '; - if ($breakOnError) { - out += 'var ' + ($valid) + ' ='; - } - out += ' ' + (it.yieldAwait) + ' ' + (__callValidate) + '; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - } - } else { - out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } - return out; - } - - -/***/ }, -/* 26 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_allOf(it, $keyword) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces.slice(0, -1)); - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 27 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_anyOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $noEmptySchema = $schema.every(function($sch) { - return it.util.schemaHasRules($sch, it.RULES.all); - }); - if ($noEmptySchema) { - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - -/***/ }, -/* 28 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_dependencies(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $schemaDeps = {}, - $propertyDeps = {}; - for ($property in $schema) { - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } - out += 'var ' + ($errs) + ' = errors;'; - var $currentErrorPath = it.errorPath; - out += 'var missing' + ($lvl) + ';'; - for (var $property in $propertyDeps) { - $deps = $propertyDeps[$property]; - out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( '; - var arr1 = $deps; - if (arr1) { - var _$property, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - _$property = arr1[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ')) { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - it.errorPath = $currentErrorPath; - for (var $property in $schemaDeps) { - var $sch = $schemaDeps[$property]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\'' + ($property) + '\'] !== undefined) { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 29 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_enum(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $i = 'i' + $lvl; - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); - var $passData = $data + '[i' + $lvl + ']'; - $it.dataPathArr[$dataNxt] = 'i' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } else if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); - var $passData = $data + '[i' + $lvl + ']'; - $it.dataPathArr[$dataNxt] = 'i' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 32 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate__limit(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<'; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp); - if ($exclusive) { - out += '='; - } - out += ' ' + ($schemaValue) + ') {'; - } - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 33 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate__limitItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 34 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate__limitLength(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 35 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate__limitProperties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 36 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_multipleOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 37 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_not(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (valid' + ($it.level) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; - } - - -/***/ }, -/* 38 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_oneOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - } else { - out += ' var valid' + ($it.level) + ' = true; '; - } - if ($i) { - out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; - } - - -/***/ }, -/* 39 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_pattern(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 40 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_properties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional; - var $required = it.schema.required; - if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - if (it.opts.v5) { - var $pgProperties = it.schema.patternGroups || {}, - $pgPropertyKeys = Object.keys($pgProperties); - } - out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;'; - if ($checkAdditional) { - out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { '; - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 5) { - out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') '; - } - } - } - if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { - var arr3 = $pgPropertyKeys; - if (arr3) { - var $pgProperty, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $pgProperty = arr3[$i += 1]; - out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + key' + $lvl + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; - } else { - out += ' valid' + ($it.level) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have additional properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr4 = $schemaKeys; - if (arr4) { - var $propertyKey, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $propertyKey = arr4[i4 += 1]; - var $sch = $schema[$propertyKey]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - var arr5 = $pPropertyKeys; - if (arr5) { - var $pProperty, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $pProperty = arr5[i5 += 1]; - var $sch = $pProperties[$pProperty]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else valid' + ($it.level) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (it.opts.v5) { - var arr6 = $pgPropertyKeys; - if (arr6) { - var $pgProperty, i6 = -1, - l6 = arr6.length - 1; - while (i6 < l6) { - $pgProperty = arr6[i6 += 1]; - var $pgSchema = $pgProperties[$pgProperty], - $sch = $pgSchema.schema; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; - $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; - out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else valid' + ($it.level) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - var $pgMin = $pgSchema.minimum, - $pgMax = $pgSchema.maximum; - if ($pgMin !== undefined || $pgMax !== undefined) { - out += ' var ' + ($valid) + ' = true; '; - var $currErrSchemaPath = $errSchemaPath; - if ($pgMin !== undefined) { - var $limit = $pgMin, - $reason = 'minimum', - $moreOrLess = 'less'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($pgMax !== undefined) { - out += ' else '; - } - } - if ($pgMax !== undefined) { - var $limit = $pgMax, - $reason = 'maximum', - $moreOrLess = 'more'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 41 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_required(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (!$isData) { - if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { - var $required = []; - var arr1 = $schema; - if (arr1) { - var $property, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $property = arr1[i1 += 1]; - var $propertySch = it.schema.properties[$property]; - if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var _$property, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - _$property = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $property, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $property = arr3[$i += 1]; - var $prop = it.util.getProperty($property), - $missingProperty = it.util.escapeQuotes($property); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers); - } - out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; - } - - -/***/ }, -/* 42 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_uniqueItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json'; - - module.exports = { - enable: enableV5, - META_SCHEMA_ID: META_SCHEMA_ID - }; - - - function enableV5(ajv) { - var inlineFunctions = { - 'switch': __webpack_require__(44), - 'constant': __webpack_require__(45), - '_formatLimit': __webpack_require__(46), - 'patternRequired': __webpack_require__(47) - }; - - if (ajv._opts.meta !== false) { - var metaSchema = __webpack_require__(48); - ajv.addMetaSchema(metaSchema, META_SCHEMA_ID); - } - _addKeyword('constant'); - ajv.addKeyword('contains', { type: 'array', macro: containsMacro }); - - _addKeyword('formatMaximum', 'string', inlineFunctions._formatLimit); - _addKeyword('formatMinimum', 'string', inlineFunctions._formatLimit); - ajv.addKeyword('exclusiveFormatMaximum'); - ajv.addKeyword('exclusiveFormatMinimum'); - - ajv.addKeyword('patternGroups'); // implemented in properties.jst - _addKeyword('patternRequired', 'object'); - _addKeyword('switch'); - - - function _addKeyword(keyword, types, inlineFunc) { - var definition = { - inline: inlineFunc || inlineFunctions[keyword], - statements: true, - errors: 'full' - }; - if (types) definition.type = types; - ajv.addKeyword(keyword, definition); - } - } - - - function containsMacro(schema) { - return { - not: { items: { not: schema } } - }; - } - - -/***/ }, -/* 44 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_switch(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $ifPassed = 'ifPassed' + it.level, - $shouldContinue; - out += 'var ' + ($ifPassed) + ';'; - var arr1 = $schema; - if (arr1) { - var $sch, $caseIndex = -1, - l1 = arr1.length - 1; - while ($caseIndex < l1) { - $sch = arr1[$caseIndex += 1]; - if ($caseIndex && !$shouldContinue) { - out += ' if (!' + ($ifPassed) + ') { '; - $closingBraces += '}'; - } - if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - $it.schema = $sch.if; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; - } else { - out += ' ' + ($ifPassed) + ' = true; '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - } - } - $shouldContinue = $sch.continue - } - } - out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; '; - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 45 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_constant(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'constant') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - return out; - } - - -/***/ }, -/* 46 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate__formatLimit(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - out += 'var ' + ($valid) + ' = undefined;'; - if (it.opts.format === false) { - out += ' ' + ($valid) + ' = true; '; - return out; - } - var $schemaFormat = it.schema.format, - $isDataFormat = it.opts.v5 && $schemaFormat.$data, - $closingBraces = ''; - if ($isDataFormat) { - var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr), - $format = 'format' + $lvl, - $compare = 'compare' + $lvl; - out += ' var ' + ($format) + ' = formats[' + ($schemaValueFormat) + '] , ' + ($compare) + ' = ' + ($format) + ' && ' + ($format) + '.compare;'; - } else { - var $format = it.formats[$schemaFormat]; - if (!($format && $format.compare)) { - out += ' ' + ($valid) + ' = true; '; - return out; - } - var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare'; - } - var $isMax = $keyword == 'formatMaximum', - $exclusiveKeyword = 'exclusiveFormat' + ($isMax ? 'Maximum' : 'Minimum'), - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $result = 'result' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveFormatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); - if (!$exclusive) { - out += '='; - } - out += ' 0;'; - } - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '}'; - return out; - } - - -/***/ }, -/* 47 */ -/***/ function(module, exports) { - - 'use strict'; - module.exports = function generate_patternRequired(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $key = 'key' + $lvl, - $matched = 'patternMatched' + $lvl, - $closingBraces = ''; - out += 'var ' + ($valid) + ' = true;'; - var arr1 = $schema; - if (arr1) { - var $pProperty, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $pProperty = arr1[i1 += 1]; - out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } '; - var $missingPattern = it.util.escapeQuotes($pProperty); - out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingPattern: \'' + ($missingPattern) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have property matching pattern \\\'' + ($missingPattern) + '\\\'\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - } - out += '' + ($closingBraces); - return out; - } - - -/***/ }, -/* 48 */ -/***/ function(module, exports) { - - module.exports = { - "id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "Core schema meta-schema (v5 proposals)", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#" - } - }, - "positiveInteger": { - "type": "integer", - "minimum": 0 - }, - "positiveIntegerDefault0": { - "allOf": [ - { - "$ref": "#/definitions/positiveInteger" - }, - { - "default": 0 - } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "uniqueItems": true - }, - "$data": { - "type": "object", - "required": [ - "$data" - ], - "properties": { - "$data": { - "type": "string", - "format": "relative-json-pointer" - } - }, - "additionalProperties": false - } - }, - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uri" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "multipleOf": { - "anyOf": [ - { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "maximum": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "exclusiveMaximum": { - "anyOf": [ - { - "type": "boolean", - "default": false - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "minimum": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "exclusiveMinimum": { - "anyOf": [ - { - "type": "boolean", - "default": false - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "maxLength": { - "anyOf": [ - { - "$ref": "#/definitions/positiveInteger" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "minLength": { - "anyOf": [ - { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "pattern": { - "anyOf": [ - { - "type": "string", - "format": "regex" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "additionalItems": { - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#" - }, - { - "$ref": "#/definitions/$data" - } - ], - "default": {} - }, - "items": { - "anyOf": [ - { - "$ref": "#" - }, - { - "$ref": "#/definitions/schemaArray" - } - ], - "default": {} - }, - "maxItems": { - "anyOf": [ - { - "$ref": "#/definitions/positiveInteger" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "minItems": { - "anyOf": [ - { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "uniqueItems": { - "anyOf": [ - { - "type": "boolean", - "default": false - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "maxProperties": { - "anyOf": [ - { - "$ref": "#/definitions/positiveInteger" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "minProperties": { - "anyOf": [ - { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "required": { - "anyOf": [ - { - "$ref": "#/definitions/stringArray" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "additionalProperties": { - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#" - }, - { - "$ref": "#/definitions/$data" - } - ], - "default": {} - }, - "definitions": { - "type": "object", - "additionalProperties": { - "$ref": "#" - }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#" - }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { - "$ref": "#" - }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "$ref": "#" - }, - { - "$ref": "#/definitions/stringArray" - } - ] - } - }, - "enum": { - "anyOf": [ - { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "type": { - "anyOf": [ - { - "$ref": "#/definitions/simpleTypes" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/simpleTypes" - }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "allOf": { - "$ref": "#/definitions/schemaArray" - }, - "anyOf": { - "$ref": "#/definitions/schemaArray" - }, - "oneOf": { - "$ref": "#/definitions/schemaArray" - }, - "not": { - "$ref": "#" - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "formatMaximum": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "formatMinimum": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "exclusiveFormatMaximum": { - "anyOf": [ - { - "type": "boolean", - "default": false - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "exclusiveFormatMinimum": { - "anyOf": [ - { - "type": "boolean", - "default": false - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "constant": { - "anyOf": [ - {}, - { - "$ref": "#/definitions/$data" - } - ] - }, - "contains": { - "$ref": "#" - }, - "patternGroups": { - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "schema" - ], - "properties": { - "maximum": { - "anyOf": [ - { - "$ref": "#/definitions/positiveInteger" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "minimum": { - "anyOf": [ - { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - { - "$ref": "#/definitions/$data" - } - ] - }, - "schema": { - "$ref": "#" - } - }, - "additionalProperties": false - }, - "default": {} - }, - "switch": { - "type": "array", - "items": { - "required": [ - "then" - ], - "properties": { - "if": { - "$ref": "#" - }, - "then": { - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#" - } - ] - }, - "continue": { - "type": "boolean" - } - }, - "additionalProperties": false, - "dependencies": { - "continue": [ - "if" - ] - } - } - } - }, - "dependencies": { - "exclusiveMaximum": [ - "maximum" - ], - "exclusiveMinimum": [ - "minimum" - ], - "formatMaximum": [ - "format" - ], - "formatMinimum": [ - "format" - ], - "exclusiveFormatMaximum": [ - "formatMaximum" - ], - "exclusiveFormatMinimum": [ - "formatMinimum" - ] - }, - "default": {} - }; - -/***/ }, -/* 49 */ -/***/ function(module, exports) { - - 'use strict'; - - var IDENTIFIER = /^[a-z_$][a-z0-9_$]*$/i; - - /** - * Define custom keyword - * @this Ajv - * @param {String} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords. - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - */ - module.exports = function addKeyword(keyword, definition) { - /* eslint no-shadow: 0 */ - var self = this; - if (this.RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - var dataType = definition.type; - if (Array.isArray(dataType)) { - var i, len = dataType.length; - for (i=0; i 200 && pressedKeys.count == 1) - resetPressedKeys(); - } - if (pressedKeys[keyCode] == 1) - pressedKeys.count++; - pressedKeys.lastT = e.timeStamp; - var result = normalizeCommandKeys(callback, e, keyCode); + pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; + var result = normalizeCommandKeys(callback, e, e.keyCode); lastDefaultPrevented = e.defaultPrevented; return result; }); @@ -18085,16 +18230,7 @@ return /******/ (function(modules) { // webpackBootstrap }); addListener(el, "keyup", function(e) { - var keyCode = e.keyCode; - if (!pressedKeys[keyCode]) { - resetPressedKeys(); - } else { - pressedKeys.count = Math.max(pressedKeys.count - 1, 0); - } - if (keyCode == 91 || keyCode == 92) { - pressedKeys.OSKey = false; - } - pressedKeys[keyCode] = null; + pressedKeys[e.keyCode] = null; }); if (!pressedKeys) { @@ -18105,8 +18241,6 @@ return /******/ (function(modules) { // webpackBootstrap }; function resetPressedKeys() { pressedKeys = Object.create(null); - pressedKeys.count = 0; - pressedKeys.lastT = 0; } if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { @@ -18186,7 +18320,7 @@ return /******/ (function(modules) { // webpackBootstrap var copy = []; for (var i=0, l=array.length; i= 53) { + onInput(); + } }; @@ -19173,6 +19315,7 @@ return /******/ (function(modules) { // webpackBootstrap tooltip.setHtml(tooltipAnnotation); tooltip.show(); + editor._signal("showGutterTooltip", tooltip); editor.on("mousewheel", hideTooltip); if (mouseHandler.$tooltipFollowsMouse) { @@ -19192,6 +19335,7 @@ return /******/ (function(modules) { // webpackBootstrap if (tooltipAnnotation) { tooltip.hide(); tooltipAnnotation = null; + editor._signal("hideGutterTooltip", tooltip); editor.removeEventListener("mousewheel", hideTooltip); } } @@ -20120,7 +20264,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!global || !global.document) return; - options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(65).packaged); + options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(16).packaged); var scriptOptions = {}; var scriptUrl = ""; @@ -20511,7 +20655,7 @@ return /******/ (function(modules) { // webpackBootstrap success = commands.exec("insertstring", this.$editor, keyString); } - if (success) + if (success && this.$editor._signal) this.$editor._signal("keyboardActivity", toExecute); return success; @@ -21784,6 +21928,11 @@ return /******/ (function(modules) { // webpackBootstrap 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) @@ -21831,11 +21980,14 @@ return /******/ (function(modules) { // webpackBootstrap } } } - if (rule.include || typeof rule == "string") { - var includeName = rule.include || rule; - var toInsert = rules[includeName]; - } else if (Array.isArray(rule)) - toInsert = rule; + var includeName = typeof rule == "string" + ? rule + : typeof rule.include == "string" + ? rule.include + : ""; + if (includeName) { + toInsert = rules[includeName]; + } if (toInsert) { var args = [i, 1].concat(toInsert); @@ -21843,7 +21995,6 @@ return /******/ (function(modules) { // webpackBootstrap args = args.filter(function(x) {return !x.next;}); state.splice.apply(state, args); i--; - toInsert = null; } if (rule.keywordMap) { @@ -21947,58 +22098,6 @@ return /******/ (function(modules) { // webpackBootstrap exports.Behaviour = Behaviour; }); - ace.define("ace/unicode",["require","exports","module"], function(acequire, exports, module) { - "use strict"; - exports.packages = {}; - - addUnicodePackage({ - L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A", - Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A", - Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC", - Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", - Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26", - Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", - Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC", - Me: "0488048906DE20DD-20E020E2-20E4A670-A672", - N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF", - No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835", - P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65", - Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D", - Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62", - Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63", - Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20", - Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21", - Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F", - Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65", - S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD", - Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC", - Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6", - Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3", - So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD", - Z: "002000A01680180E2000-200A20282029202F205F3000", - Zs: "002000A01680180E2000-200A202F205F3000", - Zl: "2028", - Zp: "2029", - C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF", - Cc: "0000-001F007F-009F", - Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB", - Co: "E000-F8FF", - Cs: "D800-DFFF", - Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF" - }); - - function addUnicodePackage (pack) { - var codePoint = /\w{4}/g; - for (var name in pack) - exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); - } - - }); - ace.define("ace/token_iterator",["require","exports","module"], function(acequire, exports, module) { "use strict"; var TokenIterator = function(session, initialRow, initialColumn) { @@ -22075,12 +22174,425 @@ return /******/ (function(modules) { // webpackBootstrap exports.TokenIterator = TokenIterator; }); - ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(acequire, exports, module) { + ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(acequire, exports, module) { + "use strict"; + + var oop = acequire("../../lib/oop"); + var Behaviour = acequire("../behaviour").Behaviour; + var TokenIterator = acequire("../../token_iterator").TokenIterator; + var lang = acequire("../../lib/lang"); + + var SAFE_INSERT_IN_TOKENS = + ["text", "paren.rparen", "punctuation.operator"]; + var SAFE_INSERT_BEFORE_TOKENS = + ["text", "paren.rparen", "punctuation.operator", "comment"]; + + var context; + var contextCache = {}; + var initContext = function(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(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() { + 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) { + 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) { + if (text == '"' || 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 !== "'" && 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 + pair = true; + } + return { + text: pair ? quote + quote : "", + selection: [1,1] + }; + } + } + }); + + this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || 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)) { + 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(acequire, exports, module) { + "use strict"; + exports.packages = {}; + + addUnicodePackage({ + L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", + Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A", + Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A", + Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC", + Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", + Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", + M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26", + Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", + Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC", + Me: "0488048906DE20DD-20E020E2-20E4A670-A672", + N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", + Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", + Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF", + No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835", + P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65", + Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D", + Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62", + Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63", + Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20", + Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21", + Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F", + Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65", + S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD", + Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC", + Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6", + Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3", + So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD", + Z: "002000A01680180E2000-200A20282029202F205F3000", + Zs: "002000A01680180E2000-200A202F205F3000", + Zl: "2028", + Zp: "2029", + C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF", + Cc: "0000-001F007F-009F", + Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB", + Co: "E000-F8FF", + Cs: "D800-DFFF", + Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF" + }); + + function addUnicodePackage (pack) { + var codePoint = /\w{4}/g; + for (var name in pack) + exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); + } + + }); + + ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(acequire, exports, module) { "use strict"; var Tokenizer = acequire("../tokenizer").Tokenizer; var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules; - var Behaviour = acequire("./behaviour").Behaviour; + var CstyleBehaviour = acequire("./behaviour/cstyle").CstyleBehaviour; var unicode = acequire("../unicode"); var lang = acequire("../lib/lang"); var TokenIterator = acequire("../token_iterator").TokenIterator; @@ -22088,10 +22600,10 @@ return /******/ (function(modules) { // webpackBootstrap var Mode = function() { this.HighlightRules = TextHighlightRules; - this.$behaviour = new Behaviour(); }; (function() { + this.$defaultBehaviour = new CstyleBehaviour(); this.tokenRe = new RegExp("^[" + unicode.packages.L @@ -22109,7 +22621,7 @@ return /******/ (function(modules) { // webpackBootstrap this.getTokenizer = function() { if (!this.$tokenizer) { - this.$highlightRules = this.$highlightRules || new this.HighlightRules(); + this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); } return this.$tokenizer; @@ -22731,7 +23243,7 @@ return /******/ (function(modules) { // webpackBootstrap return this.removeFullLines(firstRow, lastRow); }; this.insertNewLine = function(position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."); + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); return this.insertMergedLines(position, ["", ""]); }; this.insert = function(position, text) { @@ -24353,7 +24865,7 @@ return /******/ (function(modules) { // webpackBootstrap this.removeFold(fold); else this.expandFold(fold); - return; + return fold; } var range = this.getFoldWidgetRange(row, true); @@ -24361,7 +24873,7 @@ return /******/ (function(modules) { // webpackBootstrap fold = this.getFoldAt(range.start.row, range.start.column, 1); if (fold && range.isEqual(fold.range)) { this.removeFold(fold); - return; + return fold; } } @@ -24640,6 +25152,7 @@ return /******/ (function(modules) { // webpackBootstrap this.$undoSelect = true; this.$foldData = []; + this.id = "session" + (++EditSession.$uid); this.$foldData.toString = function() { return this.join("\n"); }; @@ -26576,7 +27089,7 @@ return /******/ (function(modules) { // webpackBootstrap needle = lang.escapeRegExp(needle); if (options.wholeWord) - needle = "\\b" + needle + "\\b"; + needle = addWordBoundary(needle, options); var modifier = options.caseSensitive ? "gm" : "gmi"; @@ -26665,6 +27178,15 @@ return /******/ (function(modules) { // webpackBootstrap }).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; }); @@ -27019,7 +27541,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "goToNextError", - bindKey: bindKey("Alt-E", "Ctrl-E"), + bindKey: bindKey("Alt-E", "F4"), exec: function(editor) { config.loadModule("ace/ext/error_marker", function(module) { module.showErrorMarker(editor, 1); @@ -27029,7 +27551,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "goToPreviousError", - bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"), + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), exec: function(editor) { config.loadModule("ace/ext/error_marker", function(module) { module.showErrorMarker(editor, -1); @@ -27154,7 +27676,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "selecttostart", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"), + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), exec: function(editor) { editor.getSelection().selectFileStart(); }, multiSelectAction: "forEach", readOnly: true, @@ -27170,7 +27692,7 @@ return /******/ (function(modules) { // webpackBootstrap aceCommandGroup: "fileJump" }, { name: "selectup", - bindKey: bindKey("Shift-Up", "Shift-Up"), + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), exec: function(editor) { editor.getSelection().selectUp(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -27184,7 +27706,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "selecttoend", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"), + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), exec: function(editor) { editor.getSelection().selectFileEnd(); }, multiSelectAction: "forEach", readOnly: true, @@ -27200,7 +27722,7 @@ return /******/ (function(modules) { // webpackBootstrap aceCommandGroup: "fileJump" }, { name: "selectdown", - bindKey: bindKey("Shift-Down", "Shift-Down"), + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), exec: function(editor) { editor.getSelection().selectDown(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -27228,7 +27750,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "selecttolinestart", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"), + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), exec: function(editor) { editor.getSelection().selectLineStart(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -27242,7 +27764,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "selectleft", - bindKey: bindKey("Shift-Left", "Shift-Left"), + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), exec: function(editor) { editor.getSelection().selectLeft(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -27270,7 +27792,7 @@ return /******/ (function(modules) { // webpackBootstrap readOnly: true }, { name: "selecttolineend", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"), + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), exec: function(editor) { editor.getSelection().selectLineEnd(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -28134,7 +28656,8 @@ return /******/ (function(modules) { // webpackBootstrap var row = iterator.getCurrentTokenRow(); var column = iterator.getCurrentTokenColumn(); var range = new Range(row, column, row, column+token.value.length); - if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) { + var sbm = session.$backMarkers[session.$tagHighlight]; + if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) { session.removeMarker(session.$tagHighlight); session.$tagHighlight = null; } @@ -28711,7 +29234,7 @@ return /******/ (function(modules) { // webpackBootstrap var indentString = lang.stringRepeat(" ", count); } else { var count = column % size; - while (line[range.start.column] == " " && count) { + while (line[range.start.column - 1] == " " && count) { range.start.column--; count--; } @@ -30829,6 +31352,7 @@ return /******/ (function(modules) { // webpackBootstrap var dom = acequire("./lib/dom"); var event = acequire("./lib/event"); var EventEmitter = acequire("./lib/event_emitter").EventEmitter; + var MAX_SCROLL_H = 0x8000; var ScrollBar = function(parent) { this.element = dom.createElement("div"); this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix; @@ -30852,11 +31376,13 @@ return /******/ (function(modules) { // webpackBootstrap this.setVisible = function(isVisible) { this.element.style.display = isVisible ? "" : "none"; this.isVisible = isVisible; + this.coeff = 1; }; }).call(ScrollBar.prototype); var VScrollBar = function(parent, renderer) { ScrollBar.call(this, parent); this.scrollTop = 0; + this.scrollHeight = 0; renderer.$scrollbarWidth = this.width = dom.scrollbarWidth(parent.ownerDocument); this.inner.style.width = @@ -30871,6 +31397,10 @@ return /******/ (function(modules) { // webpackBootstrap 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; @@ -30881,16 +31411,22 @@ return /******/ (function(modules) { // webpackBootstrap this.setHeight = function(height) { this.element.style.height = height + "px"; }; - this.setInnerHeight = function(height) { - this.inner.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 = this.element.scrollTop = scrollTop; + this.scrollTop = scrollTop; + this.element.scrollTop = scrollTop * this.coeff; } }; @@ -31148,6 +31684,7 @@ return /******/ (function(modules) { // webpackBootstrap overflow: hidden;\ font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ direction: ltr;\ + text-align: left;\ }\ .ace_scroller {\ position: absolute;\ @@ -31673,6 +32210,7 @@ return /******/ (function(modules) { // webpackBootstrap this.$loop.schedule(this.CHANGE_FULL); this.session.$setFontMetrics(this.$fontMetrics); + this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null; this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); this.onChangeNewLineMode() @@ -32156,12 +32694,13 @@ return /******/ (function(modules) { // webpackBootstrap this.$autosize = function() { var height = this.session.getScreenLength() * this.lineHeight; var maxHeight = this.$maxLines * this.lineHeight; - var desiredHeight = Math.max( - (this.$minLines||1) * this.lineHeight, - Math.min(maxHeight, height) + 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 vScroll = height > maxHeight; if (desiredHeight != this.desiredHeight || @@ -32266,7 +32805,7 @@ return /******/ (function(modules) { // webpackBootstrap minHeight : minHeight, maxHeight : maxHeight, offset : offset, - gutterOffset : Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)), + gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, height : this.$size.scrollerHeight }; @@ -32577,8 +33116,8 @@ return /******/ (function(modules) { // webpackBootstrap function afterLoad(module) { if (_self.$themeId != theme) return cb && cb(); - if (!module.cssClass) - return; + if (!module || !module.cssClass) + throw new Error("couldn't load module " + theme + " or it didn't call define"); dom.importCssString( module.cssText, module.cssClass, @@ -32746,6 +33285,12 @@ return /******/ (function(modules) { // webpackBootstrap this.updateFull(); } }, + maxPixelHeight: { + set: function(val) { + this.updateFull(); + }, + initialValue: 0 + }, scrollPastEnd: { set: function(val) { val = +val || 0; @@ -32803,7 +33348,7 @@ return /******/ (function(modules) { // webpackBootstrap try { var workerSrc = mod.src; - var Blob = __webpack_require__(66); + var Blob = __webpack_require__(17); var blob = new Blob([ workerSrc ], { type: 'application/javascript' }); var blobUrl = (window.URL || window.webkitURL).createObjectURL(blob); @@ -34640,7 +35185,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!w.coverGutter) { w.el.style.zIndex = 3; } - if (!w.pixelHeight) { + if (w.pixelHeight == null) { w.pixelHeight = w.el.offsetHeight; } if (w.rowCount == null) { @@ -35015,6 +35560,9 @@ return /******/ (function(modules) { // webpackBootstrap exports.config = acequire("./config"); exports.acequire = acequire; + + if (true) + exports.define = __webpack_require__(16); exports.edit = function(el) { if (typeof el == "string") { var _id = el; @@ -35063,11 +35611,14 @@ return /******/ (function(modules) { // webpackBootstrap } exports.EditSession = EditSession; exports.UndoManager = UndoManager; - exports.version = "1.2.3"; + exports.version = "1.2.6"; }); (function() { ace.acequire(["ace/ace"], function(a) { - a && a.config.init(true); + 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)) @@ -35078,14 +35629,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = window.ace.acequire("ace/ace"); /***/ }, -/* 65 */ +/* 16 */ /***/ function(module, exports) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }, -/* 66 */ +/* 17 */ /***/ function(module, exports) { /* WEBPACK VAR INJECTION */(function(global) {module.exports = get_blob() @@ -35120,7 +35671,7 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, -/* 67 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { @@ -35231,363 +35782,6 @@ return /******/ (function(modules) { // webpackBootstrap exports.MatchingBraceOutdent = MatchingBraceOutdent; }); - ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(acequire, exports, module) { - "use strict"; - - var oop = acequire("../../lib/oop"); - var Behaviour = acequire("../behaviour").Behaviour; - var TokenIterator = acequire("../../token_iterator").TokenIterator; - var lang = acequire("../../lib/lang"); - - var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; - var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - var context; - var contextCache = {}; - var initContext = function(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(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() { - 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) { - 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) { - if (text == '"' || text == "'") { - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && 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; - } 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 - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1,1] - }; - } - } - }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || 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)) { - 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/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(acequire, exports, module) { "use strict"; @@ -35771,7 +35965,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], __webpack_require__(68), "JsonWorker"); + var worker = new WorkerClient(["ace"], __webpack_require__(19), "JsonWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { @@ -35794,14 +35988,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 19 */ /***/ function(module, exports) { module.exports.id = 'ace/mode/json_worker'; - module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener(\"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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"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){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; + module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener(\"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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"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){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }, -/* 69 */ +/* 20 */ /***/ function(module, exports) { 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(acequire, exports, module) { @@ -35848,6 +36042,7 @@ return /******/ (function(modules) { // webpackBootstrap }\ .ace_search_field {\ background-color: white;\ + color: black;\ border-right: 1px solid #cbcbcb;\ border: 0 none;\ -webkit-box-sizing: border-box;\ @@ -36222,7 +36417,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 70 */ +/* 21 */ /***/ function(module, exports) { /* ***** BEGIN LICENSE BLOCK ***** @@ -36267,6 +36462,7 @@ return /******/ (function(modules) { // webpackBootstrap .ace-jsoneditor.ace_editor {\ font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ line-height: 1.3;\ + background-color: #fff;\ }\ .ace-jsoneditor .ace_print-margin {\ width: 1px;\ diff --git a/dist/jsoneditor.map b/dist/jsoneditor.map index 4dda369..841764b 100644 --- a/dist/jsoneditor.map +++ b/dist/jsoneditor.map @@ -1 +1 @@ -{"version":3,"sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","SCHEMA_URI_FORMAT_FUNC","str","SCHEMA_URI_FORMAT","test","opts","schemaKeyRef","v","getSchema","schemaObj","_addSchema","_compile","valid","async","self","_opts","co","errors","addSchema","key","_skipValidation","_meta","Array","undefined","resolve","normalizeId","checkUnique","_schemas","meta","addMetaSchema","skipValidation","throwOrLogError","$schema","defaultMeta","currentUriFormat","_formats","uri","message","errorsText","v5","META_SCHEMA_ID","keyRef","_getSchemaObj","_refs","removeSchema","_removeAllSchemas","_cache","del","jsonStr","RegExp","stableStringify","schemas","regex","shouldAddSchema","cached","addUsedSchema","localRefs","ids","SchemaObject","put","callValidate","_validate","result","apply","compiling","$async","currentOpts","_metaOpts","compileSchema","refs","refVal","separator","dataVar","text","e","dataPath","slice","addFormat","format","addInitialSchemas","metaSchema","optsSchemas","addInitialFormats","formats","getMetaSchemaOptions","metaOpts","copy","META_IGNORE_OPTIONS","cache","Cache","_loadingSchemas","RULES","rules","loopRequired","Infinity","transpile","setup","beautify","indent_size","errorDataPath","_errorDataPathProperty","enable","compileAsync","addKeyword","ValidationError","baseId","localCompile","_schema","_root","isRoot","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","validateCode","_transpileFunc","eval","ref","url","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","code","inline","regexStr","index","patternsHash","value","toQuotedString","valueStr","defaultsHash","rule","parentSchema","it","definition","macro","keyword","arr","statement","js_beautify","ucs2length","equal","res","_resolve","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","parts","split","part","unescapeFragment","PREVENT_SCOPE_CHANGE","$ref","limit","checkNoRef","countKeys","item","count","SIMPLE_INLINED","normalize","protocol","host","path","replace","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","escapeFragment","toHash","Url","slashes","auth","port","hostname","search","query","pathname","href","urlParse","parseQueryString","slashesDenoteHost","isObject","u","urlFormat","obj","isString","urlResolve","source","relative","urlResolveObject","resolveObject","arg","isNull","isNullOrUndefined","punycode","protocolPattern","portPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","TypeError","rest","trim","proto","exec","lowerProto","toLowerCase","substr","match","hostEnd","hec","atSign","lastIndexOf","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","newpart","j","k","charCodeAt","validParts","notHost","bit","push","unshift","join","domainArray","newOut","s","encode","h","ae","esc","encodeURIComponent","escape","qm","charAt","rel","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","type","RangeError","map","array","fn","mapDomain","string","regexSeparators","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","out","basic","oldi","w","t","baseMinusT","inputLength","n","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeGlobal","nodeType","window","overflow","not-basic","invalid-input","Math","String","fromCharCode","version","ucs2","webpackPolyfill","deprecate","paths","children","hasOwnProperty","qs","sep","eq","regexp","maxKeys","len","kstr","vstr","x","idx","stringifyPrimitive","isFinite","ks","a","b","arrA","arrB","o","to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","types","object","number","integer","coerceToTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","SINGLE_QUOTE","escapeQuotes","pos","varOccurences","matches","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_TRUE_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","escapeJsonPointer","getData","$data","lvl","RELATIVE_JSON_POINTER","jsonPointer","segments","segment","unescapeJsonPointer","cmp","space","cycles","replacer","f","node","aobj","bobj","seen","parent","level","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","","toString","has","at","ch","escapee","\"","\\","/","r","next","hex","uffff","parseInt","white","word","reviver","walk","holder","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","setupAsync","required","check","TRANSPILE","ASYNC","MODES","checkGenerators","checkAsyncFunction","getRegenerator","regenerator","runtime","regeneratorTranspile","getNodent","nodent","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","callback","_compileAsync","firstCall","loadMissingSchema","schemaLoaded","sch","missingSchema","missingRef","_callbacks","loadSchema","deferCallback","setTimeout","*","co*","es7","$keyword","$shouldUseGroup","$rulesGroup","$shouldUseRule","$rule","additionalProperties","patternProperties","patternGroups","$top","$lvl","$dataLvl","dataLevel","rootId","$es7","yieldAwait","dataPathArr","$errorKeyword","$valid","$breakOnError","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$schemaPath","$errSchemaPath","$method","$dataType","$coerced","$bracesCoercion","arr1","$type","$i","l1","$$outStack","createErrors","messages","__err","compositeRule","$parentData","$dataProperty","arr2","i2","l2","useDefaults","properties","$schemaKeys","arr3","$propertyKey","i3","l3","$sch","$passData","items","arr4","l4","arr5","i5","l5","custom","$ruleValidate","$ruleErrs","$errs","$ruleErr","$rDef","$asyncKeyword","$inline","$macro","statements","$it","$wasComposite","$code","passContext","def_callRuleValidate","def_customError","$typeChecked","gen","ctx","args","Promise","reject","onFulfilled","ret","onRejected","done","toPromise","isPromise","then","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","objectToPromise","all","defer","promise","results","constructor","displayName","val","wrap","createPromise","__generatorFunction__","validation","formatDefs","fName","compare","date","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","HOSTNAME","NOT_URI_FRAGMENT","URI","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","UUID","JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","ruleModules","keywords","group","allOf","anyOf","dependencies","enum","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","uniqueItems","$refCode","$refVal","$message","missingRefs","$error","__callValidate","$closingBraces","$noEmptySchema","every","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isData","$schemaValue","$format","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$schemaValueExcl","$exclusive","$opExpr","$opStr","unicode","multipleOfPrecision","$allErrorsOption","$regexp","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","i1","$pProperty","$pgProperty","$additionalProperty","$useDefaults","i4","$hasDefault","$useData","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","enableV5","_addKeyword","inlineFunc","inlineFunctions","switch","constant","_formatLimit","patternRequired","containsMacro","$shouldContinue","$ifPassed","$caseIndex","$schemaFormat","$isDataFormat","$schemaValueFormat","$compare","$result","$key","$matched","$missingPattern","description","definitions","schemaArray","positiveInteger","positiveIntegerDefault0","default","simpleTypes","stringArray","title","exclusiveMinimum","exclusiveMaximum","formatMaximum","formatMinimum","exclusiveFormatMaximum","exclusiveFormatMinimum","contains","if","continue","_addRule","ruleGroup","rg","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","debounce","bind","Function","content","table","params","field","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","querySelector","menu","collapse","tbody","getDom","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","filter","entry","reduce","findParents","child","updateDom","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","scrollTo","editor","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","parseKey","specialValues","escapeUnicodeChars","Number","Boolean","isUrlRegex","isUrl","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","popStack","stack","vstack","lstack","lex","token","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","matched","conditionStack","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","fieldText","_escapeHTML","_updateSchema","_updateDomIndexes","_findSchema","_findEnum","composite","childSchema","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","MAX_ERRORS","DEFAULT_THEME","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","editorDom","edit","$blockScrolling","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","force","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","exportAce","ns","packaged","original","acequire","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","dep","packagedModule","normalizeModule","moduleName","chunks","mod","req","returnValue","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","reduceRight","sought","getPrototypeOf","__proto__","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","importCssStylsheet","link","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS","224","KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","-13","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","onMousedown","clicks","isNewClick","startX","startY","timer","_clicks","eventNames","onDblclick","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","windowBlurred","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","get_blob","Builder","MSBlobBuilder","bag","builder","endings","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext"],"mappings":"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","file":"jsoneditor.map"} \ No newline at end of file +{"version":3,"sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","require","global","f","e","t","n","r","s","o","u","a","code","l","1","setupAsync","opts","required","check","async","transpile","TRANSPILE","_transpileFunc","ASYNC","MODES","_opts","copy","checkGenerators","Function","checkAsyncFunction","getRegenerator","regenerator","runtime","regeneratorTranspile","getNodent","nodent","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","compileAsync","callback","_compileAsync","firstCall","deferCallback","setTimeout","self","missingSchema","schemaLoaded","sch","_refs","ref","_schemas","addSchema","missingRef","_callbacks","_loadingSchemas","loadSchema","schemaObj","_addSchema","setup","*","co*","es7","./compile/util","2","Cache","_cache","put","key","value","del","3","$ref","allOf","anyOf","dependencies","enum","format","items","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","properties","uniqueItems","../dotjs/_limit","../dotjs/_limitItems","../dotjs/_limitLength","../dotjs/_limitProperties","../dotjs/allOf","../dotjs/anyOf","../dotjs/dependencies","../dotjs/enum","../dotjs/format","../dotjs/items","../dotjs/multipleOf","../dotjs/not","../dotjs/oneOf","../dotjs/pattern","../dotjs/properties","../dotjs/ref","../dotjs/required","../dotjs/uniqueItems","../dotjs/validate","4","equal","b","arrA","Array","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","hasOwnProperty","5","formats","formatDefs","fName","compare","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","split","DATE_TIME_SEPARATOR","hostname","HOSTNAME","test","uri","NOT_URI_FRAGMENT","URI","regex","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","res","undefined","UUID","JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","./util","6","loadBeautify","beautify","js_beautify","localRefs","baseId","callValidate","compilation","result","apply","errors","localCompile","_schema","_root","isRoot","$async","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","RULES","resolve","resolveRef","usePattern","useDefault","useCustomRule","vars","refVal","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","validateCode","co","ucs2length","ValidationError","refs","keepSourceCode","source","url","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","v","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","stableStringify","defaultsHash","rule","parentSchema","it","definition","message","errorsText","macro","keyword","checkCompiling","_compilations","compiling","_formats","cv","endCompiling","compIndex","splice","arr","statement","../async","./equal","./resolve","./validation_error","json-stable-stringify","7","SchemaObject","_compile","resolveSchema","refPath","_getFullPath","getFullPath","normalizeId","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","slice","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","count","Infinity","SIMPLE_INLINED","normalize","protocolSeparator","protocol","href","host","path","replace","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","escapeFragment","ids","toHash","./schema_obj","8","ruleModules","type","rules","ALL","KEYWORDS","TYPES","all","group","map","push","keywords","concat","types","custom","./_rules","9","obj","10","len","pos","charCodeAt","11","to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","escapeQuotes","SINGLE_QUOTE","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_TRUE_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","schemaHasRulesExcept","exceptKeyword","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","RELATIVE_JSON_POINTER","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","./ucs2length","12","validation","constructor","13","$keyword","$errorKeyword","$lvl","level","$dataLvl","dataLevel","$schema","$schemaPath","$errSchemaPath","$breakOnError","$valid","$schemaFormat","$isDataFormat","v5","$closingBraces","$schemaValueFormat","dataPathArr","$format","$compare","$schemaValue","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$result","$isData","$schemaValueExcl","$exclusive","$opExpr","$opStr","$$outStack","createErrors","messages","__err","pop","compositeRule","14","$notOp","15","16","unicode","17","18","$it","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","19","$errs","every","$wasComposite","20","21","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","$code","passContext","$parentData","$parentDataProperty","def_callRuleValidate","modifying","valid","def_customError","22","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","join","arr2","$reqProperty","i2","l2","23","$vSchema","24","$unknownFormats","unknownFormats","$allowUnknown","$isObject","$formatRef","25","$idx","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$passData","26","multipleOfPrecision","27","$allErrorsOption","28","29","$regexp","30","$key","$matched","$ownProperties","ownProperties","$pProperty","i1","$missingPattern","31","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","$pgProperties","patternGroups","$pgPropertyKeys","$propertyKey","arr3","$pgProperty","l3","$additionalProperty","$useDefaults","useDefaults","arr4","i4","l4","$hasDefault","default","$useData","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","32","$refCode","$refVal","$message","missingRefs","$error","__callValidate","33","$propertySch","$loopRequired","i3","34","$shouldContinue","$ifPassed","$caseIndex","if","then","continue","35","36","$shouldUseRule","$top","rootId","$es7","yieldAwait","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$method","$dataType","$coerced","$bracesCoercion","$type","$refKeywords","extendRefs","$rulesGroup","$typeChecked","37","addKeyword","_addRule","ruleGroup","rg","metaSchema","getKeyword","removeKeyword","j","add","remove","./dotjs/custom","38","description","definitions","schemaArray","positiveInteger","positiveIntegerDefault0","simpleTypes","stringArray","title","exclusiveMinimum","exclusiveMaximum","39","formatMaximum","formatMinimum","formatExclusiveMaximum","formatExclusiveMinimum","constant","contains","switch","40","enableV5","_addKeyword","inlineFunc","inlineFunctions","_formatLimit","patternRequired","meta","addMetaSchema","META_SCHEMA_ID","containsMacro","enable","./dotjs/_formatLimit","./dotjs/constant","./dotjs/patternRequired","./dotjs/switch","./refs/json-schema-v5.json","41","gen","ctx","args","Promise","reject","onFulfilled","ret","next","onRejected","throw","done","toPromise","isPromise","TypeError","String","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","isObject","objectToPromise","fn","results","promise","displayName","val","wrap","createPromise","__generatorFunction__","42","cmp","space","cycles","replacer","node","aobj","bobj","seen","parent","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","","x","has","jsonify","43","./lib/parse","./lib/stringify","44","at","ch","text","escapee","\"","\\","/","charAt","string","isFinite","hex","uffff","parseInt","fromCharCode","white","word","reviver","walk","holder","k","45","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","46","RangeError","mapDomain","regexSeparators","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toLowerCase","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","window","punycode","overflow","not-basic","invalid-input","Math","version","ucs2","47","qs","sep","eq","maxKeys","kstr","vstr","idx","substr","xs","48","stringifyPrimitive","ks","49","./decode","./encode","50","Url","slashes","auth","port","search","query","pathname","urlParse","parseQueryString","slashesDenoteHost","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","isAbsolute","51","arg","SCHEMA_URI_FORMAT_FUNC","SCHEMA_URI_FORMAT","schemaKeyRef","getSchema","_meta","_skipValidation","checkUnique","skipValidation","throwOrLogError","defaultMeta","currentUriFormat","keyRef","_getSchemaObj","_getSchemaFragment","compileSchema","_fragments","fragment","removeSchema","_removeAllSchemas","jsonStr","schemas","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","_validate","currentOpts","_metaOpts","separator","dataPath","addFormat","cache","indent_size","errorDataPath","metaOpts","META_IGNORE_OPTIONS","optsSchemas","customKeyword","./async","./cache","./compile","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/validation_error","./keyword","./refs/json-schema-draft-04.json","./v5","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","debounce","bind","content","table","params","field","_setRoot","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","querySelector","menu","collapse","tbody","getDom","expandAll","collapseAll","_onAction","action","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","filter","entry","reduce","findParents","child","updateDom","recurse","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","scrollTo","editor","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","prev","chars","pp","specialValues","regexp","escapeUnicodeChars","Number","Boolean","isUrlRegex","isUrl","getAbsoluteLeft","elem","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","margin","_margin","right","func","wait","immediate","timeout","context","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","defaultActions","parseError","lex","token","lexer","stack","vstack","lstack","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","matched","conditionStack","unput","less","pastInput","past","upcomingInput","pre","tempMatch","lines","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","searchFieldActive","searchValueActive","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","fieldText","_escapeHTML","_updateSchema","_updateDomIndexes","_findSchema","_findEnum","composite","childSchema","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","re","sre","dre","hre","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","emptyNode","isReadOnly","editorDom","edit","$blockScrolling","setTheme","setOptions","readOnly","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","deps","payload","original","payloads","_acequire","parentId","lookup","dep","acequire","packagedModule","normalizeModule","moduleName","chunks","mod","packaged","ns","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","reduceRight","sought","getPrototypeOf","__proto__","getOwnPropertyDescriptor","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","returnValue","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","ws","trimBeginRegexp","trimEndRegexp","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","importCssStylsheet","link","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS","224","KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS","96","97","98","99","100","101","102","103","104","105","-13","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","getModifierState","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","onMousedown","clicks","isNewClick","startX","startY","timer","_clicks","eventNames","onDblclick","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","nextTick","win","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","isEmpty","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","forceIEMime","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","$undoManager","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","rect","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScrollTime","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","_signal","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","getCursorPosition","getWrapBehavioursEnabled","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","lineCommentStart","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","isWordBefore","isWordAfter","iterator","$matchTokenType","iterator2","bracket","packages","pack","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$brackets",")","(","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","$useSoftTabs","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","maxRow","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","addWordBoundary","needle","wordBoundary","Search","find","$matchIterator","skipCurrent","findAll","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceFunc","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","maxPixelHeight","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","Builder","MSBlobBuilder","bag","builder","endings","JsonHighlightRules","MatchingBraceOutdent","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext"],"mappings":"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","file":"jsoneditor"} \ No newline at end of file diff --git a/dist/jsoneditor.min.css b/dist/jsoneditor.min.css index b3ab651..204f6e5 100644 --- a/dist/jsoneditor.min.css +++ b/dist/jsoneditor.min.css @@ -1 +1 @@ -div.jsoneditor,div.jsoneditor-outer{-moz-box-sizing:border-box;-webkit-box-sizing:border-box}div.jsoneditor .jsoneditor-search input{height:auto;border:inherit}div.jsoneditor .jsoneditor-search input:focus{border:none!important;box-shadow:none!important}div.jsoneditor table{border-collapse:collapse;width:auto}div.jsoneditor td,div.jsoneditor th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-readonly{min-width:16px;color:gray}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty::after,div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}div.jsoneditor-field.jsoneditor-empty::after{content:"field"}div.jsoneditor-value.jsoneditor-empty::after{content:"value"}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:green;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:gray}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#FFFFAB;border:1px solid #ff0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-string{color:green}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px;color:grey}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ED0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:url(img/jsoneditor-icons.svg)}div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree,div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree{cursor:pointer}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu:focus,div.jsoneditor-tree button.jsoneditor-contextmenu:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu{background-position:-48px -48px}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor{color:#1A1A1A;border:1px solid #3883fa;box-sizing:border-box;width:100%;height:100%;overflow:hidden;position:relative;padding:0;line-height:100%}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}div.jsoneditor-outer{position:static;width:100%;height:100%;margin:-35px 0 0;padding:35px 0 0;box-sizing:border-box}.ace-jsoneditor,textarea.jsoneditor-text{min-height:150px}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}textarea.jsoneditor-text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#e6e6e6}tr.jsoneditor-selected button.jsoneditor-contextmenu,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(img/jsoneditor-icons.svg) -72px -72px;cursor:move}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}div.jsoneditor td,div.jsoneditor td.jsoneditor-tree{vertical-align:top}.jsoneditor-schema-error,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value{font-family:droid sans mono,consolas,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1A1A1A}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}div.jsoneditor-tree .jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) -168px -48px}.jsoneditor-schema-error .jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;display:none;padding:7px 10px;position:absolute;width:200px;z-index:4}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-schema-error .jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:'';display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before,.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-top:7px solid transparent;border-bottom:7px solid transparent;content:'';top:19px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;right:-14px;left:inherit}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;left:-14px}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;-webkit-animation:fade-in .3s linear 1,move-up .3s linear 1;-moz-animation:fade-in .3s linear 1,move-up .3s linear 1;-ms-animation:fade-in .3s linear 1,move-up .3s linear 1}@-webkit-keyframes fade-in{from{opacity:0}to{opacity:1}}@-moz-keyframes fade-in{from{opacity:0}to{opacity:1}}@-ms-keyframes fade-in{from{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;background-color:#ffef8b;border-top:1px solid gold}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) -168px -48px}div.jsoneditor-contextmenu-root{position:relative;width:0;height:0}div.jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:99999}div.jsoneditor-contextmenu li,div.jsoneditor-contextmenu ul{box-sizing:content-box}div.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}div.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;line-height:26px;text-align:left}div.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}div.jsoneditor-contextmenu ul li button:focus,div.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}div.jsoneditor-contextmenu ul li button.jsoneditor-default{width:92px}div.jsoneditor-contextmenu ul li button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}div.jsoneditor-contextmenu div.jsoneditor-icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.svg)}div.jsoneditor-contextmenu ul li button div.jsoneditor-expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) 0 -72px;opacity:.4}div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand{opacity:1}div.jsoneditor-contextmenu div.jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}div.jsoneditor-contextmenu button.jsoneditor-remove>div.jsoneditor-icon{background-position:-24px -24px}div.jsoneditor-contextmenu button.jsoneditor-remove:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-remove:hover>div.jsoneditor-icon{background-position:-24px 0}div.jsoneditor-contextmenu button.jsoneditor-append>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-append:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-append:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-insert>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-insert:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-insert:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-duplicate>div.jsoneditor-icon{background-position:-48px -24px}div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover>div.jsoneditor-icon{background-position:-48px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-asc>div.jsoneditor-icon{background-position:-168px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover>div.jsoneditor-icon{background-position:-168px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-desc>div.jsoneditor-icon{background-position:-192px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover>div.jsoneditor-icon{background-position:-192px 0}div.jsoneditor-contextmenu ul li button.jsoneditor-selected,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}div.jsoneditor-contextmenu ul li{overflow:hidden}div.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}div.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}div.jsoneditor-contextmenu ul li ul li button:focus,div.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}div.jsoneditor-contextmenu button.jsoneditor-type-string>div.jsoneditor-icon{background-position:-144px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:hover>div.jsoneditor-icon{background-position:-144px 0}div.jsoneditor-contextmenu button.jsoneditor-type-auto>div.jsoneditor-icon{background-position:-120px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover>div.jsoneditor-icon{background-position:-120px 0}div.jsoneditor-contextmenu button.jsoneditor-type-object>div.jsoneditor-icon{background-position:-72px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:hover>div.jsoneditor-icon{background-position:-72px 0}div.jsoneditor-contextmenu button.jsoneditor-type-array>div.jsoneditor-icon{background-position:-96px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:hover>div.jsoneditor-icon{background-position:-96px 0}div.jsoneditor-contextmenu button.jsoneditor-type-modes>div.jsoneditor-icon{background-image:none;width:6px}div.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}div.jsoneditor-menu>button,div.jsoneditor-menu>div.jsoneditor-modes>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:url(img/jsoneditor-icons.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}div.jsoneditor-menu>button:hover,div.jsoneditor-menu>div.jsoneditor-modes>button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}div.jsoneditor-menu>button:active,div.jsoneditor-menu>button:focus,div.jsoneditor-menu>div.jsoneditor-modes>button:active,div.jsoneditor-menu>div.jsoneditor-modes>button:focus{background-color:rgba(255,255,255,.3)}div.jsoneditor-menu>button:disabled,div.jsoneditor-menu>div.jsoneditor-modes>button:disabled{opacity:.5}div.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}div.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}div.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}div.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}div.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}div.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}div.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}div.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}div.jsoneditor-menu>div.jsoneditor-modes{display:inline-block;float:left}div.jsoneditor-menu>div.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}div.jsoneditor-menu>button.jsoneditor-separator,div.jsoneditor-menu>div.jsoneditor-modes>button.jsoneditor-separator{margin-left:10px}div.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}div.jsoneditor-menu a:hover{opacity:1}div.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}table.jsoneditor-search div.jsoneditor-results,table.jsoneditor-search input{font-family:arial,sans-serif;font-size:10pt;color:#1A1A1A;background:0 0}table.jsoneditor-search div.jsoneditor-results{color:#fff;padding-right:5px;line-height:24px}table.jsoneditor-search{position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0}table.jsoneditor-search div.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}table.jsoneditor-search div.jsoneditor-frame table{border-collapse:collapse}table.jsoneditor-search input{width:120px;border:none;outline:0;margin:1px;line-height:20px}table.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.svg);vertical-align:top}table.jsoneditor-search button:hover{background-color:transparent}table.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}table.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}table.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}table.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}table.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px} \ No newline at end of file +div.jsoneditor .jsoneditor-search input{height:auto;border:inherit}div.jsoneditor .jsoneditor-search input:focus{border:none!important;box-shadow:none!important}div.jsoneditor table{border-collapse:collapse;width:auto}div.jsoneditor td,div.jsoneditor th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-readonly{min-width:16px;color:gray}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty::after,div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}div.jsoneditor-field.jsoneditor-empty::after{content:"field"}div.jsoneditor-value.jsoneditor-empty::after{content:"value"}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:green;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:gray}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#ffffab;border:1px solid #ff0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-string{color:green}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px;color:grey}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ed0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:transparent url(img/jsoneditor-icons.svg)}div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree,div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree{cursor:pointer}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu:focus,div.jsoneditor-tree button.jsoneditor-contextmenu:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu{background-position:-48px -48px}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor{color:#1a1a1a;border:1px solid #3883fa;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:relative;padding:0;line-height:100%}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}div.jsoneditor-outer{position:static;width:100%;height:100%;margin:-35px 0 0 0;padding:35px 0 0 0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.ace-jsoneditor,textarea.jsoneditor-text{min-height:150px}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}textarea.jsoneditor-text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#e6e6e6}tr.jsoneditor-selected button.jsoneditor-contextmenu,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(img/jsoneditor-icons.svg) -72px -72px;cursor:move}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}div.jsoneditor td{vertical-align:top}div.jsoneditor td.jsoneditor-tree{vertical-align:top}.jsoneditor-schema-error,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value{font-family:droid sans mono,consolas,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1a1a1a}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}div.jsoneditor-tree .jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) -168px -48px}.jsoneditor-schema-error .jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;display:none;padding:7px 10px;position:absolute;width:200px;z-index:4}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-schema-error .jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:'';display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;border-top:7px solid transparent;border-bottom:7px solid transparent;content:'';top:19px;right:-14px;left:inherit;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;border-top:7px solid transparent;border-bottom:7px solid transparent;content:'';top:19px;left:-14px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;-webkit-animation:fade-in .3s linear 1,move-up .3s linear 1;-moz-animation:fade-in .3s linear 1,move-up .3s linear 1;-ms-animation:fade-in .3s linear 1,move-up .3s linear 1}@-webkit-keyframes fade-in{from{opacity:0}to{opacity:1}}@-moz-keyframes fade-in{from{opacity:0}to{opacity:1}}@-ms-keyframes fade-in{from{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;background-color:#ffef8b;border-top:1px solid gold}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) -168px -48px}div.jsoneditor-contextmenu-root{position:relative;width:0;height:0}div.jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:99999}div.jsoneditor-contextmenu li,div.jsoneditor-contextmenu ul{box-sizing:content-box}div.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}div.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;line-height:26px;text-align:left}div.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}div.jsoneditor-contextmenu ul li button:focus,div.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}div.jsoneditor-contextmenu ul li button.jsoneditor-default{width:92px}div.jsoneditor-contextmenu ul li button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}div.jsoneditor-contextmenu div.jsoneditor-icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.svg)}div.jsoneditor-contextmenu ul li button div.jsoneditor-expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) 0 -72px;opacity:.4}div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand{opacity:1}div.jsoneditor-contextmenu div.jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}div.jsoneditor-contextmenu button.jsoneditor-remove>div.jsoneditor-icon{background-position:-24px -24px}div.jsoneditor-contextmenu button.jsoneditor-remove:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-remove:hover>div.jsoneditor-icon{background-position:-24px 0}div.jsoneditor-contextmenu button.jsoneditor-append>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-append:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-append:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-insert>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-insert:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-insert:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-duplicate>div.jsoneditor-icon{background-position:-48px -24px}div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover>div.jsoneditor-icon{background-position:-48px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-asc>div.jsoneditor-icon{background-position:-168px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover>div.jsoneditor-icon{background-position:-168px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-desc>div.jsoneditor-icon{background-position:-192px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover>div.jsoneditor-icon{background-position:-192px 0}div.jsoneditor-contextmenu ul li button.jsoneditor-selected,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}div.jsoneditor-contextmenu ul li{overflow:hidden}div.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}div.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}div.jsoneditor-contextmenu ul li ul li button:focus,div.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}div.jsoneditor-contextmenu button.jsoneditor-type-string>div.jsoneditor-icon{background-position:-144px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:hover>div.jsoneditor-icon{background-position:-144px 0}div.jsoneditor-contextmenu button.jsoneditor-type-auto>div.jsoneditor-icon{background-position:-120px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover>div.jsoneditor-icon{background-position:-120px 0}div.jsoneditor-contextmenu button.jsoneditor-type-object>div.jsoneditor-icon{background-position:-72px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:hover>div.jsoneditor-icon{background-position:-72px 0}div.jsoneditor-contextmenu button.jsoneditor-type-array>div.jsoneditor-icon{background-position:-96px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:hover>div.jsoneditor-icon{background-position:-96px 0}div.jsoneditor-contextmenu button.jsoneditor-type-modes>div.jsoneditor-icon{background-image:none;width:6px}div.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}div.jsoneditor-menu>button,div.jsoneditor-menu>div.jsoneditor-modes>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:transparent url(img/jsoneditor-icons.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}div.jsoneditor-menu>button:hover,div.jsoneditor-menu>div.jsoneditor-modes>button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}div.jsoneditor-menu>button:active,div.jsoneditor-menu>button:focus,div.jsoneditor-menu>div.jsoneditor-modes>button:active,div.jsoneditor-menu>div.jsoneditor-modes>button:focus{background-color:rgba(255,255,255,.3)}div.jsoneditor-menu>button:disabled,div.jsoneditor-menu>div.jsoneditor-modes>button:disabled{opacity:.5}div.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}div.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}div.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}div.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}div.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}div.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}div.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}div.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}div.jsoneditor-menu>div.jsoneditor-modes{display:inline-block;float:left}div.jsoneditor-menu>div.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}div.jsoneditor-menu>button.jsoneditor-separator,div.jsoneditor-menu>div.jsoneditor-modes>button.jsoneditor-separator{margin-left:10px}div.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}div.jsoneditor-menu a:hover{opacity:1}div.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}table.jsoneditor-search div.jsoneditor-results,table.jsoneditor-search input{font-family:arial,sans-serif;font-size:10pt;color:#1a1a1a;background:0 0}table.jsoneditor-search div.jsoneditor-results{color:#fff;padding-right:5px;line-height:24px}table.jsoneditor-search{position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0}table.jsoneditor-search div.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}table.jsoneditor-search div.jsoneditor-frame table{border-collapse:collapse}table.jsoneditor-search input{width:120px;border:none;outline:0;margin:1px;line-height:20px}table.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.svg);vertical-align:top}table.jsoneditor-search button:hover{background-color:transparent}table.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}table.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}table.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}table.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}table.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px} \ No newline at end of file diff --git a/dist/jsoneditor.min.js b/dist/jsoneditor.min.js index af5d40b..63d59eb 100644 --- a/dist/jsoneditor.min.js +++ b/dist/jsoneditor.min.js @@ -24,26 +24,17 @@ * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.5.11 - * @date 2017-04-14 + * @version 5.6.0 + * @date 2017-04-15 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=l.getInternetExplorerVersion();if(-1!=r&&9>r)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(1)}catch(o){}var s=i(51),a=i(62),l=i(54);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=l.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=l.extend({},this.options),s=o.mode;o.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==a.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),l.clear(this),l.extend(this,a.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(h){console.error(h)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(i){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},n.prototype.validate=function(){},n.prototype.refresh=function(){},n.registerMode=function(e){var t,i;if(l.isArray(e))for(t=0;t",'"',"`"," ","\r","\n"," "],g=["{","}","|","\\","^","`"].concat(m),v=["'"].concat(g),w=["%","/","?",";","#"].concat(v),y=["/","?","#"],A=255,C=/^[a-z0-9A-Z_-]{0,63}$/,E=/^([a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},F={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=i(7);n.prototype.parse=function(e,t,i){if(!l(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var r=f.exec(n);if(r){r=r[0];var o=r.toLowerCase();this.protocol=o,n=n.substr(r.length)}if(i||r||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var s="//"===n.substr(0,2);!s||r&&F[r]||(n=n.substr(2),this.slashes=!0)}if(!F[r]&&(s||r&&!x[r])){for(var a=-1,c=0;ch)&&(a=h)}var d,p;p=-1===a?n.lastIndexOf("@"):n.lastIndexOf("@",a),-1!==p&&(d=n.slice(0,p),n=n.slice(p+1),this.auth=decodeURIComponent(d)),a=-1;for(var c=0;ch)&&(a=h)}-1===a&&(a=n.length),this.host=n.slice(0,a),n=n.slice(a),this.parseHost(),this.hostname=this.hostname||"";var m="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!m)for(var g=this.hostname.split(/\./),c=0,$=g.length;$>c;c++){var D=g[c];if(D&&!D.match(C)){for(var k="",B=0,_=D.length;_>B;B++)k+=D.charCodeAt(B)>127?"x":D[B];if(!k.match(C)){var L=g.slice(0,c),R=g.slice(c+1),T=D.match(E);T&&(L.push(T[1]),R.unshift(T[2])),R.length&&(n="/"+R.join(".")+n),this.hostname=L.join(".");break}}}if(this.hostname.length>A?this.hostname="":this.hostname=this.hostname.toLowerCase(),!m){for(var P=this.hostname.split("."),M=[],c=0;cc;c++){var j=v[c],W=encodeURIComponent(j);W===j&&(W=escape(j)),n=n.split(j).join(W)}var H=n.indexOf("#");-1!==H&&(this.hash=n.substr(H),n=n.slice(0,H));var V=n.indexOf("?");if(-1!==V?(this.search=n.substr(V),this.query=n.substr(V+1),t&&(this.query=S.parse(this.query)),n=n.slice(0,V)):t&&(this.search="",this.query={}),n&&(this.pathname=n),x[o]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var N=this.pathname||"",O=this.search||"";this.path=N+O}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",i=this.pathname||"",n=this.hash||"",r=!1,o="";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&c(this.query)&&Object.keys(this.query).length&&(o=S.stringify(this.query));var s=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||x[t])&&r!==!1?(r="//"+(r||""),i&&"/"!==i.charAt(0)&&(i="/"+i)):r||(r=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),i=i.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+r+i+s+n},n.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(l(e)){var t=new n;t.parse(e,!1,!0),e=t}var i=new n;if(Object.keys(this).forEach(function(e){i[e]=this[e]},this),i.hash=e.hash,""===e.href)return i.href=i.format(),i;if(e.slashes&&!e.protocol)return Object.keys(e).forEach(function(t){"protocol"!==t&&(i[t]=e[t])}),x[i.protocol]&&i.hostname&&!i.pathname&&(i.path=i.pathname="/"),i.href=i.format(),i;if(e.protocol&&e.protocol!==i.protocol){if(!x[e.protocol])return Object.keys(e).forEach(function(t){i[t]=e[t]}),i.href=i.format(),i;if(i.protocol=e.protocol,e.host||F[e.protocol])i.pathname=e.pathname;else{for(var r=(e.pathname||"").split("/");r.length&&!(e.host=r.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==r[0]&&r.unshift(""),r.length<2&&r.unshift(""),i.pathname=r.join("/")}if(i.search=e.search,i.query=e.query,i.host=e.host||"",i.auth=e.auth,i.hostname=e.hostname||e.host,i.port=e.port,i.pathname||i.search){var o=i.pathname||"",s=i.search||"";i.path=o+s}return i.slashes=i.slashes||e.slashes,i.href=i.format(),i}var a=i.pathname&&"/"===i.pathname.charAt(0),c=e.host||e.pathname&&"/"===e.pathname.charAt(0),u=c||a||i.host&&e.pathname,f=u,p=i.pathname&&i.pathname.split("/")||[],r=e.pathname&&e.pathname.split("/")||[],m=i.protocol&&!x[i.protocol];if(m&&(i.hostname="",i.port=null,i.host&&(""===p[0]?p[0]=i.host:p.unshift(i.host)),i.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===r[0]?r[0]=e.host:r.unshift(e.host)),e.host=null),u=u&&(""===r[0]||""===p[0])),c)i.host=e.host||""===e.host?e.host:i.host,i.hostname=e.hostname||""===e.hostname?e.hostname:i.hostname,i.search=e.search,i.query=e.query,p=r;else if(r.length)p||(p=[]),p.pop(),p=p.concat(r),i.search=e.search,i.query=e.query;else if(!d(e.search)){if(m){i.hostname=i.host=p.shift();var g=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;g&&(i.auth=g.shift(),i.host=i.hostname=g.shift())}return i.search=e.search,i.query=e.query,h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!p.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var v=p.slice(-1)[0],w=(i.host||e.host)&&("."===v||".."===v)||""===v,y=0,A=p.length;A>=0;A--)v=p[A],"."==v?p.splice(A,1):".."===v?(p.splice(A,1),y++):y&&(p.splice(A,1),y--);if(!u&&!f)for(;y--;y)p.unshift("..");!u||""===p[0]||p[0]&&"/"===p[0].charAt(0)||p.unshift(""),w&&"/"!==p.join("/").substr(-1)&&p.push("");var C=""===p[0]||p[0]&&"/"===p[0].charAt(0);if(m){i.hostname=i.host=C?"":p.length?p.shift():"";var g=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;g&&(i.auth=g.shift(),i.host=i.hostname=g.shift())}return u=u||i.host&&p.length,u&&!C&&p.unshift(""),p.length?i.pathname=p.join("/"):(i.pathname=null,i.path=null),h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=p.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,i){var n;(function(e,r){!function(o){function s(e){throw RangeError(L[e])}function a(e,t){for(var i=e.length,n=[];i--;)n[i]=t(e[i]);return n}function l(e,t){var i=e.split("@"),n="";i.length>1&&(n=i[0]+"@",e=i[1]),e=e.replace(_,".");var r=e.split("."),o=a(r,t).join(".");return n+o}function c(e){for(var t,i,n=[],r=0,o=e.length;o>r;)t=e.charCodeAt(r++),t>=55296&&56319>=t&&o>r?(i=e.charCodeAt(r++),56320==(64512&i)?n.push(((1023&t)<<10)+(1023&i)+65536):(n.push(t),r--)):n.push(t);return n}function h(e){return a(e,function(e){var t="";return e>65535&&(e-=65536,t+=P(e>>>10&1023|55296),e=56320|1023&e),t+=P(e)}).join("")}function d(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:C}function u(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function f(e,t,i){var n=0;for(e=i?T(e/x):e>>1,e+=T(e/t);e>R*b>>1;n+=C)e=T(e/R);return T(n+(R+1)*e/(e+F))}function p(e){var t,i,n,r,o,a,l,c,u,p,m=[],g=e.length,v=0,w=$,y=S;for(i=e.lastIndexOf(D),0>i&&(i=0),n=0;i>n;++n)e.charCodeAt(n)>=128&&s("not-basic"),m.push(e.charCodeAt(n));for(r=i>0?i+1:0;g>r;){for(o=v,a=1,l=C;r>=g&&s("invalid-input"),c=d(e.charCodeAt(r++)),(c>=C||c>T((A-v)/a))&&s("overflow"),v+=c*a,u=y>=l?E:l>=y+b?b:l-y,!(u>c);l+=C)p=C-u,a>T(A/p)&&s("overflow"),a*=p;t=m.length+1,y=f(v-o,t,0==o),T(v/t)>A-w&&s("overflow"),w+=T(v/t),v%=t,m.splice(v++,0,w)}return h(m)}function m(e){var t,i,n,r,o,a,l,h,d,p,m,g,v,w,y,F=[];for(e=c(e),g=e.length,t=$,i=0,o=S,a=0;g>a;++a)m=e[a],128>m&&F.push(P(m));for(n=r=F.length,r&&F.push(D);g>n;){for(l=A,a=0;g>a;++a)m=e[a],m>=t&&l>m&&(l=m);for(v=n+1,l-t>T((A-i)/v)&&s("overflow"),i+=(l-t)*v,t=l,a=0;g>a;++a)if(m=e[a],t>m&&++i>A&&s("overflow"),m==t){for(h=i,d=C;p=o>=d?E:d>=o+b?b:d-o,!(p>h);d+=C)y=h-p,w=C-p,F.push(P(u(p+y%w,0))),h=T(y/w);F.push(P(u(h,0))),o=f(i,v,n==r),i=0,++n}++i,++t}return F.join("")}function g(e){return l(e,function(e){return k.test(e)?p(e.slice(4).toLowerCase()):e})}function v(e){return l(e,function(e){return B.test(e)?"xn--"+m(e):e})}var w=("object"==typeof t&&t&&!t.nodeType&&t,"object"==typeof e&&e&&!e.nodeType&&e,"object"==typeof r&&r);w.global!==w&&w.window!==w&&w.self!==w||(o=w);var y,A=2147483647,C=36,E=1,b=26,F=38,x=700,S=72,$=128,D="-",k=/^xn--/,B=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=C-E,T=Math.floor,P=String.fromCharCode;y={version:"1.3.2",ucs2:{decode:c,encode:h},decode:p,encode:m,toASCII:v,toUnicode:g},n=function(){return y}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))}(this)}).call(t,i(6)(e),function(){return this}())},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,i){"use strict";t.decode=t.parse=i(8),t.encode=t.stringify=i(9)},function(e,t){"use strict";function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,r){t=t||"&",n=n||"=";var o={};if("string"!=typeof e||0===e.length)return o;var s=/\+/g;e=e.split(t);var a=1e3;r&&"number"==typeof r.maxKeys&&(a=r.maxKeys);var l=e.length;a>0&&l>a&&(l=a);for(var c=0;l>c;++c){var h,d,u,f,p=e[c].replace(s,"%20"),m=p.indexOf(n);m>=0?(h=p.substr(0,m),d=p.substr(m+1)):(h=p,d=""),u=decodeURIComponent(h),f=decodeURIComponent(d),i(o,u)?Array.isArray(o[u])?o[u].push(f):o[u]=[o[u],f]:o[u]=f}return o}},function(e,t){"use strict";var i=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,r){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(r){var o=encodeURIComponent(i(r))+n;return Array.isArray(e[r])?e[r].map(function(e){return o+encodeURIComponent(i(e))}).join(t):o+encodeURIComponent(i(e[r]))}).join(t):r?encodeURIComponent(i(r))+n+encodeURIComponent(i(e)):""}},function(e,t){"use strict";e.exports=function i(e,t){if(e===t)return!0;var n,r=Array.isArray(e),o=Array.isArray(t);if(r&&o){if(e.length!=t.length)return!1;for(n=0;nr;)i++,t=e.charCodeAt(r++),t>=55296&&56319>=t&&n>r&&(t=e.charCodeAt(r),56320==(64512&t)&&r++);return i}function d(e,t){t+="[^0-9]";var i=e.match(new RegExp(t,"g"));return i?i.length:0}function u(e,t,i){return t+="([^0-9])",i=i.replace(/\$/g,"$$$$"),e.replace(new RegExp(t,"g"),i+"$1")}function f(e){return e.replace(D,"").replace(k,"").replace(B,"if (!($1))")}function p(e,t){var i=e.match(_);return i&&2===i.length?t?e.replace(R,"").replace(M,O):e.replace(L,"").replace(T,P):e}function m(e,t){for(var i in e)if(t[i])return!0}function g(e){return"'"+c(e)+"'"}function v(e,t,i,n){var r=i?"'/' + "+t+(n?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):n?"'[' + "+t+" + ']'":"'[\\'' + "+t+" + '\\']'";return A(e,r)}function w(e,t,i){var n=g(i?"/"+b(t):l(t));return A(e,n)}function y(e,t,i){var n=e.match(N);if(!n)throw new Error("Invalid relative JSON-pointer: "+e);var r=+n[1],o=n[2];if("#"==o){if(r>=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return i[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);var s="data"+(t-r||"");if(!o)return s;for(var a=s,c=o.split("/"),h=0;h="0"&&"9">=n;)t+=n,l();if("."===n)for(t+=".";l()&&n>="0"&&"9">=n;)t+=n;if("e"===n||"E"===n)for(t+=n,l(),"-"!==n&&"+"!==n||(t+=n,l());n>="0"&&"9">=n;)t+=n,l();return e=+t,isFinite(e)?e:void a("Bad number")},h=function(){var e,t,i,r="";if('"'===n)for(;l();){if('"'===n)return l(),r;if("\\"===n)if(l(),"u"===n){for(i=0,t=0;4>t&&(e=parseInt(l(),16),isFinite(e));t+=1)i=16*i+e;r+=String.fromCharCode(i)}else{if("string"!=typeof s[n])break;r+=s[n]}else r+=n}a("Bad string")},d=function(){for(;n&&" ">=n;)l()},u=function(){switch(n){case"t":return l("t"),l("r"),l("u"),l("e"),!0;case"f":return l("f"),l("a"),l("l"),l("s"),l("e"),!1;case"n":return l("n"),l("u"),l("l"),l("l"),null}a("Unexpected '"+n+"'")},f=function(){var e=[];if("["===n){if(l("["),d(),"]"===n)return l("]"),e;for(;n;){if(e.push(o()),d(),"]"===n)return l("]"),e;l(","),d()}}a("Bad array")},p=function(){var e,t={};if("{"===n){if(l("{"),d(),"}"===n)return l("}"),t;for(;n;){if(e=h(),d(),l(":"),Object.hasOwnProperty.call(t,e)&&a('Duplicate key "'+e+'"'),t[e]=o(),d(),"}"===n)return l("}"),t;l(","),d()}}a("Bad object")};o=function(){switch(d(),n){case"{":return p();case"[":return f();case'"':return h();case"-":return c();default:return n>="0"&&"9">=n?c():u()}},e.exports=function(e,t){var s;return r=e,i=0,n=" ",s=o(),d(),n&&a("Syntax error"),"function"==typeof t?function l(e,i){var n,r,o=e[i];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=l(o,n),void 0!==r?o[n]=r:delete o[n]);return t.call(e,i,o)}({"":s},""):s}},function(e,t){function i(e){return a.lastIndex=0,a.test(e)?'"'+e.replace(a,function(e){var t=l[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function n(e,t){var a,l,c,h,d,u=r,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof s&&(f=s.call(t,e,f)),typeof f){case"string":return i(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(r+=o,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,a=0;h>a;a+=1)d[a]=n(a,f)||"null";return c=0===d.length?"[]":r?"[\n"+r+d.join(",\n"+r)+"\n"+u+"]":"["+d.join(",")+"]",r=u,c}if(s&&"object"==typeof s)for(h=s.length,a=0;h>a;a+=1)l=s[a],"string"==typeof l&&(c=n(l,f),c&&d.push(i(l)+(r?": ":":")+c));else for(l in f)Object.prototype.hasOwnProperty.call(f,l)&&(c=n(l,f),c&&d.push(i(l)+(r?": ":":")+c));return c=0===d.length?"{}":r?"{\n"+r+d.join(",\n"+r)+"\n"+u+"}":"{"+d.join(",")+"}",r=u,c}}var r,o,s,a=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};e.exports=function(e,t,i){var a;if(r="",o="","number"==typeof i)for(a=0;i>a;a+=1)o+=" ";else"string"==typeof i&&(o=i);if(s=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return n("",{"":e})}},function(e,t,i){"use strict";function n(e){r.copy(e,this)}var r=i(11);e.exports=n},function(module,exports,__webpack_require__){"use strict";function setupAsync(e,t){t!==!1&&(t=!0);var i,n=e.async,r=e.transpile;switch(typeof r){case"string":var o=TRANSPILE[r];if(!o)throw new Error("bad transpiler: "+r);return e._transpileFunc=o(e,t);case"undefined":case"boolean":if("string"==typeof n){if(i=ASYNC[n],!i)throw new Error("bad async mode: "+n);return e.transpile=i(e,t)}for(var s=0;s$;)S=x[$+=1],$&&(r+=" if ("+b+" === undefined) { ",F+="}"),"string"==S?r+=" if ("+E+" == 'number' || "+E+" == 'boolean') "+b+" = '' + "+c+"; else if ("+c+" === null) "+b+" = ''; ":"number"==S||"integer"==S?(r+=" if ("+E+" == 'boolean' || "+c+" === null || ("+E+" == 'string' && "+c+" && "+c+" == +"+c+" ","integer"==S&&(r+=" && !("+c+" % 1)"),r+=")) "+b+" = +"+c+"; "):"boolean"==S?r+=" if ("+c+" === 'false' || "+c+" === 0 || "+c+" === null) "+b+" = false; else if ("+c+" === 'true' || "+c+" === 1) "+b+" = true; ":"null"==S&&(r+=" if ("+c+" === '' || "+c+" === 0 || "+c+" === false) "+b+" = null; ");r+=" "+F+" if ("+b+" === undefined) { ";var k=k||[];k.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(d||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+A+"\" , params: { type: '",r+=v?""+g.join(","):""+g,r+="' } ",e.opts.messages!==!1&&(r+=" , message: 'should be ",r+=v?""+g.join(","):""+g,r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+y+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),r+=" } "):r+=" {} ";var B=r;if(r=k.pop(),r+=!e.compositeRule&&f?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",l){var _="data"+(l-1||""),L=e.dataPathArr[l];r+=" "+c+" = "+_+"["+L+"] = "+b+"; "}else r+=" data = "+b+"; if (parentData !== undefined) parentData[parentDataProperty] = "+b+"; ";r+=" } } "}}var R=e.RULES;if(R)for(var T,P=-1,M=R.length-1;M>P;)if(T=R[P+=1],i(T)){if(T.type&&(r+=" if ("+e.util.checkDataType(T.type,c)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==T.type&&e.schema.properties){var O=e.schema.properties,N=Object.keys(O),I=N;if(I)for(var j,W=-1,H=I.length-1;H>W;){j=I[W+=1];var V=O[j];if(void 0!==V["default"]){var z=c+e.util.getProperty(j);r+=" if ("+z+" === undefined) "+z+" = ",r+="clone"==e.opts.useDefaults?" "+JSON.stringify(V["default"])+" ":" "+e.useDefault(V["default"])+" ",r+="; "}}}else if("array"==T.type&&Array.isArray(e.schema.items)){var U=e.schema.items;if(U)for(var V,$=-1,K=U.length-1;K>$;)if(V=U[$+=1],void 0!==V["default"]){var z=c+"["+$+"]";r+=" if ("+z+" === undefined) "+z+" = ",r+="clone"==e.opts.useDefaults?" "+JSON.stringify(V["default"])+" ":" "+e.useDefault(V["default"])+" ",r+="; "}}var q=T.rules;if(q)for(var G,Y=-1,Q=q.length-1;Q>Y;)if(G=q[Y+=1],n(G)){if(G.custom){var O=e.schema[G.keyword],J=e.useCustomRule(G,O,e.schema,e),X=J.code+".errors",y=e.schemaPath+"."+G.keyword,A=e.errSchemaPath+"/"+G.keyword,Z="errs"+a,$="i"+a,ee="ruleErr"+a,te=G.definition,ie=te.async,ne=te.inline,re=te.macro;if(ie&&!e.async)throw new Error("async keyword in sync schema");if(ne||re||(r+=""+X+" = null;"),r+="var "+Z+" = errors;var valid"+a+";",ne&&te.statements)r+=" "+J.validate;else if(re){var oe=e.util.copy(e);oe.level++,oe.schema=J.validate,oe.schemaPath="";var se=e.compositeRule;e.compositeRule=oe.compositeRule=!0;var ae=e.validate(oe).replace(/validate\.schema/g,J.code);e.compositeRule=oe.compositeRule=se,r+=" "+ae}else if(te.compile||te.validate){var k=k||[];k.push(r),r="",r+=" "+J.code+".call( ",r+=e.opts.passContext?"this":"self";J.validate.length;r+=te.compile||te.schema===!1?" , "+c+" ":" , validate.schema"+y+" , "+c+" , validate.schema"+e.schemaPath+" ",r+=" , (dataPath || '')",'""'!=e.errorPath&&(r+=" + "+e.errorPath),r+=l?" , data"+(l-1||"")+" , "+e.dataPathArr[l]+" ":" , parentData , parentDataProperty ",r+=" ) ";var le=r;r=k.pop(),te.errors!==!1&&(ie?(X="customErrors"+a,r+=" var "+X+" = null; try { valid"+a+" = "+e.yieldAwait+le+"; } catch (e) { valid"+a+" = false; if (e instanceof ValidationError) "+X+" = e.errors; else throw e; } "):r+=" "+J.code+".errors = null; ")}r+="if (! ",r+=ne?te.statements?" valid"+a+" ":" ("+J.validate+") ":re?" valid"+oe.level+" ":ie?te.errors===!1?" ("+e.yieldAwait+le+") ":" valid"+a+" ":" "+le+" ",r+=") { ",d=G.keyword;var k=k||[];k.push(r),r="";var k=k||[];k.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(d||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+A+"\" , params: { keyword: '"+G.keyword+"' } ",e.opts.messages!==!1&&(r+=" , message: 'should pass \""+G.keyword+"\" keyword validation' "),e.opts.verbose&&(r+=" , schema: validate.schema"+y+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),r+=" } "):r+=" {} ";var B=r;r=k.pop(),r+=!e.compositeRule&&f?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var ce=r;r=k.pop(),ne?te.errors?"full"!=te.errors&&(r+=" for (var "+$+"="+Z+"; "+$+"2&&(t=d.call(arguments,1)),void i(t))})})}function o(e){return Promise.all(e.map(n,this))}function s(e){function t(e,t){i[t]=void 0,o.push(e.then(function(e){i[t]=e}))}for(var i=new e.constructor,r=Object.keys(e),o=[],s=0;s=1&&12>=i&&n>=1&&n<=m[i]}function o(e,t){var i=e.match(g);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return 23>=n&&59>=r&&59>=o&&(!t||s)}function s(e){var t=e.split(E);return r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return b.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(t){return!1}}function h(e,t){return e&&t?e>t?1:t>e?-1:e===t?0:void 0:void 0}function d(e,t){return e&&t&&(e=e.match(g),t=t.match(g),e&&t)?(e=e[1]+e[2]+e[3]+(e[4]||""),t=t[1]+t[2]+t[3]+(t[4]||""),e>t?1:t>e?-1:e===t?0:void 0):void 0}function u(e,t){if(e&&t){e=e.split(E),t=t.split(E);var i=h(e[0],t[0]);if(void 0!==i)return i||d(e[1],t[1])}}var f=i(11),p=/^\d\d\d\d-(\d\d)-(\d\d)$/,m=[0,31,29,31,30,31,30,31,31,30,31,30,31],g=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,v=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,w=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i,y=/^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,A=/^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i,C=/^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/;e.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:v,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:y,"json-pointer":A,"relative-json-pointer":C},n.full={date:r,time:o,"date-time":s,uri:l,email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:a,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:y,"json-pointer":A,"relative-json-pointer":C},n.compare={date:h,time:d,"date-time":u};var E=/t|\s/i,b=/\/|\:/},function(e,t,i){"use strict";var n=i(24),r=i(11);e.exports=function(){var e=[{type:"number",rules:["maximum","minimum","multipleOf"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","properties"]},{rules:["$ref","enum","not","anyOf","oneOf","allOf"]}];return e.all=["type","additionalProperties","patternProperties"],e.keywords=["additionalItems","$schema","id","title","description","default"],e.types=["number","integer","string","array","object","boolean","null"],e.forEach(function(t){t.rules=t.rules.map(function(t){return e.all.push(t),{keyword:t,code:n[t]}})}),e.keywords=r.toHash(e.all.concat(e.keywords)),e.all=r.toHash(e.all),e.types=r.toHash(e.types),e}},function(e,t,i){"use strict";e.exports={$ref:i(25),allOf:i(26),anyOf:i(27),dependencies:i(28),"enum":i(29),format:i(30),items:i(31),maximum:i(32),minimum:i(32),maxItems:i(33),minItems:i(33),maxLength:i(34),minLength:i(34),maxProperties:i(35),minProperties:i(35),multipleOf:i(36),not:i(37),oneOf:i(38),pattern:i(39),properties:i(40),required:i(41),uniqueItems:i(42),validate:i(18)}},function(e,t){"use strict";e.exports=function(e,t){var i,n,r,o=" ",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(a||""),u="valid"+s;if("#"==l||"#/"==l)e.isRoot?(n=e.async,r="validate"):(n=e.root.schema.$async===!0,r="root.refVal[0]");else{var f=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===f){var p="can't resolve reference "+l+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(p);var m=m||[];m.push(o),o="",e.createErrors!==!1?(o+=" { keyword: '"+(i||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+c+"\" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",e.opts.messages!==!1&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var g=o;o=m.pop(),o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var v=new Error(p);throw v.missingRef=e.resolve.url(e.baseId,l),v.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(v.missingRef)),v}console.log(p),h&&(o+=" if (true) { ")}}else if(f.inline){var w=e.util.copy(e);w.level++,w.schema=f.schema,w.schemaPath="",w.errSchemaPath=l;var y=e.validate(w).replace(/validate\.schema/g,f.code);o+=" "+y+" ",h&&(o+=" if (valid"+w.level+") { ")}else n=f.async,r=f.code}if(r){var m=m||[];m.push(o),o="",o+=e.opts.passContext?" "+r+".call(this, ":" "+r+"( ",o+=" "+d+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath),o+=a?" , data"+(a-1||"")+" , "+e.dataPathArr[a]+" ":" , parentData , parentDataProperty ",o+=") ";var A=o;if(o=m.pop(),n){if(!e.async)throw new Error("async schema referenced by sync schema");o+=" try { ",h&&(o+="var "+u+" ="),o+=" "+e.yieldAwait+" "+A+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",h&&(o+=" if ("+u+") { ")}else o+=" if (!"+A+") { if (vErrors === null) vErrors = "+r+".errors; else vErrors = vErrors.concat("+r+".errors); errors = vErrors.length; } ",h&&(o+=" else { ")}return o}},function(e,t){"use strict";e.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+"."+t,o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c=n;if(c)for(var h,d=-1,u=c.length-1;u>d;)h=c[d+=1],e.util.schemaHasRules(h,e.RULES.all)&&(a.schema=h,a.schemaPath=r+"["+d+"]",a.errSchemaPath=o+"/"+d,i+=" "+e.validate(a)+" ",s&&(i+=" if (valid"+a.level+") { ",l+="}"));return s&&(i+=" "+l.slice(0,-1)),i=e.util.cleanUpCode(i)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=s.every(function(t){return e.util.schemaHasRules(t,e.RULES.all)});if(m){n+=" var "+u+" = errors; var "+d+" = false; ";var g=e.compositeRule;e.compositeRule=f.compositeRule=!0;var v=s;if(v)for(var w,y=-1,A=v.length-1;A>y;)w=v[y+=1],f.schema=w,f.schemaPath=a+"["+y+"]",f.errSchemaPath=l+"/"+y,n+=" "+e.validate(f)+" "+d+" = "+d+" || valid"+f.level+"; if (!"+d+") { ",p+="}";e.compositeRule=f.compositeRule=g,n+=" "+p+" if (!"+d+") { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"anyOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } "),n=e.util.cleanUpCode(n)}else c&&(n+=" if (true) { ");return n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e),f="";u.level++;var p={},m={};for(y in s){var g=s[y],v=Array.isArray(g)?m:p;v[y]=g}n+="var "+d+" = errors;";var w=e.errorPath;n+="var missing"+r+";";for(var y in m){v=m[y],n+=" if ("+h+e.util.getProperty(y)+" !== undefined && ( ";var A=v;if(A)for(var C,E=-1,b=A.length-1;b>E;){C=A[E+=1],E&&(n+=" || ");var F=e.util.getProperty(C);n+=" ( "+h+F+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?C:F)+") ) "}n+=")) { ";var x="missing"+r,S="' + "+x+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,x,!0):w+" + "+x);var $=$||[];$.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(y)+"', missingProperty: '"+S+"', depsCount: "+v.length+", deps: '"+e.util.escapeQuotes(1==v.length?v[0]:v.join(", "))+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have ",n+=1==v.length?"property "+e.util.escapeQuotes(v[0]):"properties "+e.util.escapeQuotes(v.join(", ")),n+=" when property "+e.util.escapeQuotes(y)+" is present' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var D=n;n=$.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+D+"]); ":" validate.errors = ["+D+"]; return false; ":" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(f+="}",n+=" else { ")}e.errorPath=w;for(var y in p){var g=p[y];e.util.schemaHasRules(g,e.RULES.all)&&(n+=" valid"+u.level+" = true; if ("+h+"['"+y+"'] !== undefined) { ",u.schema=g,u.schemaPath=a+e.util.getProperty(y),u.errSchemaPath=l+"/"+e.util.escapeFragment(y),n+=" "+e.validate(u)+" } ",c&&(n+=" if (valid"+u.level+") { ",f+="}"))}return c&&(n+=" "+f+" if ("+d+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s; -u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r);var p="i"+r;u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+";",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=""+d+" = false;for (var "+p+"=0; "+p+"b;)if(E=C[b+=1],e.util.schemaHasRules(E,e.RULES.all)){n+=" valid"+f.level+" = true; if ("+h+".length > "+b+") { ";var x=h+"["+b+"]";f.schema=E,f.schemaPath=a+"["+b+"]",f.errSchemaPath=l+"/"+b,f.errorPath=e.util.getPathExpr(e.errorPath,b,e.opts.jsonPointers,!0),f.dataPathArr[m]=b;var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}if("object"==typeof v&&e.util.schemaHasRules(v,e.RULES.all)){f.schema=v,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" valid"+f.level+" = true; if ("+h+".length > "+s.length+") { for (var i"+r+" = "+s.length+"; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";f.dataPathArr[m]="i"+r;var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}else if(e.util.schemaHasRules(s,e.RULES.all)){f.schema=s,f.schemaPath=a,f.errSchemaPath=l,n+=" for (var i"+r+" = 0; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";f.dataPathArr[m]="i"+r;var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],g=e.opts.v5&&m&&m.$data,v=f?"<":">",w=f?">":"<";if(g){var y=e.util.getData(m.$data,o,e.dataPathArr),A="exclusive"+r,C="op"+r,E="' + "+C+" + '";n+=" var schemaExcl"+r+" = "+y+"; ",y="schemaExcl"+r,n+=" var exclusive"+r+"; if (typeof "+y+" != 'boolean' && typeof "+y+" != 'undefined') { ";var i=p,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;n=b.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" ((exclusive"+r+" = "+y+" === true) ? "+h+" "+w+"= "+u+" : "+h+" "+w+" "+u+")) { var op"+r+" = exclusive"+r+" ? '"+v+"' : '"+v+"=';"}else{var A=m===!0,E=v;A||(E+="=");var C="'"+E+"'";n+=" if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+" "+w,A&&(n+="="),n+=" "+u+") {"}var i=t,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+C+", limit: "+u+", exclusive: "+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+E+" ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;return n=b.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxItems"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+".length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxLength"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=e.opts.unicode===!1?" "+h+".length ":" ucs2length("+h+") ",n+=" "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxProperties"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" Object.keys("+h+").length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r),n+="var division"+r+";if (",d&&(n+=" "+u+" !== undefined && ( typeof "+u+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+u+", ",n+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var f=f||[];f.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { multipleOf: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;return n=f.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e);if(u.level++,e.util.schemaHasRules(s,e.RULES.all)){u.schema=s,u.schemaPath=a,u.errSchemaPath=l,n+=" var "+d+" = errors; ";var f=e.compositeRule;e.compositeRule=u.compositeRule=!0,u.createErrors=!1;var p;u.opts.allErrors&&(p=u.opts.allErrors,u.opts.allErrors=!1),n+=" "+e.validate(u)+" ",u.createErrors=!0,p&&(u.opts.allErrors=p),e.compositeRule=u.compositeRule=f,n+=" if (valid"+u.level+") { ";var m=m||[];m.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;n=m.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++,n+="var "+u+" = errors;var prevValid"+r+" = false;var "+d+" = false; ";var m=e.compositeRule;e.compositeRule=f.compositeRule=!0;var g=s;if(g)for(var v,w=-1,y=g.length-1;y>w;)v=g[w+=1],e.util.schemaHasRules(v,e.RULES.all)?(f.schema=v,f.schemaPath=a+"["+w+"]",f.errSchemaPath=l+"/"+w,n+=" "+e.validate(f)+" "):n+=" var valid"+f.level+" = true; ",w&&(n+=" if (valid"+f.level+" && prevValid"+r+") "+d+" = false; else { ",p+="}"),n+=" if (valid"+f.level+") "+d+" = prevValid"+r+" = true;";e.compositeRule=f.compositeRule=m,n+=""+p+"if (!"+d+") { ";var A=A||[];A.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"oneOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var C=n;return n=A.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+C+"]); ":" validate.errors = ["+C+"]; return false; ":" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f=d?"(new RegExp("+u+"))":e.usePattern(s);n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'string') || "),n+=" !"+f+".test("+h+") ) { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"pattern")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { pattern: ',n+=d?""+u:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should match pattern \"",n+=d?"' + "+u+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=f.dataLevel=e.dataLevel+1,g="data"+m,v=Object.keys(s||{}),w=e.schema.patternProperties||{},y=Object.keys(w),A=e.schema.additionalProperties,C=v.length||y.length,E=A===!1,b="object"==typeof A&&Object.keys(A).length,F=e.opts.removeAdditional,x=E||b||F,S=e.schema.required;if(S&&(!e.opts.v5||!S.$data)&&S.length5)n+=" || validate.schema"+a+"[key"+r+"] ";else{var B=v;if(B)for(var _,L=-1,R=B.length-1;R>L;)_=B[L+=1],n+=" || key"+r+" == "+e.util.toQuotedString(_)+" "}if(y.length){var T=y;if(T)for(var P,M=-1,O=T.length-1;O>M;)P=T[M+=1],n+=" || "+e.usePattern(P)+".test(key"+r+") "}if(e.opts.v5&&k&&k.length){var N=k;if(N)for(var I,M=-1,j=N.length-1;j>M;)I=N[M+=1],n+=" || "+e.usePattern(I)+".test(key"+r+") "}n+=" ); if (isAdditional"+r+") { "}if("all"==F)n+=" delete "+h+"[key"+r+"]; ";else{var W=e.errorPath,H="' + key"+r+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers)),E)if(F)n+=" delete "+h+"[key"+r+"]; ";else{n+=" valid"+f.level+" = false; ";var V=l;l=e.errSchemaPath+"/additionalProperties";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"additionalProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { additionalProperty: '"+H+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,c&&(n+=" break; ")}else if(b)if("failing"==F){n+=" var "+u+" = errors; ";var K=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=A,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",n+=" if (!valid"+f.level+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+h+"[key"+r+"]; } ",e.compositeRule=f.compositeRule=K}else{f.schema=A,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; ")}e.errorPath=W}C&&(n+=" } "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}var Y=e.opts.useDefaults&&!e.compositeRule;if(v.length){var Q=v;if(Q)for(var _,J=-1,X=Q.length-1;X>J;){_=Q[J+=1];var Z=s[_];if(e.util.schemaHasRules(Z,e.RULES.all)){var ee=e.util.getProperty(_),q=h+ee,te=Y&&void 0!==Z["default"];f.schema=Z,f.schemaPath=a+ee,f.errSchemaPath=l+"/"+e.util.escapeFragment(_),f.errorPath=e.util.getPath(e.errorPath,_,e.opts.jsonPointers),f.dataPathArr[m]=e.util.toQuotedString(_);var G=e.validate(f);if(e.util.varOccurences(G,g)<2){G=e.util.varReplace(G,g,q);var ie=q}else{var ie=g;n+=" var "+g+" = "+q+"; "}if(te)n+=" "+G+" ";else{if($&&$[_]){n+=" if ("+ie+" === undefined) { valid"+f.level+" = false; ";var W=e.errorPath,V=l,ne=e.util.escapeQuotes(_);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(W,_,e.opts.jsonPointers)),l=e.errSchemaPath+"/required";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+ne+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ne+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=W,n+=" } else { "}else n+=c?" if ("+ie+" === undefined) { valid"+f.level+" = true; } else { ":" if ("+ie+" !== undefined) { ";n+=" "+G+" } "}}c&&(n+=" if (valid"+f.level+") { ",p+="}")}}var re=y;if(re)for(var P,oe=-1,se=re.length-1;se>oe;){P=re[oe+=1];var Z=w[P];if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(P),f.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(P),n+=" for (var key"+r+" in "+h+") { if ("+e.usePattern(P)+".test(key"+r+")) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}if(e.opts.v5){var ae=k;if(ae)for(var I,le=-1,ce=ae.length-1;ce>le;){I=ae[le+=1];var he=D[I],Z=he.schema;if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(I)+".schema",f.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(I)+"/schema",n+=" var pgPropCount"+r+" = 0; for (var key"+r+" in "+h+") { if ("+e.usePattern(I)+".test(key"+r+")) { pgPropCount"+r+"++; ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}");var de=he.minimum,ue=he.maximum;if(void 0!==de||void 0!==ue){n+=" var "+d+" = true; ";var V=l;if(void 0!==de){var fe=de,pe="minimum",me="less";n+=" "+d+" = pgPropCount"+r+" >= "+de+"; ",l=e.errSchemaPath+"/patternGroups/minimum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",void 0!==ue&&(n+=" else ")}if(void 0!==ue){var fe=ue,pe="maximum",me="more";n+=" "+d+" = pgPropCount"+r+" <= "+ue+"; ",l=e.errSchemaPath+"/patternGroups/maximum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } "}l=V,c&&(n+=" if ("+d+") { ",p+="}")}}}}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),!u)if(s.lengthv;){g=m[v+=1];var y=e.schema.properties[g];y&&e.util.schemaHasRules(y,e.RULES.all)||(p[p.length]=g)}}else var p=s;if(u||p.length){var A=e.errorPath,C=u||p.length>=e.opts.loopRequired;if(c)if(n+=" var missing"+r+"; ",C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(A,b,e.opts.jsonPointers)),n+=" var "+d+" = true; ",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { "+d+" = "+h+"[schema"+r+"["+E+"]] !== undefined; if (!"+d+") break; } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var $=p;if($)for(var D,E=-1,k=$.length-1;k>E;){D=$[E+=1],E&&(n+=" || ");var B=e.util.getProperty(D);n+=" ( "+h+B+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:B)+") ) "}n+=") { ";var b="missing"+r,F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(A,b,!0):A+" + "+b);var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else if(C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(A,b,e.opts.jsonPointers)),u&&(n+=" if (schema"+r+" && !Array.isArray(schema"+r+")) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema"+r+" !== undefined) { "),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { if ("+h+"[schema"+r+"["+E+"]] === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",u&&(n+=" } ")}else{var _=p;if(_)for(var g,E=-1,L=_.length-1;L>E;){g=_[E+=1];var B=e.util.getProperty(g),F=e.util.escapeQuotes(g);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(A,g,e.opts.jsonPointers)),n+=" if ("+h+B+" === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'", -n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=A}else c&&(n+=" if (true) {");return n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),(s||u)&&e.opts.uniqueItems!==!1){u&&(n+=" var "+d+"; if ("+f+" === false || "+f+" === undefined) "+d+" = true; else if (typeof "+f+" != 'boolean') "+d+" = false; else { "),n+=" var "+d+" = true; if ("+h+".length > 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { i: i, j: j } ',e.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},function(e,t,i){"use strict";function n(e){function t(t,i,r){var o={inline:r||n[t],statements:!0,errors:"full"};i&&(o.type=i),e.addKeyword(t,o)}var n={"switch":i(44),constant:i(45),_formatLimit:i(46),patternRequired:i(47)};if(e._opts.meta!==!1){var s=i(48);e.addMetaSchema(s,o)}t("constant"),e.addKeyword("contains",{type:"array",macro:r}),t("formatMaximum","string",n._formatLimit),t("formatMinimum","string",n._formatLimit),e.addKeyword("exclusiveFormatMaximum"),e.addKeyword("exclusiveFormatMinimum"),e.addKeyword("patternGroups"),t("patternRequired","object"),t("switch")}function r(e){return{not:{items:{not:e}}}}var o="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";e.exports={enable:n,META_SCHEMA_ID:o}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m,g="ifPassed"+e.level;n+="var "+g+";";var v=s;if(v)for(var w,y=-1,A=v.length-1;A>y;){if(w=v[y+=1],y&&!m&&(n+=" if (!"+g+") { ",p+="}"),w["if"]&&e.util.schemaHasRules(w["if"],e.RULES.all)){n+=" var "+u+" = errors; ";var C=e.compositeRule;if(e.compositeRule=f.compositeRule=!0,f.createErrors=!1,f.schema=w["if"],f.schemaPath=a+"["+y+"].if",f.errSchemaPath=l+"/"+y+"/if",n+=" "+e.validate(f)+" ",f.createErrors=!0,e.compositeRule=f.compositeRule=C,n+=" "+g+" = valid"+f.level+"; if ("+g+") { ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+y+"].then",f.errSchemaPath=l+"/"+y+"/then",n+=" "+e.validate(f)+" ";n+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } } "}else if(n+=" "+g+" = true; ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+y+"].then",f.errSchemaPath=l+"/"+y+"/then",n+=" "+e.validate(f)+" ";m=w["continue"]}return n+=""+p+"var "+d+" = valid"+f.level+"; ",n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+" = equal("+h+", schema"+r+"); if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"constant")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should be equal to constant' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }"}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r;if(n+="var "+d+" = undefined;",e.opts.format===!1)return n+=" "+d+" = true; ";var u=e.schema.format,f=e.opts.v5&&u.$data,p="";if(f){var m=e.util.getData(u.$data,o,e.dataPathArr),g="format"+r,v="compare"+r;n+=" var "+g+" = formats["+m+"] , "+v+" = "+g+" && "+g+".compare;"}else{var g=e.formats[u];if(!g||!g.compare)return n+=" "+d+" = true; ";var v="formats"+e.util.getProperty(u)+".compare"}var w="formatMaximum"==t,y="exclusiveFormat"+(w?"Maximum":"Minimum"),A=e.schema[y],C=e.opts.v5&&A&&A.$data,E=w?"<":">",b="result"+r,F=e.opts.v5&&s.$data,x=F?e.util.getData(s.$data,o,e.dataPathArr):s;if(F&&(n+=" var schema"+r+" = "+x+"; ",x="schema"+r),C){var S=e.util.getData(A.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=y,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+y+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; var exclusive"+r+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = exclusive"+r+" ? "+b+" "+E+" 0 : "+b+" "+E+"= 0; } if (!"+d+") var op"+r+" = exclusive"+r+" ? '"+E+"' : '"+E+"=';"}else{var $=A===!0,k=E;$||(k+="=");var D="'"+k+"'";F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+b+" "+E,$||(n+="="),n+=" 0;"}n+=""+p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: ',n+=F?""+x:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+k+' "',n+=F?"' + "+x+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=F?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="}"}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="key"+r,f="patternMatched"+r,p="";n+="var "+d+" = true;";var m=s;if(m)for(var g,v=-1,w=m.length-1;w>v;){g=m[v+=1],n+=" var "+f+" = false; for (var "+u+" in "+h+") { "+f+" = "+e.usePattern(g)+".test("+u+"); if ("+f+") break; } ";var y=e.util.escapeQuotes(g);n+=" if (!"+f+") { "+d+" = false; var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternRequired")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingPattern: '"+y+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have property matching pattern \\'"+y+"\\'' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ",c&&(p+="}",n+=" else { ")}return n+=""+p}},function(e,t){e.exports={id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema (v5 proposals)",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0},$data:{type:"object",required:["$data"],properties:{$data:{type:"string",format:"relative-json-pointer"}},additionalProperties:!1}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{anyOf:[{type:"number",minimum:0,exclusiveMinimum:!0},{$ref:"#/definitions/$data"}]},maximum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxLength:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minLength:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},pattern:{anyOf:[{type:"string",format:"regex"},{$ref:"#/definitions/$data"}]},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minItems:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},uniqueItems:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxProperties:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minProperties:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},required:{anyOf:[{$ref:"#/definitions/stringArray"},{$ref:"#/definitions/$data"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{anyOf:[{type:"array",minItems:1,uniqueItems:!0},{$ref:"#/definitions/$data"}]},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"},format:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMaximum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMinimum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},exclusiveFormatMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},exclusiveFormatMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},constant:{anyOf:[{},{$ref:"#/definitions/$data"}]},contains:{$ref:"#"},patternGroups:{type:"object",additionalProperties:{type:"object",required:["schema"],properties:{maximum:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},schema:{$ref:"#"}},additionalProperties:!1},"default":{}},"switch":{type:"array",items:{required:["then"],properties:{"if":{$ref:"#"},then:{anyOf:[{type:"boolean"},{$ref:"#"}]},"continue":{type:"boolean"}},additionalProperties:!1,dependencies:{"continue":["if"]}}}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"],formatMaximum:["format"],formatMinimum:["format"],exclusiveFormatMaximum:["formatMaximum"],exclusiveFormatMinimum:["formatMinimum"]},"default":{}}},function(e,t){"use strict";var i=/^[a-z_$][a-z0-9_$]*$/i;e.exports=function(e,t){function n(e,t,i){for(var n,r=0;ra;a++)r(s[a]);for(a=0;l>a;a++)n(e,s[a],t)}else s&&r(s),n(e,s,t)}this.RULES.keywords[e]=!0,this.RULES.all[e]=!0}},function(e,t){e.exports={id:"http://json-schema.org/draft-04/schema#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean","default":!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean","default":!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean","default":!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},"default":{}}},function(e,t,i){"use strict";var n=i(52),r=i(53),o=i(56),s=i(57),a=i(58),l=i(61),c=i(54),h={};h.create=function(e,t){if(!e)throw new Error("No container element provided.");this.container=e,this.dom={},this.highlighter=new n,this.selection=void 0,this.multiselection={nodes:[]},this.validateSchema=null,this.errorNodes=[],this.node=null,this.focusTarget=null,this._setOptions(t),this.options.history&&"view"!==this.options.mode&&(this.history=new r(this)),this._createFrame(),this._createTable()},h.destroy=function(){this.frame&&this.container&&this.frame.parentNode==this.container&&(this.container.removeChild(this.frame),this.frame=null),this.container=null,this.dom=null,this.clear(),this.node=null,this.focusTarget=null,this.selection=null,this.multiselection=null,this.errorNodes=null,this.validateSchema=null,this._debouncedValidate=null,this.history&&(this.history.destroy(),this.history=null),this.searchBox&&(this.searchBox.destroy(),this.searchBox=null),this.modeSwitcher&&(this.modeSwitcher.destroy(),this.modeSwitcher=null)},h._setOptions=function(e){if(this.options={search:!0,history:!0,mode:"tree",name:void 0,schema:null},e)for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.setSchema(this.options.schema),this._debouncedValidate=c.debounce(this.validate.bind(this),this.DEBOUNCE_INTERVAL)},h.set=function(e,t){if(t&&(console.warn('Second parameter "name" is deprecated. Use setName(name) instead.'),this.options.name=t),e instanceof Function||void 0===e)this.clear();else{this.content.removeChild(this.table);var i={field:this.options.name,value:e},n=new a(this,i);this._setRoot(n),this.validate();var r=!1;this.node.expand(r),this.content.appendChild(this.table)}this.history&&this.history.clear(),this.searchBox&&this.searchBox.clear()},h.get=function(){if(this.focusTarget){var e=a.getNodeFromTarget(this.focusTarget);e&&e.blur()}return this.node?this.node.getValue():void 0},h.getText=function(){return JSON.stringify(this.get())},h.setText=function(e){this.set(c.parse(e))},h.setName=function(e){this.options.name=e,this.node&&this.node.updateField(this.options.name)},h.getName=function(){return this.options.name},h.focus=function(){var e=this.content.querySelector("[contenteditable=true]");e?e.focus():this.node.dom.expand?this.node.dom.expand.focus():this.node.dom.menu?this.node.dom.menu.focus():(e=this.frame.querySelector("button"),e&&e.focus())},h.clear=function(){this.node&&(this.node.collapse(),this.tbody.removeChild(this.node.getDom()),delete this.node)},h._setRoot=function(e){this.clear(),this.node=e,this.tbody.appendChild(e.getDom())},h.search=function(e){var t;return this.node?(this.content.removeChild(this.table),t=this.node.search(e),this.content.appendChild(this.table)):t=[],t},h.expandAll=function(){this.node&&(this.content.removeChild(this.table),this.node.expand(),this.content.appendChild(this.table))},h.collapseAll=function(){this.node&&(this.content.removeChild(this.table),this.node.collapse(),this.content.appendChild(this.table))},h._onAction=function(e,t){this.history&&this.history.add(e,t),this._onChange()},h._onChange=function(){if(this._debouncedValidate(),this.options.onChange)try{this.options.onChange()}catch(e){console.error("Error in onChange callback: ",e)}},h.validate=function(){this.errorNodes&&this.errorNodes.forEach(function(e){e.setError(null)});var e=this.node;if(e){var t=e.validate(),i=[];if(this.validateSchema){var n=this.validateSchema(e.getValue());n||(i=this.validateSchema.errors.map(function(e){return c.improveSchemaError(e)}).map(function(t){return{node:e.findNode(t.dataPath),error:t}}).filter(function(e){return null!=e.node}))}this.errorNodes=t.concat(i).reduce(function(e,t){return t.node.findParents().map(function(e){return{node:e,child:t.node,error:{message:"object"===e.type?"Contains invalid properties":"Contains invalid items"}}}).concat(e,[t])},[]).map(function(e){return e.node.setError(e.error,e.child),e.node})}},h.refresh=function(){this.node&&this.node.updateDom({recurse:!0})},h.startAutoScroll=function(e){var t=this,i=this.content,n=c.getAbsoluteTop(i),r=i.clientHeight,o=n+r,s=24,a=50;n+s>e&&i.scrollTop>0?this.autoScrollStep=(n+s-e)/3:e>o-s&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.type="button",i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.type="button",n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.type="button",r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.type="button",s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value&&e.target!=t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),r=0;r=0},n.prototype.canRedo=function(){return this.index=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function o(){for(h+=2;hn;n++){var o=i[n];o.style&&o.removeAttribute("style");var s=o.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var r=e.childNodes,o="",s=0,a=r.length;a>s;s++){var l=r[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=r[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(o+="\n",i.flush()),o+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(o+=i.flush(),i.set("\n")):o+=t.getInnerText(l,i)}return o}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==o){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}o=e}return o},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var o=-1;t.addEventListener=function(e,i,n,r){if(e.addEventListener)return void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,r),n;if(e.attachEvent){var o=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,o),o}},t.removeEventListener=function(e,i,n,r){e.removeEventListener?(void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,r)):e.detachEvent&&e.detachEvent("on"+i,n)},t.parsePath=function s(e){var t,i;if(0===e.length)return[];var n=e.match(/^\.(\w+)/);if(n)t=n[1],i=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var r=e.indexOf("]");if(-1===r)throw new SyntaxError("Character ] expected in path");if(1===r)throw new SyntaxError("Index expected after [");var o=e.substring(1,r);"'"===o[0]&&(o='"'+o.substring(1,o.length-1)+'"'),t="*"===o?o:JSON.parse(o),i=e.substr(r+1)}return[t].concat(s(i))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&i>n;)n++;for(;t.charAt(o-1)===e.charAt(r-1)&&o>n&&r>0;)o--,r--;return{start:n,end:o}}},function(e,t,i){var n=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,r,o,s){var a=o.length-1;switch(r){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g,"\x0B").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=o[a-1];case 13:this.$={};break;case 14:this.$=o[a-1];break;case 15:this.$=[o[a-2],o[a]];break;case 16:this.$={},this.$[o[a][0]]=o[a][1];break;case 17:this.$=o[a-2],o[a-2][o[a][0]]=o[a][1];break;case 18:this.$=[];break;case 19:this.$=o[a-1];break;case 20:this.$=[o[a]];break;case 21:this.$=o[a-2],o[a-2].push(o[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(e){r.length=r.length-2*e,o.length=o.length-e,s.length=s.length-e}function i(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],o=[null],s=[],a=this.table,l="",c=0,h=0,d=0,u=2,f=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var m,g,v,w,y,A,C,E,b,F={};;){if(v=r[r.length-1],this.defaultActions[v]?w=this.defaultActions[v]:(null==m&&(m=i()),w=a[v]&&a[v][m]),"undefined"==typeof w||!w.length||!w[0]){if(!d){b=[];for(A in a[v])this.terminals_[A]&&A>2&&b.push("'"+this.terminals_[A]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+b.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:p,expected:b})}if(3==d){if(m==f)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,m=i()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=r[r.length-1]}g=m,m=u,v=r[r.length-1],w=a[v]&&a[v][u],d=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(w[0]){case 1:r.push(m),o.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),m=null,g?(m=g,g=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[w[1]][1],F.$=o[o.length-C],F._$={first_line:s[s.length-(C||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(C||1)].first_column,last_column:s[s.length-1].last_column},y=this.performAction.call(F,l,h,c,this.yy,w[1],o,s),"undefined"!=typeof y)return y;C&&(r=r.slice(0,-1*C*2),o=o.slice(0,-1*C),s=s.slice(0,-1*C)),r.push(this.productions_[w[1]][0]),o.push(F.$),s.push(F._$),E=a[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t){"use strict";function i(e,t){var i=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var n=document.createElement("table");this.dom.table=n,n.className="jsoneditor-search",t.appendChild(n);var r=document.createElement("tbody");this.dom.tbody=r,n.appendChild(r);var o=document.createElement("tr");r.appendChild(o);var s=document.createElement("td");o.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),o.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var h=document.createElement("tbody");c.appendChild(h),o=document.createElement("tr"),h.appendChild(o);var d=document.createElement("button");d.type="button",d.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(d),o.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){i._onDelayedSearch(e)},u.onchange=function(e){i._onSearch()},u.onkeydown=function(e){i._onKeyDown(e)},u.onkeyup=function(e){i._onKeyUp(e)},d.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),o.appendChild(s);var f=document.createElement("button");f.type="button",f.title="Next result (Enter)",f.className="jsoneditor-next",f.onclick=function(){i.next()},s=document.createElement("td"),s.appendChild(f),o.appendChild(s);var p=document.createElement("button");p.type="button",p.title="Previous result (Shift+Enter)",p.className="jsoneditor-previous",p.onclick=function(){i.previous()},s=document.createElement("td"),s.appendChild(p),o.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var r=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?r.searchFieldActive=!0:r.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],r.updateDom(),r.scrollTo(function(){t&&r.focus(o)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,i){"use strict";function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.type="button",l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");d.type="button",s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(e){e.preventDefault(),n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");l.type="button",r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(54);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){t.expandedItem==e&&(o.style.height=24*o.childNodes.length+"px",o.style.padding="5px 10px")},0),r.addClassName(o.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,o,s=e.target,a=e.which,l=!1;27==a?(this.selection&&r.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&o.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&(o=t[i+2]),o||(o=t[0]),o&&(o.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){"use strict";function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var r=i(59),o=i(57),s=i(60),a=i(54);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getPath=function(){for(var e=this,t=[];e;){var i=e.parent?"array"!=e.parent.type?e.field:e.index:void 0;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=a.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.type="button",r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)i=e[s],void 0===i||i instanceof Function||(r=new n(this.editor,{value:i}),this.appendChild(r));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(r=new n(this.editor,{field:l,value:i}),this.appendChild(r)));this.value="",this.editor.options.sortObjectKeys===!0&&this.sort("asc")}else this.childs=void 0,this.value=e;this.previousValue=this.value},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),r=t.nextSibling;r?i.insertBefore(n,r):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){ -if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof l?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),r=t.getDom(),o=r?r.parentNode:void 0;r&&o&&o.insertBefore(n,r),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var r=String(this.field).toLowerCase();t=r.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var o=[];this.childs.forEach(function(t){o=o.concat(t.search(e))}),i=i.concat(o)}if(void 0!=n){var s=!1;0==o.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return i.parent=null,this.updateDom({updateIndexes:!0}),i}}},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var r=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),"string"!=t&&"auto"!=t||(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),"string"!=t&&"auto"!=t||(this.expanded=!0)):this.expanded=!1,n&&(r?n.insertBefore(this.getDom(),r):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;"auto"!=e&&"string"!=e||("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(n){if(this.value=void 0,e!==!0)throw n}},n.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=a.textDiff(String(this.previousValue),String(this.value));i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:i}),this.previousValue=this.value},n.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=a.textDiff(this.previousField,this.field);i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:i}),this.previousField=this.field},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],i=this.value,n="auto"==this.type?a.type(i):this.type,r="string"==n&&a.isUrl(i);t.push("jsoneditor-"+n),r&&t.push("jsoneditor-url");var o=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(o&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==n||"object"==n){var s=this.childs?this.childs.length:0;e.title=this.type+" containing "+s+" items"}else r&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";if("boolean"===n&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),this["enum"]&&this.editable.value){if(!this.dom.select){this.dom.select=document.createElement("select"),this.id=this.field+"_"+(new Date).getUTCMilliseconds(),this.dom.select.id=this.id,this.dom.select.name=this.dom.select.id,this.dom.select.option=document.createElement("option"),this.dom.select.option.value="",this.dom.select.option.innerHTML="--",this.dom.select.appendChild(this.dom.select.option);for(var l=0;l0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");i.type="button",e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");r.type="button",e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),s=r._nextSibling(),l=i.editor,c=a.getAbsoluteTop(o.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,s,c,h,d,u,f,p,m,g,v,w,y=e[0].editor,A=t.pageY-y.drag.offsetY,C=t.pageX,E=!1,b=e[0];if(i=b.dom.tr,f=a.getAbsoluteTop(i),g=i.offsetHeight,f>A){r=i;do r=r.previousSibling,d=n.getNodeFromTarget(r),p=r?a.getAbsoluteTop(r):0;while(r&&p>A);d&&!d.parent&&(d=void 0),d||(h=i.parentNode.firstChild,r=h?h.nextSibling:void 0,d=n.getNodeFromTarget(r),d==b&&(d=void 0)),d&&(r=d.dom.tr,p=r?a.getAbsoluteTop(r):0,A>p+g&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),E=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),o=s;do u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?a.getAbsoluteTop(o.nextSibling):0,w=o?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling;while(o&&A>f+w);if(u&&u.parent){var x=C-y.drag.mouseX,S=Math.round(x/24/2),$=y.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;$>D&&r;){d=n.getNodeFromTarget(r);var k=e.some(function(e){return e===d||d._isChildOf(e)});if(k);else{if(!(d instanceof l))break;var B=d.parent.childs;if(B.length==e.length&&B[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),E=!0)}}}E&&(y.drag.mouseX=C,y.drag.level=b.getLevel()),y.startAutoScroll(A),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,s=o.childs.indexOf(i),l=o.childs[s+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(a.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(a.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n),this._updateSchema()}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateSchema=function(){this.editor&&this.editor.options&&(this.schema=n._findSchema(this.editor.options.schema,this.getPath()),this.schema?this["enum"]=n._findEnum(this.schema):delete this["enum"])},n._findEnum=function(e){if(e["enum"])return e["enum"];var t=e.oneOf||e.anyOf||e.allOf;if(t){var i=t.filter(function(e){return e["enum"]});if(i.length>0)return i[0]["enum"]}return null},n._findSchema=function(e,t){for(var i=e,n=0;n0?this.editor.multiselection.nodes:[this],A=y[0],C=y[y.length-1];if(13==u){if(f==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var E=this._hasChilds();if(E){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(y),v=!0);else if(69==u)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(y),v=!0);else if(45==u&&w)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(g){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&w){if(C.expanded){var $=C.getAppend();r=$?$.nextSibling:void 0}else{var D=C.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o),i&&i instanceof l&&1!=C.parent.childs.length&&_&&_.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):g&&m&&w&&(t=A._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(g&&m&&w){D=A.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B),t&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(g&&m&&w){i=C.expanded?C.append?C.append._nextNode():void 0:C._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,o=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*r(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:o,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,r=t.getIndex();i.childs[r+e.length]?i.childs[r+e.length].focus():i.childs[r-1]?i.childs[r-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do i=i.previousSibling,e=n.getNodeFromTarget(i);while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do i=i.nextSibling,e=n.getNodeFromTarget(i);while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.showContextMenu=function(e,t){var i=this,r=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:r.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:r.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:r.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:r.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;i==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted", -className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}var c=new o(s,{close:t});c.show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t?!0:"false"==t?!1:isNaN(i)||isNaN(n)?e:i},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=a.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;im)return-1;if(m>g)return 1}for(var v=0,w=Math.max(f.length,p.length);w>v;v++){if(n=!(f[v]||"").match(c)&&parseFloat(f[v])||f[v]||0,r=!(p[v]||"").match(c)&&parseFloat(p[v])||p[v]||0,isNaN(n)!==isNaN(r))return isNaN(n)?1:-1;if(typeof n!=typeof r&&(n+="",r+=""),r>n)return-1;if(n>r)return 1}return 0}},function(e,t,i){"use strict";function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,"tree"===this.editor.options.mode){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.type="button",n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}]}],a=new o(s,{close:i});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,o=n.menu;if(i==o&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(54),o=i(57);e.exports=n},function(e,t,i){"use strict";function n(e,t,i,n){for(var o={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a0){var o=i.length>l;if(o){i=i.slice(0,l);var a=this.validateSchema.errors.length-l;i.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+i.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var h=c.clientHeight;this.content.style.marginBottom=-h+"px",this.content.style.paddingBottom=h+"px"}if(this.aceEditor){var d=!1;this.aceEditor.resize(d)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(64);i(67),i(69),e.exports=n},function(e,t,i){!function(){function e(e){var t=i;e&&(i[e]||(i[e]={}),t=i[e]),t.define&&t.define.packaged||(n.original=t.define,t.define=n,t.define.packaged=!0),t.acequire&&t.acequire.packaged||(o.original=t.acequire,t.acequire=o,t.acequire.packaged=!0)}var t="ace",i=function(){return this}();if(i||"undefined"==typeof window||(i=window),t||"undefined"==typeof acequirejs){var n=function(e,t,i){return"string"!=typeof e?void(n.original?n.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())):(2==arguments.length&&(i=t),void(n.modules[e]||(n.payloads[e]=i,n.modules[e]=null)))};n.modules={},n.payloads={};var r=function(e,t,i){if("string"==typeof t){var n=a(e,t);if(void 0!=n)return i&&i(),n}else if("[object Array]"===Object.prototype.toString.call(t)){for(var r=[],s=0,l=t.length;l>s;++s){var c=a(e,t[s]);if(void 0==c&&o.original)return;r.push(c)}return i&&i.apply(null,r)||!0}},o=function(e,t){var i=r("",e,t);return void 0==i&&o.original?o.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&r!=t;){var r=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var o={},a={id:t,uri:"",exports:o,packaged:!0},l=function(e,i){return r(t,e,i)},c=i(l,o,a);o=c||a.exports,n.modules[t]=o,delete n.payloads[t]}i=n.modules[t]=o||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function r(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,m=d.bind(f.toString),g=d.bind(f.hasOwnProperty);if((h=g(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),r=p.call(arguments,2),o=r.length;if(e===i)o&&this.push.apply(this,r);else{var s=Math.min(t,i-e),a=e+s,l=a+o-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;o>d;++d)this[e+d]=r[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==m(e)});var w=Object("a"),y="a"!=w[0]||!(0 in w);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=arguments[1],r=-1,o=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(r[s]=e.call(o,i[s],s,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=M(this),n=y&&"[object String]"==m(this)?this.split(""):i,r=n.length>>>0,o=[],s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;r>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&o.push(t));return o}),Array.prototype.every||(Array.prototype.every=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&!e.call(r,i[o],o,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&e.call(r,i[o],o,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>o;o++)o in i&&(r=e.call(void 0,r,i[o],o,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do o in this&&(r=e.call(void 0,r,i[o],o,t));while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=y&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=y&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){var A="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(A+e);if(g(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var C;C=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=C();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),b="undefined"==typeof document||r(document.createElement("div"));if(!E||!b)var F=Object.defineProperty}if(!Object.defineProperty||F){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(F)try{return F.call(Object,e,t,i)}catch(n){}if(g(i,"value"))if(h&&(l(e,t)||c(e,t))){var r=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=r}else e[t]=i.value;else{if(!h)throw new TypeError($);g(i,"get")&&s(e,t,i.get),g(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(D){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var k=!0,B=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],_=B.length;for(var L in{toString:null})k=!1;Object.keys=function O(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var O=[];for(var t in e)g(e,t)&&O.push(t);if(k)for(var i=0,n=_;n>i;i++){var r=B[i];g(e,r)&&O.push(r)}return O}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),P=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(P,"")}}var M=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||n,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var r=i.indexOf(t);if(-1==r)break;n=!1,i.splice(r,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1), -!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS?e(t,n,i):!1}function r(){a=Object.create(null),a.count=0,a.lastT=0}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,o=e.changedTouches[0];e.wheelX=-(o.clientX-n)/t,e.wheelY=-(o.clientY-r)/t,n=o.clientX,r=o.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){function o(e){if(0!==t.getButton(e)?d=0:e.detail>1?(d++,d>4&&(d=1)):d=1,s.isIE){var o=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;h&&!o||(d=1),h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),1==d&&(l=e.clientX,c=e.clientY)}if(e._clicks=d,n[r]("mousedown",e),d>4)d=0;else if(d>1)return n[r](u[d],e)}function a(e){d=2,h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),n[r]("mousedown",e),n[r](u[d],e)}var l,c,h,d=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",o),s.isOldIE&&t.addListener(e,"dblclick",a)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&r(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var o=n(i,e,t);return c=e.defaultPrevented,o}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):r(),91!=t&&92!=t||(a.OSKey=!1),a[t]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function r(o){o.data==n&&(t.stopPropagation(o),t.removeListener(i,"message",r),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function o(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,(s||1==r)&&n.selection.moveToPosition(i),n.$blockScrolling--,void(2==r&&n.textInput.onContextMenu(e.domEvent))}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,r.end.row==n.row&&r.end.column==n.column||(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,r.start.row==n.row&&r.start.column==n.column||(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();var o=s.session.getLength();if(t==o){var a=s.renderer.pixelToScreenCoordinates(0,d.y).row,h=d.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var f=d.domEvent.target,p=f.getBoundingClientRect(),m=c.getElement().style;m.left=p.right+"px",m.top=p.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,r=s.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(u&&e.$tooltipFollowsMouse&&n(r),d=r,void(h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!D||n||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,D=i,k={x:A,y:C};else{var s=r(k.x,k.y,A,C);s>h?D=null:i-D>=c&&(g.renderer.scrollCursorIntoView(),D=null)}}function i(e,t){var i=Date.now(),n=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:A-o.left,right:o.right-A},y:{top:C-o.top,bottom:o.bottom-C}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=a/r&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&g.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){var e=F;F=g.renderer.screenToTextCoordinates(A,C),t(F,e),i(F,e)}function d(){b=g.selection.toOrientedRange(),y=g.session.addMarker(b,"ace_selection",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),_=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),g.session.removeMarker(y),y=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(b),g.$blockScrolling-=1,g.isFocused()&&!S&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),b=null,F=null,_=0,$=null,D=null,s.removeListener(document,"mousemove",f)}function f(){null==L&&(L=setTimeout(function(){null!=L&&y&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function m(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var g=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var w=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];w.forEach(function(t){e[t]=this[t]},this),g.addEventListener("mousedown",this.onMouseDown.bind(e));var y,A,C,E,b,F,x,S,$,D,k,B=g.container,_=0;this.onDragStart=function(e){if(this.cancelDrag||!B.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}b=g.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=g.getReadOnly()?"copy":"copyMove",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),i.clearData(),i.setData("Text",g.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(B.draggable=!1,S=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(A=e.clientX,C=e.clientY,y||d(),_++,e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragOver=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(A=e.clientX,C=e.clientY,y||(d(),_++),null!==L&&(L=null),e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return _--,0>=_&&y?(u(),x=null,s.preventDefault(e)):void 0},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(x){case"move":b=b.contains(F.row,F.column)?{start:F,end:F}:g.moveText(b,F);break;case"copy":b=g.moveText(b,F,!0)}else{var i=t.getData("Text");b={start:F,end:g.session.insert(F,i)},g.focus(),x=null}return u(),s.preventDefault(e)}},s.addListener(B,"dragstart",this.onDragStart.bind(e)),s.addListener(B,"dragend",this.onDragEnd.bind(e)),s.addListener(B,"dragenter",this.onDragEnter.bind(e)),s.addListener(B,"dragover",this.onDragOver.bind(e)),s.addListener(B,"dragleave",this.onDragLeave.bind(e)),s.addListener(B,"drop",this.onDrop.bind(e));var L=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),r=e.domEvent.detail||1;if(1===r&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in o&&(o.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){!i&&r.readyState&&"loaded"!=r.readyState&&"complete"!=r.readyState||(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var y=g[v];0===y.name.indexOf("data-ace-")&&(s[o(y.name.replace(/^data-ace-/,""))]=y.value)}var A=m.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);A&&(a=A[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var C in s)"undefined"!=typeof s[C]&&t.set(C,s[C])}}function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=(e("./lib/oop"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",r=i[i.length-1];if("worker"==t&&"-"==n){var o=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");r=r.replace(o,"")}(!r||r==t)&&i.length>1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(s){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var l=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void a.loadScript(t.moduleUrl(i,o),l):l()}},r(!0),t.init=r}),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/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){var i=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());i&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",i),r.isIE&&e.renderer.scrollBarV&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i)),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;!r.isEmpty()&&r.insideStart(n.row,n.column)?o.setCursorStyle("default"):o.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session;r.foldWidgets&&r.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session,o=r.getParentFoldRangeData(n,!0),s=o.range||o.firstRange;if(s){n=s.start.row;var a=r.getFoldAt(n,r.getLine(n).length,1);a?r.removeFold(a):(r.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(o&&o.command&&(s="null"==o.command?!0:a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s))););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?!this.isEnd(e,t)&&!this.isStart(e,t):!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?!this.isEnd(e,t):!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?!this.isStart(e,t):!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},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(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,t===!0?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),r=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(t,i,1);return o?void this.moveCursorTo(o.end.row,o.end.column):((e=this.session.nonTokenRe.exec(r))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((o=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,r=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&r.test(i);)n++;if(1>n)for(o.lastIndex=0;(i=e[n])&&!o.test(i);)if(o.lastIndex=0,n++,r.test(i)){if(n>2){n--;break}for(;(i=e[n])&&r.test(i);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do e++,n=this.doc.getLine(e);while(o>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var i=this.getCursor();return s.fromPoints(t,i)}catch(n){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?c.onMatch=this.$applyToken:c.onMatch=c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;o>r;r++)t[r]&&(n[n.length]={type:i[r],value:t[r]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,r=0,o=n.length;o>r;r++)t[r+1]&&(i[i.length]={type:n[r],value:t[r+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,r={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,o,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==r.stack&&(r.end=l+1,r.stack=-1),i--):o&&(i++,1!=o.length&&(r.stack=i,r.start=l)),e}),null!=r.end&&/^\)*$/.test(e.substr(r.end))&&(e=e.substring(0,r.start)+e.substr(r.end))}return"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",o=this.states[n];o||(n="start",o=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n];a.lastIndex=0;for(var l,c=[],h=0,d=0,u={type:null,value:""};l=a.exec(e);){var f=s.defaultToken,p=null,m=l[0],g=a.lastIndex;if(g-m.length>h){var v=e.substring(h,g-m.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,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 e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;n>=t;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},m=f+" ",g=function(e,t){s&&!/\S/.test(e)||(w(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,y=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),A=new RegExp("(?:"+a.escapeRegExp(y)+")\\s*$"),g=function(e,t){v(e,t)||s&&!/\S/.test(e)||(o.insertInLine({row:t,column:e.length},y),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(A))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;ri&&(c=i),l&&!v(e,t)&&(l=!1)):C>e.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:g)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;u=new c(m,g,m,g+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;to;o++)if("string"==typeof r[o].token)/keyword|support|storage/.test(r[o].token)&&i.push(r[o].regex);else if("object"==typeof r[o].token)for(var a=0,l=r[o].token.length;l>a;a++)if(/keyword|support|storage/.test(r[o].token[a])){var n=r[o].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,i,n){var r=this.$keywordList||this.$createKeywordList();return r.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,r=t.start.column,o=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=o.substring(0,r)+t.lines[0]+o.substring(r);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=o.substring(0,r)+e[n],e[n+t.lines.length-1]+=o.substring(r)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=o.substring(0,r)+o.substring(l):e.splice(n,c-n+1,o.substring(0,r)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[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(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;o>r;r++)if(e-=i[r].length+n,0>e)return{row:r,column:e+i[r].length+n};return{row:o-1,column:i[o-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=0,o=Math.min(e.row,i.length),s=t||0;o>s;++s)r+=i[s].length+n;return r+e.column}}).call(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,r=i.doc,o=t;i.lines[t];)t++;var s=r.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=o&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||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(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,r=n.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(e,t,i){for(var n=this.ranges,o=i||0;o0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.apply(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;os||(0!=s||i.isEmpty()||n.isEmpty())&&(r(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(o,1),e.push(n),n=i,o--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var r=this.pointIndex({row:t,column:0},n);0>r&&(r=-r-1);for(var o=[],s=n;r>s;s++)o.push(i[s]);return o},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,r=i.row,o=r-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=o,h.end.row+=o}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function r(e,t){n(e.start,t),n(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){o(e.start,t),o(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};l.inherits(c,a),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new c(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);r(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,o=-1;n=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var d=this.getFoldAt(a,l,1),u=this.getFoldAt(c,h,-1);if(d&&u==d)return d.addSubFold(i);d&&!d.range.isStart(a,l)&&this.removeFold(d),u&&!u.range.isEnd(c,h)&&this.removeFold(u);var f=this.getFoldsInRange(i.range);f.length>0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);return n.length?n:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(r>i)return;a=Math.max(r,a)}s+=null!=e?e:o.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var r=this.getFoldLine(e);if(r)return this.getFoldDisplayLine(r,e,t,i,n);var o;return o=this.doc.getLine(e),o.substring(n||0,t||o.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i)})},this.toggleFold=function(e){var t,i,n=this.selection,r=n.getRange();if(r.isEmpty()){var o=r.start;if(t=this.getFoldAt(o.row,o.column))return void this.expandFold(t);(i=this.findMatchingBracket(o))?1==r.comparePoint(i)?r.end=i:(r.start=i,r.start.column++,r.end.column--):(i=this.findMatchingBracket({row:o.row,column:o.column+1}))?(1==r.comparePoint(i)?r.end=i:r.start=i,r.start.column++):r=this.getCommentFoldRange(o.row,o.column)||r}else{var s=this.getFoldsInRange(r);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(r.start.row,r.start.column)),t&&t.range.toString()==r.toString())return void this.expandFold(t);var a="...";if(!r.isMultiLine()){if(a=this.getTextRange(r),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,r)},this.getCommentFoldRange=function(e,t,i){var n=new a(this,e,t),o=n.getCurrentToken();if(o&&/^comment|string/.test(o.type)){var s=new r,l=new RegExp(o.type.replace(/\..*/,"\\."));if(1!=i){do o=n.stepBackward();while(o&&l.test(o.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do o=n.stepForward();while(o&&l.test(o.type));o=n.stepBackward()}else o=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+o.value.length-2,s}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var r=e;t>r;r++)if(null==n[r]&&(n[r]=this.getFoldWidget(r)),"start"==n[r]){var o=this.getFoldWidgetRange(r);if(o&&o.isMultiLine()&&o.end.row<=t&&o.start.row>=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,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(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var r=t.target||t.srcElement;r&&/ace_fold-widget/.test(r.className)&&(r.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return void(t.children||t.all?this.removeFold(o):this.expandFold(o));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1),o&&s.isEqual(o.range)))return void this.removeFold(o);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--), -t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var d=c.charAt(l);if(d==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else d==e&&(o+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var r=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=n}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","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(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/lang"),o=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,d=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,f=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new h(e)),this.setDocument(e),this.selection=new a(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var r=i+n>>1,o=e[r];if(t>o)i=r+1;else{if(!(o>t))return r;n=r-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],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(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),r=0;if(null==t)o=n.length-1,r=this.getLine(e).length;else for(var o=0;o=t));o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do o--;while(o>=0&&i.charAt(o).match(r));o++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=o.end.row+1,l>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;n>s&&" "==o.charAt(s);++s);n>s&&" "==o.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var r=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var m=h.range.compareInside(n.row,n.column);0==m?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column))):-1==m&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,r=this.doc.getAllLines(),o=this.getTabSize(),s=this.$wrapData,l=this.$wrapLimit,c=e;for(t=Math.min(t,r.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,o){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-y;){var A=c+t-y;if(e[A-1]>=p&&e[A]>=p)o(A);else if(e[A]!=a&&e[A]!=h){for(var C=Math.max(A-(t-(t>>2)),c-1);A>C&&e[A]C&&e[A]C&&e[A]==f;)A--}else for(;A>C&&e[A]C?o(++A):(A=c+t,e[A]==i&&A--,o(A-y))}else{for(A;A!=c-1&&e[A]!=a;A--);if(A>c){o(A);continue}for(A=c+t;Ac;c++)s.push(g)}else 32==l?s.push(p):l>39&&48>l||l>57&&64>l?s.push(f):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?2:1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]e)return{row:0,column:0};var i,n,r=0,o=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;e>=s&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,r++,r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(e>=s+a||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){var v=Math.floor(e-s);n=g[v],v>0&&g.length&&(m=g.indent,o=g[v-1]||g[g.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;o=this.getFoldAt(e,t,1),o&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;e>a;){if(a>=f){if(s=u.end.row+1,s>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)n++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:n,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>o&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=e("./lib/oop"),o=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var s=e.offset+(r||0);if(n=new o(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,r=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=r.length-c;e:for(var d=a.offset||0;h>=d;d++){for(var u=0;c>u;u++)if(-1==r[d+u].search(a[u]))continue e;var f=r[d],p=r[d+c-1],m=f.length-f.match(a[0])[0].length,g=p.match(a[c-1])[0].length;l&&l.end.row===d&&l.end.column>m||(s.push(l=new o(d,m,d+c-1,g)),c>2&&(d=d+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[u].end.column>C&&s[u].end.row==i.end.row;)u--;for(s=s.slice(v,u+1),v=0,u=s.length;u>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var r=n.exec(e);if(!r||r[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var o=Math.min(e.length,e.length);o--;){var s=e[o];s&&s.toLowerCase()!=s?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var r;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,d=new o(n,l,n+s-1,h);return 1==i.offset?(d.start.row--,d.start.column=Number.MAX_VALUE):a&&(d.start.column+=a),r(d)?!0:void 0}};else if(t.backwards)var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row,r=e.getLine(n).substr(o.column);if(!i(r,n,o.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0; -}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&e&&(void 0==i&&(i=e.position),e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),r.returnValue!==!1},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(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),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){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 i=this.session.getSelection();i.off("changeCursor",this.$onCursorChange),i.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.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=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value){do a=r,r=n.stepForward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!r)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new f(l,c,l,c+r.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.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.$blockScrolling||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row, -t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||o>=n&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},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(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new f(r.row,c+o.selection[0],r.row,c+o.selection[1])):this.selection.setSelectionRange(new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3]))),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var o={value:r[0],start:r.index,end:r.index+r[0].length};return o}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),e*=s!==o.end&&s>i?Math.pow(10,o.end-i-1):Math.pow(10,o.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new f(t,o.start,t,o.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(o.start+1,i+c.length-o.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var r=i.start.row;t.duplicateLines(r,r)}else{var o=n?i.start:i.end,s=t.insert(o,t.getTextRange(i),!1);i.start=o,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();i=this.$getSelectedRows(o),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),o.moveBy(n,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var d=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var u=i.first,f=i.last;++hf+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);h>=d;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):t===!1&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.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.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0?!0:o.topwindow.innerHeight?!1:null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(y.prototype),v.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g="ace_gutter-cell ";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[m];null==w&&(w=a[m]=t.getFoldWidget(m))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var g="ace_fold-widget ace_"+w;g+="start"==w&&m==s&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);c>=h;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,p,r+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,u>d,u>f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"), -a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,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(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)this.showInvisibles?t.push(""+o.stringRepeat(this.TAB_CHAR,i)+""):t.push(o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s?o:!1),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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]/g,a=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;i>o&&ni?r.push({type:e[n].type,value:s.substring(0,i-o)}):r.push(e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,r=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:r}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var i=0,r=t.length;r>i;i++){var o=this.getPixelPosition(t[i].cursor,!0);if(!((o.top>e.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","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"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter,g='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .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; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .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; } .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 { 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 { 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; text-indent: -1em; -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: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; word-wrap: normal; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid; transform: translatez(0); } .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_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .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_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; 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: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); 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; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; 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 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; 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_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; 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_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;} '; -r.importCssString(g,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},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.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("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,n.implement(this,m),this.updateCharacterSize=function(){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()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},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(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&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.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(0>t||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,i=this.session.documentToScreenRow(t,0)*e.lineHeight;return i-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+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=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),y=w+v,A=this.lineHeight;w=e.screenToDocumentRow(w,0);var C=e.getFoldLine(w);C&&(w=C.start.row),m=e.documentToScreenRow(w,0),g=e.getRowLength(w)*A,y=Math.min(e.screenToDocumentRow(y,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(y)*A+g,c=this.scrollTop-m*A;var E=0;return this.layerConfig.width!=o&&(E=this.CHANGE_H_SCROLL),(a||p)&&(E=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:m,lastRow:y,lineHeight:A,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/A)),height:this.$size.scrollerHeight},E},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||to?(t&&l+s>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(ri;++i)r.push(o(i/this.STEPS,e,t-e));return r},this.scrollToLine=function(e,t,i,n){var r=this.$cursorLayer.getPixelPosition({row:e,column:0}),o=r.top;t&&(o-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(o),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var r=this.$scrollAnimation.steps;if(r.length&&(e=r[0],e==i))return}var o=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:o},clearInterval(this.$timer),n.session.setScrollTop(o.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){o.length?(n.session.setScrollTop(o.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(i.cssClass){r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(v.prototype),o.defineOptions(v.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(66),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(f){if(!(f instanceof window.DOMException))throw f;var d=this.$workerBlob(o),p=window.URL||window.webkitURL,m=p.createObjectURL(d);this.$worker=new Worker(m),p.revokeObjectURL(m)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function r(e){var t=e.domEvent,i=t.altKey,r=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,d=e.editor,u=d.selection,f=d.inMultiSelectMode,p=e.getDocumentPosition(),m=u.getCursor(),g=e.inSelection()||u.isEmpty()&&n(p,m),v=e.x,w=e.y,y=function(e){v=e.clientX,w=e.clientY},A=d.session,C=d.renderer.pixelToScreenCoordinates(v,w),E=C;if(d.$mouseHandler.$enableJumpToDef)a&&i||l&&i?h=r?"block":"add":i&&d.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add",!f&&r)return}else i&&d.$blockSelectEnabled&&(h="block");if(h&&s.isMac&&t.ctrlKey&&d.$mouseHandler.cancelContextMenu(),"add"==h){if(!f&&g)return;if(!f){var b=u.toOrientedRange();d.addSelectionMarker(b)}var F=u.rangeList.rangeAtPoint(p);d.$blockScrolling++,d.inVirtualSelectionMode=!0,r&&(F=null,b=u.ranges[0]||b,d.removeSelectionMarker(b)),d.once("mouseup",function(){var e=u.toOrientedRange();F&&e.isEmpty()&&n(F.cursor,e.cursor)?u.substractPoint(e.cursor):(r?u.substractPoint(b.cursor):b&&(d.removeSelectionMarker(b),u.addRange(b)),u.addRange(e)),d.$blockScrolling--,d.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),d.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=d.renderer.pixelToScreenCoordinates(v,w),t=A.screenToDocumentPosition(e.row,e.column);n(E,e)&&n(t,u.lead)||(E=e,d.$blockScrolling++,d.selection.moveToPosition(t),d.renderer.scrollCursorIntoView(),d.removeSelectionMarkers(S),S=u.rectangularRangeBlock(E,C),d.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=d.$mouseHandler.$clickSelection.clone()),S.forEach(d.addSelectionMarker,d),d.updateSelectionMarkers(),d.$blockScrolling--)};d.$blockScrolling++,f&&!l?u.toSingleRange():!f&&l&&(x=u.toOrientedRange(),d.addSelectionMarker(x)),r?C=A.documentToScreenPosition(u.lead):u.moveToPosition(p),d.$blockScrolling--,E={row:-1,column:-1};var D=function(e){clearInterval(B),d.removeSelectionMarkers(S),S.length||(S=[u.toOrientedRange()]),d.$blockScrolling++,x&&(d.removeSelectionMarker(x),u.toSingleRange(x));for(var t=0;t1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;o>d;d++)c.push(this.getLineRange(d,!0));h=this.getLineRange(o,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(n,r);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.columns&&(s=0),0>h&&(h=0),h==d&&(i=!0);for(var u=h;d>=u;u++){var f=l.fromPoints(this.session.screenToDocumentPosition(u,s),this.session.screenToDocumentPosition(u,a));if(f.isEmpty()){if(p&&r(f.end,p))break;var p=f.end}f.cursor=o?f.start:f.end,n.push(f)}if(c&&n.reverse(),!i){for(var m=n.length-1;n[m].isEmpty()&&m>0;)m--;if(m>0)for(var g=0;n[g].isEmpty();)g++;for(var v=m;v>=g;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.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){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;ne?a.unshift(a.pop()):a.push(a.shift());for(var r=n.length;r--;){var o=n[r],s=o.clone();t.replace(o,a[r]),o.start.row=s.start.row,o.start.column=s.start.column}},this.selectMore=function(e,t,i){var r=this.session,o=r.multiSelect,s=o.toOrientedRange();if(!s.isEmpty()||(s=r.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!i)){var a=r.getTextRange(s),l=n(r,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,r=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&r.length!=i.length-1){r.forEach(function(e){t.substractPoint(e.cursor)});var o=0,s=1/0,a=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),r=n.substr(i.column).search(/\S/g);return-1==r&&(r=0),i.column>o&&(o=i.column),s>r&&(s=r),r});i.forEach(function(t,i){var n=t.cursor,r=o-n.column,c=a[i]-s;r>c?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,m=this.session.getLength();do p=this.session.getLine(d);while(/[=:]/.test(p)&&++d0);0>h&&(h=0),d>=m&&(d=m-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,f),this.session.insert({row:h,column:0},g.join("\n")+"\n"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=/\S/,o=e.getLine(t),s=o.search(r);if(-1!=s){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++t=d)break;h=t}}if(h>c){var u=e.getLine(h).length;return new n(c,a,h,u)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"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; } ';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,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)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;o>a;a++)i[a]&&(i[a].hidden=s);i[o]&&(s?i[r]?i[o].hidden=s:i[r]=i[o]:(i[r]==i[o]&&(i[r]=void 0),i[o].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var r=t.splice(i+1,n);r.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var o=new Array(n);o.unshift(i,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var r=1/0,o=0;oa&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;o>=s;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;r>=n;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(0>s))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);0>o&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&0>i&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do s=r[o+=i];while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row; -do l[0>i?"unshift":"push"](s),s=r[o+=i];while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=m+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var g=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(u.destroy(),{command:"null"})};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.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/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(e,t,i){"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),r=e("./lib/event"),o=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new o(new l(e));h.setSession(c);var d={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),r.addListener(window,"resize",d.onResize),h.on("destroy",function(){r.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.3"}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t){(function(t){function i(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var i=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(e,t){var n=new i,r=t.endings,o=t.type;if(r)for(var s=0,a=e.length;a>s;++s)n.append(e[s],r);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return o?n.getBlob(o):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,o=function(){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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(o,r),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),r=i.match(/^(\s*\})/);if(!r)return 0;var o=r[1].length,s=e.findMatchingBracket({row:t,column:o});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var m=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var g="";f.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!g)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var y=w+r.getTabString();return{text:"\n"+y+"\n"+w+g,selection:[1,y.length,1,y.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);var a=r.doc.getLine(o.start.row),l=a.substring(o.end.column,o.end.column+1);if("}"==l)return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(")"==a)return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if("]"==a)return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),m=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var g,v=p&&/string|escape/.test(p.type),w=!m||/string|escape/.test(m.type);if(f==o)g=v!==w;else{if(v&&!w)return null;if(v&&w)return null;var y=n.$mode.tokenRe;y.lastIndex=0;var A=y.test(h);y.lastIndex=0;var C=y.test(h);if(A||C)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;g=!0}return{text:g?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(a==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),r=e("../../range").Range,o=e("./fold_mode").FoldMode,s=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)))};n.inherits(s,o),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,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var r=this._getFoldWidgetBase(e,t,i);return!r&&this.startRegionRe.test(n)?"start":r},this.getFoldWidgetRange=function(e,t,i,n){var r=e.getLine(i);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,i);var o=r.match(this.foldingStartMarker);if(o){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],i,s);var a=e.getCommentFoldRange(i,s+o[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var o=r.match(this.foldingStopMarker);if(o){var s=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),o=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new r(s,n,h,t.length):void 0}}.call(s.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"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var r=t.match(/^.*[\{\(\[]\s*$/);r&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(68),"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(d.prototype),t.Mode=d})},function(e,t){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener("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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"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){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n\x0B\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; -},function(e,t){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,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; 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 { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .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; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .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; -moz-box-sizing: border-box; box-sizing: border-box; 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; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var r=n.createElement("div");r.innerHTML=c,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),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.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(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(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(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(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=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:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},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;n.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.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)})}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=a.getInternetExplorerVersion();if(-1!=r&&r<9)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(1)}catch(e){}var o=i(2),s=i(13),a=i(5);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=a.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=a.extend({},this.options),s=o.mode;o.mode=e;var l=n.modes[e];if(!l)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==l.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),a.clear(this),a.extend(this,l.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof l.load)try{l.load.call(this)}catch(e){console.error(e)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(e){console.error(e)}}catch(e){this._onError(e)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(e){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},n.prototype.validate=function(){},n.prototype.refresh=function(){},n.registerMode=function(e){var t,i;if(a.isArray(e))for(t=0;t=1&&i<=12&&n>=1&&n<=m[i]}function o(e,t){var i=e.match(g);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return n<=23&&r<=59&&o<=59&&(!t||s)}function s(e){var t=e.split(E);return 2==t.length&&r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return C.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(e){return!1}}function h(e,t){if(e&&t)return e>t?1:et?1:e=0?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:e,root:t,baseId:i},{index:n,compiling:!1})}function s(e,t,i){var n=a.call(this,e,t,i);n>=0&&this._compilations.splice(n,1)}function a(e,t,i){for(var n=0;n=55296&&t<=56319&&r=t)throw new Error("Cannot access property/index "+n+" levels up, current level is "+t);return i[t-n]}if(n>t)throw new Error("Cannot access data "+n+" levels up, current level is "+t);if(o="data"+(t-n||""),!r)return o}for(var a=o,c=r.split("/"),h=0;h",F="result"+r,x=e.opts.v5&&s&&s.$data;if(x?(n+=" var schema"+r+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",w="schema"+r):w=s,C){var S=e.util.getData(E.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=A,B=B||[];B.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(i||"_formatExclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: '"+A+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+_+"]); ":n+=" validate.errors = ["+_+"]; return false; ":n+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),x&&(n+=" if ("+w+" === undefined) "+d+" = true; else if (typeof "+w+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+F+" = "+v+"("+h+", ",n+=x?""+w:""+e.util.toQuotedString(s),n+=" ); if ("+F+" === undefined) "+d+" = false; var "+$+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = "+$+" ? "+F+" "+b+" 0 : "+F+" "+b+"= 0; } if (!"+d+") var op"+r+" = "+$+" ? '"+b+"' : '"+b+"=';"}else{var $=!0===E,k=b;$||(k+="=");var D="'"+k+"'";x&&(n+=" if ("+w+" === undefined) "+d+" = true; else if (typeof "+w+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+F+" = "+v+"("+h+", ",n+=x?""+w:""+e.util.toQuotedString(s),n+=" ); if ("+F+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+F+" "+b,$||(n+="="),n+=" 0;"}n+=p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+D+", limit: ",n+=x?""+w:""+e.util.toQuotedString(s),n+=" , exclusive: "+$+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be "+k+' "',n+=x?"' + "+w+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=x?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+_+"]); ":n+=" validate.errors = ["+_+"]; return false; ":n+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="}"}},{}],14:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],g=e.opts.v5&&m&&m.$data,v=f?"<":">",w=f?">":"<";if(g){var y=e.util.getData(m.$data,s,e.dataPathArr),A="exclusive"+o,E="op"+o,C="' + "+E+" + '";r+=" var schemaExcl"+o+" = "+y+"; ",y="schemaExcl"+o,r+=" var exclusive"+o+"; if (typeof "+y+" != 'boolean' && typeof "+y+" != 'undefined') { ";var i=p,b=b||[];b.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(r+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var F=r;r=b.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+F+"]); ":r+=" validate.errors = ["+F+"]; return false; ":r+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else if( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" ((exclusive"+o+" = "+y+" === true) ? "+d+" "+w+"= "+n+" : "+d+" "+w+" "+n+") || "+d+" !== "+d+") { var op"+o+" = exclusive"+o+" ? '"+v+"' : '"+v+"=';"}else{var A=!0===m,C=v;A||(C+="=");var E="'"+C+"'";r+=" if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" "+d+" "+w,A&&(r+="="),r+=" "+n+" || "+d+" !== "+d+") {"}var i=t,b=b||[];b.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+E+", limit: "+n+", exclusive: "+A+" } ",!1!==e.opts.messages&&(r+=" , message: 'should be "+C+" ",r+=u?"' + "+n:a+"'"),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var F=r;return r=b.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+F+"]); ":r+=" validate.errors = ["+F+"]; return false; ":r+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}},{}],15:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maxItems"==t?">":"<";r+="if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" "+d+".length "+f+" "+n+") { ";var i=t,p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+n+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT have ",r+="maxItems"==t?"more":"less",r+=" than ",r+=u?"' + "+n+" + '":""+a,r+=" items' "),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var m=r;return r=p.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}},{}],16:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maxLength"==t?">":"<";r+="if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),!1===e.opts.unicode?r+=" "+d+".length ":r+=" ucs2length("+d+") ",r+=" "+f+" "+n+") { ";var i=t,p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+n+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT be ",r+="maxLength"==t?"longer":"shorter",r+=" than ",r+=u?"' + "+n+" + '":""+a,r+=" characters' "),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var m=r;return r=p.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}},{}],17:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maxProperties"==t?">":"<";r+="if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" Object.keys("+d+").length "+f+" "+n+") { ";var i=t,p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+n+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT have ",r+="maxProperties"==t?"more":"less",r+=" than ",r+=u?"' + "+n+" + '":""+a,r+=" properties' "),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var m=r;return r=p.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}},{}],18:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+e.util.getProperty(t),o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c="valid"+a.level,h=a.baseId,d=!0,u=n;if(u)for(var f,p=-1,m=u.length-1;p "+x+") { ";var $=c+"["+x+"]";u.schema=F,u.schemaPath=s+"["+x+"]",u.errSchemaPath=a+"/"+x,u.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),u.dataPathArr[g]=x;var D=e.validate(u);u.baseId=w,e.util.varOccurences(D,v)<2?i+=" "+e.util.varReplace(D,v,$)+" ":i+=" var "+v+" = "+$+"; "+D+" ",i+=" } ",l&&(i+=" if ("+p+") { ",f+="}")}if("object"==typeof y&&e.util.schemaHasRules(y,e.RULES.all)){u.schema=y,u.schemaPath=e.schemaPath+".additionalItems",u.errSchemaPath=e.errSchemaPath+"/additionalItems",i+=" "+p+" = true; if ("+c+".length > "+o.length+") { for (var "+m+" = "+o.length+"; "+m+" < "+c+".length; "+m+"++) { ",u.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var $=c+"["+m+"]";u.dataPathArr[g]=m;var D=e.validate(u);u.baseId=w,e.util.varOccurences(D,v)<2?i+=" "+e.util.varReplace(D,v,$)+" ":i+=" var "+v+" = "+$+"; "+D+" ",l&&(i+=" if (!"+p+") break; "),i+=" } } ",l&&(i+=" if ("+p+") { ",f+="}")}}else if(e.util.schemaHasRules(o,e.RULES.all)){u.schema=o,u.schemaPath=s,u.errSchemaPath=a,i+=" for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",u.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var $=c+"["+m+"]";u.dataPathArr[g]=m;var D=e.validate(u);u.baseId=w,e.util.varOccurences(D,v)<2?i+=" "+e.util.varReplace(D,v,$)+" ":i+=" var "+v+" = "+$+"; "+D+" ",l&&(i+=" if (!"+p+") break; "),i+=" } ",l&&(i+=" if ("+p+") { ",f+="}")}return l&&(i+=" "+f+" if ("+d+" == errors) {"),i=e.util.cleanUpCode(i)}},{}],26:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s&&s.$data;d?(n+=" var schema"+r+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+r):i=s,n+="var division"+r+";if (",d&&(n+=" "+i+" !== undefined && ( typeof "+i+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+i+", ",e.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":n+=" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var u=u||[];u.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { multipleOf: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+i:s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var f=n;return n=u.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],27:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.level,r=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,c="data"+(r||""),h="errs__"+n,d=e.util.copy(e);d.level++;var u="valid"+d.level;if(e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=s,d.errSchemaPath=a,i+=" var "+h+" = errors; ";var f=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var p;d.opts.allErrors&&(p=d.opts.allErrors,d.opts.allErrors=!1),i+=" "+e.validate(d)+" ",d.createErrors=!0,p&&(d.opts.allErrors=p),e.compositeRule=d.compositeRule=f,i+=" if ("+u+") { ";var m=m||[];m.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var g=i;i=m.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(i+=" } ")}else i+=" var err = ",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(i+=" if (false) { ");return i}},{}],28:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.level,r=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,c="data"+(r||""),h="valid"+n,d="errs__"+n,u=e.util.copy(e),f="";u.level++;var p="valid"+u.level;i+="var "+d+" = errors;var prevValid"+n+" = false;var "+h+" = false;";var m=u.baseId,g=e.compositeRule;e.compositeRule=u.compositeRule=!0;var v=o;if(v)for(var w,y=-1,A=v.length-1;y5)i+=" || validate.schema"+s+"["+m+"] ";else{var R=w;if(R)for(var T,P=-1,M=R.length-1;P= "+pe+"; ",a=e.errSchemaPath+"/patternGroups/minimum",i+=" if (!"+h+") { ";var q=q||[];q.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: { reason: '"+ve+"', limit: "+ge+", pattern: '"+e.util.escapeQuotes(H)+"' } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have "+we+" than "+ge+' properties matching pattern "'+e.util.escapeQuotes(H)+"\"' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var G=i;i=q.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+G+"]); ":i+=" validate.errors = ["+G+"]; return false; ":i+=" var err = "+G+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",void 0!==me&&(i+=" else ")}if(void 0!==me){var ge=me,ve="maximum",we="more";i+=" "+h+" = pgPropCount"+n+" <= "+me+"; ",a=e.errSchemaPath+"/patternGroups/maximum",i+=" if (!"+h+") { ";var q=q||[];q.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: { reason: '"+ve+"', limit: "+ge+", pattern: '"+e.util.escapeQuotes(H)+"' } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have "+we+" than "+ge+' properties matching pattern "'+e.util.escapeQuotes(H)+"\"' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var G=i;i=q.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+G+"]); ":i+=" validate.errors = ["+G+"]; return false; ":i+=" var err = "+G+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } "}a=K,l&&(i+=" if ("+h+") { ",f+="}")}}}}return l&&(i+=" "+f+" if ("+d+" == errors) {"),i=e.util.cleanUpCode(i)}},{}],32:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(s||""),d="valid"+o;if("#"==a||"#/"==a)e.isRoot?(i=e.async,n="validate"):(i=!0===e.root.schema.$async,n="root.refVal[0]");else{var u=e.resolveRef(e.baseId,a,e.isRoot);if(void 0===u){var f="can't resolve reference "+a+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(f);var p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(a)+"' } ",!1!==e.opts.messages&&(r+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(a)+"' "),e.opts.verbose&&(r+=" , schema: "+e.util.toQuotedString(a)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var m=r;r=p.pop(),!e.compositeRule&&c?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(r+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var g=new Error(f);throw g.missingRef=e.resolve.url(e.baseId,a),g.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(g.missingRef)),g}console.log(f),c&&(r+=" if (true) { ")}}else if(u.inline){var v=e.util.copy(e);v.level++;var w="valid"+v.level;v.schema=u.schema,v.schemaPath="",v.errSchemaPath=a;var y=e.validate(v).replace(/validate\.schema/g,u.code);r+=" "+y+" ",c&&(r+=" if ("+w+") { ")}else i=!0===u.$async,n=u.code}if(n){var p=p||[];p.push(r),r="",e.opts.passContext?r+=" "+n+".call(this, ":r+=" "+n+"( ",r+=" "+h+", (dataPath || '')",'""'!=e.errorPath&&(r+=" + "+e.errorPath);r+=" , "+(s?"data"+(s-1||""):"parentData")+" , "+(s?e.dataPathArr[s]:"parentDataProperty")+", rootData) ";var A=r;if(r=p.pop(),i){if(!e.async)throw new Error("async schema referenced by sync schema");r+=" try { ",c&&(r+="var "+d+" ="),r+=" "+e.yieldAwait+" "+A+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",c&&(r+=" if ("+d+") { ")}else r+=" if (!"+A+") { if (vErrors === null) vErrors = "+n+".errors; else vErrors = vErrors.concat("+n+".errors); errors = vErrors.length; } ",c&&(r+=" else { ")}return r}},{}],33:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.level,r=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,c="data"+(r||""),h="valid"+n,d=e.opts.v5&&o&&o.$data;d&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,r,e.dataPathArr)+"; ");var u="schema"+n;if(!d)if(o.length=e.opts.loopRequired;if(l)if(i+=" var missing"+n+"; ",A){d||(i+=" var "+u+" = validate.schema"+s+"; ");var E="i"+n,C="schema"+n+"["+E+"]",b="' + "+C+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,C,e.opts.jsonPointers)),i+=" var "+h+" = true; ",d&&(i+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),i+=" for (var "+E+" = 0; "+E+" < "+u+".length; "+E+"++) { "+h+" = "+c+"["+u+"["+E+"]] !== undefined; if (!"+h+") break; } ",d&&(i+=" } "),i+=" if (!"+h+") { ";var F=F||[];F.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+b+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var x=i;i=F.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+x+"]); ":i+=" validate.errors = ["+x+"]; return false; ":i+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { "}else{i+=" if ( ";var S=f;if(S)for(var $,E=-1,D=S.length-1;E 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;n=f.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+p+"]); ":n+=" validate.errors = ["+p+"]; return false; ":n+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},{}],36:[function(e,t,i){"use strict";t.exports=function(e,t){function i(t){return void 0!==e.schema[t.keyword]||"properties"==t.keyword&&(!1===e.schema.additionalProperties||"object"==typeof e.schema.additionalProperties||e.schema.patternProperties&&Object.keys(e.schema.patternProperties).length||e.opts.v5&&e.schema.patternGroups&&Object.keys(e.schema.patternGroups).length)}var n="",r=!0===e.schema.$async;if(e.isTop){var o=e.isTop,s=e.level=0,a=e.dataLevel=0,l="data";if(e.rootId=e.resolve.fullPath(e.root.schema.id),e.baseId=e.baseId||e.rootId,r){e.async=!0;var c="es7"==e.opts.async;e.yieldAwait=c?"await":"yield"}delete e.isTop,e.dataPathArr=[void 0],n+=" var validate = ",r?c?n+=" (async function ":("co*"==e.opts.async&&(n+="co.wrap"),n+="(function* "):n+=" (function ",n+=" (data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; var vErrors = null; ",n+=" var errors = 0; ",n+=" if (rootData === undefined) rootData = data;"}else{var s=e.level,a=e.dataLevel,l="data"+(a||"");if(e.schema.id&&(e.baseId=e.resolve.url(e.baseId,e.schema.id)),r&&!e.async)throw new Error("async schema in sync schema");n+=" var errs_"+s+" = errors;"}var h="valid"+s,d=!e.opts.allErrors,u="",f="",p=e.schema.type,m=Array.isArray(p);if(p&&e.opts.coerceTypes){var g=e.util.coerceToTypes(e.opts.coerceTypes,p);if(g){var v=e.schemaPath+".type",w=e.errSchemaPath+"/type",y=m?"checkDataTypes":"checkDataType";n+=" if ("+e.util[y](p,l,!0)+") { ";var A="dataType"+s,E="coerced"+s;n+=" var "+A+" = typeof "+l+"; ","array"==e.opts.coerceTypes&&(n+=" if ("+A+" == 'object' && Array.isArray("+l+")) "+A+" = 'array'; "),n+=" var "+E+" = undefined; ";var C="",b=g;if(b)for(var F,x=-1,S=b.length-1;x2&&(t=u.call(arguments,1)),i(t)})})}function s(e){return Promise.all(e.map(r,this))}function a(e){for(var t=new e.constructor,i=Object.keys(e),n=[],o=0;o="0"&&r<="9";)t+=r,c();if("."===r)for(t+=".";c()&&r>="0"&&r<="9";)t+=r;if("e"===r||"E"===r)for(t+=r,c(),"-"!==r&&"+"!==r||(t+=r,c());r>="0"&&r<="9";)t+=r,c();if(e=+t,isFinite(e))return e;l("Bad number")},d=function(){var e,t,i,n="";if('"'===r)for(;c();){if('"'===r)return c(),n;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;t<4&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof a[r])break;n+=a[r]}else n+=r}l("Bad string")},u=function(){for(;r&&r<=" ";)c()},f=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+r+"'")},p=function(){var e=[];if("["===r){if(c("["),u(),"]"===r)return c("]"),e;for(;r;){if(e.push(s()),u(),"]"===r)return c("]"),e;c(","),u()}}l("Bad array")},m=function(){var e,t={};if("{"===r){if(c("{"),u(),"}"===r)return c("}"),t;for(;r;){if(e=d(),u(),c(":"),Object.hasOwnProperty.call(t,e)&&l('Duplicate key "'+e+'"'),t[e]=s(),u(),"}"===r)return c("}"),t;c(","),u()}}l("Bad object")};s=function(){switch(u(),r){case"{":return m();case"[":return p();case'"':return d();case"-":return h();default:return r>="0"&&r<="9"?h():f()}},t.exports=function(e,t){var i;return o=e,n=0,r=" ",i=s(),u(),r&&l("Syntax error"),"function"==typeof t?function e(i,n){var r,o,s=i[n];if(s&&"object"==typeof s)for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(o=e(s,r),void 0!==o?s[r]=o:delete s[r]);return t.call(i,n,s)}({"":i},""):i}},{}],45:[function(e,t,i){function n(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var t=c[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function r(e,t){var i,l,c,h,d,u=o,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof a&&(f=a.call(t,e,f)),typeof f){case"string":return n(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(o+=s,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,i=0;i1&&(n=i[0]+"@",e=i[1]),e=e.replace(R,"."),n+s(e.split("."),t).join(".")}function l(e){for(var t,i,n=[],r=0,o=e.length;r=55296&&t<=56319&&r65535&&(e-=65536,t+=O(e>>>10&1023|55296),e=56320|1023&e),t+=O(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:b}function d(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function u(e,t,i){var n=0;for(e=i?M(e/$):e>>1,e+=M(e/t);e>P*x>>1;n+=b)e=M(e/P);return M(n+(P+1)*e/(e+S))}function f(e){var t,i,n,r,s,a,l,d,f,p,m=[],g=e.length,v=0,w=k,y=D;for(i=e.lastIndexOf(B),i<0&&(i=0),n=0;n=128&&o("not-basic"),m.push(e.charCodeAt(n));for(r=i>0?i+1:0;r=g&&o("invalid-input"),d=h(e.charCodeAt(r++)),(d>=b||d>M((C-v)/a))&&o("overflow"),v+=d*a,f=l<=y?F:l>=y+x?x:l-y,!(dM(C/p)&&o("overflow"),a*=p;t=m.length+1,y=u(v-s,t,0==s),M(v/t)>C-w&&o("overflow"),w+=M(v/t),v%=t,m.splice(v++,0,w)}return c(m)}function p(e){var t,i,n,r,s,a,c,h,f,p,m,g,v,w,y,A=[];for(e=l(e),g=e.length,t=k,i=0,s=D,a=0;a=t&&mM((C-i)/v)&&o("overflow"),i+=(c-t)*v,t=c,a=0;aC&&o("overflow"),m==t){for(h=i,f=b;p=f<=s?F:f>=s+x?x:f-s,!(h= 0x80 (not a basic code point)","invalid-input":"Invalid input"},P=b-F,M=Math.floor,O=String.fromCharCode;if(A={version:"1.4.1",ucs2:{decode:l,encode:c},decode:f,encode:p,toASCII:g,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return A});else if(v&&w)if(n.exports==v)w.exports=A;else for(E in A)A.hasOwnProperty(E)&&(v[E]=A[E]);else i.punycode=A}(this)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],47:[function(e,t,i){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,i,o){t=t||"&",i=i||"=";var s={};if("string"!=typeof e||0===e.length)return s;e=e.split(t);var a=1e3;o&&"number"==typeof o.maxKeys&&(a=o.maxKeys);var l=e.length;a>0&&l>a&&(l=a);for(var c=0;c=0?(h=p.substr(0,m),d=p.substr(m+1)):(h=p,d=""),u=decodeURIComponent(h),f=decodeURIComponent(d),n(s,u)?r(s[u])?s[u].push(f):s[u]=[s[u],f]:s[u]=f}return s};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],48:[function(e,t,i){"use strict";function n(e,t){if(e.map)return e.map(t);for(var i=[],n=0;n",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(f),m=["'"].concat(p),g=["%","/","?",";","#"].concat(m),v=["/","?","#"],w={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},A={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},E=e("querystring");n.prototype.parse=function(e,t,i){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),r=-1!==n&&n127?_+="x":_+=B[L];if(!_.match(/^[+a-z0-9A-Z_-]{0,63}$/)){var T=D.slice(0,b),P=D.slice(b+1),M=B.match(/^([+a-z0-9A-Z_-]{0,63})(.*)$/);M&&(T.push(M[1]),P.unshift(M[2])),P.length&&(s="/"+P.join(".")+s),this.hostname=T.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),$||(this.hostname=l.toASCII(this.hostname));var O=this.port?":"+this.port:"",j=this.hostname||"";this.host=j+O,this.href+=this.host,$&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!w[f])for(var b=0,k=m.length;b0)&&i.host.split("@");x&&(i.auth=x.shift(),i.host=i.hostname=x.shift())}return i.search=e.search,i.query=e.query,c.isNull(i.pathname)&&c.isNull(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!b.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var S=b.slice(-1)[0],$=(i.host||e.host||b.length>1)&&("."===S||".."===S)||""===S,D=0,k=b.length;k>=0;k--)S=b[k],"."===S?b.splice(k,1):".."===S?(b.splice(k,1),D++):D&&(b.splice(k,1),D--);if(!E&&!C)for(;D--;D)b.unshift("..");!E||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),$&&"/"!==b.join("/").substr(-1)&&b.push("");var B=""===b[0]||b[0]&&"/"===b[0].charAt(0);if(F){i.hostname=i.host=B?"":b.length?b.shift():"";var x=!!(i.host&&i.host.indexOf("@")>0)&&i.host.split("@");x&&(i.auth=x.shift(),i.host=i.hostname=x.shift())}return E=E||i.host&&b.length,E&&!B&&b.unshift(""),b.length?i.pathname=b.join("/"):(i.pathname=null,i.path=null),c.isNull(i.pathname)&&c.isNull(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=d.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":51,punycode:46,querystring:49}],51:[function(e,t,i){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,t,i){"use strict";function n(e){return w.test(e)}function r(t){function i(e,t){var i;if("string"==typeof e){if(!(i=F(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var n=k(e);i=n.validate||B(n)}var r=i(t);return!0===i.$async?"*"==T._opts.async?m(r):r:(T.errors=i.errors,r)}function g(e,t){var i=k(e,void 0,t);return i.validate||B(i)}function A(e,t,i,n){if(Array.isArray(e))for(var r=0;r0?this.autoScrollStep=(n+24-e)/3:e>o-24&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.type="button",i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.type="button",n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.type="button",r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.type="button",s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value&&e.target!=t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),r=0;r=0},n.prototype.canRedo=function(){return this.index=0;){var t=r[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&"\t"!==t)return t;e--}return""}())?function(){for(var e=["null","true","false"],i="",n=t(),s=/[a-zA-Z_$\d]/;s.test(n);)i+=n,o++,n=t();-1===e.indexOf(i)?r.push('"'+i+'"'):r.push(i)}():(r.push(a),o++)}return r.join("")},t.escapeUnicodeChars=function(e){return e.replace(/[\u007F-\uFFFF]/g,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})},t.validate=function(e){void 0!==n?n.parse(e):JSON.parse(e)},t.extend=function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},t.clear=function(e){for(var t in e)e.hasOwnProperty(t)&&delete e[t];return e},t.type=function(e){return null===e?"null":void 0===e?"undefined":e instanceof Number||"number"==typeof e?"number":e instanceof String||"string"==typeof e?"string":e instanceof Boolean||"boolean"==typeof e?"boolean":e instanceof RegExp||"regexp"==typeof e?"regexp":t.isArray(e)?"array":"object"};var r=/^https?:\/\/\S+$/;t.isUrl=function(e){return("string"==typeof e||e instanceof String)&&r.test(e)},t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left+window.pageXOffset||document.scrollLeft||0},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top+window.pageYOffset||document.scrollTop||0},t.addClassName=function(e,t){var i=e.className.split(" ");-1==i.indexOf(t)&&(i.push(t),e.className=i.join(" "))},t.removeClassName=function(e,t){var i=e.className.split(" "),n=i.indexOf(t);-1!=n&&(i.splice(n,1),e.className=i.join(" "))},t.stripFormatting=function(e){for(var i=e.childNodes,n=0,r=i.length;n=0;a--){var l=s[a];!0===l.specified&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){if(window.getSelection()){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,i){if(void 0==i&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var n=e.childNodes,r="",o=0,s=n.length;o5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&nn&&r>0;)o--,r--;return{start:n,end:o}}},function(e,t,i){var n=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,r,o,s){var a=o.length-1;switch(r){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=o[a-1];case 13:this.$={};break;case 14:this.$=o[a-1];break;case 15:this.$=[o[a-2],o[a]];break;case 16:this.$={},this.$[o[a][0]]=o[a][1];break;case 17:this.$=o[a-2],o[a-2][o[a][0]]=o[a][1];break;case 18:this.$=[];break;case 19:this.$=o[a-1];break;case 20:this.$=[o[a]];break;case 21:this.$=o[a-2],o[a-2].push(o[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=i.lexer.lex()||1,"number"!=typeof e&&(e=i.symbols_[e]||e),e}var i=this,n=[0],r=[null],o=[],s=this.table,a="",l=0,c=0,h=0,d=2;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;o.push(u),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var f,p,m,g,v,w,y,A,E,C={};;){if(m=n[n.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null==f&&(f=t()),g=s[m]&&s[m][f]),void 0===g||!g.length||!g[0]){if(!h){E=[];for(w in s[m])this.terminals_[w]&&w>2&&E.push("'"+this.terminals_[w]+"'");var b="";b=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[f]+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(b,{text:this.lexer.match,token:this.terminals_[f]||f,line:this.lexer.yylineno,loc:u,expected:E})}if(3==h){if(1==f)throw new Error(b||"Parsing halted.");c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,f=t()}for(;;){if(d.toString()in s[m])break;if(0==m)throw new Error(b||"Parsing halted.");!function(e){n.length=n.length-2*e,r.length=r.length-e,o.length=o.length-e}(1),m=n[n.length-1]}p=f,f=d,m=n[n.length-1],g=s[m]&&s[m][d],h=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+f);switch(g[0]){case 1:n.push(f),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),n.push(g[1]),f=null,p?(f=p,p=null):(c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,h>0&&h--);break;case 2:if(y=this.productions_[g[1]][1],C.$=r[r.length-y],C._$={first_line:o[o.length-(y||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(y||1)].first_column,last_column:o[o.length-1].last_column},void 0!==(v=this.performAction.call(C,a,c,l,this.yy,g[1],r,o)))return v;y&&(n=n.slice(0,-1*y*2),r=r.slice(0,-1*y),o=o.slice(0,-1*y)),n.push(this.productions_[g[1]][0]),r.push(C.$),o.push(C._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t){"use strict";function i(e,t){var i=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var n=document.createElement("table");this.dom.table=n,n.className="jsoneditor-search",t.appendChild(n);var r=document.createElement("tbody");this.dom.tbody=r,n.appendChild(r);var o=document.createElement("tr");r.appendChild(o);var s=document.createElement("td");o.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),o.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var h=document.createElement("tbody");c.appendChild(h),o=document.createElement("tr"),h.appendChild(o);var d=document.createElement("button");d.type="button",d.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(d),o.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){i._onDelayedSearch(e)},u.onchange=function(e){i._onSearch()},u.onkeydown=function(e){i._onKeyDown(e)},u.onkeyup=function(e){i._onKeyUp(e)},d.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),o.appendChild(s);var f=document.createElement("button");f.type="button",f.title="Next result (Enter)",f.className="jsoneditor-next",f.onclick=function(){i.next()},s=document.createElement("td"),s.appendChild(f),o.appendChild(s);var p=document.createElement("button");p.type="button",p.title="Previous result (Shift+Enter)",p.className="jsoneditor-previous",p.onclick=function(){i.previous()},s=document.createElement("td"),s.appendChild(p),o.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;i<0&&(i=t),this._setActiveResult(i,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node;"field"==this.activeResult.elem?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var n=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?n.searchFieldActive=!0:n.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],n.updateDom(),n.scrollTo(function(){t&&n.focus(r)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,i){"use strict";function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.type="button",l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");d.type="button",s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(e){e.preventDefault(),n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");l.type="button",r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(5);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){t.expandedItem==e&&(o.style.height=24*o.childNodes.length+"px",o.style.padding="5px 10px")},0),r.addClassName(o.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,o,s=e.target,a=e.which,l=!1;27==a?(this.selection&&r.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),0==(i=t.indexOf(s))&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),(i=t.indexOf(s))==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),(n=t[i-1])&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&o.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&(o=t[i+2]),o||(o=t[0]),o&&(o.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){"use strict";function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var r=i(10),o=i(8),s=i(11),a=i(5);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getPath=function(){for(var e=this,t=[];e;){var i=e.parent?"array"!=e.parent.type?e.field:e.index:void 0;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=a.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.type="button",r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;t0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");i.type="button",e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");r.type="button",e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),s=r._nextSibling(),l=i.editor,c=a.getAbsoluteTop(o.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,s,c,h,d,u,f,p,m,g,v,w,y=e[0].editor,A=t.pageY-y.drag.offsetY,E=t.pageX,C=!1,b=e[0];if(i=b.dom.tr,f=a.getAbsoluteTop(i),g=i.offsetHeight,Ap+g&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),C=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),o=s;do{u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?a.getAbsoluteTop(o.nextSibling):0,w=o?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling}while(o&&A>f+w);if(u&&u.parent){var x=E-y.drag.mouseX,S=Math.round(x/24/2),$=y.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;D<$&&r;){d=n.getNodeFromTarget(r);if(e.some(function(e){return e===d||d._isChildOf(e)}));else{if(!(d instanceof l))break;var k=d.parent.childs;if(k.length==e.length&&k[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),C=!0)}}}C&&(y.drag.mouseX=E,y.drag.level=b.getLevel()),y.startAutoScroll(A),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,s=o.childs.indexOf(i),l=o.childs[s+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(a.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(a.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n),this._updateSchema()}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&!0===e.updateIndexes&&this._updateDomIndexes(),e&&!0===e.recurse&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateSchema=function(){this.editor&&this.editor.options&&(this.schema=n._findSchema(this.editor.options.schema,this.getPath()),this.schema?this.enum=n._findEnum(this.schema):delete this.enum)},n._findEnum=function(e){if(e.enum)return e.enum;var t=e.oneOf||e.anyOf||e.allOf;if(t){var i=t.filter(function(e){return e.enum});if(i.length>0)return i[0].enum}return null},n._findSchema=function(e,t){for(var i=e,n=0;n0?this.editor.multiselection.nodes:[this],A=y[0],E=y[y.length-1];if(13==u){if(f==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var C=this._hasChilds();if(C){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(y),v=!0);else if(69==u)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(y),v=!0);else if(45==u&&w)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(g){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&w){if(E.expanded){var $=E.getAppend();r=$?$.nextSibling:void 0}else{var D=E.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o),i&&i instanceof l&&1!=E.parent.childs.length&&_&&_.parent&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):g&&m&&w&&(t=A._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(g&&m&&w){D=A.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B))&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()}))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(g&&m&&w){i=E.expanded?E.append?E.append._nextNode():void 0:E._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,o=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*r(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:o,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,r=t.getIndex();i.childs[r+e.length]?i.childs[r+e.length].focus():i.childs[r-1]?i.childs[r-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.previousSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.nextSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.showContextMenu=function(e,t){var i=this,r=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:r.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:r.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:r.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:r.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;i==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}new o(s,{close:t}).show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t||"false"!=t&&(isNaN(i)||isNaN(n)?e:i)},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return!0===this.editor.options.escapeUnicode&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"';return a.parse(t).replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;im)return 1}for(var g=0,v=Math.max(u.length,f.length);gr)return 1}return 0}},function(e,t,i){"use strict";function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,"tree"===this.editor.options.mode){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.type="button",n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}]}];new o(s,{close:i}).show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom;if(i==n.menu&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var o=this.editor.highlighter;o.highlight(this.parent),o.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),o.unlock(),o.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(5),o=i(8);e.exports=n},function(e,t,i){"use strict";function n(e,t,i,n){for(var o={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a0){if(i.length>3){i=i.slice(0,3);var n=this.validateSchema.errors.length-3;i.push("("+n+" more errors...)")}var r=document.createElement("div");r.innerHTML=''+i.map(function(e){return''+("string"==typeof e?'":"")+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=r,this.frame.appendChild(r);var s=r.clientHeight;this.content.style.marginBottom=-s+"px",this.content.style.paddingBottom=s+"px"}if(this.aceEditor){this.aceEditor.resize(!1)}},e.exports=[{mode:"text",mixin:s,data:"text",load:s.format},{mode:"code",mixin:s,data:"text",load:s.format}]},function(e,t,i){var n;if(window.ace)n=window.ace;else try{n=i(15),i(18),i(20)}catch(e){}e.exports=n},function(e,t,i){!function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,i,n){if("string"!=typeof e)return void(t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace()));2==arguments.length&&(n=i),t.modules[e]||(t.payloads[e]=n,t.modules[e]=null)};t.modules={},t.payloads={};var i=function(e,t,i){if("string"==typeof t){var r=o(e,t);if(void 0!=r)return i&&i(),r}else if("[object Array]"===Object.prototype.toString.call(t)){for(var s=[],a=0,l=t.length;a1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,m=d.bind(f.toString),g=d.bind(f.hasOwnProperty);if((h=g(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];if(i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),i.length,t+1==i.length)return!0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:e<0&&(e=Math.max(i+e,0)),e+ta)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;d>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,o=[],s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;o>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do{o in this&&(r=e.call(void 0,r,i[o],o,t))}while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=y&&"[object String]"==m(this)?this.split(""):_(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);n>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(g(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var A;A=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=A();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),C="undefined"==typeof document||r(document.createElement("div"));if(!E||!C)var b=Object.defineProperty}if(!Object.defineProperty||b){Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Property description must be an object: "+i);if(b)try{return b.call(Object,e,t,i)}catch(e){}if(g(i,"value"))if(h&&(l(e,t)||c(e,t))){var n=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=n}else e[t]=i.value;else{if(!h)throw new TypeError("getters & setters can not be defined on this javascript engine");g(i,"get")&&s(e,t,i.get),g(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var F=!0,x=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],S=x.length;for(var $ in{toString:null})F=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var i in e)g(e,i)&&t.push(i);if(F)for(var n=0,r=S;n=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;h<50&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&i<=93&&(i=-1),!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return!!(n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS)&&e(t,n,i)}function r(){a=Object.create(null)}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){if(e.removeEventListener)return e.removeEventListener(t,i,!1);e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=e.changedTouches[0];e.wheelX=-(t.clientX-n)/1,e.wheelY=-(t.clientY-r)/1,n=t.clientX,r=t.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){function o(e){if(0!==t.getButton(e)?d=0:e.detail>1?++d>4&&(d=1):d=1,s.isIE){var o=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;h&&!o||(d=1),h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),1==d&&(l=e.clientX,c=e.clientY)}if(e._clicks=d,n[r]("mousedown",e),d>4)d=0;else if(d>1)return n[r](u[d],e)}function a(e){d=2,h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),n[r]("mousedown",e),n[r](u[d],e)}var l,c,h,d=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",o),s.isOldIE&&t.addListener(e,"dblclick",a)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){a[e.keyCode]=(a[e.keyCode]||0)+1;var t=n(i,e,e.keyCode);return c=e.defaultPrevented,t}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){a[e.keyCode]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,i){i=i||window;t.addListener(i,"message",function n(r){"zero-timeout-message-1"==r.data&&(t.stopPropagation(r),t.removeListener(i,"message",n),e())}),i.postMessage("zero-timeout-message-1","*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};t.stringTrimLeft=function(e){return e.replace(/^\s\s*/,"")},t.stringTrimRight=function(e){return e.replace(/\s\s*$/,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;i=53&&B()}},I=s.delayedCall(O,50);n.addListener(d,"compositionstart",M),r.isGecko?n.addListener(d,"text",function(){I.schedule()}):(n.addListener(d,"keyup",function(){I.schedule()}),n.addListener(d,"keydown",function(){I.schedule()})),n.addListener(d,"compositionend",j),this.getElement=function(){return d},this.setReadOnly=function(e){d.readOnly=e},this.onContextMenu=function(e){D=!0,i(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,i){if(i||!r.isOldIE){g||(g=d.style.cssText),d.style.cssText=(i?"z-index:100000;":"")+"height:"+d.style.height+";"+(r.isIE?"opacity:0.1;":"");var s=t.container.getBoundingClientRect(),a=o.computedStyle(t.container),l=s.top+(parseInt(a.borderTopWidth)||0),c=s.left+(parseInt(s.borderLeftWidth)||0),u=s.bottom-l-d.clientHeight-2,f=function(e){d.style.left=e.clientX-c-2+"px",d.style.top=Math.min(e.clientY-l-2,u)+"px"};f(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(N),r.isWin&&!r.isOldIE&&n.capture(t.container,f,h))}},this.onContextMenuClose=h;var N,W=function(e){t.textInput.onContextMenu(e),h()};n.addListener(d,"mouseup",W),n.addListener(d,"mousedown",function(e){e.preventDefault(),h()}),n.addListener(t.renderer.scroller,"contextmenu",W),n.addListener(d,"contextmenu",W)};t.TextInput=c}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}function o(e,t){if(e.start.row==e.end.row)var i=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)var i=2*t.row-e.start.row-e.end.row;else var i=t.column-4;return i<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}e("../lib/dom"),e("../lib/event"),e("../lib/useragent");(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,(s||1==r)&&n.selection.moveToPosition(i),n.$blockScrolling--,void(2==r&&n.textInput.onContextMenu(e.domEvent))}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&a<=0)t=this.$clickSelection.end,r.end.row==n.row&&r.end.column==n.column||(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,r.start.row==n.row&&r.start.column==n.column||(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor;return n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||i<200?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor +;if(n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||i<200)return this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();if(t==s.session.getLength()){var o=s.renderer.pixelToScreenCoordinates(0,d.y).row,a=d.$pos;if(o>s.session.documentToScreenRow(a.row,a.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s._signal("showGutterTooltip",c),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var h=d.domEvent.target,f=h.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+"px",p.top=f.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s._signal("hideGutterTooltip",c),s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){if("foldWidgets"!=l.getRegion(t)){var i=t.getDocumentPosition().row,n=s.session.selection;if(t.getShiftKey())n.selectTo(i,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(i)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;if(o.hasCssClass(s,"ace_fold-widget"))return i();u&&e.$tooltipFollowsMouse&&n(r),d=r,h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!$||n||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,$=i,D={x:y,y:A};else{r(D.x,D.y,y,A)>h?$=null:i-$>=c&&(g.renderer.scrollCursorIntoView(),$=null)}}function i(e,t){var i=Date.now(),n=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:y-o.left,right:o.right-y},y:{top:A-o.top,bottom:o.bottom-A}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};a/r<=2&&(h.column+=s.x.left=l&&g.renderer.scrollCursorIntoView(h):S=i:S=null}function n(){var e=b;b=g.renderer.screenToTextCoordinates(y,A),t(b,e),i(b,e)}function d(){C=g.selection.toOrientedRange(),w=g.session.addMarker(C,"ace_selection",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),B=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),g.session.removeMarker(w),w=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(C),g.$blockScrolling-=1,g.isFocused()&&!x&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),C=null,b=null,B=0,S=null,$=null,s.removeListener(document,"mousemove",f)}function f(){null==_&&(_=setTimeout(function(){null!=_&&w&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function m(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var g=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),g.addEventListener("mousedown",this.onMouseDown.bind(e));var w,y,A,E,C,b,F,x,S,$,D,k=g.container,B=0;this.onDragStart=function(e){if(this.cancelDrag||!k.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}C=g.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=g.getReadOnly()?"copy":"copyMove",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),i.clearData(),i.setData("Text",g.session.getTextRange()),x=!0,this.setState("drag")},this.onDragEnd=function(e){if(k.draggable=!1,x=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;F||"move"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!g.getReadOnly()&&p(e.dataTransfer))return y=e.clientX,A=e.clientY,w||d(),B++,e.dataTransfer.dropEffect=F=m(e),s.preventDefault(e)},this.onDragOver=function(e){if(!g.getReadOnly()&&p(e.dataTransfer))return y=e.clientX,A=e.clientY,w||(d(),B++),null!==_&&(_=null),e.dataTransfer.dropEffect=F=m(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--B<=0&&w)return u(),F=null,s.preventDefault(e)},this.onDrop=function(e){if(b){var t=e.dataTransfer;if(x)switch(F){case"move":C=C.contains(b.row,b.column)?{start:b,end:b}:g.moveText(C,b);break;case"copy":C=g.moveText(C,b,!0)}else{var i=t.getData("Text");C={start:b,end:g.session.insert(b,i)},g.focus(),F=null}return u(),s.preventDefault(e)}},s.addListener(k,"dragstart",this.onDragStart.bind(e)),s.addListener(k,"dragend",this.onDragEnd.bind(e)),s.addListener(k,"dragenter",this.onDragEnter.bind(e)),s.addListener(k,"dragover",this.onDragOver.bind(e)),s.addListener(k,"dragleave",this.onDragLeave.bind(e)),s.addListener(k,"drop",this.onDrop.bind(e));var _=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=a.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton();if(1===(e.domEvent.detail||1)&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in r&&(r.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;t.container.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){!i&&r.readyState&&"loaded"!=r.readyState&&"complete"!=r.readyState||(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;s1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(e){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var s=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return s();a.loadScript(t.moduleUrl(i,o),s)}},r(!0),t.init=r}),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/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",i),r.isIE&&e.renderer.scrollBarV&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i)),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;!r.isEmpty()&&r.insideStart(n.row,n.column)?o.setCursorStyle("default"):o.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session;n.foldWidgets&&n.foldWidgets[i]&&e.session.onFoldWidgetClick(i,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session,r=n.getParentFoldRangeData(i,!0),o=r.range||r.firstRange;if(o){i=o.start.row;var s=n.getFoldAt(i,n.getLine(i).length,1);s?n.removeFold(s):(n.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n))&&o.command&&(s="null"==o.command||a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s)););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},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(e,t){if(void 0===t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,!0===t?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(e,t,1);return r?void this.moveCursorTo(r.end.row,r.end.column):(this.session.nonTokenRe.exec(n)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,n=i.substring(t)),t>=i.length?(this.moveCursorTo(e,i.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,i)},this.$shortWordEndIndex=function(e){var t,i=0,n=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(e))i=this.session.tokenRe.lastIndex;else{for(;(t=e[i])&&n.test(t);)i++;if(i<1)for(r.lastIndex=0;(t=e[i])&&!r.test(t);)if(r.lastIndex=0,i++,n.test(t)){if(i>2){i--;break}for(;(t=e[i])&&n.test(t);)i++;if(i>2)break}}return r.lastIndex=0,i},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do{e++,n=this.doc.getLine(e)}while(e0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var i=this.getCursor();return s.fromPoints(t,i)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;rh){var v=e.substring(h,g-m.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,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 e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t])return n=h[t];n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var m=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var g="";f.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!g)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var y=w+r.getTabString();return{text:"\n"+y+"\n"+w+g,selection:[1,y.length,1,y.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);if("}"==r.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);if(")"==n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2))return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);if("]"==n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2))return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),m=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var g,v=p&&/string|escape/.test(p.type),w=!m||/string|escape/.test(m.type);if(f==o)(g=v!==w)&&/string\.end/.test(m.type)&&(g=!1);else{if(v&&!w)return null;if(v&&w)return null;var y=n.$mode.tokenRe;y.lastIndex=0;var A=y.test(h);y.lastIndex=0;var E=y.test(h);if(A||E)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;g=!0}return{text:g?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);if(n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/unicode",["require","exports","module"],function(e,t,i){"use strict";t.packages={},function(e){for(var i in e)t.packages[i]=e[i].replace(/\w{4}/g,"\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", +Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r};(function(){this.$defaultBehaviour=new o,this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;t<=n;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},m=f+" ",g=function(e,t){s&&!/\S/.test(e)||(w(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,y=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),A=new RegExp("(?:"+a.escapeRegExp(y)+")\\s*$"),g=function(e,t){v(e,t)||s&&!/\S/.test(e)||(o.insertInLine({row:t,column:e.length},y),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(A))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;re.length&&(E=e.length)}),c==1/0&&(c=E,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:g)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;u=new c(m,g,m,g+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;tthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):e<0?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),t<0&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[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(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:e<0?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);return t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;r20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,o<=n&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||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(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;l<=a;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;c0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);i<0&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return n<0?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.apply(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;o=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&lh.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&l=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){a=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(a0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);if(n.length)return n},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(t=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,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(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,i)){var n=t.target||t.srcElement;n&&/ace_fold-widget/.test(n.className)&&(n.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return t.children||t.all?this.removeFold(o):this.expandFold(o),o;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(o.range))return this.removeFold(o),o;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(0==(o-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do{a=s.stepBackward()}while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;l=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;i<=n;){var r=i+n>>1,o=e[r];if(t>o)i=r+1;else{if(!(t=t);o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do{o--}while(o>=0&&i.charAt(o).match(r));o++} +for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;ls){if((l=o.end.row+1)>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;n<=t;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;s0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1&&(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var m=h.range.compareInside(n.row,n.column);0==m?(h=h.split(n.row,n.column))&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column)):-1==m&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,n){var r,o,s=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,h=e;for(n=Math.min(n,s.length-1);h<=n;)o=this.getFoldLine(h,o),o?(r=[],o.walk(function(e,n,o,a){var l;if(null!=e){l=this.$getDisplayTokens(e,r.length),l[0]=t;for(var c=1;cn-v;){var w=d+n-v;if(e[w-1]>=a&&e[w]>=a)s(w);else if(e[w]!=t&&e[w]!=i){for(var y=Math.max(w-(n-(n>>2)),d-1);w>y&&e[w]y&&e[w]y&&9==e[w];)w--}else for(;w>y&&e[w]y?s(++w):(w=d+n,2==e[w]&&w--,s(w-v))}else{for(w;w!=d-1&&e[w]!=t;w--);if(w>d){s(w);continue}for(w=d+n;w39&&s<48||s>57&&s<64?r.push(9):s>=4352&&e(s)?r.push(1,2):r.push(1)}return r},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?n+=2:n+=1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;s<=e&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,++r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(s+a<=e||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){var v=Math.floor(e-s);n=g[v],v>0&&g.length&&(m=g.indent,o=g[v-1]||g[g.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if(void 0===t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;(o=this.getFoldAt(e,t,1))&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;a=f){if((s=u.end.row+1)>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)n++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:n,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;no&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";function n(e,t){function i(e){return/\w/.test(e)||t.regExp?"\\b":""}return i(e[0])+e+i(e[e.length-1])}var r=e("./lib/lang"),o=e("./lib/oop"),s=e("./range").Range,a=function(){this.$options={}};(function(){this.set=function(e){return o.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var o=e.offset+(r||0);if(n=new s(i,o,i,o+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,n=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),o=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=n.length-c;e:for(var d=a.offset||0;d<=h;d++){for(var u=0;um||(o.push(l=new s(d,m,d+c-1,g)),c>2&&(d=d+c-2))}}else for(var v=0;vE&&o[u].end.row==i.end.row;)u--;for(o=o.slice(v,u+1),v=0,u=o.length;v=0;a--)if(n(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=r.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row;if(!i(e.getLine(n).substr(o.column),n,o.column)){for(n+=1;n<=a;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;n<=a;n++)if(i(e.getLine(n),n))return}}}}}).call(a.prototype),t.Search=a}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){if("object"==typeof e&&e&&(void 0==i&&(i=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this)},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(n<0)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),!1!==r.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(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),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","F4"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Shift-F4"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){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 i=this.session.getSelection();i.off("changeCursor",this.$onCursorChange),i.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.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=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value)do{a=r,(r=n.stepForward())&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0);else{do{r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||n<=o&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s})}}},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(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if("\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new f(r.row,c+o.selection[0],r.row,c+o.selection[1])):this.selection.setSelectionRange(new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3]))),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){return{value:r[0],start:r.index,end:r.index+r[0].length}}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),s!==o.end&&if+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);d<=h;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):!1===t&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.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.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0||!(o.topwindow.innerHeight)&&null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(y.prototype),v.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g="ace_gutter-cell ";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[m];null==w&&(w=a[m]=t.getFoldWidget(m))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var g="ace_fold-widget ace_"+w;"start"==w&&m==s&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);h<=c;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=h+1f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),!((s=(t.end.row-t.start.row-1)*n.lineHeight)<=0)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,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(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;i"+o.stringRepeat(this.TAB_CHAR,i)+""):t.push(o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings["\t"]=""+l+""}},this.updateLines=function(e,t,i){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;ac&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c&&l),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a&&s),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s&&o),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\t"==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},a=n.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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]/g,s);if(this.$textToken[i.type])e.push(a);else{var l="ace_"+i.type.replace(/\./g," ace_"),c="";"fold"==i.type&&(c=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return n<=0||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):"\t"==t[0]?(e.push(o.stringRepeat(this.$tabStrings["\t"],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;oi?r.push({type:e[n].type,value:s.substring(0,i-o)}):r.push(e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e);return{left:this.$padding+i.column*this.config.characterWidth,top:(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var i=0,r=t.length;ie.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var t={height:e.height,width:e.width/l}}else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=o.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","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"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter;r.importCssString('.ace_editor {\tposition: relative;\toverflow: hidden;\tfont: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\tdirection: ltr;\ttext-align: left;\t}\t.ace_scroller {\tposition: absolute;\toverflow: hidden;\ttop: 0;\tbottom: 0;\tbackground-color: inherit;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\tcursor: text;\t}\t.ace_content {\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmin-width: 100%;\t}\t.ace_dragging .ace_scroller:before{\tposition: absolute;\ttop: 0;\tleft: 0;\tright: 0;\tbottom: 0;\tcontent: \'\';\tbackground: rgba(250, 250, 250, 0.01);\tz-index: 1000;\t}\t.ace_dragging.ace_dark .ace_scroller:before{\tbackground: rgba(0, 0, 0, 0.01);\t}\t.ace_selecting, .ace_selecting * {\tcursor: text !important;\t}\t.ace_gutter {\tposition: absolute;\toverflow : hidden;\twidth: auto;\ttop: 0;\tbottom: 0;\tleft: 0;\tcursor: default;\tz-index: 4;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\t}\t.ace_gutter-active-line {\tposition: absolute;\tleft: 0;\tright: 0;\t}\t.ace_scroller.ace_scroll-left {\tbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\t}\t.ace_gutter-cell {\tpadding-left: 19px;\tpadding-right: 6px;\tbackground-repeat: no-repeat;\t}\t.ace_gutter-cell.ace_error {\tbackground-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==");\tbackground-repeat: no-repeat;\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_warning {\tbackground-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==");\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\tbackground-position: 2px center;\t}\t.ace_dark .ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\t}\t.ace_scrollbar {\tposition: absolute;\tright: 0;\tbottom: 0;\tz-index: 6;\t}\t.ace_scrollbar-inner {\tposition: absolute;\tcursor: text;\tleft: 0;\ttop: 0;\t}\t.ace_scrollbar-v{\toverflow-x: hidden;\toverflow-y: scroll;\ttop: 0;\t}\t.ace_scrollbar-h {\toverflow-x: scroll;\toverflow-y: hidden;\tleft: 0;\t}\t.ace_print-margin {\tposition: absolute;\theight: 100%;\t}\t.ace_text-input {\tposition: absolute;\tz-index: 0;\twidth: 0.5em;\theight: 1em;\topacity: 0;\tbackground: transparent;\t-moz-appearance: none;\tappearance: none;\tborder: none;\tresize: none;\toutline: none;\toverflow: hidden;\tfont: inherit;\tpadding: 0 1px;\tmargin: 0 -1px;\ttext-indent: -1em;\t-ms-user-select: text;\t-moz-user-select: text;\t-webkit-user-select: text;\tuser-select: text;\twhite-space: pre!important;\t}\t.ace_text-input.ace_composition {\tbackground: inherit;\tcolor: inherit;\tz-index: 1000;\topacity: 1;\ttext-indent: 0;\t}\t.ace_layer {\tz-index: 1;\tposition: absolute;\toverflow: hidden;\tword-wrap: normal;\twhite-space: pre;\theight: 100%;\twidth: 100%;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tpointer-events: none;\t}\t.ace_gutter-layer {\tposition: relative;\twidth: auto;\ttext-align: right;\tpointer-events: auto;\t}\t.ace_text-layer {\tfont: inherit !important;\t}\t.ace_cjk {\tdisplay: inline-block;\ttext-align: center;\t}\t.ace_cursor-layer {\tz-index: 4;\t}\t.ace_cursor {\tz-index: 4;\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tborder-left: 2px solid;\ttransform: translatez(0);\t}\t.ace_slim-cursors .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_overwrite-cursors .ace_cursor {\tborder-left-width: 0;\tborder-bottom: 1px solid;\t}\t.ace_hidden-cursors .ace_cursor {\topacity: 0.2;\t}\t.ace_smooth-blinking .ace_cursor {\t-webkit-transition: opacity 0.18s;\ttransition: opacity 0.18s;\t}\t.ace_editor.ace_multiselect .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\tposition: absolute;\tz-index: 3;\t}\t.ace_marker-layer .ace_selection {\tposition: absolute;\tz-index: 5;\t}\t.ace_marker-layer .ace_bracket {\tposition: absolute;\tz-index: 6;\t}\t.ace_marker-layer .ace_active-line {\tposition: absolute;\tz-index: 2;\t}\t.ace_marker-layer .ace_selected-word {\tposition: absolute;\tz-index: 4;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\t}\t.ace_line .ace_fold {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tdisplay: inline-block;\theight: 11px;\tmargin-top: -2px;\tvertical-align: middle;\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\tbackground-repeat: no-repeat, repeat-x;\tbackground-position: center center, top left;\tcolor: transparent;\tborder: 1px solid black;\tborder-radius: 2px;\tcursor: pointer;\tpointer-events: auto;\t}\t.ace_dark .ace_fold {\t}\t.ace_fold:hover{\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\t}\t.ace_tooltip {\tbackground-color: #FFF;\tbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\tbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\tborder: 1px solid gray;\tborder-radius: 1px;\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\tcolor: black;\tmax-width: 100%;\tpadding: 3px 4px;\tposition: fixed;\tz-index: 999999;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tcursor: default;\twhite-space: pre;\tword-wrap: break-word;\tline-height: normal;\tfont-style: normal;\tfont-weight: normal;\tletter-spacing: normal;\tpointer-events: none;\t}\t.ace_folding-enabled > .ace_gutter-cell {\tpadding-right: 13px;\t}\t.ace_fold-widget {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmargin: 0 -12px 0 1px;\tdisplay: none;\twidth: 11px;\tvertical-align: top;\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: center;\tborder-radius: 3px;\tborder: 1px solid transparent;\tcursor: pointer;\t}\t.ace_folding-enabled .ace_fold-widget {\tdisplay: inline-block; \t}\t.ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\t}\t.ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\t}\t.ace_fold-widget:hover {\tborder: 1px solid rgba(0, 0, 0, 0.3);\tbackground-color: rgba(255, 255, 255, 0.2);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\t}\t.ace_fold-widget:active {\tborder: 1px solid rgba(0, 0, 0, 0.4);\tbackground-color: rgba(0, 0, 0, 0.05);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\t}\t.ace_dark .ace_fold-widget {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\t}\t.ace_dark .ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget:hover {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\tbackground-color: rgba(255, 255, 255, 0.1);\t}\t.ace_dark .ace_fold-widget:active {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\t}\t.ace_fold-widget.ace_invalid {\tbackground-color: #FFB4B4;\tborder-color: #DE5555;\t}\t.ace_fade-fold-widgets .ace_fold-widget {\t-webkit-transition: opacity 0.4s ease 0.05s;\ttransition: opacity 0.4s ease 0.05s;\topacity: 0;\t}\t.ace_fade-fold-widgets:hover .ace_fold-widget {\t-webkit-transition: opacity 0.05s ease 0.05s;\ttransition: opacity 0.05s ease 0.05s;\topacity:1;\t}\t.ace_underline {\ttext-decoration: underline;\t}\t.ace_bold {\tfont-weight: bold;\t}\t.ace_nobold .ace_bold {\tfont-weight: normal;\t}\t.ace_italic {\tfont-style: italic;\t}\t.ace_error-marker {\tbackground-color: rgba(255, 0, 0,0.2);\tposition: absolute;\tz-index: 9;\t}\t.ace_highlight-marker {\tbackground-color: rgba(255, 255, 0,0.2);\tposition: absolute;\tz-index: 8;\t}\t.ace_br1 {border-top-left-radius : 3px;}\t.ace_br2 {border-top-right-radius : 3px;}\t.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\t.ace_br4 {border-bottom-right-radius: 3px;}\t.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\t.ace_br8 {border-bottom-left-radius : 3px;}\t.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t',"ace_editor.css");var g=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},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.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("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,n.implement(this,m),this.updateCharacterSize=function(){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()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},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(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()), +this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&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.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(t<0||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+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=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&i>this.$maxPixelHeight&&(i=this.$maxPixelHeight);var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),y=w+v,A=this.lineHeight;w=e.screenToDocumentRow(w,0);var E=e.getFoldLine(w);E&&(w=E.start.row),m=e.documentToScreenRow(w,0),g=e.getRowLength(w)*A,y=Math.min(e.screenToDocumentRow(y,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(y)*A+g,c=this.scrollTop-m*A;var C=0;return this.layerConfig.width!=o&&(C=this.CHANGE_H_SCROLL),(a||p)&&(C=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:m,lastRow:y,lineHeight:A,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:A?Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/A)):0,height:this.$size.scrollerHeight},C},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;if(!(e>i.lastRow+1||to?(t&&l+s>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(r=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(!i||!i.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),o.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(17),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(e){if(!(e instanceof window.DOMException))throw e;var d=this.$workerBlob(o),f=window.URL||window.webkitURL,p=f.createObjectURL(d);this.$worker=new Worker(p),f.revokeObjectURL(p)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,n=new i;return n.append(t),n.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;i1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;d1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(n,r).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.column0;)m--;if(m>0)for(var g=0;n[g].isEmpty();)g++;for(var v=m;v>=g;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.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){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;no&&(o=i.column),rc?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,m=this.session.getLength();do{p=this.session.getLine(d)}while(/[=:]/.test(p)&&++d0);h<0&&(h=0),d>=m&&(d=m-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,f),this.session.insert({row:h,column:0},g.join("\n")+"\n"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=e.getLine(t),o=r.search(/\S/);if(-1!=o){for(var s=i||r.length,a=e.getLength(),l=t,c=t;++tl){var d=e.getLine(c).length;return new n(l,s,c,d)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,n.fromPoints(a,s)}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {\tbackground: #f0f0f0;\tcolor: #333;\t}\t.ace-tm .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8;\t}\t.ace-tm .ace_fold {\tbackground-color: #6B72E6;\t}\t.ace-tm {\tbackground-color: #FFFFFF;\tcolor: black;\t}\t.ace-tm .ace_cursor {\tcolor: black;\t}\t.ace-tm .ace_invisible {\tcolor: rgb(191, 191, 191);\t}\t.ace-tm .ace_storage,\t.ace-tm .ace_keyword {\tcolor: blue;\t}\t.ace-tm .ace_constant {\tcolor: rgb(197, 6, 11);\t}\t.ace-tm .ace_constant.ace_buildin {\tcolor: rgb(88, 72, 246);\t}\t.ace-tm .ace_constant.ace_language {\tcolor: rgb(88, 92, 246);\t}\t.ace-tm .ace_constant.ace_library {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_invalid {\tbackground-color: rgba(255, 0, 0, 0.1);\tcolor: red;\t}\t.ace-tm .ace_support.ace_function {\tcolor: rgb(60, 76, 114);\t}\t.ace-tm .ace_support.ace_constant {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_support.ace_type,\t.ace-tm .ace_support.ace_class {\tcolor: rgb(109, 121, 222);\t}\t.ace-tm .ace_keyword.ace_operator {\tcolor: rgb(104, 118, 135);\t}\t.ace-tm .ace_string {\tcolor: rgb(3, 106, 7);\t}\t.ace-tm .ace_comment {\tcolor: rgb(76, 136, 107);\t}\t.ace-tm .ace_comment.ace_doc {\tcolor: rgb(0, 102, 255);\t}\t.ace-tm .ace_comment.ace_doc.ace_tag {\tcolor: rgb(128, 159, 191);\t}\t.ace-tm .ace_constant.ace_numeric {\tcolor: rgb(0, 0, 205);\t}\t.ace-tm .ace_variable {\tcolor: rgb(49, 132, 149);\t}\t.ace-tm .ace_xml-pe {\tcolor: rgb(104, 104, 91);\t}\t.ace-tm .ace_entity.ace_name.ace_function {\tcolor: #0000A2;\t}\t.ace-tm .ace_heading {\tcolor: rgb(12, 7, 255);\t}\t.ace-tm .ace_list {\tcolor:rgb(185, 6, 144);\t}\t.ace-tm .ace_meta.ace_tag {\tcolor:rgb(0, 22, 142);\t}\t.ace-tm .ace_string.ace_regex {\tcolor: rgb(255, 0, 0)\t}\t.ace-tm .ace_marker-layer .ace_selection {\tbackground: rgb(181, 213, 255);\t}\t.ace-tm.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px white;\t}\t.ace-tm .ace_marker-layer .ace_step {\tbackground: rgb(252, 255, 0);\t}\t.ace-tm .ace_marker-layer .ace_stack {\tbackground: rgb(164, 229, 101);\t}\t.ace-tm .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid rgb(192, 192, 192);\t}\t.ace-tm .ace_marker-layer .ace_active-line {\tbackground: rgba(0, 0, 0, 0.07);\t}\t.ace-tm .ace_gutter-active-line {\tbackground-color : #dcdcdc;\t}\t.ace-tm .ace_marker-layer .ace_selected-word {\tbackground: rgb(250, 250, 255);\tborder: 1px solid rgb(200, 200, 250);\t}\t.ace-tm .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\t}\t',e("../lib/dom").importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,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)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;a0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;s<=o;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;n<=r;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(s<0))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);o<0&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&i<0&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do{s=r[o+=i]}while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do{l[i<0?"unshift":"push"](s),s=r[o+=i]}while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=m+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var g=function(e,t,i){if(0===t&&("esc"===i||"return"===i))return u.destroy(),{command:"null"}};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.importCssString("\t .error_widget_wrapper {\t background: inherit;\t color: inherit;\t border:none\t }\t .error_widget {\t border-top: solid 2px;\t border-bottom: solid 2px;\t margin: 5px 0;\t padding: 10px 40px;\t white-space: pre-wrap;\t }\t .error_widget.ace_error, .error_widget_arrow.ace_error{\t border-color: #ff5a5a\t }\t .error_widget.ace_warning, .error_widget_arrow.ace_warning{\t border-color: #F1D817\t }\t .error_widget.ace_info, .error_widget_arrow.ace_info{\t border-color: #5a5a5a\t }\t .error_widget.ace_ok, .error_widget_arrow.ace_ok{\t border-color: #5aaa5a\t }\t .error_widget_arrow {\t position: absolute;\t border: solid 5px;\t border-top-color: transparent!important;\t border-right-color: transparent!important;\t border-left-color: transparent!important;\t top: -5px;\t }\t","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","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(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),o=e("./lib/event"),s=e("./editor").Editor,a=e("./edit_session").EditSession,l=e("./undomanager").UndoManager,c=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.define=i(16),t.edit=function(e){if("string"==typeof e){var i=e;if(!(e=document.getElementById(i)))throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var n="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;n=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(n=r.getInnerText(e),e.innerHTML="");var l=t.createEditSession(n),h=new s(new c(e));h.setSession(l);var d={document:l,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),o.addListener(window,"resize",d.onResize),h.on("destroy",function(){o.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h}, +t.createEditSession=function(e,t){var i=new a(e,t);return i.setUndoManager(new l),i},t.EditSession=a,t.UndoManager=l,t.version="1.2.6"}),function(){ace.acequire(["ace/ace"],function(e){e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t){(function(t){e.exports=function(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var e=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(t,i){var n=new e,r=i.endings,o=i.type;if(r)for(var s=0,a=t.length;sc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is)return new r(s,n,h,t.length)}}.call(s.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"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){t.match(/^.*[\{\(\[]\s*$/)&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(19),"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(d.prototype),t.Mode=d})},function(e,t){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},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/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(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 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},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){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)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(0==cmp)return this;if(-1==cmp)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(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),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/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)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,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){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.removeEventListener("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={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),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(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):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)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}: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){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},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;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{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();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(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),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),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,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&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)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;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="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"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){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,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){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if("[object Object]"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;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;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:"\t"},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws="\t\\n\v\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'},function(e,t){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,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");n.importCssString("\t.ace_search {\tbackground-color: #ddd;\tborder: 1px solid #cbcbcb;\tborder-top: 0 none;\tmax-width: 325px;\toverflow: hidden;\tmargin: 0;\tpadding: 4px;\tpadding-right: 6px;\tpadding-bottom: 0;\tposition: absolute;\ttop: 0px;\tz-index: 99;\twhite-space: normal;\t}\t.ace_search.left {\tborder-left: 0 none;\tborder-radius: 0px 0px 5px 0px;\tleft: 0;\t}\t.ace_search.right {\tborder-radius: 0px 0px 0px 5px;\tborder-right: 0 none;\tright: 0;\t}\t.ace_search_form, .ace_replace_form {\tborder-radius: 3px;\tborder: 1px solid #cbcbcb;\tfloat: left;\tmargin-bottom: 4px;\toverflow: hidden;\t}\t.ace_search_form.ace_nomatch {\toutline: 1px solid red;\t}\t.ace_search_field {\tbackground-color: white;\tcolor: black;\tborder-right: 1px solid #cbcbcb;\tborder: 0 none;\t-webkit-box-sizing: border-box;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tfloat: left;\theight: 22px;\toutline: 0;\tpadding: 0 7px;\twidth: 214px;\tmargin: 0;\t}\t.ace_searchbtn,\t.ace_replacebtn {\tbackground: #fff;\tborder: 0 none;\tborder-left: 1px solid #dcdcdc;\tcursor: pointer;\tfloat: left;\theight: 22px;\tmargin: 0;\tposition: relative;\t}\t.ace_searchbtn:last-child,\t.ace_replacebtn:last-child {\tborder-top-right-radius: 3px;\tborder-bottom-right-radius: 3px;\t}\t.ace_searchbtn:disabled {\tbackground: none;\tcursor: default;\t}\t.ace_searchbtn {\tbackground-position: 50% 50%;\tbackground-repeat: no-repeat;\twidth: 27px;\t}\t.ace_searchbtn.prev {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \t}\t.ace_searchbtn.next {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \t}\t.ace_searchbtn_close {\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\tborder-radius: 50%;\tborder: 0 none;\tcolor: #656565;\tcursor: pointer;\tfloat: right;\tfont: 16px/16px Arial;\theight: 14px;\tmargin: 5px 1px 9px 5px;\tpadding: 0;\ttext-align: center;\twidth: 14px;\t}\t.ace_searchbtn_close:hover {\tbackground-color: #656565;\tbackground-position: 50% 100%;\tcolor: white;\t}\t.ace_replacebtn.prev {\twidth: 54px\t}\t.ace_replacebtn.next {\twidth: 27px\t}\t.ace_button {\tmargin-left: 2px;\tcursor: pointer;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\toverflow: hidden;\topacity: 0.7;\tborder: 1px solid rgba(100,100,100,0.23);\tpadding: 1px;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tcolor: black;\t}\t.ace_button:hover {\tbackground-color: #eee;\topacity:1;\t}\t.ace_button:active {\tbackground-color: #ddd;\t}\t.ace_button.checked {\tborder-color: #3399ff;\topacity:1;\t}\t.ace_search_options{\tmargin-bottom: 3px;\ttext-align: right;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\t}","ace_searchbox");var l=''.replace(/>\s+/g,">"),c=function(e,t,i){var r=n.createElement("div");r.innerHTML=l,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),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.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=a.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(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(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(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(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=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:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},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;n.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.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){(e.searchBox||new c(e)).show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter {\tbackground: #ebebeb;\tcolor: #333\t}\t\t.ace-jsoneditor.ace_editor {\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\tline-height: 1.3;\tbackground-color: #fff;\t}\t.ace-jsoneditor .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8\t}\t.ace-jsoneditor .ace_scroller {\tbackground-color: #FFFFFF\t}\t.ace-jsoneditor .ace_text-layer {\tcolor: gray\t}\t.ace-jsoneditor .ace_variable {\tcolor: #1a1a1a\t}\t.ace-jsoneditor .ace_cursor {\tborder-left: 2px solid #000000\t}\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\tborder-left: 0px;\tborder-bottom: 1px solid #000000\t}\t.ace-jsoneditor .ace_marker-layer .ace_selection {\tbackground: lightgray\t}\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px #FFFFFF;\tborder-radius: 2px\t}\t.ace-jsoneditor .ace_marker-layer .ace_step {\tbackground: rgb(255, 255, 0)\t}\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid #BFBFBF\t}\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\tbackground: #FFFBD1\t}\t.ace-jsoneditor .ace_gutter-active-line {\tbackground-color : #dcdcdc\t}\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\tborder: 1px solid lightgray\t}\t.ace-jsoneditor .ace_invisible {\tcolor: #BFBFBF\t}\t.ace-jsoneditor .ace_keyword,\t.ace-jsoneditor .ace_meta,\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\tcolor: #AF956F\t}\t.ace-jsoneditor .ace_keyword.ace_operator {\tcolor: #484848\t}\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\tcolor: #96DC5F\t}\t.ace-jsoneditor .ace_constant.ace_language {\tcolor: darkorange\t}\t.ace-jsoneditor .ace_constant.ace_numeric {\tcolor: red\t}\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\tcolor: #BF78CC\t}\t.ace-jsoneditor .ace_invalid {\tcolor: #FFFFFF;\tbackground-color: #FF002A;\t}\t.ace-jsoneditor .ace_fold {\tbackground-color: #AF956F;\tborder-color: #000000\t}\t.ace-jsoneditor .ace_storage,\t.ace-jsoneditor .ace_support.ace_class,\t.ace-jsoneditor .ace_support.ace_function,\t.ace-jsoneditor .ace_support.ace_other,\t.ace-jsoneditor .ace_support.ace_type {\tcolor: #C52727\t}\t.ace-jsoneditor .ace_string {\tcolor: green\t}\t.ace-jsoneditor .ace_comment {\tcolor: #BCC8BA\t}\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\tcolor: #606060\t}\t.ace-jsoneditor .ace_markup.ace_underline {\ttext-decoration: underline\t}\t.ace-jsoneditor .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\t}',e("../lib/dom").importCssString(t.cssText,t.cssClass)})}])}); //# sourceMappingURL=jsoneditor.map \ No newline at end of file diff --git a/docs/api.md b/docs/api.md index 6f3ca20..b12de4c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -54,7 +54,11 @@ Constructs a new JSONEditor. - `{function} onEditable` - Set a callback function to determine whether individual nodes are editable or read-only. Only applicable when option `mode` is `tree`. The callback is invoked as `editable(node)`, where `node` is an object `{field: string, value: string, path: string[]}`. The function must either return a boolean value to set both the nodes field and value editable or read-only, or return an object `{field: boolean, value: boolean}`. + Set a callback function to determine whether individual nodes are editable or read-only. Only applicable when option `mode` is `tree`, `text`, or `code`. + + In case of mode `tree`, the callback is invoked as `editable(node)`, where `node` is an object `{field: string, value: string, path: string[]}`. The function must either return a boolean value to set both the nodes field and value editable or read-only, or return an object `{field: boolean, value: boolean}` to set set the read-only attribute for field and value individually. + + In modes `text` and `code`, the callback is invoked as `editable(node)` where `node` is an empty object (no field, value, or path). In that case the function can return false to make the text or code editor completely read-only. - `{function} onError` diff --git a/examples/09_readonly_text_mode.html b/examples/09_readonly_text_mode.html index 3e9321f..05cb4f8 100644 --- a/examples/09_readonly_text_mode.html +++ b/examples/09_readonly_text_mode.html @@ -43,8 +43,12 @@ var options = { mode: 'text', modes: ['text', 'code'], - onEditable: function() { //absence of key makes the text area not readOnly - return false; // returning false makes the text area readOnly + onEditable: function (node) { + if (!node.path) { + // In modes code and text, node is empty: no path, field, or value + // returning false makes the text area read-only + return false; + } }, onError: function (err) { alert(err.toString()); diff --git a/gulpfile.js b/gulpfile.js index cfc4260..a6466f8 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -70,7 +70,8 @@ function minify(name) { var result = uglify.minify([DIST + '/' + name + '.js'], { outSourceMap: name + '.map', output: { - comments: /@license/ + comments: /@license/, + max_line_len: 64000 // extra large because we have embedded code for workers } }); diff --git a/package.json b/package.json index 1ab1e3b..5632e45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "5.5.11", + "version": "5.6.0", "main": "./index", "description": "A web-based tool to view, edit, format, and validate JSON", "tags": [ @@ -23,20 +23,20 @@ "test": "mocha test" }, "dependencies": { - "ajv": "3.8.8", + "ajv": "4.11.6", "brace": "0.10.0", "javascript-natural-sort": "0.7.1" }, "devDependencies": { "gulp": "3.9.1", - "gulp-clean-css": "2.0.5", - "gulp-concat-css": "2.2.0", - "gulp-shell": "0.5.2", - "gulp-util": "3.0.7", + "gulp-clean-css": "3.0.4", + "gulp-concat-css": "2.3.0", + "gulp-shell": "0.6.3", + "gulp-util": "3.0.8", "json-loader": "0.5.4", "mkdirp": "0.5.1", - "mocha": "2.4.5", - "uglify-js": "2.6.2", + "mocha": "3.2.0", + "uglify-js": "2.8.22", "webpack": "1.12.14" } }