2013-05-04 04:55:15 +08:00
/ * !
* jsoneditor . js
*
* @ brief
2016-01-15 04:26:39 +08:00
* JSONEditor is a web - based tool to view , edit , format , and validate JSON .
* It has various modes such as a tree editor , a code editor , and a plain text
* editor .
2013-05-04 04:55:15 +08:00
*
* Supported browsers : Chrome , Firefox , Safari , Opera , Internet Explorer 8 +
*
* @ license
* Licensed under the Apache License , Version 2.0 ( the "License" ) ; you may not
* use this file except in compliance with the License . You may obtain a copy
* of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS , WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied . See the
* License for the specific language governing permissions and limitations under
* the License .
*
2017-01-07 03:58:19 +08:00
* Copyright ( c ) 2011 - 2017 Jos de Jong , http : //jsoneditoronline.org
2013-05-04 04:55:15 +08:00
*
* @ author Jos de Jong , < wjosdejong @ gmail . com >
2017-01-07 03:58:19 +08:00
* @ version 5.5 . 11
2017-04-14 20:10:07 +08:00
* @ date 2017 - 04 - 11
2013-05-04 05:26:09 +08:00
* /
2016-04-16 18:40:29 +08:00
! 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 < e . length ; t ++ ) n . registerMode ( e [ t ] ) ; else { if ( ! ( "mode" in e ) ) throw new Error ( 'Property "mode" missing' ) ; if ( ! ( "mixin" in e ) ) throw new Error ( 'Property "mixin" missing' ) ; if ( ! ( "data" in e ) ) throw new Error ( 'Property "data" missing' ) ; var r = e . mode ; if ( r in n . modes ) throw new Error ( 'Mode "' + r + '" already registered' ) ; if ( "function" != typeof e . mixin . create ) throw new Error ( 'Required function "create" missing on mixin' ) ; var o = [ "setMode" , "registerMode" , "modes" ] ; for ( t = 0 ; t < o . length ; t ++ ) if ( i = o [ t ] , i in e . mixin ) throw new Error ( 'Reserved property "' + i + '" not allowed in mixin' ) ; n . modes [ r ] = e } } , n . registerMode ( s ) , n . registerMode ( a ) , e . exports = n } , function ( e , t , i ) { "use strict" ; function n ( e ) { return v . test ( e ) } function r ( e ) { function
2016-05-23 02:43:26 +08:00
for ( "-" === n && ( t = "-" , l ( "-" ) ) ; n >= "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 < MODES . length ; s ++ ) { var a = MODES [ s ] ; if ( setupAsync ( a , ! 1 ) ) return util . copy ( a , e ) , e . transpile } throw new Error ( "generators, nodent and regenerator are not available" ) ; case "function" : return e . _transpileFunc = e . transpile ; default : throw new Error ( "bad transpiler: " + r ) } } function checkGenerators ( opts , required ) { try { return eval ( "(function*(){})()" ) , ! 0 } catch ( e ) { if ( required ) throw new Error ( "generators not supported" ) } } function checkAsyncFunction ( opts , required ) { try { return eval ( "(async function(){})()" ) , ! 0 } catch ( e ) { if ( required ) throw new Error ( "es7 async functions not supported" ) } } funct
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 + "<schema" + r + ".length; " + p + "++) if (equal(" + h + ", schema" + r + "[" + p + "])) { " + d + " = true; break; }" , u && ( n += " } " ) , n += " if (!" + d + ") { " ; var m = m || [ ] ; m . push ( n ) , n = "" , e . createErrors !== ! 1 ? ( n += " { keyword: '" + ( i || "enum" ) + "' , dataPath: (dataPath || '') + " + e . errorPath + ' , schemaPath: "' + l + '" , params: {} ' , e . opts . messages !== ! 1 && ( n += " , message: 'should be equal to one of the allowed values' " ) , e . opts . verbose && ( n += " , schema: validate.schema" + a + " , parentSchema: validate.schema" + e . schemaPath + " , data: " + h + " " ) , n += " } " ) : n += " {} " ; var g = n ; return 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 += " }" , 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 || "" ) ; if ( e . opts . format === ! 1 ) return c && ( n += " if (true) { " ) , n ; var d = e . opts . v5 && s . $data , u = d ? e . util . getData ( s . $data , o , e . dataPathArr ) : s ; if ( d && ( n += " var schema" + r + " = " + u + "; " , u = "schema" + r ) , d ) { var f = "format" + r ; n += " var " + f + " = formats[" + u + "]; var isObject" + r + " = typeof " + f + " == 'object' && !(" + f + " instanceof RegExp) && " + f + ".validate; if (isObject" + r + ") { var async" + r + " = " + f + ".async; " + f + " = " + f + ".validate; } if ( " , d && ( n += " (" + u + " !== undefined && typeof " + u + " != 'string') || " ) , n += " (" + f + " && !(typeof " + f + " == 'function' ? " , n += e . async ? " (async" + r + " ? " + e . yieldAwait + " " + f + "(" + h + ") : " + f + "(" + h + ")) " : " " + f + "(" + h + ") " , n += " : " + f + ".test(" + h + ")))) {" } else { var f = e . formats [ s ] ; if ( ! f ) return c && ( n += " if (true) { " ) , n ; var p = "object" == typeof f && ! ( f instanceof RegExp ) && f . validate ; if ( p ) { var m = f . async === ! 0 ; f = f . validate } if ( m ) { if ( ! e . async ) throw new Error ( "async format in sync schema" ) ; var g = "formats" + e . util . getProperty ( s ) + ".validate" ; n += " if (!(" + e . yieldAwait + " " + g + "(" + h + "))) { " } else { n += " if (! " ; var g = "formats" + e . util . getProperty ( s ) ; p && ( g += ".validate" ) , n += "function" == typeof f ? " " + g + "(" + h + ") " : " " + g + ".test(" + h + ") " , n += ") { " } } var v = v || [ ] ; v . push ( n ) , n = "" , e . createErrors !== ! 1 ? ( n += " { keyword: '" + ( i || "format" ) + "' , dataPath: (dataPath || '') + " + e . errorPath + ' , schemaPath: "' + l + '" , params: { format: ' , n += d ? "" + u : "" + e . util . toQuotedString ( s ) , n += " } " , e . opts . messages !== ! 1 && ( n += " , message: 'should match format \"" , 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 w = n ; return n = v . pop ( ) , n += ! e . compositeRule && c ? e . async ? " throw new ValidationError([" + w + "]); " : " validate.errors = [" + w + "]; return false; " : " var err = " + w + "; 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 ; if ( n += "var " + u + " = errors;var " + d + ";" , Array . isArray ( s ) ) { var v = e . schema . additionalItems ; if ( v === ! 1 ) { n += " " + d + " = " + h + ".length <= " + s . length + "; " ; var w = l ; l = e . errSchemaPath + "/additionalItems" , n += " if (!" + d + ") { " ; var y = y || [ ] ; y . push ( n ) , n = "" , e . createErrors !== ! 1 ? ( n += " { keyword: '" + ( i || "additionalItems" ) + "' , dataPath: (dataPath || '') + " + e . errorPath + ' , schemaPath: "' + l + '" , params: { limit: ' + s . length + " } " , e . opts . messages !== ! 1 && ( n += " , message: 'should NOT have more than " + s . length + " items' " ) , e . opts . verbose && ( n += " , schema: false , parentSchema: validate.schema" + e . schemaPath + " , data: " + h + " " ) , n += " } " ) : n += " {} " ; var A = n
2016-11-03 04:03:18 +08:00
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 += " } e
undo : function ( e ) { e . nodes . forEach ( function ( t ) { e . parent . removeChild ( t ) } ) } , redo : function ( e ) { var t = e . afterNode ; e . nodes . forEach ( function ( i ) { e . parent . insertAfter ( e . node , t ) , t = i } ) } } , removeNodes : { undo : function ( e ) { var t = e . parent , i = t . childs [ e . index ] || t . append ; e . nodes . forEach ( function ( e ) { t . insertBefore ( e , i ) } ) } , redo : function ( e ) { e . nodes . forEach ( function ( t ) { e . parent . removeChild ( t ) } ) } } , duplicateNodes : { undo : function ( e ) { e . nodes . forEach ( function ( t ) { e . parent . removeChild ( t ) } ) } , redo : function ( e ) { var t = e . afterNode ; e . nodes . forEach ( function ( i ) { e . parent . insertAfter ( i , t ) , t = i } ) } } , moveNodes : { undo : function ( e ) { e . nodes . forEach ( function ( t ) { e . oldBeforeNode . parent . moveBefore ( t , e . oldBeforeNode ) } ) } , redo : function ( e ) { e . nodes . forEach ( function ( t ) { e . newBeforeNode . parent . moveBefore ( t , e . newBeforeNode ) } ) } } , sort : { undo : function ( e ) { var t = e . node ; t . hideChilds ( ) , t . sort = e . oldSort , t . childs = e . oldChilds , t . showChilds ( ) } , redo : function ( e ) { var t = e . node ; t . hideChilds ( ) , t . sort = e . newSort , t . childs = e . newChilds , t . showChilds ( ) } } } } i ( 54 ) ; n . prototype . onChange = function ( ) { } , n . prototype . add = function ( e , t ) { this . index ++ , this . history [ this . index ] = { action : e , params : t , timestamp : new Date } , this . index < this . history . length - 1 && this . history . splice ( this . index + 1 , this . history . length - this . index - 1 ) , this . onChange ( ) } , n . prototype . clear = function ( ) { this . history = [ ] , this . index = - 1 , this . onChange ( ) } , n . prototype . canUndo = function ( ) { return this . index >= 0 } , n . prototype . canRedo = function ( ) { return this . index < this . history . length - 1 } , n . prototype . undo = function ( ) { if ( this . canUndo ( ) ) { var e = this . history [ this . index ] ; if ( e ) { var t = this . actions [ e . action ] ; t && t . undo ? ( t . undo ( e . params ) , e . params . oldSelection && this . editor . setSelection ( e . params . oldSelection ) ) : console . error ( new Error ( 'unknown action "' + e . action + '"' ) ) } this . index -- , this . onChange ( ) } } , n . prototype . redo = function ( ) { if ( this . canRedo ( ) ) { this . index ++ ; var e = this . history [ this . index ] ; if ( e ) { var t = this . actions [ e . action ] ; t && t . redo ? ( t . redo ( e . params ) , e . params . newSelection && this . editor . setSelection ( e . params . newSelection ) ) : console . error ( new Error ( 'unknown action "' + e . action + '"' ) ) } this . onChange ( ) } } , n . prototype . destroy = function ( ) { this . editor = null , this . history = [ ] , this . index = - 1 } , e . exports = n } , function ( e , t , i ) { "use strict" ; var n = i ( 55 ) ; t . parse = function ( e ) { try { return JSON . parse ( e ) } catch ( i ) { throw t . validate ( e ) , i } } , t . sanitize = function ( e ) { function t ( ) { return e . charAt ( h ) } function i ( ) { return e . charAt ( h + 1 ) } function n ( ) { return e . charAt ( h - 1 ) } function r ( ) { for ( var e = c . length - 1 ; e >= 0 ; ) { var t = c [ e ] ; if ( " " !== t && "\n" !== t && "\r" !== t && " " !== t ) return t ; e -- } return "" } function o ( ) { for ( h += 2 ; h < e . length && ( "*" !== t ( ) || "/" !== i ( ) ) ; ) h ++ ; h += 2 } function s ( ) { for ( h += 2 ; h < e . length && "\n" !== t ( ) ; ) h ++ } function a ( i ) { c . push ( '"' ) , h ++ ; for ( var r = t ( ) ; h < e . length && r !== i ; ) '"' === r && "\\" !== n ( ) && c . push ( "\\" ) , "\\" === r && ( h ++ , r = t ( ) , "'" !== r && c . push ( "\\" ) ) , c . push ( r ) , h ++ , r = t ( ) ; r === i && ( c . push ( '"' ) , h ++ ) } function l ( ) { for ( var e = [ "null" , "true" , "false" ] , i = "" , n = t ( ) , r = /[a-zA-Z_$\d]/ ; r . test ( n ) ; ) i += n , h ++ , n = t ( ) ; - 1 === e . indexOf ( i ) ? c . push ( '"' + i + '"' ) : c . push ( i ) } var c = [ ] , h = 0 , d = e . match ( /^\s*(\/\*(.|[\r\n])*?\*\/)?\s*[\da-zA-Z_$]+\s*\(([\s\S]*)\)\s*;?\s*$/ ) ; for ( d && ( e = d [ 3 ] ) ; h < e . length ; ) { var u = t ( ) ; "/" === u && "*" === i ( ) ? o ( ) : "/" === u && "/" === i ( ) ? s ( ) : "'" === u || '"' === u ? a ( u ) : /[a-zA-Z_$]/ . test ( u ) && - 1 !== [ "{" , "," ] . indexOf ( r ( ) ) ? l ( ) : ( c . push ( u ) , h ++ ) } return c . 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 ) { "undefined" != typeof 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 .
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
2017-04-14 20:10:07 +08:00
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 ( / /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 ; i < e . length ; ) { var n = e . charAt ( i ) ; "\n" == n ? t += "\\n" : "\\" == n ? ( t += n , i ++ , n = e . charAt ( i ) , "" !== n && - 1 != '"\\/bfnrtu' . indexOf ( n ) || ( t += "\\" ) , t += n ) : t += '"' == n ? '\\"' : n , i ++ } return t } ; var l = s ( n ) ; e . exports = n } , function ( e , t ) { e . exports = function i ( e , t ) { "use strict" ; var n , r , o = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi , s = /(^[ ]*|[ ]*$)/g , a = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/ , l = /^0x[0-9a-f]+$/i , c = /^0/ , h = function ( e ) { return i . insensitive && ( "" + e ) . toLowerCase ( ) || "" + e } , d = h ( e ) . replace ( s , "" ) || "" , u = h ( t ) . replace ( s , "" ) || "" , f = d . replace ( o , "\x00$1\x00" ) . replace ( /\0$/ , "" ) . replace ( /^\0/ , "" ) . split ( "\x00" ) , p = u . replace ( o , "\x00$1\x00" ) . replace ( /\0$/ , "" ) . replace ( /^\0/ , "" ) . split ( "\x00" ) , m = parseInt ( d . match ( l ) , 16 ) || 1 !== f . length && d . match ( a ) && Date . parse ( d ) , g = parseInt ( u . match ( l ) , 16 ) || m && u . match ( a ) && Date . parse ( u ) || null ; if ( g ) { if ( g > m ) 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 .
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 ) } 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 ) { 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" == typ
"no use strict" ; function n ( e ) { "undefined" != typeof console && console . warn && console . warn . apply ( console , arguments ) } function r ( e , t ) { var i = new Error ( e ) ; i . data = t , "object" == typeof console && console . error && console . error ( i ) , setTimeout ( function ( ) { throw i } ) } var o = e ( "./oop" ) , s = e ( "./event_emitter" ) . EventEmitter , a = { setOptions : function ( e ) { Object . keys ( e ) . forEach ( function ( t ) { this . setOption ( t , e [ t ] ) } , this ) } , getOptions : function ( e ) { var t = { } ; return e ? Array . isArray ( e ) || ( t = e , e = Object . keys ( t ) ) : e = Object . keys ( this . $options ) , e . forEach ( function ( e ) { t [ e ] = this . getOption ( e ) } , this ) , t } , setOption : function ( e , t ) { if ( this [ "$" + e ] !== t ) { var i = this . $options [ e ] ; if ( ! i ) return n ( 'misspelled option "' + e + '"' ) ; if ( i . forwardTo ) return this [ i . forwardTo ] && this [ i . forwardTo ] . setOption ( e , t ) ; i . handlesSet || ( this [ "$" + e ] = t ) , i && i . set && i . set . call ( this , t ) } } , getOption : function ( e ) { var t = this . $options [ e ] ; return t ? t . forwardTo ? this [ t . forwardTo ] && this [ t . forwardTo ] . getOption ( e ) : t && t . get ? t . get . call ( this ) : this [ "$" + e ] : n ( 'misspelled option "' + e + '"' ) } } , l = function ( ) { this . $defaultOptions = { } } ; ( function ( ) { o . implement ( this , s ) , this . defineOptions = function ( e , t , i ) { return e . $options || ( this . $defaultOptions [ t ] = e . $options = { } ) , Object . keys ( i ) . forEach ( function ( t ) { var n = i [ t ] ; "string" == typeof n && ( n = { forwardTo : n } ) , n . name || ( n . name = t ) , e . $options [ n . name ] = n , "initialValue" in n && ( e [ "$" + n . name ] = n . initialValue ) } ) , o . implement ( e , a ) , this } , this . resetOptions = function ( e ) { Object . keys ( e . $options ) . forEach ( function ( t ) { var i = e . $options [ t ] ; "value" in i && e . setOption ( t , i . value ) } ) } , this . setDefaultValue = function ( e , t , i ) { var n = this . $defaultOptions [ e ] || ( this . $defaultOptions [ e ] = { } ) ; n [ t ] && ( n . forwardTo ? this . setDefaultValue ( n . forwardTo , t , i ) : n [ t ] . value = i ) } , this . setDefaultValues = function ( e , t ) { Object . keys ( t ) . forEach ( function ( i ) { this . setDefaultValue ( e , i , t [ i ] ) } , this ) } , this . warn = n , this . reportError = r } ) . call ( l . prototype ) , t . AppConfig = l } ) , ace . define ( "ace/config" , [ "require" , "exports" , "module" , "ace/lib/lang" , "ace/lib/oop" , "ace/lib/net" , "ace/lib/app_config" ] , function ( e , t , n ) { "no use strict" ; function r ( r ) { if ( c && c . document ) { h . packaged = r || e . packaged || n . packaged || c . define && i ( 65 ) . packaged ; for ( var s = { } , a = "" , l = document . currentScript || document . _currentScript , d = l && l . ownerDocument || document , u = d . getElementsByTagName ( "script" ) , f = 0 ; f < u . length ; f ++ ) { var p = u [ f ] , m = p . src || p . getAttribute ( "src" ) ; if ( m ) { for ( var g = p . attributes , v = 0 , w = g . length ; w > v ; 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 .
var o = e [ t ] ; i && ( o = o . toLowerCase ( ) ) ; for ( var s = o . split ( n || "|" ) , a = s . length ; a -- ; ) r [ s [ a ] ] = t } ) , Object . getPrototypeOf ( r ) && ( r . _ _proto _ _ = null ) , this . $keywordList = Object . keys ( r ) , e = null , i ? function ( e ) { return r [ e . toLowerCase ( ) ] || t } : function ( e ) { return r [ e ] || t } } , this . getKeywords = function ( ) { return this . $keywords } } ) . call ( r . prototype ) , t . TextHighlightRules = r } ) , ace . define ( "ace/mode/behaviour" , [ "require" , "exports" , "module" ] , function ( e , t , i ) { "use strict" ; var n = function ( ) { this . $behaviours = { } } ; ( function ( ) { this . add = function ( e , t , i ) { switch ( void 0 ) { case this . $behaviours : this . $behaviours = { } ; case this . $behaviours [ e ] : this . $behaviours [ e ] = { } } this . $behaviours [ e ] [ t ] = i } , this . addBehaviours = function ( e ) { for ( var t in e ) for ( var i in e [ t ] ) this . add ( t , i , e [ t ] [ i ] ) } , this . remove = function ( e ) { this . $behaviours && this . $behaviours [ e ] && delete this . $behaviours [ e ] } , this . inherit = function ( e , t ) { if ( "function" == typeof e ) var i = ( new e ) . getBehaviours ( t ) ; else var i = e . getBehaviours ( t ) ; this . addBehaviours ( i ) } , this . getBehaviours = function ( e ) { if ( e ) { for ( var t = { } , i = 0 ; i < e . length ; i ++ ) this . $behaviours [ e [ i ] ] && ( t [ e [ i ] ] = this . $behaviours [ e [ i ] ] ) ; return t } return this . $behaviours } } ) . call ( n . prototype ) , t . Behaviour = n } ) , ace . define ( "ace/token_iterator" , [ "require" , "exports" , "module" ] , function ( e , t , i ) { "use strict" ; var n = function ( e , t , i ) { this . $session = e , this . $row = t , this . $rowTokens = e . getTokens ( t ) ; var n = e . getTokenAt ( t , i ) ; this . $tokenIndex = n ? n . index : - 1 } ; ( function ( ) { this . stepBackward = function ( ) { for ( this . $tokenIndex -= 1 ; this . $tokenIndex < 0 ; ) { if ( this . $row -= 1 , this . $row < 0 ) return this . $row = 0 , null ; this . $rowTokens = this . $session . getTokens ( this . $row ) , this . $tokenIndex = this . $rowTokens . length - 1 } return this . $rowTokens [ this . $tokenIndex ] } , this . stepForward = function ( ) { this . $tokenIndex += 1 ; for ( var e ; this . $tokenIndex >= 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 ; 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 . sub
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 ; 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 = functio
this . removeFold ( e ) , e . subFolds . forEach ( function ( t ) { e . restoreRange ( t ) , this . addFold ( t ) } , this ) , e . collapseChildren > 0 && 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 . $updateFold
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 ; r < a . length ; r ++ ) t = a [ r ] , e -= t . end . row - t . start . row } return this . lineWidgets && ( e += this . $getWidgetScreenLength ( ) ) , e } , this . $setFontMetrics = function ( e ) { this . $enableVarChar && ( this . $getStringScreenWidth = function ( t , i , n ) { if ( 0 === i ) return [ 0 , 0 ] ; i || ( i = 1 / 0 ) , n = n || 0 ; var r , o ; for ( o = 0 ; o < t . length && ( r = t . charAt ( o ) , n += " " === r ? this . getScreenTabSize ( n ) : e . getCharacterWidth ( r ) , ! ( n > i ) ) ; 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" ; 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 ; h >= d ; d ++ ) { for ( var u = 0 ; c > u ; u ++ ) if ( - 1 == n [ d + u ] . search ( a [ u ] ) ) continue e ; var f = n [ d ] , p = n [ 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 || ( o . push ( l = new s ( d , m , d + c - 1 , g ) ) , c > 2 && ( d = d + c - 2 ) ) } } else for ( var v = 0 ; v < n . length ; v ++ ) for ( var w = r . getMatchOffsets ( n [ v ] , a ) , u = 0 ; u < w . length ; u ++ ) { var y = w [ u ] ; o . push ( new s ( v , y . offset , v , y . offset + y . length ) ) } if ( i ) { for
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 =
return t && ( i = this . $doc . undoChanges ( t , e ) , this . $redoStack . push ( t ) , this . dirtyCounter -- ) , i } , this . redo = function ( e ) { var t = this . $redoStack . pop ( ) , i = null ; return t && ( i = this . $doc . redoChanges ( this . $deserializeDeltas ( t ) , e ) , this . $undoStack . push ( t ) , this . dirtyCounter ++ ) , i } , this . reset = function ( ) { this . $undoStack = [ ] , this . $redoStack = [ ] , this . dirtyCounter = 0 } , this . hasUndo = function ( ) { return this . $undoStack . length > 0 } , 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 ; t < e . length ; t ++ ) { var i = e [ t ] , n = i . row , r = this . $annotations [ n ] ; r || ( r = this . $annotations [ n ] = { text : [ ] } ) ; var s = i . text ; s = s ? o . escapeHTML ( s ) : i . html || "" , - 1 === r . text . indexOf ( s ) && r . text . push ( s ) ; var a = i . type ; "error" == a ? r . className = " ace_error" : "warning" == a && " ace_error" != r . className ? r . className = " ace_warning" : "info" != a || r . className || ( r . className = " ace_info" ) } } , this . $updateAnnotations = function ( e ) { if ( this . $annotations . length ) { var t = e . start . row , i = e . end . row - t ; if ( 0 === i ) ; else if ( "remove" == e . action ) this . $annotations . splice ( t , i + 1 , null ) ; else { var n = new Array ( i + 1 ) ; n . unshift ( t , 1 ) , this . $annotations . splice . apply ( this . $annotations , n ) } } } , this . update = function ( e ) { for ( var t = this . session , i = e . firstRow , r = Math . min ( e . lastRow + e . gutterOffset , t . getLength ( ) - 1 ) , o = t . getNextFoldLine ( i ) , s = o ? o . start . row : 1 / 0 , a = this . $showFoldWidgets && t . foldWidgets , l = t . $breakpoints , c = t . $decorations , h = t . $firstLineNumber , d = 0 , u = t . gutterRenderer || this . $renderer , f = null , p = - 1 , m = i ; ; ) { if ( m > s && ( 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 && m < o . end . row ? " ace_closed" : " ace_open" , f . foldWidget . className != g && ( f . foldWidget . className = g ) ; var v = e . lineHeight + "px" ; f . foldWidget . style . height != v && ( f . foldWidget . style . height = v ) } else f . foldWidget && ( f . element . removeChild ( f . foldWidget ) , f . foldWidget = null ) ; var y = d = u ? u . getText ( t , m ) : m + h ; y != f . textNode . data && ( f . textNode . data = y ) , m ++ } this . element . style . height = e . minHeight + "px" , ( this . $fixedWidth || t . $useWrapMode ) && ( d = t . getLength ( ) + h ) ; var A = u ? u . getWidth ( t , d , e ) : d . toString ( ) . length * e
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 . 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 . lastRow < t && ( this . $changedLines . lastRow = t ) ) : this . $changedLines = { firstRow : e , lastRow : t } , this . $changedLines . lastRow < this . layerConfig . firstRow ) { if ( ! i ) return ; this . $changedLines . lastRow = this . layerConfig . lastRow } this . $changedLines . firstRow > this . 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 . $textLaye
} ) } } , this . hideOtherMarkers = function ( ) { if ( this . othersActive ) { this . othersActive = ! 1 ; for ( var e = 0 ; e < this . others . length ; e ++ ) this . session . removeMarker ( this . others [ e ] . markerId ) } } , this . onUpdate = function ( e ) { if ( this . $updating ) return this . updateAnchors ( e ) ; var t = e ; if ( t . start . row === t . end . row && t . start . row === this . pos . row ) { this . $updating = ! 0 ; var i = "insert" === e . action ? t . end . column - t . start . column : t . start . column - t . end . column , r = t . start . column >= 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 (
} , 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 ( "<br>" ) , 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 , 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 ( 65 ) , 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 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 . getInne
} , 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; color: black; 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 = ' < div class = "ace_search right" > < button type = "button" action = "hide" class = "ace_searchbtn_close" > < / b u t t o n > < d i v c l a s s = " a c e _ s e a r c h _ f o r m " > < i n p u t c l a s s = " a c e _ s e a r c h _ f i e l d " p l a c e h o l d e r = " S e a r c h f o r " s p e l l c h e c k = " f a l s e " > < / i n p u t > < b u t t o n t y p e = " b u t t o n " a c t i o n = " f i n d N e x t " c l a s s = " a c e _ s e a r c h b t n n e x t " > < / b u t t o n > < b u t t o n t y p e = " b u t t o n " a c t i o n = " f i n d P r e v " c l a s s = " a c e _ s e a r c h b t n p r e v " > < / b u t t o n > < b u t t o n t y p e = " b u t t o n " a c t i o n = " f i n d A l l " c l a s s = " a c e _ s e a r c h b t n " t i t l e = " A l t - E n t e r " > A l l < / b u t t o n > < / d i v >
2014-05-30 04:13:37 +08:00
//# sourceMappingURL=jsoneditor.map