"no use strict" ; ! function ( e ) { function t ( e , t ) { var n = e , r = "" ; while ( n ) { var i = t [ n ] ; if ( typeof i == "string" ) return i + r ; if ( i ) return i . location . replace ( /\/*$/ , "/" ) + ( r || i . main || i . name ) ; if ( i === ! 1 ) return "" ; var s = n . lastIndexOf ( "/" ) ; if ( s === - 1 ) break ; r = n . substr ( s ) + r , n = n . slice ( 0 , s ) ; } return e ; } if ( typeof e . window != "undefined" && e . document ) return ; if ( e . require && e . define ) return ; e . console || ( e . console = function ( ) { var e = Array . prototype . slice . call ( arguments , 0 ) ; postMessage ( { type : "log" , data : e } ) ; } , e . console . error = e . console . warn = e . console . log = e . console . trace = e . console ) , e . window = e , e . ace = e , e . onerror = function ( e , t , n , r , i ) { postMessage ( { type : "error" , data : { message : e , data : i . data , file : t , line : n , col : r , stack : i . stack } } ) ; } , e . normalizeModule = function ( t , n ) { if ( n . indexOf ( "!" ) !== - 1 ) { var r = n . split ( "!" ) ; return e . normalizeModule ( t , r [ 0 ] ) + "!" + e . normalizeModule ( t , r [ 1 ] ) ; } if ( n . charAt ( 0 ) == "." ) { var i = t . split ( "/" ) . slice ( 0 , - 1 ) . join ( "/" ) ; n = ( i ? i + "/" : "" ) + n ; while ( n . indexOf ( "." ) !== - 1 && s != n ) { var s = n ; n = n . replace ( /^\.\// , "" ) . replace ( /\/\.\// , "/" ) . replace ( /[^\/]+\/\.\.\// , "" ) ; } } return n ; } , e . require = function ( r , i ) { i || ( i = r , r = null ) ; if ( ! i . charAt ) throw new Error ( "worker.js require() accepts only (parentId, id) as arguments" ) ; i = e . normalizeModule ( r , i ) ; var s = e . require . modules [ i ] ; if ( s ) return s . initialized || ( s . initialized = ! 0 , s . exports = s . factory ( ) . exports ) , s . exports ; if ( ! e . require . tlns ) return console . log ( "unable to load " + i ) ; var o = t ( i , e . require . tlns ) ; return o . slice ( - 3 ) != ".js" && ( o += ".js" ) , e . require . id = i , e . require . modules [ i ] = { } , importScripts ( o ) , e . require ( r , i ) ; } , e . require . modules = { } , e . require . tlns = { } , e . define = function ( t , n , r ) { arguments . length == 2 ? ( r = n , typeof t != "string" && ( n = t , t = e . require . id ) ) : arguments . length == 1 && ( r = t , n = [ ] , t = e . require . id ) ; if ( typeof r != "function" ) { e . require . modules [ t ] = { exports : r , initialized : ! 0 } ; return ; } n . length || ( n = [ "require" , "exports" , "module" ] ) ; var i = function ( n ) { return e . require ( t , n ) ; } ; e . require . modules [ t ] = { exports : { } , factory : function ( ) { var e = this , t = r . apply ( this , n . map ( function ( t ) { switch ( t ) { case "require" : return i ; case "exports" : return e . exports ; case "module" : return e ; default : return i ( t ) ; } } ) ) ; return t && ( e . exports = t ) , e ; } } ; } , e . define . amd = { } , require . tlns = { } , e . initBaseUrls = function ( t ) { for ( var n in t ) require . tlns [ n ] = t [ n ] ; } , e . initSender = function ( ) { var n = e . require ( "ace/lib/event_emitter" ) . EventEmitter , r = e . require ( "ace/lib/oop" ) , i = function ( ) { } ; return function ( ) { r . implement ( this , n ) , this . callback = function ( e , t ) { postMessage ( { type : "call" , id : t , data : e } ) ; } , this . emit = function ( e , t ) { postMessage ( { type : "event" , name : e , data : t } ) ; } ; } . call ( i . prototype ) , new i ; } ; var n = e . main = null , r = e . sender = null ; e . onmessage = function ( t ) { var i = t . data ; if ( i . event && r ) r . _signal ( i . event , i . data ) ; else if ( i . command ) if ( n [ i . command ] ) n [ i . command ] . apply ( n , i . args ) ; else { if ( ! e [ i . command ] ) throw new Error ( "Unknown command:" + i . command ) ; e [ i . command ] . apply ( e , i . args ) ; } else if ( i . init ) { e . initBaseUrls ( i . tlns ) , require ( "ace/lib/es5-shim" ) , r = e . sender = e . initSender ( ) ; var s = require ( i . module ) [ i . classname ] ; n = e . main = new s ( r ) ; } } ; } ( this ) , define ( "ace/lib/oop" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; t . inherits = function ( e , t ) { e . super_ = t , e . prototype = Object . create ( t . prototype , { constructor : { value : e , enumerable : ! 1 , writable : ! 0 , configurable : ! 0 } } ) ; } , t . mixin = function ( e , t ) { for ( var n in t ) e [ n ] = t [ n ] ; return e ; } , t . implement = function ( e , n ) { t . mixin ( e , n ) ; } ; } ) , define ( "ace/range" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = function ( e , t ) { return e . row - t . row || e . column - t . column ; } , i = function ( e , t , n , r ) { this . start = { row : e , column : t } , this . end = { row : n , column : r } ; } ; ( function ( ) { this . isEqual = function ( e ) { return this . start . row === e . start . row && this . end . row === e . end . row && this . start . column === e . start . column && this . end . column === e . end . column ; } , this . toString = function ( ) { return "Range: [" + this . start . row + "/" + this . start . column + "] -> [" + this . end . row + "/" + this . end . column + "]" ; } , this . contains = function ( e , t ) { return this . compare ( e , t ) == 0 ; } , this . compareRange = function ( e ) { var t , n = e . end , r = e . start ; return t = this . compare ( n . row , n . column ) , t == 1 ? ( t = this . compare ( r . row , r . column ) , t == 1 ? 2 : t == 0 ? 1 : 0 ) : t == - 1 ? - 2 : ( t = this . compare ( r . row , r . column ) , t == - 1 ? - 1 : t == 1 ? 42 : 0 ) ; } , this . comparePoint = function ( e ) { return this . compare ( e . row , e . column ) ; } , this . containsRange = function ( e ) { return this . comparePoint ( e . start ) == 0 && this . comparePoint ( e . end ) == 0 ; } , this . intersects = function ( e ) { var t = this . compareRange ( e ) ; return t == - 1 || t == 0 || t == 1 ; } , this . isEnd = function ( e , t ) { return this . end . row == e && this . end . column == t ; } , this . isStart = function ( e , t ) { return this . start . row == e && this . start . column == t ; } , this . setStart = function ( e , t ) { typeof e == "object" ? ( this . start . column = e . column , this . start . row = e . row ) : ( this . start . row = e , this . start . column = t ) ; } , this . setEnd = function ( e , t ) { typeof e == "object" ? ( this . end . column = e . column , this . end . row = e . row ) : ( this . end . row = e , this . end . column = t ) ; } , this . inside = function ( e , t ) { return this . compare ( e , t ) == 0 ? this . isEnd ( e , t ) || this . isStart ( e , t ) ? ! 1 : ! 0 : ! 1 ; } , this . insideStart = function ( e , t ) { return this . compare ( e , t ) == 0 ? this . isEnd ( e , t ) ? ! 1 : ! 0 : ! 1 ; } , this . insideEnd = function ( e , t ) { return this . compare ( e , t ) == 0 ? this . isStart ( e , t ) ? ! 1 : ! 0 : ! 1 ; } , this . compare = function ( e , t ) { return ! this . isMultiLine ( ) && e === this . start . row ? t < this . start . column ? - 1 : t > this . end . column ? 1 : 0 : e < this . start . row ? - 1 : e > this . end . row ? 1 : this . start . row === e ? t >= this . start . column ? 0 : - 1 : this . end . row === e ? t <= this . end . column ? 0 : 1 : 0 ; } , this . compareStart = function ( e , t ) { return this . start . row == e && this . start . column == t ? - 1 : this . compare ( e , t ) ; } , this . compareEnd = function ( e , t ) { return this . end . row == e && this . end . column == t ? 1 : this . compare ( e , t ) ; } , this . compareInside = function ( e , t ) { return this . end . row == e && this . end . column == t ? 1 : this . start . row == e && this . start . column == t ? - 1 : this . compare ( e , t ) ; } , this . clipRows = function ( e , t ) { if ( this . end . row > t ) var n = { row : t + 1 , column : 0 } ; else if ( this . end . row < e ) var n = { row : e , column : 0 } ; if ( this . start . row > t ) var r = { row : t + 1 , column : 0 } ; else if ( this . start . row < e ) var r = { row : e , column : 0 } ; return i . fromPoints ( r || this . start , n || this . end ) ; } , this . extend = function ( e , t ) { var n = this . compare ( e , t ) ; if ( n == 0 ) return this ; if ( n == - 1 ) var r = { row : e , column : t } ; else var s = { row : e , column : t } ; return i . fromPoints ( r || this . start , s || this . end ) ; } , this . isEmpty = function ( ) { return this . start . row === this . end . row && this . start . column === this . end . column ; } , this . isMultiLine = function ( ) { return this . start . row !== this . end . row ; } , this . clone = function ( ) { return i . fromPoints ( this . start , this . end ) ; } , this . collapseRows = function ( ) { return this . end . column == 0 ? new i ( this . start . row , 0 , Math . max ( this . start . row , this . end . row - 1 ) , 0 ) : new i ( this . start . row , 0 , this . end . row , 0 ) ; } , this . toScreenRange = function ( e ) { var t = e . documentToScreenPosition ( this . start ) , n = e . documentToScreenPosition ( this . end ) ; return new i ( t . row , t . column , n . row , n . column ) ; } , this . moveBy = function ( e , t ) { this . start . row += e , this . start . column += t , this . end . row += e , this . end . column += t ; } ; } ) . call ( i . prototype ) , i . fromPoints = function ( e , t ) { return new i ( e . row , e . column , t . row , t . column ) ; } , i . comparePoints = r , i . comparePoints = function ( e , t ) { return e . row - t . row || e . column - t . column ; } , t . Range = i ; } ) , define ( "ace/apply_delta" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; function r ( e , t ) { throw console . log ( "Invalid Delta:" , e ) , "Invalid Delta: " + t ; } function i ( e , t ) { return t . row >= 0 && t . row < e . length && t . column >= 0 && t . column <= e [ t . row ] . length ; } function s ( e , t ) { t . action != "insert" && t . action != "remove" && r ( t , "delta.action must be 'insert' or 'remove'" ) , t . lines instanceof Array || r ( t , "delta.lines must be an Array" ) , ( ! t . start || ! t . end ) && r ( t , "delta.start/end must be an present" ) ; var n = t . start ; i ( e , t . start ) || r ( t , "delta.start must be contained in document" ) ; var s = t . end ; t . action == "remove" && ! i ( e , s ) && r ( t , "delta.end must contained in document for 'remove' actions" ) ; var o = s . row - n . row , u = s . column - ( o == 0 ? n . column : 0 ) ; ( o != t . lines . length - 1 || t . lines [ o ] . length != u ) && r ( t , "delta.range must match delta lines" ) ; } t . applyDelta = function ( e , t , n ) { var r = t . start . row , i = t . start . column , s = e [ r ] || "" ; switch ( t . action ) { case "insert" : var o = t . lines ; if ( o . length === 1 ) e [ r ] = s . substring ( 0 , i ) + t . lines [ 0 ] + s . substring ( i ) ; else { var u = [ r , 1 ] . concat ( t . lines ) ; e . splice . apply ( e , u ) , e [ r ] = s . substring ( 0 , i ) + e [ r ] , e [ r + t . lines . length - 1 ] += s . substring ( i ) ; } break ; case "remove" : var a = t . end . column , f = t . end . row ; r === f ? e [ r ] = s . substring ( 0 , i ) + s . substring ( a ) : e . splice ( r , f - r + 1 , s . substring ( 0 , i ) + e [ f ] . substring ( a ) ) ; } } ; } ) , define ( "ace/lib/event_emitter" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = { } , i = function ( ) { this . propagationStopped = ! 0 ; } , s = function ( ) { this . defaultPrevented = ! 0 ; } ; r . _emit = r . _dispatchEvent = function ( e , t ) { this . _eventRegistry || ( this . _eventRegistry = { } ) , this . _defaultHandlers || ( this . _defaultHandlers = { } ) ; var n = this . _eventRegistry [ e ] || [ ] , r = this . _defaultHandlers [ e ] ; if ( ! n . length && ! r ) return ; if ( typeof t != "object" || ! t ) t = { } ; t . type || ( t . type = e ) , t . stopPropagation || ( t . stopPropagation = i ) , t . preventDefault || ( t . preventDefault = s ) , n = n . slice ( ) ; for ( var o = 0 ; o < n . length ; o ++ ) { n [ o ] ( t , this ) ; if ( t . propagationStopped ) break ; } if ( r && ! t . defaultPrevented ) return r ( t , this ) ; } , r . _signal = function ( e , t ) { var n = ( this . _eventRegistry || { } ) [ e ] ; if ( ! n ) return ; n = n . slice ( ) ; for ( var r = 0 ; r < n . length ; r ++ ) n [ r ] ( t , this ) ; } , r . once = function ( e , t ) { var n = this ; t && this . addEventListener ( e , function r ( ) { n . removeEventListener ( e , r ) , t . apply ( null , arguments ) ; } ) ; } , r . setDefaultHandler = function ( e , t ) { var n = this . _defaultHandlers ; n || ( n = this . _defaultHandlers = { _disabled_ : { } } ) ; if ( n [ e ] ) { var r = n [ e ] , i = n . _disabled_ [ e ] ; i || ( n . _disabled_ [ e ] = i = [ ] ) , i . push ( r ) ; var s = i . indexOf ( t ) ; s != - 1 && i . splice ( s , 1 ) ; } n [ e ] = t ; } , r . removeDefaultHandler = function ( e , t ) { var n = this . _defaultHandlers ; if ( ! n ) return ; var r = n . _disabled_ [ e ] ; if ( n [ e ] == t ) { var i = n [ e ] ; r && this . setDefaultHandler ( e , r . pop ( ) ) ; } else if ( r ) { var s = r . indexOf ( t ) ; s != - 1 && r . splice ( s , 1 ) ; } } , r . on = r . addEventListener = function ( e , t , n ) { this . _eventRegistry = this . _eventRegistry || { } ; var r = this . _eventRegistry [ e ] ; return r || ( r = this . _eventRegistry [ e ] = [ ] ) , r . indexOf ( t ) == - 1 && r [ n ? "unshift" : "push" ] ( t ) , t ; } , r . off = r . removeListener = r . removeEventListener = function ( e , t ) { this . _eventRegistry = this . _eventRegistry || { } ; var n = this . _eventRegistry [ e ] ; if ( ! n ) return ; var r = n . indexOf ( t ) ; r !== - 1 && n . splice ( r , 1 ) ; } , r . removeAllListeners = function ( e ) { this . _eventRegistry && ( this . _eventRegistry [ e ] = [ ] ) ; } , t . EventEmitter = r ; } ) , define ( "ace/anchor" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/event_emitter" ] , function ( e , t , n ) { "use strict" ; var r = e ( "./lib/oop" ) , i = e ( "./lib/event_emitter" ) . EventEmitter , s = t . Anchor = function ( e , t , n ) { this . $onChange = this . onChange . bind ( this ) , this . attach ( e ) , typeof n == "undefined" ? this . setPosition ( t . row , t . column ) : this . setPosition ( t , n ) ; } ; ( function ( ) { function e ( e , t , n ) { var r = n ? e . column <= t . column : e . column < t . column ; return e . row < t . row || e . row == t . row && r ; } function t ( t , n , r ) { var i = t . action == "insert" , s = ( i ? 1 : - 1 ) * ( t . end . row - t . start . row ) , o = ( i ? 1 : - 1 ) * ( t . end . column - t . start . column ) , u = t . start , a = i ? u : t . end ; return e ( n , u , r ) ? { row : n . row , column : n . column } : e ( a , n , ! r ) ? { row : n . row + s , column : n . column + ( n . row == a . row ? o : 0 ) } : { row : u . row , column : u . column } ; } r . implement ( this , i ) , this . getPosition = function ( ) { return this . $clipPositionToDocument ( this . row , this . column ) ; } , this . getDocument = function ( ) { return this . document ; } , this . $insertRight = ! 1 , this . onChange = function ( e ) { if ( e . start . row == e . end . row && e . start . row != this . row ) return ; if ( e . start . row > this . row ) return ; var n = t ( e , { row : this . row , column : this . column } , this . $insertRight ) ; this . setPosition ( n . row , n . column , ! 0 ) ; } , this . setPosition = function ( e , t , n ) { var r ; n ? r = { row : e , column : t } : r = this . $clipPositionToDocument ( e , t ) ; if ( this . row == r . row && this . column == r . column ) return ; var i = { row : this . row , column : this . column } ; this . row = r . row , this . column = r . column , this . _signal ( "change" , { old : i , value : r } ) ; } , this . detach = function ( ) { this . document . removeEventListener ( "change" , this . $onChange ) ; } , this . attach = function ( e ) { this . document = e || this . document , this . document . on ( "change" , this . $onChange ) ; } , this . $clipPositionToDocument = function ( e , t ) { var n = { } ; return e >= this . document . getLength ( ) ? ( n . row = Math . max ( 0 , this . document . getLength ( ) - 1 ) , n . column = this . document . getLine ( n . row ) . length ) : e < 0 ? ( n . row = 0 , n . column = 0 ) : ( n . row = e , n . column = Math . min ( this . document . getLine ( n . row ) . length , Math . max ( 0 , t ) ) ) , t < 0 && ( n . column = 0 ) , n ; } ; } ) . call ( s . prototype ) ; } ) , define ( "ace/document" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/apply_delta" , "ace/lib/event_emitter" , "ace/range" , "ace/anchor" ] , function ( e , t , n ) { "use strict" ; var r = e ( "./lib/oop" ) , i = e ( "./apply_delta" ) . applyDelta , s = e ( "./lib/event_emitter" ) . EventEmitter , o = e ( "./range" ) . Range , u = e ( "./anchor" ) . Anchor , a = function ( e ) { this . $lines = [ "" ] , e . length === 0 ? this . $lines = [ "" ] : Array . isArray ( e ) ? this . insertMergedLines ( { row : 0 , column : 0 } , e ) : this . insert ( { row : 0 , column : 0 } , e ) ; } ; ( function ( ) { r . implement ( this , s ) , this . setValue = function ( e ) { var t = this . getLength ( ) - 1 ; this . remove ( new o ( 0 , 0 , t , this . getLine ( t ) . length ) ) , this . insert ( { row : 0 , column : 0 } , e ) ; } , this . getValue = function ( ) { return this . getAllLines ( ) . join ( this . getNewLineCharacter ( ) ) ; } , this . createAnchor = function ( e , t ) { return new u ( this , e , t ) ; } , "aaa" . split ( /a/ ) . length === 0 ? this . $split = function ( e ) { return e . replace ( /\r\n|\r/g , "\n" ) . split ( "\n" ) ; } : this . $split = function ( e ) { return e . split ( /\r\n|\r|\n/ ) ; } , this . $detectNewLine = function ( e ) { var t = e . match ( /^.*?(\r\n|\r|\n)/m ) ; this . $autoNewLine = t ? t [ 1 ] : "\n" , this . _signal ( "changeNewLineMode" ) ; } , this . getNewLineCharacter = function ( ) { switch ( this . $newLineMode ) { case "windows" : return "\r\n" ; case "unix" : return "\n" ; default : return this . $autoNewLine || "\n" ; } } , this . $autoNewLine = "" , this . $newLineMode = "auto" , this . setNewLineMode = function ( e ) { if ( this . $newLineMode === e ) return ; this . $newLineMode = e , this . _signal ( "changeNewLineMode" ) ; } , this . getNewLineMode = function ( ) { return this . $newLineMode ; } , this . isNewLine = function ( e ) { return e == "\r\n" || e == "\r" || e == "\n" ; } , this . getLine = function ( e ) { return this . $lines [ e ] || "" ; } , this . getLines = function ( e , t ) { return this . $lines . slice ( e , t + 1 ) ; } , this . getAllLines = function ( ) { return this . getLines ( 0 , this . getLength ( ) ) ; } , this . getLength = function ( ) { return this . $lines . length ; } , this . getTextRange = function ( e ) { return this . getLinesForRange ( e ) . join ( this . getNewLineCharacter ( ) ) ; } , this . getLinesForRange = function ( e ) { var t ; if ( e . start . row === e . end . row ) t = [ this . getLine ( e . start . row ) . substring ( e . start . column , e . end . column ) ] ; else { t = this . getLines ( e . start . row , e . end . row ) , t [ 0 ] = ( t [ 0 ] || "" ) . substring ( e . start . column ) ; var n = t . length - 1 ; e . end . row - e . start . row == n && ( t [ n ] = t [ n ] . substring ( 0 , e . end . column ) ) ; } return t ; } , this . insertLines = function ( e , t ) { return console . warn ( "Use of document.insertLines is deprecated. Use the insertFullLines method instead." ) , this . insertFullLines ( e , t ) ; } , this . removeLines = function ( e , t ) { return console . warn ( "Use of document.removeLines is deprecated. Use the removeFullLines method instead." ) , this . removeFullLines ( e , t ) ; } , this . insertNewLine = function ( e ) { return console . warn ( "Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead." ) , this . insertMergedLines ( e , [ "" , "" ] ) ; } , this . insert = function ( e , t ) { return this . getLength ( ) <= 1 && this . $detectNewLine ( t ) , this . insertMergedLines ( e , this . $split ( t ) ) ; } , this . insertInLine = function ( e , t ) { var n = this . clippedPos ( e . row , e . column ) , r = this . pos ( e . row , e . column + t . length ) ; return this . applyDelta ( { start : n , end : r , action : "insert" , lines : [ t ] } , ! 0 ) , this . clonePos ( r ) ; } , this . clippedPos = function ( e , t ) { var n = this . getLength ( ) ; e === undefined ? e = n : e < 0 ? e = 0 : e >= n && ( e = n - 1 , t = undefined ) ; var r = this . getLine ( e ) ; return t == undefined && ( t = r . length ) , t = Math . min ( Math . max ( t , 0 ) , r . length ) , { row : e , column : t } ; } , this . clonePos = function ( e ) { return { row : e . row , column : e . column } ; } , this . pos = function ( e , t ) { return { row : e , column : t } ; } , this . $clipPosition = function ( e ) { var t = this . getLength ( ) ; return e . row >= t ? ( e . row = Math . max ( 0 , t - 1 ) , e . column = this . getLine ( t - 1 ) . length ) : ( e . row = Math . max ( 0 , e . row ) , e . column = Math . min ( Math . max ( e . column , 0 ) , this . getLine ( e . row ) . length ) ) , e ; } , this . insertFullLines = function ( e , t ) { e = Math . min ( Math . max ( e , 0 ) , this . getLength ( ) ) ; var n = 0 ; e < this . getLength ( ) ? ( t = t . concat ( [ "" ] ) , n = 0 ) : ( t = [ "" ] . concat ( t ) , e -- , n = this . $lines [ e ] . length ) , this . insertMergedLines ( { row : e , column : n } , t ) ; } , this . insertMergedLines = function ( e , t ) { var n = this . clippedPos ( e . row , e . column ) , r = { row : n . row + t . length - 1 , column : ( t . length == 1 ? n . column : 0 ) + t [ t . length - 1 ] . length } ; return this . applyDelta ( { start : n , end : r , action : "insert" , lines : t } ) , this . clonePos ( r ) ; } , this . remove = function ( e ) { var t = this . clippedPos ( e . start . row , e . start . column ) , n = this . clippedPos ( e . end . row , e . end . column ) ; return this . applyDelta ( { start : t , end : n , action : "remove" , lines : this . getLinesForRange ( { start : t , end : n } ) } ) , this . clonePos ( t ) ; } , this . removeInLine = function ( e , t , n ) { var r = this . clippedPos ( e , t ) , i = this . clippedPos ( e , n ) ; return this . applyDelta ( { start : r , end : i , action : "remove" , lines : this . getLinesForRange ( { start : r , end : i } ) } , ! 0 ) , this . clonePos ( r ) ; } , this . removeFullLines = function ( e , t ) { e = Math . min ( Math . max ( 0 , e ) , this . getLength ( ) - 1 ) , t = Math . min ( Math . max ( 0 , t ) , this . getLength ( ) - 1 ) ; var n = t == this . getLength ( ) - 1 && e > 0 , r = t < this . getLength ( ) - 1 , i = n ? e - 1 : e , s = n ? this . getLine ( i ) . length : 0 , u = r ? t + 1 : t , a = r ? 0 : this . getLine ( u ) . length , f = new o ( i , s , u , a ) , l = this . $lines . slice ( e , t + 1 ) ; return this . applyDelta ( { start : f . start , end : f . end , action : "remove" , lines : this . getLinesForRange ( f ) } ) , l ; } , this . removeNewLine = function ( e ) { e < this . getLength ( ) - 1 && e >= 0 && this . applyDelta ( { start : this . pos ( e , this . getLine ( e ) . length ) , end : this . pos ( e + 1 , 0 ) , action : "remove" , lines : [ "" , "" ] } ) ; } , this . replace = function ( e , t ) { e instanceof o || ( e = o . fromPoints ( e . start , e . end ) ) ; if ( t . length === 0 && e . isEmpty ( ) ) return e . start ; if ( t == this . getTextRange ( e ) ) return e . end ; this . remove ( e ) ; var n ; return t ? n = this . insert ( e . start , t ) : n = e . start , n ; } , this . applyDeltas = function ( e ) { for ( var t = 0 ; t < e . length ; t ++ ) this . applyDelta ( e [ t ] ) ; } , this . revertDeltas = function ( e ) { for ( var t = e . length - 1 ; t >= 0 ; t -- ) this . revertDelta ( e [ t ] ) ; } , this . applyDelta = function ( e , t ) { var n = e . action == "insert" ; if ( n ? e . lines . length <= 1 && ! e . lines [ 0 ] : ! o . comparePoints ( e . start , e . end ) ) return ; n && e . lines . length > 2e4 ? this . $splitAndapplyLargeDelta ( e , 2e4 ) : ( i ( this . $lines , e , t ) , this . _signal ( "change" , e ) ) ; } , this . $splitAndapplyLargeDelta = function ( e , t ) { var n = e . lines , r = n . length - t + 1 , i = e . start . row , s = e . start . column ; for ( var o = 0 , u = 0 ; o < r ; o = u ) { u += t - 1 ; var a = n . slice ( o , u ) ; a . push ( "" ) , this . applyDelta ( { start : this . pos ( i + o , s ) , end : this . pos ( i + u , s = 0 ) , action : e . action , lines : a } , ! 0 ) ; } e . lines = n . slice ( o ) , e . start . row = i + o , e . start . column = s , this . applyDelta ( e , ! 0 ) ; } , this . revertDelta = function ( e ) { this . applyDelta ( { start : this . clonePos ( e . start ) , end : this . clonePos ( e . end ) , action : e . action == "insert" ? "remove" : "insert" , lines : e . lines . slice ( ) } ) ; } , this . indexToPosition = function ( e , t ) { var n = this . $lines || this . getAllLines ( ) , r = this . getNewLineCharacter ( ) . length ; for ( var i = t || 0 , s = n . length ; i < s ; i ++ ) { e -= n [ i ] . length + r ; if ( e < 0 ) return { row : i , column : e + n [ i ] . length + r } ; } return { row : s - 1 , column : e + n [ s - 1 ] . length + r } ; } , this . positionToIndex = function ( e , t ) { var n = this . $lines || this . getAllLines ( ) , r = this . getNewLineCharacter ( ) . length , i = 0 , s = Math . min ( e . row , n . length ) ; for ( var o = t || 0 ; o < s ; ++ o ) i += n [ o ] . length + r ; return i + e . column ; } ; } ) . call ( a . prototype ) , t . Document = a ; } ) , define ( "ace/lib/lang" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; t . last = function ( e ) { return e [ e . length - 1 ] ; } , t . stringReverse = function ( e ) { return e . split ( "" ) . reverse ( ) . join ( "" ) ; } , t . stringRepeat = function ( e , t ) { var n = "" ; while ( t > 0 ) { t & 1 && ( n += e ) ; if ( t >>= 1 ) e += e ; } return n ; } ; var r = /^\s\s*/ , i = /\s\s*$/ ; t . stringTrimLeft = function ( e ) { return e . replace ( r , "" ) ; } , t . stringTrimRight = function ( e ) { return e . replace ( i , "" ) ; } , t . copyObject = function ( e ) { var t = { } ; for ( var n in e ) t [ n ] = e [ n ] ; return t ; } , t . copyArray = function ( e ) { var t = [ ] ; for ( var n = 0 , r = e . length ; n < r ; n ++ ) e [ n ] && typeof e [ n ] == "object" ? t [ n ] = this . copyObject ( e [ n ] ) : t [ n ] = e [ n ] ; return t ; } , t . deepCopy = function s ( e ) { if ( typeof e != "object" || ! e ) return e ; var t ; if ( Array . isArray ( e ) ) { t = [ ] ; for ( var n = 0 ; n < e . length ; n ++ ) t [ n ] = s ( e [ n ] ) ; return t ; } if ( Object . prototype . toString . call ( e ) !== "[object Object]" ) return e ; t = { } ; for ( var n in e ) t [ n ] = s ( e [ n ] ) ; return t ; } , t . arrayToMap = function ( e ) { var t = { } ; for ( var n = 0 ; n < e . length ; n ++ ) t [ e [ n ] ] = 1 ; return t ; } , t . createMap = function ( e ) { var t = Object . create ( null ) ; for ( var n in e ) t [ n ] = e [ n ] ; return t ; } , t . arrayRemove = function ( e , t ) { for ( var n = 0 ; n <= e . length ; n ++ ) t === e [ n ] && e . splice ( n , 1 ) ; } , t . escapeRegExp = function ( e ) { return e . replace ( /([.*+?^${}()|[\]\/\\])/g , "\\$1" ) ; } , t . escapeHTML = function ( e ) { return e . replace ( /&/g , "&#38;" ) . replace ( /"/g , "&#34;" ) . replace ( /'/g , "&#39;" ) . replace ( /</g , "&#60;" ) ; } , t . getMatchOffsets = function ( e , t ) { var n = [ ] ; return e . replace ( t , function ( e ) { n . push ( { offset : arguments [ arguments . length - 2 ] , length : e . length } ) ; } ) , n ; } , t . deferredCall = function ( e ) { var t = null , n = function ( ) { t = null , e ( ) ; } , r = function ( e ) { return r . cancel ( ) , t = setTimeout ( n , e || 0 ) , r ; } ; return r . schedule = r , r . call = function ( ) { return this . cancel ( ) , e ( ) , r ; } , r . cancel = function ( ) { return clearTimeout ( t ) , t = null , r ; } , r . isPending = function ( ) { return t ; } , r ; } , t . delayedCall = function ( e , t ) { var n = null , r = function ( ) { n = null , e ( ) ; } , i = function ( e ) { n == null && ( n = setTimeout ( r , e || t ) ) ; } ; return i . delay = function ( e ) { n && clearTimeout ( n ) , n = setTimeout ( r , e || t ) ; } , i . schedule = i , i . call = function ( ) { this . cancel ( ) , e ( ) ; } , i . cancel = function ( ) { n && clearTimeout ( n ) , n = null ; } , i . isPending = function ( ) { return n ; } , i ; } ; } ) , define ( "ace/worker/mirror" , [ "require" , "exports" , "module" , "ace/range" , "ace/document" , "ace/lib/lang" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../range" ) . Range , i = e ( "../document" ) . Document , s = e ( "../lib/lang" ) , o = t . Mirror = function ( e ) { this . sender = e ; var t = this . doc = new i ( "" ) , n = this . deferredUpdate = s . delayedCall ( this . onUpdate . bind ( this ) ) , r = this ; e . on ( "change" , function ( e ) { var i = e . data ; if ( i [ 0 ] . start ) t . applyDeltas ( i ) ; else for ( var s = 0 ; s < i . length ; s += 2 ) { if ( Array . isArray ( i [ s + 1 ] ) ) var o = { action : "insert" , start : i [ s ] , lines : i [ s + 1 ] } ; else var o = { action : "remove" , start : i [ s ] , end : i [ s + 1 ] } ; t . applyDelta ( o , ! 0 ) ; } if ( r . $timeout ) return n . schedule ( r . $timeout ) ; r . onUpdate ( ) ; } ) ; } ; ( function ( ) { this . $timeout = 500 , this . setTimeout = function ( e ) { this . $timeout = e ; } , this . setValue = function ( e ) { this . doc . setValue ( e ) , this . deferredUpdate . schedule ( this . $timeout ) ; } , this . getValue = function ( e ) { this . sender . callback ( this . doc . getValue ( ) , e ) ; } , this . onUpdate = function ( ) { } , this . isPending = function ( ) { return this . deferredUpdate . isPending ( ) ; } ; } ) . call ( o . prototype ) ; } ) , define ( "ace/mode/json/json_parse" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r , i , s = { '"' : '"' , "\\" : "\\" , "/" : "/" , b : "\b" , f : "\f" , n : "\n" , r : "\r" , t : "	" } , o , u = function ( e ) { throw { name : "SyntaxError" , message : e , at : r , text : o } ; } , a = function ( e ) { return e && e !== i && u ( "Expected '" + e + "' instead of '" + i + "'" ) , i = o . charAt ( r ) , r += 1 , i ; } , f = function ( ) { var e , t = "" ; i === "-" && ( t = "-" , a ( "-" ) ) ; while ( i >= "0" && i <= "9" ) t += i , a ( ) ; if ( i === "." ) { t += "." ; while ( a ( ) && i >= "0" && i <= "9" ) t += i ; } if ( i === "e" || i === "E" ) { t += i , a ( ) ; if ( i === "-" || i === "+" ) t += i , a ( ) ; while ( i >= "0" && i <= "9" ) t += i , a ( ) ; } e = + t ; if ( ! isNaN ( e ) ) return e ; u ( "Bad number" ) ; } , l = function ( ) { var e , t , n = "" , r ; if ( i === '"' ) while ( a ( ) ) { if ( i === '"' ) return a ( ) , n ; if ( i === "\\" ) { a ( ) ; if ( i === "u" ) { r = 0 ; for ( t = 0 ; t < 4 ; t += 1 ) { e = parseInt ( a ( ) , 16 ) ; if ( ! isFinite ( e ) ) break ; r = r * 16 + e ; } n += String . fromCharCode ( r ) ; } else { if ( typeof s [ i ] != "string" ) break ; n += s [ i ] ; } } else { if ( i == "\n" || i == "\r" ) break ; n += i ; } } u ( "Bad string" ) ; } , c = function ( ) { while ( i && i <= " " ) a ( ) ; } , h = function ( ) { switch ( i ) { case "t" : return a ( "t" ) , a ( "r" ) , a ( "u" ) , a ( "e" ) , ! 0 ; case "f" : return a ( "f" ) , a ( "a" ) , a ( "l" ) , a ( "s" ) , a ( "e" ) , ! 1 ; case "n" : return a ( "n" ) , a ( "u" ) , a ( "l" ) , a ( "l" ) , null ; } u ( "Unexpected '" + i + "'" ) ; } , p , d = function ( ) { var e = [ ] ; if ( i === "[" ) { a ( "[" ) , c ( ) ; if ( i === "]" ) return a ( "]" ) , e ; while ( i ) { e . push ( p ( ) ) , c ( ) ; if ( i === "]" ) return a ( "]" ) , e ; a ( "," ) , c ( ) ; } } u ( "Bad array" ) ; } , v = function ( ) { var e , t = { } ; if ( i === "{" ) { a ( "{" ) , c ( ) ; if ( i === "}" ) return a ( "}" ) , t ; while ( i ) { e = l ( ) , c ( ) , a ( ":" ) , Object . hasOwnProperty . call ( t , e ) && u ( 'Duplicate key "' + e + '"' ) , t [ e ] = p ( ) , c ( ) ; if ( i === "}" ) return a ( "}" ) , t ; a ( "," ) , c ( ) ; } } u ( "Bad object" ) ; } ; return p = function ( ) { c ( ) ; switch ( i ) { case "{" : return v ( ) ; case "[" : return d ( ) ; case '"' : return l ( ) ; case "-" : return f ( ) ; default : return i >= "0" && i <= "9" ? f ( ) : h ( ) ; } } , function ( e , t ) { var n ; return o = e , r = 0 , i = " " , n = p ( ) , c ( ) , i && u ( "Syntax error" ) , typeof t == "function" ? function s ( e , n ) { var r , i , o = e [ n ] ; if ( o && typeof o == "object" ) for ( r in o ) Object . hasOwnProperty . call ( o , r ) && ( i = s ( o , r ) , i !== undefined ? o [ r ] = i : delete o [ r ] ) ; return t . call ( e , n , o ) ; } ( { "" : n } , "" ) : n ; } ; } ) , define ( "ace/mode/json_worker" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/worker/mirror" , "ace/mode/json/json_parse" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/oop" ) , i = e ( "../worker/mirror" ) . Mirror , s = e ( "./json/json_parse" ) , o = t . JsonWorker = function ( e ) { i . call ( this , e ) , this . setTimeout ( 200 ) ; } ; r . inherits ( o , i ) , function ( ) { this . onUpdate = function ( ) { var e = this . doc . getValue ( ) , t = [ ] ; try { e && s ( e ) ; } catch ( n ) { var r = this . doc . indexToPosition ( n . at - 1 ) ; t . push ( { row : r . row , column : r . column , text : n . message , type : "error" } ) ; } this . sender . emit ( "annotate" , t ) ; } ; } . call ( o . prototype ) ; } ) , define ( "ace/lib/es5-shim" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { function r ( ) { } function w ( e ) { try { return Object . defineProperty ( e , "sentinel" , { } ) , "sentinel" in e ; } catch ( t ) { } } function H ( e ) { return e = + e , e !== e ? e = 0 : e !== 0 && e !== 1 / 0 && e !== - 1 / 0 && ( e = ( e > 0 || - 1 ) * Math . floor ( Math . abs ( e ) ) ) , e ; } function B ( e ) { var t = typeof e ; return e === null || t === "undefined" || t === "boolean" || t === "number" || t === "string" ; } function j ( e ) { var t , n , r ; if ( B ( e ) ) return e ; n = e . valueOf ; if ( typeof n == "function" ) { t = n . call ( e ) ; if ( B ( t ) ) return t ; } r = e . toString ; if ( typeof r == "function" ) { t = r . call ( e ) ; if ( B ( t ) ) return t ; } throw new TypeError ; } Function . prototype . bind || ( Function . prototype . bind = function ( t ) { var n = this ; if ( typeof n != "function" ) throw new TypeError ( "Function.prototype.bind called on incompatible " + n ) ; var i = u . call ( arguments , 1 ) , s = function ( ) { if ( this instanceof s ) { var e = n . apply ( this , i . concat ( u . call ( arguments ) ) ) ; return Object ( e ) === e ? e : this ; } return n . apply ( t , i . concat ( u . call ( arguments ) ) ) ; } ; return n . prototype && ( r . prototype = n . prototype , s . prototype = new r , r . prototype = null ) , s ; } ) ; var i = Function . prototype . call , s = Array . prototype , o = Object . prototype , u = s . slice , a = i . bind ( o . toString ) , f = i . bind ( o . hasOwnProperty ) , l , c , h , p , d ; if ( d = f ( o , "__defineGetter__" ) ) l = i . bind ( o . __defineGetter__ ) , c = i . bind ( o . __defineSetter__ ) , h = i . bind ( o . __lookupGetter__ ) , p = i . bind ( o . __lookupSetter__ ) ; if ( [ 1 , 2 ] . splice ( 0 ) . length != 2 ) if ( ! function ( ) { function e ( e ) { var t = new Array ( e + 2 ) ; return t [ 0 ] = t [ 1 ] = 0 , t ; } var t = [ ] , n ; t . splice . apply ( t , e ( 20 ) ) , t . splice . apply ( t , e ( 26 ) ) , n = t . length , t . splice ( 5 , 0 , "XXX" ) , n + 1 == t . length ; if ( n + 1 == t . length ) return ! 0 ; } ( ) ) Array . prototype . splice = function ( e , t ) { var n = this . length ; e > 0 ? e > n && ( e = n ) : e == void 0 ? e = 0 : e < 0 && ( e = Math . max ( n + e , 0 ) ) , e + t < n || ( t = n - e ) ; var r = this . slice ( e , e + t ) , i = u . call ( arguments , 2 ) , s = i . length ; if ( e === n ) s && this . push . apply ( this , i ) ; else { var o = Math . min ( t , n - e ) , a = e + o , f = a + s - o , l = n - a , c = n - o ; if ( f < a ) for ( var h = 0 ; h < l ; ++ h ) this [ f + h ] = this [ a + h ] ; else if ( f > a ) for ( h = l ; h -- ; ) this [ f + h ] = this [ a + h ] ; if ( s && e === c ) this . length = c , this . push . apply ( this , i ) ; else { this . length = c + s ; for ( h = 0 ; h < s ; ++ h ) this [ e + h ] = i [ h ] ; } } return r ; } ; else { var v = Array . prototype . splice ; Array . prototype . splice = function ( e , t ) { return arguments . length ? v . apply ( this , [ e === void 0 ? 0 : e , t === void 0 ? this . length - e : t ] . concat ( u . call ( arguments , 2 ) ) ) : [ ] ; } ; } Array . isArray || ( Array . isArray = function ( t ) { return a ( t ) == "[object Array]" ; } ) ; var m = Object ( "a" ) , g = m [ 0 ] != "a" || ! ( 0 in m ) ; Array . prototype . forEach || ( Array . prototype . forEach = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = arguments [ 1 ] , s = - 1 , o = r . length >>> 0 ; if ( a ( t ) != "[object Function]" ) throw new TypeError ; while ( ++ s < o ) s in r && t . call ( i , r [ s ] , s , n ) ; } ) , Array . prototype . map || ( Array . prototype . map = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = r . length >>> 0 , s = Array ( i ) , o = arguments [ 1 ] ; if ( a ( t ) != "[object Function]" ) throw new TypeError ( t + " is not a function" ) ; for ( var u = 0 ; u < i ; u ++ ) u in r && ( s [ u ] = t . call ( o , r [ u ] , u , n ) ) ; return s ; } ) , Array . prototype . filter || ( Array . prototype . filter = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = r . length >>> 0 , s = [ ] , o , u = arguments [ 1 ] ; if ( a ( t ) != "[object Function]" ) throw new TypeError ( t + " is not a function" ) ; for ( var f = 0 ; f < i ; f ++ ) f in r && ( o = r [ f ] , t . call ( u , o , f , n ) && s . push ( o ) ) ; return s ; } ) , Array . prototype . every || ( Array . prototype . every = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = r . length >>> 0 , s = arguments [ 1 ] ; if ( a ( t ) != "[object Function]" ) throw new TypeError ( t + " is not a function" ) ; for ( var o = 0 ; o < i ; o ++ ) if ( o in r && ! t . call ( s , r [ o ] , o , n ) ) return ! 1 ; return ! 0 ; } ) , Array . prototype . some || ( Array . prototype . some = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = r . length >>> 0 , s = arguments [ 1 ] ; if ( a ( t ) != "[object Function]" ) throw new TypeError ( t + " is not a function" ) ; for ( var o = 0 ; o < i ; o ++ ) if ( o in r && t . call ( s , r [ o ] , o , n ) ) return ! 0 ; return ! 1 ; } ) , Array . prototype . reduce || ( Array . prototype . reduce = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = r . length >>> 0 ; if ( a ( t ) != "[object Function]" ) throw new TypeError ( t + " is not a function" ) ; if ( ! i && arguments . length == 1 ) throw new TypeError ( "reduce of empty array with no initial value" ) ; var s = 0 , o ; if ( arguments . length >= 2 ) o = arguments [ 1 ] ; else do { if ( s in r ) { o = r [ s ++ ] ; break ; } if ( ++ s >= i ) throw new TypeError ( "reduce of empty array with no initial value" ) ; } while ( ! 0 ) ; for ( ; s < i ; s ++ ) s in r && ( o = t . call ( void 0 , o , r [ s ] , s , n ) ) ; return o ; } ) , Array . prototype . reduceRight || ( Array . prototype . reduceRight = function ( t ) { var n = F ( this ) , r = g && a ( this ) == "[object String]" ? this . split ( "" ) : n , i = r . length >>> 0 ; if ( a ( t ) != "[object Function]" ) throw new TypeError ( t + " is not a function" ) ; if ( ! i && arguments . length == 1 ) throw new TypeError ( "reduceRight of empty array with no initial value" ) ; var s , o = i - 1 ; if ( arguments . length >= 2 ) s = arguments [ 1 ] ; else do { if ( o in r ) { s = r [ o -- ] ; break ; } if ( -- o < 0 ) throw new TypeError ( "reduceRight of empty array with no initial value" ) ; } while ( ! 0 ) ; do o in this && ( s = t . call ( void 0 , s , r [ o ] , o , n ) ) ; while ( o -- ) ; return s ; } ) ; if ( ! Array . prototype . indexOf || [ 0 , 1 ] . indexOf ( 1 , 2 ) != - 1 ) Array . prototype . indexOf = function ( t ) { var n = g && a ( this ) == "[object String]" ? this . split ( "" ) : F ( this ) , r = n . length >>> 0 ; if ( ! r ) return - 1 ; var i = 0 ; arguments . length > 1 && ( i = H ( arguments [ 1 ] ) ) , i = i >= 0 ? i : Math . max ( 0 , r + i ) ; for ( ; i < r ; i ++ ) if ( i in n && n [ i ] === t ) return i ; return - 1 ; } ; if ( ! Array . prototype . lastIndexOf || [ 0 , 1 ] . lastIndexOf ( 0 , - 3 ) != - 1 ) Array . prototype . lastIndexOf = function ( t ) { var n = g && a ( this ) == "[object String]" ? this . split ( "" ) : F ( this ) , r = n . length >>> 0 ; if ( ! r ) return - 1 ; var i = r - 1 ; arguments . length > 1 && ( i = Math . min ( i , H ( arguments [ 1 ] ) ) ) , i = i >= 0 ? i : r - Math . abs ( i ) ; for ( ; i >= 0 ; i -- ) if ( i in n && t === n [ i ] ) return i ; return - 1 ; } ; Object . getPrototypeOf || ( Object . getPrototypeOf = function ( t ) { return t . __proto__ || ( t . constructor ? t . constructor . prototype : o ) ; } ) ; if ( ! Object . getOwnPropertyDescriptor ) { var y = "Object.getOwnPropertyDescriptor called on a non-object: " ; Object . getOwnPropertyDescriptor = function ( t , n ) { if ( typeof t != "object" && typeof t != "function" || t === null ) throw new TypeError ( y + t ) ; if ( ! f ( t , n ) ) return ; var r , i , s ; r = { enumerable : ! 0 , configurable : ! 0 } ; if ( d ) { var u = t . __proto__ ; t . __proto__ = o ; var i = h ( t , n ) , s = p ( t , n ) ; t . __proto__ = u ; if ( i || s ) return i && ( r . get = i ) , s && ( r . set = s ) , r ; } return r . value = t [ n ] , r ; } ; } Object . getOwnPropertyNames || ( Object . getOwnPropertyNames = function ( t ) { return Object . keys ( t ) ; } ) ; if ( ! Object . create ) { var b ; Object . prototype . __proto__ === null ? b = function ( ) { return { __proto__ : null } ; } : b = function ( ) { var e = { } ; for ( var t in e ) e [ t ] = null ; return e . constructor = e . hasOwnProperty = e . propertyIsEnumerable = e . isPrototypeOf = e . toLocaleString = e . toString = e . valueOf = e . __proto__ = null , e ; } , Object . create = function ( t , n ) { var r ; if ( t === null ) r = b ( ) ; else { if ( typeof t != "object" ) throw new TypeError ( "typeof prototype[" + typeof t + "] != 'object'" ) ; var i = function ( ) { } ; i . prototype = t , r = new i , r . __proto__ = t ; } return n !== void 0 && Object . defineProperties ( r , n ) , r ; } ; } if ( Object . defineProperty ) { var E = w ( { } ) , S = typeof document == "undefined" || w ( document . createElement ( "div" ) ) ; if ( ! E || ! S ) var x = Object . defineProperty ; } if ( ! Object . defineProperty || x ) { var T = "Property description must be an object: " , N = "Object.defineProperty called on non-object: " , C = "getters & setters can not be defined on this javascript engine" ; Object . defineProperty = function ( t , n , r ) { if ( typeof t != "object" && typeof t != "function" || t === null ) throw new TypeError ( N + t ) ; if ( typeof r != "object" && typeof r != "function" || r === null ) throw new TypeError ( T + r ) ; if ( x ) try { return x . call ( Object , t , n , r ) ; } catch ( i ) { } if ( f ( r , "value" ) ) if ( d && ( h ( t , n ) || p ( t , n ) ) ) { var s = t . __proto__ ; t . __proto__ = o , delete t [ n ] , t [ n ] = r . value , t . __proto__ = s ; } else t [ n ] = r . value ; else { if ( ! d ) throw new TypeError ( C ) ; f ( r , "get" ) && l ( t , n , r . get ) , f ( r , "set" ) && c ( t , n , r . set ) ; } return t ; } ; } Object . defineProperties || ( Object . defineProperties = function ( t , n ) { for ( var r in n ) f ( n , r ) && Object . defineProperty ( t , r , n [ r ] ) ; return t ; } ) , Object . seal || ( Object . seal = function ( t ) { return t ; } ) , Object . freeze || ( Object . freeze = function ( t ) { return t ; } ) ; try { Object . freeze ( function ( ) { } ) ; } catch ( k ) { Object . freeze = function ( t ) { return function ( n ) { return typeof n == "function" ? n : t ( n ) ; } ; } ( Object . freeze ) ; } Object . preventExtensions || ( Object . preventExtensions = function ( t ) { return t ; } ) , Object . isSealed || ( Object . isSealed = function ( t ) { return ! 1 ; } ) , Object . isFrozen || ( Object . isFrozen = function ( t ) { return ! 1 ; } ) , Object . isExtensible || ( Object . isExtensible = function ( t ) { if ( Object ( t ) === t ) throw new TypeError ; var n = "" ; while ( f ( t , n ) ) n += "?" ; t [ n ] = ! 0 ; var r = f ( t , n ) ; return delete t [ n ] , r ; } ) ; if ( ! Object . keys ) { var L = ! 0 , A = [ "toString" , "toLocaleString" , "valueOf" , "hasOwnProperty" , "isPrototypeOf" , "propertyIsEnumerable" , "constructor" ] , O = A . length ; for ( var M in { toString : null } ) L = ! 1 ; Object . keys = function I ( e ) { if ( typeof e != "object" && typeof e != "function" || e === null ) throw new TypeError ( "Object.keys called on a non-object" ) ; var I = [ ] ; for ( var t in e ) f ( e , t ) && I . push ( t ) ; if ( L ) for ( var n = 0 , r = O ; n < r ; n ++ ) { var i = A [ n ] ; f ( e , i ) && I . push ( i ) ; } return I ; } ; } Date . now || ( Date . now = function ( ) { return ( new Date ) . getTime ( ) ; } ) ; var _ = "	\n\x0b\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff" ; if ( ! String . prototype . trim || _ . trim ( ) ) { _ = "[" + _ + "]" ; var D = new RegExp ( "^" + _ + _ + "*" ) , P = new RegExp ( _ + _ + "*$" ) ; String . prototype . trim = function ( ) { return String ( this ) . replace ( D , "" ) . replace ( P , "" ) ; } ; } var F = function ( e ) { if ( e == null ) throw new TypeError ( "can't convert " + e + " to object" ) ; return Object ( e ) ; } ; } ) ;