! function ( f ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = f ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , f ) ; else { var g ; g = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , g . io = f ( ) } } ( function ( ) { var define ; return function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = "function" == typeof require && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; var f = new Error ( "Cannot find module '" + o + "'" ) ; throw f . code = "MODULE_NOT_FOUND" , f } var l = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( l . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , l , l . exports , e , t , n , r ) } return n [ o ] . exports } for ( var i = "function" == typeof require && require , o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ( { 1 : [ function ( _dereq _ , module , exports ) { function lookup ( uri , opts ) { "object" == typeof uri && ( opts = uri , uri = void 0 ) , opts = opts || { } ; var io , parsed = url ( uri ) , source = parsed . source , id = parsed . id , path = parsed . path , sameNamespace = cache [ id ] && path in cache [ id ] . nsps , newConnection = opts . forceNew || opts [ "force new connection" ] || ! 1 === opts . multiplex || sameNamespace ; return newConnection ? ( debug ( "ignoring socket cache for %s" , source ) , io = Manager ( source , opts ) ) : ( cache [ id ] || ( debug ( "new io instance for %s" , source ) , cache [ id ] = Manager ( source , opts ) ) , io = cache [ id ] ) , io . socket ( parsed . path ) } var url = _dereq _ ( "./url" ) , parser = _dereq _ ( "socket.io-parser" ) , Manager = _dereq _ ( "./manager" ) , debug = _dereq _ ( "debug" ) ( "socket.io-client" ) ; module . exports = exports = lookup ; var cache = exports . managers = { } ; exports . protocol = parser . protocol , exports . connect = lookup , exports . Manager = _dereq _ ( "./manager" ) , exports . Socket = _dereq _ ( "./socket" ) } , { "./manager" : 2 , "./socket" : 4 , "./url" : 5 , debug : 14 , "socket.io-parser" : 40 } ] , 2 : [ function ( _dereq _ , module , exports ) { function Manager ( uri , opts ) { return this instanceof Manager ? ( uri && "object" == typeof uri && ( opts = uri , uri = void 0 ) , opts = opts || { } , opts . path = opts . path || "/socket.io" , this . nsps = { } , this . subs = [ ] , this . opts = opts , this . reconnection ( opts . reconnection !== ! 1 ) , this . reconnectionAttempts ( opts . reconnectionAttempts || 1 / 0 ) , this . reconnectionDelay ( opts . reconnectionDelay || 1e3 ) , this . reconnectionDelayMax ( opts . reconnectionDelayMax || 5e3 ) , this . randomizationFactor ( opts . randomizationFactor || . 5 ) , this . backoff = new Backoff ( { min : this . reconnectionDelay ( ) , max : this . reconnectionDelayMax ( ) , jitter : this . randomizationFactor ( ) } ) , this . timeout ( null == opts . timeout ? 2e4 : opts . timeout ) , this . readyState = "closed" , this . uri = uri , this . connecting = [ ] , this . lastPing = null , this . encoding = ! 1 , this . packetBuffer = [ ] , this . encoder = new parser . Encoder , this . decoder = new parser . Decoder , this . autoConnect = opts . autoConnect !== ! 1 , void ( this . autoConnect && this . open ( ) ) ) : new Manager ( uri , opts ) } var eio = _dereq _ ( "engine.io-client" ) , Socket = _dereq _ ( "./socket" ) , Emitter = _dereq _ ( "component-emitter" ) , parser = _dereq _ ( "socket.io-parser" ) , on = _dereq _ ( "./on" ) , bind = _dereq _ ( "component-bind" ) , debug = _dereq _ ( "debug" ) ( "socket.io-client:manager" ) , indexOf = _dereq _ ( "indexof" ) , Backoff = _dereq _ ( "backo2" ) , has = Object . prototype . hasOwnProperty ; module . exports = Manager , Manager . prototype . emitAll = function ( ) { this . emit . apply ( this , arguments ) ; for ( var nsp in this . nsps ) has . call ( this . nsps , nsp ) && this . nsps [ nsp ] . emit . apply ( this . nsps [ nsp ] , arguments ) } , Manager . prototype . updateSocketIds = function ( ) { for ( var nsp in this . nsps ) has . call ( this . nsps , nsp ) && ( this . nsps [ nsp ] . id = this . engine . id ) } , Emitter ( Manager . prototype ) , Manager . prototype . reconnection = function ( v ) { return arguments . length ? ( this . _reconnection = ! ! v , this ) : this . _reconnection } , Manager . prototype . reconnectionAttempts = function ( v ) { return arguments . length ? ( this . _reconnectionAttempts = v , this ) : this . _reconnectionAttempts } , Manager . prototype . reconnectionDelay = function ( v ) { return arguments . length ? ( this . _reconnectionDelay = v , this . backoff && this . backoff . setMin ( v ) , this ) : this . _reconnectionDelay } , Manager . prototype . randomizationFactor = function ( v ) { return arguments . length ? ( this . _randomizationFactor = v , this . backoff && this . backoff . setJitter ( v ) , this ) : this . _randomizationFactor } , Manager . prototype . reconnectionDelayMax = function ( v ) { return arguments . length ? ( this . _reconnectionDelayMax = v , this . backoff && this . backoff . setMax ( v ) , this ) : this . _reconnectionDelayMax } , Manager . proto
this . onError ( err ) ; break ; case "message" : this . emit ( "data" , packet . data ) , this . emit ( "message" , packet . data ) } else debug ( 'packet received with socket readyState "%s"' , this . readyState ) } , Socket . prototype . onHandshake = function ( data ) { this . emit ( "handshake" , data ) , this . id = data . sid , this . transport . query . sid = data . sid , this . upgrades = this . filterUpgrades ( data . upgrades ) , this . pingInterval = data . pingInterval , this . pingTimeout = data . pingTimeout , this . onOpen ( ) , "closed" != this . readyState && ( this . setPing ( ) , this . removeListener ( "heartbeat" , this . onHeartbeat ) , this . on ( "heartbeat" , this . onHeartbeat ) ) } , Socket . prototype . onHeartbeat = function ( timeout ) { clearTimeout ( this . pingTimeoutTimer ) ; var self = this ; self . pingTimeoutTimer = setTimeout ( function ( ) { "closed" != self . readyState && self . onClose ( "ping timeout" ) } , timeout || self . pingInterval + self . pingTimeout ) } , Socket . prototype . setPing = function ( ) { var self = this ; clearTimeout ( self . pingIntervalTimer ) , self . pingIntervalTimer = setTimeout ( function ( ) { debug ( "writing ping packet - expecting pong within %sms" , self . pingTimeout ) , self . ping ( ) , self . onHeartbeat ( self . pingTimeout ) } , self . pingInterval ) } , Socket . prototype . ping = function ( ) { var self = this ; this . sendPacket ( "ping" , function ( ) { self . emit ( "ping" ) } ) } , Socket . prototype . onDrain = function ( ) { this . writeBuffer . splice ( 0 , this . prevBufferLen ) , this . prevBufferLen = 0 , 0 === this . writeBuffer . length ? this . emit ( "drain" ) : this . flush ( ) } , Socket . prototype . flush = function ( ) { "closed" != this . readyState && this . transport . writable && ! this . upgrading && this . writeBuffer . length && ( debug ( "flushing %d packets in socket" , this . writeBuffer . length ) , this . transport . send ( this . writeBuffer ) , this . prevBufferLen = this . writeBuffer . length , this . emit ( "flush" ) ) } , Socket . prototype . write = Socket . prototype . send = function ( msg , options , fn ) { return this . sendPacket ( "message" , msg , options , fn ) , this } , Socket . prototype . sendPacket = function ( type , data , options , fn ) { if ( "function" == typeof data && ( fn = data , data = void 0 ) , "function" == typeof options && ( fn = options , options = null ) , "closing" != this . readyState && "closed" != this . readyState ) { options = options || { } , options . compress = ! 1 !== options . compress ; var packet = { type : type , data : data , options : options } ; this . emit ( "packetCreate" , packet ) , this . writeBuffer . push ( packet ) , fn && this . once ( "flush" , fn ) , this . flush ( ) } } , Socket . prototype . close = function ( ) { function close ( ) { self . onClose ( "forced close" ) , debug ( "socket closing - telling transport to close" ) , self . transport . close ( ) } function cleanupAndClose ( ) { self . removeListener ( "upgrade" , cleanupAndClose ) , self . removeListener ( "upgradeError" , cleanupAndClose ) , close ( ) } function waitForUpgrade ( ) { self . once ( "upgrade" , cleanupAndClose ) , self . once ( "upgradeError" , cleanupAndClose ) } if ( "opening" == this . readyState || "open" == this . readyState ) { this . readyState = "closing" ; var self = this ; this . writeBuffer . length ? this . once ( "drain" , function ( ) { this . upgrading ? waitForUpgrade ( ) : close ( ) } ) : this . upgrading ? waitForUpgrade ( ) : close ( ) } return this } , Socket . prototype . onError = function ( err ) { debug ( "socket error %j" , err ) , Socket . priorWebsocketSuccess = ! 1 , this . emit ( "error" , err ) , this . onClose ( "transport error" , err ) } , Socket . prototype . onClose = function ( reason , desc ) { if ( "opening" == this . readyState || "open" == this . readyState || "closing" == this . readyState ) { debug ( 'socket close with reason: "%s"' , reason ) ; var self = this ; clearTimeout ( this . pingIntervalTimer ) , clearTimeout ( this . pingTimeoutTimer ) , this . transport . removeAllListeners ( "close" ) , this . transport . close ( ) , this . transport . removeAllListeners ( ) , this . readyState = "closed" , this . id = null , this . emit ( "close" , reason , desc ) , self . writeBuffer = [ ] , self . prevBufferLen = 0 } } , Socket . prototype . filterUpgrades = function ( upgrades ) { for ( var filteredUpgrades = [ ] , i = 0 , j = upgrades . length ; i < j ; i ++ ) ~ index ( this . transports , upgrades [ i ] ) && filteredUpgrades . push ( upgrades [ i ] ) ; return filteredUpgrades } } ) . call ( this , "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : { } ) } , { "./transport" : 19 , "./transports" : 20 , "component-emitter" : 26 , debug : 14 , "engine.io-parser" : 27 , indexof : 32 , parsejson : 36 , parseqs : 37 , parseuri : 38 } ] , 19 : [ function ( _dereq _ , module , exports ) { function Transport ( opts ) { this . path = opts . path , this . hostname = opts . hostname , this . port = opts . port , this . secure = opts . secure , this
function _hasBinary ( obj ) { if ( ! obj ) return ! 1 ; if ( global . Buffer && global . Buffer . isBuffer ( obj ) || global . ArrayBuffer && obj instanceof ArrayBuffer || global . Blob && obj instanceof Blob || global . File && obj instanceof File ) return ! 0 ; if ( isArray ( obj ) ) { for ( var i = 0 ; i < obj . length ; i ++ ) if ( _hasBinary ( obj [ i ] ) ) return ! 0 } else if ( obj && "object" == typeof obj ) { obj . toJSON && ( obj = obj . toJSON ( ) ) ; for ( var key in obj ) if ( Object . prototype . hasOwnProperty . call ( obj , key ) && _hasBinary ( obj [ key ] ) ) return ! 0 } return ! 1 } return _hasBinary ( data ) } var isArray = _dereq _ ( "isarray" ) ; module . exports = hasBinary } ) . call ( this , "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : { } ) } , { isarray : 33 } ] , 30 : [ function ( _dereq _ , module , exports ) { ( function ( global ) { function hasBinary ( data ) { function _hasBinary ( obj ) { if ( ! obj ) return ! 1 ; if ( global . Buffer && global . Buffer . isBuffer && global . Buffer . isBuffer ( obj ) || global . ArrayBuffer && obj instanceof ArrayBuffer || global . Blob && obj instanceof Blob || global . File && obj instanceof File ) return ! 0 ; if ( isArray ( obj ) ) { for ( var i = 0 ; i < obj . length ; i ++ ) if ( _hasBinary ( obj [ i ] ) ) return ! 0 } else if ( obj && "object" == typeof obj ) { obj . toJSON && "function" == typeof obj . toJSON && ( obj = obj . toJSON ( ) ) ; for ( var key in obj ) if ( Object . prototype . hasOwnProperty . call ( obj , key ) && _hasBinary ( obj [ key ] ) ) return ! 0 } return ! 1 } return _hasBinary ( data ) } var isArray = _dereq _ ( "isarray" ) ; module . exports = hasBinary } ) . call ( this , "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : { } ) } , { isarray : 33 } ] , 31 : [ function ( _dereq _ , module , exports ) { try { module . exports = "undefined" != typeof XMLHttpRequest && "withCredentials" in new XMLHttpRequest } catch ( err ) { module . exports = ! 1 } } , { } ] , 32 : [ function ( _dereq _ , module , exports ) { var indexOf = [ ] . indexOf ; module . exports = function ( arr , obj ) { if ( indexOf ) return arr . indexOf ( obj ) ; for ( var i = 0 ; i < arr . length ; ++ i ) if ( arr [ i ] === obj ) return i ; return - 1 } } , { } ] , 33 : [ function ( _dereq _ , module , exports ) { module . exports = Array . isArray || function ( arr ) { return "[object Array]" == Object . prototype . toString . call ( arr ) } } , { } ] , 34 : [ function ( _dereq _ , module , exports ) { ( function ( global ) { ( function ( ) { function runInContext ( context , exports ) { function has ( name ) { if ( has [ name ] !== undef ) return has [ name ] ; var isSupported ; if ( "bug-string-char-index" == name ) isSupported = "a" != "a" [ 0 ] ; else if ( "json" == name ) isSupported = has ( "json-stringify" ) && has ( "json-parse" ) ; else { var value , serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}' ; if ( "json-stringify" == name ) { var stringify = exports . stringify , stringifySupported = "function" == typeof stringify && isExtended ; if ( stringifySupported ) { ( value = function ( ) { return 1 } ) . toJSON = value ; try { stringifySupported = "0" === stringify ( 0 ) && "0" === stringify ( new Number ) && '""' == stringify ( new String ) && stringify ( getClass ) === undef && stringify ( undef ) === undef && stringify ( ) === undef && "1" === stringify ( value ) && "[1]" == stringify ( [ value ] ) && "[null]" == stringify ( [ undef ] ) && "null" == stringify ( null ) && "[null,null,null]" == stringify ( [ undef , getClass , null ] ) && stringify ( { a : [ value , ! 0 , ! 1 , null , "\0\b\n\f\r\t" ] } ) == serialized && "1" === stringify ( null , value ) && "[\n 1,\n 2\n]" == stringify ( [ 1 , 2 ] , null , 1 ) && '"-271821-04-20T00:00:00.000Z"' == stringify ( new Date ( ( - 864e13 ) ) ) && '"+275760-09-13T00:00:00.000Z"' == stringify ( new Date ( 864e13 ) ) && '"-000001-01-01T00:00:00.000Z"' == stringify ( new Date ( ( - 621987552e5 ) ) ) && '"1969-12-31T23:59:59.999Z"' == stringify ( new Date ( ( - 1 ) ) ) } catch ( exception ) { stringifySupported = ! 1 } } isSupported = stringifySupported } if ( "json-parse" == name ) { var parse = exports . parse ; if ( "function" == typeof parse ) try { if ( 0 === parse ( "0" ) && ! parse ( ! 1 ) ) { value = parse ( serialized ) ; var parseSupported = 5 == value . a . length && 1 === value . a [ 0 ] ; if ( parseSupported ) { try { parseSupported = ! parse ( '"\t"' ) } catch ( exception ) { } if ( parseSupported ) try { parseSupported = 1 !== parse ( "01" ) } catch ( exception ) { } if ( parseSupported ) try { parseSupported = 1 !== parse ( "1." ) } catch ( exception ) { } } } } catch ( exception ) { parseSupported = ! 1 } isSupported = parseSupported } } return has [ name ] = ! ! isSupported } context || ( context = root . Object ( ) ) , exports || ( exports = root . Object ( ) ) ; var Number = context . Number || root . Number , String = context . String || root . String , Object = context . Object || root . Object , Date = context . Date || root . Date , SyntaxError = context . SyntaxError || roo
k /= f , r . style ( a , b , k + j ) ; while ( f !== ( f = h ( ) / i ) && 1 !== f && -- g ) } return c && ( k = + k || + i || 0 , e = c [ 1 ] ? k + ( c [ 1 ] + 1 ) * c [ 2 ] : + c [ 2 ] , d && ( d . unit = j , d . start = k , d . end = e ) ) , e } function fa ( a ) { var b , c = a . ownerDocument , d = a . nodeName , e = ea [ d ] ; return e ? e : ( b = c . body . appendChild ( c . createElement ( d ) ) , e = r . css ( b , "display" ) , b . parentNode . removeChild ( b ) , "none" === e && ( e = "block" ) , ea [ d ] = e , e ) } function ga ( a , b ) { for ( var c , d , e = [ ] , f = 0 , g = a . length ; f < g ; f ++ ) d = a [ f ] , d . style && ( c = d . style . display , b ? ( "none" === c && ( e [ f ] = V . get ( d , "display" ) || null , e [ f ] || ( d . style . display = "" ) ) , "" === d . style . display && ba ( d ) && ( e [ f ] = fa ( d ) ) ) : "none" !== c && ( e [ f ] = "none" , V . set ( d , "display" , c ) ) ) ; for ( f = 0 ; f < g ; f ++ ) null != e [ f ] && ( a [ f ] . style . display = e [ f ] ) ; return a } function la ( a , b ) { var c = "undefined" != typeof a . getElementsByTagName ? a . getElementsByTagName ( b || "*" ) : "undefined" != typeof a . querySelectorAll ? a . querySelectorAll ( b || "*" ) : [ ] ; return void 0 === b || b && r . nodeName ( a , b ) ? r . merge ( [ a ] , c ) : c } function ma ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; c ++ ) V . set ( a [ c ] , "globalEval" , ! b || V . get ( b [ c ] , "globalEval" ) ) } function oa ( a , b , c , d , e ) { for ( var f , g , h , i , j , k , l = b . createDocumentFragment ( ) , m = [ ] , n = 0 , o = a . length ; n < o ; n ++ ) if ( f = a [ n ] , f || 0 === f ) if ( "object" === r . type ( f ) ) r . merge ( m , f . nodeType ? [ f ] : f ) ; else if ( na . test ( f ) ) { for ( g = g || l . appendChild ( b . createElement ( "div" ) ) , h = ( ia . exec ( f ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) , i = ka [ h ] || ka . _default , g . innerHTML = i [ 1 ] + r . htmlPrefilter ( f ) + i [ 2 ] , k = i [ 0 ] ; k -- ; ) g = g . lastChild ; r . merge ( m , g . childNodes ) , g = l . firstChild , g . textContent = "" } else m . push ( b . createTextNode ( f ) ) ; for ( l . textContent = "" , n = 0 ; f = m [ n ++ ] ; ) if ( d && r . inArray ( f , d ) > - 1 ) e && e . push ( f ) ; else if ( j = r . contains ( f . ownerDocument , f ) , g = la ( l . appendChild ( f ) , "script" ) , j && ma ( g ) , c ) for ( k = 0 ; f = g [ k ++ ] ; ) ja . test ( f . type || "" ) && c . push ( f ) ; return l } function ta ( ) { return ! 0 } function ua ( ) { return ! 1 } function va ( ) { try { return d . activeElement } catch ( a ) { } } function wa ( a , b , c , d , e , f ) { var g , h ; if ( "object" == typeof b ) { "string" != typeof c && ( d = d || c , c = void 0 ) ; for ( h in b ) wa ( a , h , c , d , b [ h ] , f ) ; return a } if ( null == d && null == e ? ( e = c , d = c = void 0 ) : null == e && ( "string" == typeof c ? ( e = d , d = void 0 ) : ( e = d , d = c , c = void 0 ) ) , e === ! 1 ) e = ua ; else if ( ! e ) return a ; return 1 === f && ( g = e , e = function ( a ) { return r ( ) . off ( a ) , g . apply ( this , arguments ) } , e . guid = g . guid || ( g . guid = r . guid ++ ) ) , a . each ( function ( ) { r . event . add ( this , b , e , d , c ) } ) } function Ca ( a , b ) { return r . nodeName ( a , "table" ) && r . nodeName ( 11 !== b . nodeType ? b : b . firstChild , "tr" ) ? a . getElementsByTagName ( "tbody" ) [ 0 ] || a : a } function Da ( a ) { return a . type = ( null !== a . getAttribute ( "type" ) ) + "/" + a . type , a } function Ea ( a ) { var b = Aa . exec ( a . type ) ; return b ? a . type = b [ 1 ] : a . removeAttribute ( "type" ) , a } function Fa ( a , b ) { var c , d , e , f , g , h , i , j ; if ( 1 === b . nodeType ) { if ( V . hasData ( a ) && ( f = V . access ( a ) , g = V . set ( b , f ) , j = f . events ) ) { delete g . handle , g . events = { } ; for ( e in j ) for ( c = 0 , d = j [ e ] . length ; c < d ; c ++ ) r . event . add ( b , e , j [ e ] [ c ] ) } W . hasData ( a ) && ( h = W . access ( a ) , i = r . extend ( { } , h ) , W . set ( b , i ) ) } } function Ga ( a , b ) { var c = b . nodeName . toLowerCase ( ) ; "input" === c && ha . test ( a . type ) ? b . checked = a . checked : "input" !== c && "textarea" !== c || ( b . defaultValue = a . defaultValue ) } function Ha ( a , b , c , d ) { b = g . apply ( [ ] , b ) ; var e , f , h , i , j , k , l = 0 , m = a . length , n = m - 1 , q = b [ 0 ] , s = r . isFunction ( q ) ; if ( s || m > 1 && "string" == typeof q && ! o . checkClone && za . test ( q ) ) return a . each ( function ( e ) { var f = a . eq ( e ) ; s && ( b [ 0 ] = q . call ( this , e , f . html ( ) ) ) , Ha ( f , b , c , d ) } ) ; if ( m && ( e = oa ( b , a [ 0 ] . ownerDocument , ! 1 , a , d ) , f = e . firstChild , 1 === e . childNodes . length && ( e = f ) , f || d ) ) { for ( h = r . map ( la ( e , "script" ) , Da ) , i = h . length ; l < m ; l ++ ) j = e , l !== n && ( j = r . clone ( j , ! 0 , ! 0 ) , i && r . merge ( h , la ( j , "script" ) ) ) , c . call ( a [ l ] , j , l ) ; if ( i ) for ( k = h [ h . length - 1 ] . ownerDocument , r . map ( h , Ea ) , l = 0 ; l < i ; l ++ ) j = h [ l ] , ja . test ( j . type || "" ) && ! V . access ( j , "globalEval" ) && r . contains ( k , j ) && ( j . src ? r . _evalUrl && r . _evalUrl ( j . src ) : p ( j . textContent . replace ( Ba , "" ) , k ) ) } return a } function Ia ( a , b , c ) { for ( var d , e = b ? r . filter ( b , a ) : a , f = 0 ; null != ( d = e [ f ] ) ; f ++ ) c || 1 !== d . nodeType || r . cleanData ( la ( d ) ) , d . parentNode && ( c && r . contains ( d . ownerDocument , d ) && ma ( la ( d , "script" ) ) , d . parentNode . removeChild ( d ) ) ; return a } function Ma ( a , b , c ) { var d , e , f , g , h = a . style ; return c = c || La ( a ) , c && ( g = c . getPropertyValue ( b ) || c [ b ] , "" !== g || r . contains ( a . ownerDocument , a ) || ( g = r . style ( a , b ) ) , ! o . pixelMarginRight ( ) && Ka . test ( g ) && Ja . test ( b ) && ( d = h . width , e = h . minWidth , f = h . maxWidth , h . minWidth = h . maxWidth = h . width = g , g = c . width , h . width = d , h . minWidth = e , h . maxWid
a = a . slice ( j . shift ( ) . value . length ) } for ( i = V . needsContext . test ( a ) ? 0 : j . length ; i -- && ( k = j [ i ] , ! d . relative [ l = k . type ] ) ; ) if ( ( m = d . find [ l ] ) && ( f = m ( k . matches [ 0 ] . replace ( _ , aa ) , $ . test ( j [ 0 ] . type ) && qa ( b . parentNode ) || b ) ) ) { if ( j . splice ( i , 1 ) , a = f . length && sa ( j ) , ! a ) return G . apply ( e , f ) , e ; break } } return ( n || h ( a , o ) ) ( f , b , ! p , e , ! b || $ . test ( a ) && qa ( b . parentNode ) || b ) , e } , c . sortStable = u . split ( "" ) . sort ( B ) . join ( "" ) === u , c . detectDuplicates = ! ! l , m ( ) , c . sortDetached = ja ( function ( a ) { return 1 & a . compareDocumentPosition ( n . createElement ( "fieldset" ) ) } ) , ja ( function ( a ) { return a . innerHTML = "<a href='#'></a>" , "#" === a . firstChild . getAttribute ( "href" ) } ) || ka ( "type|href|height|width" , function ( a , b , c ) { if ( ! c ) return a . getAttribute ( b , "type" === b . toLowerCase ( ) ? 1 : 2 ) } ) , c . attributes && ja ( function ( a ) { return a . innerHTML = "<input/>" , a . firstChild . setAttribute ( "value" , "" ) , "" === a . firstChild . getAttribute ( "value" ) } ) || ka ( "value" , function ( a , b , c ) { if ( ! c && "input" === a . nodeName . toLowerCase ( ) ) return a . defaultValue } ) , ja ( function ( a ) { return null == a . getAttribute ( "disabled" ) } ) || ka ( J , function ( a , b , c ) { var d ; if ( ! c ) return a [ b ] === ! 0 ? b . toLowerCase ( ) : ( d = a . getAttributeNode ( b ) ) && d . specified ? d . value : null } ) , ga } ( a ) ; r . find = x , r . expr = x . selectors , r . expr [ ":" ] = r . expr . pseudos , r . uniqueSort = r . unique = x . uniqueSort , r . text = x . getText , r . isXMLDoc = x . isXML , r . contains = x . contains , r . escapeSelector = x . escape ; var y = function ( a , b , c ) { for ( var d = [ ] , e = void 0 !== c ; ( a = a [ b ] ) && 9 !== a . nodeType ; ) if ( 1 === a . nodeType ) { if ( e && r ( a ) . is ( c ) ) break ; d . push ( a ) } return d } , z = function ( a , b ) { for ( var c = [ ] ; a ; a = a . nextSibling ) 1 === a . nodeType && a !== b && c . push ( a ) ; return c } , A = r . expr . match . needsContext , B = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i , C = /^.[^:#\[\.,]*$/ ; r . filter = function ( a , b , c ) { var d = b [ 0 ] ; return c && ( a = ":not(" + a + ")" ) , 1 === b . length && 1 === d . nodeType ? r . find . matchesSelector ( d , a ) ? [ d ] : [ ] : r . find . matches ( a , r . grep ( b , function ( a ) { return 1 === a . nodeType } ) ) } , r . fn . extend ( { find : function ( a ) { var b , c , d = this . length , e = this ; if ( "string" != typeof a ) return this . pushStack ( r ( a ) . filter ( function ( ) { for ( b = 0 ; b < d ; b ++ ) if ( r . contains ( e [ b ] , this ) ) return ! 0 } ) ) ; for ( c = this . pushStack ( [ ] ) , b = 0 ; b < d ; b ++ ) r . find ( a , e [ b ] , c ) ; return d > 1 ? r . uniqueSort ( c ) : c } , filter : function ( a ) { return this . pushStack ( D ( this , a || [ ] , ! 1 ) ) } , not : function ( a ) { return this . pushStack ( D ( this , a || [ ] , ! 0 ) ) } , is : function ( a ) { return ! ! D ( this , "string" == typeof a && A . test ( a ) ? r ( a ) : a || [ ] , ! 1 ) . length } } ) ; var E , F = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/ , G = r . fn . init = function ( a , b , c ) { var e , f ; if ( ! a ) return this ; if ( c = c || E , "string" == typeof a ) { if ( e = "<" === a [ 0 ] && ">" === a [ a . length - 1 ] && a . length >= 3 ? [ null , a , null ] : F . exec ( a ) , ! e || ! e [ 1 ] && b ) return ! b || b . jquery ? ( b || c ) . find ( a ) : this . constructor ( b ) . find ( a ) ; if ( e [ 1 ] ) { if ( b = b instanceof r ? b [ 0 ] : b , r . merge ( this , r . parseHTML ( e [ 1 ] , b && b . nodeType ? b . ownerDocument || b : d , ! 0 ) ) , B . test ( e [ 1 ] ) && r . isPlainObject ( b ) ) for ( e in b ) r . isFunction ( this [ e ] ) ? this [ e ] ( b [ e ] ) : this . attr ( e , b [ e ] ) ; return this } return f = d . getElementById ( e [ 2 ] ) , f && ( this [ 0 ] = f , this . length = 1 ) , this } return a . nodeType ? ( this [ 0 ] = a , this . length = 1 , this ) : r . isFunction ( a ) ? void 0 !== c . ready ? c . ready ( a ) : a ( r ) : r . makeArray ( a , this ) } ; G . prototype = r . fn , E = r ( d ) ; var H = /^(?:parents|prev(?:Until|All))/ , I = { children : ! 0 , contents : ! 0 , next : ! 0 , prev : ! 0 } ; r . fn . extend ( { has : function ( a ) { var b = r ( a , this ) , c = b . length ; return this . filter ( function ( ) { for ( var a = 0 ; a < c ; a ++ ) if ( r . contains ( this , b [ a ] ) ) return ! 0 } ) } , closest : function ( a , b ) { var c , d = 0 , e = this . length , f = [ ] , g = "string" != typeof a && r ( a ) ; if ( ! A . test ( a ) ) for ( ; d < e ; d ++ ) for ( c = this [ d ] ; c && c !== b ; c = c . parentNode ) if ( c . nodeType < 11 && ( g ? g . index ( c ) > - 1 : 1 === c . nodeType && r . find . matchesSelector ( c , a ) ) ) { f . push ( c ) ; break } return this . pushStack ( f . length > 1 ? r . uniqueSort ( f ) : f ) } , index : function ( a ) { return a ? "string" == typeof a ? i . call ( r ( a ) , this [ 0 ] ) : i . call ( this , a . jquery ? a [ 0 ] : a ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( a , b ) { return this . pushStack ( r . uniqueSort ( r . merge ( this . get ( ) , r ( a , b ) ) ) ) } , addBack : function ( a ) { return this . add ( null == a ? this . prevObject : this . prevObject . filter ( a ) ) } } ) , r . each ( { parent : function ( a ) { var b = a . parentNode ; return b && 11 !== b . nodeType ? b : null } , parents : function ( a ) { return y ( a , "parentNode" ) } , parentsUntil : function ( a , b , c ) { return y ( a , "parentNode" , c ) } , next : function ( a ) { return J ( a , "nextSibling" ) } , prev : function ( a ) {
} } ) , hb = { set : function ( a , b , c ) { return b === ! 1 ? r . removeAttr ( a , c ) : a . setAttribute ( c , c ) , c } } , r . each ( r . expr . match . bool . source . match ( /\w+/g ) , function ( a , b ) { var c = ib [ b ] || r . find . attr ; ib [ b ] = function ( a , b , d ) { var e , f , g = b . toLowerCase ( ) ; return d || ( f = ib [ g ] , ib [ g ] = e , e = null != c ( a , b , d ) ? g : null , ib [ g ] = f ) , e } } ) ; var jb = /^(?:input|select|textarea|button)$/i , kb = /^(?:a|area)$/i ; r . fn . extend ( { prop : function ( a , b ) { return S ( this , r . prop , a , b , arguments . length > 1 ) } , removeProp : function ( a ) { return this . each ( function ( ) { delete this [ r . propFix [ a ] || a ] } ) } } ) , r . extend ( { prop : function ( a , b , c ) { var d , e , f = a . nodeType ; if ( 3 !== f && 8 !== f && 2 !== f ) return 1 === f && r . isXMLDoc ( a ) || ( b = r . propFix [ b ] || b , e = r . propHooks [ b ] ) , void 0 !== c ? e && "set" in e && void 0 !== ( d = e . set ( a , c , b ) ) ? d : a [ b ] = c : e && "get" in e && null !== ( d = e . get ( a , b ) ) ? d : a [ b ] } , propHooks : { tabIndex : { get : function ( a ) { var b = r . find . attr ( a , "tabindex" ) ; return b ? parseInt ( b , 10 ) : jb . test ( a . nodeName ) || kb . test ( a . nodeName ) && a . href ? 0 : - 1 } } } , propFix : { for : "htmlFor" , class : "className" } } ) , o . optSelected || ( r . propHooks . selected = { get : function ( a ) { var b = a . parentNode ; return b && b . parentNode && b . parentNode . selectedIndex , null } , set : function ( a ) { var b = a . parentNode ; b && ( b . selectedIndex , b . parentNode && b . parentNode . selectedIndex ) } } ) , r . each ( [ "tabIndex" , "readOnly" , "maxLength" , "cellSpacing" , "cellPadding" , "rowSpan" , "colSpan" , "useMap" , "frameBorder" , "contentEditable" ] , function ( ) { r . propFix [ this . toLowerCase ( ) ] = this } ) ; var lb = /[\t\r\n\f]/g ; r . fn . extend ( { addClass : function ( a ) { var b , c , d , e , f , g , h , i = 0 ; if ( r . isFunction ( a ) ) return this . each ( function ( b ) { r ( this ) . addClass ( a . call ( this , b , mb ( this ) ) ) } ) ; if ( "string" == typeof a && a ) for ( b = a . match ( K ) || [ ] ; c = this [ i ++ ] ; ) if ( e = mb ( c ) , d = 1 === c . nodeType && ( " " + e + " " ) . replace ( lb , " " ) ) { for ( g = 0 ; f = b [ g ++ ] ; ) d . indexOf ( " " + f + " " ) < 0 && ( d += f + " " ) ; h = r . trim ( d ) , e !== h && c . setAttribute ( "class" , h ) } return this } , removeClass : function ( a ) { var b , c , d , e , f , g , h , i = 0 ; if ( r . isFunction ( a ) ) return this . each ( function ( b ) { r ( this ) . removeClass ( a . call ( this , b , mb ( this ) ) ) } ) ; if ( ! arguments . length ) return this . attr ( "class" , "" ) ; if ( "string" == typeof a && a ) for ( b = a . match ( K ) || [ ] ; c = this [ i ++ ] ; ) if ( e = mb ( c ) , d = 1 === c . nodeType && ( " " + e + " " ) . replace ( lb , " " ) ) { for ( g = 0 ; f = b [ g ++ ] ; ) for ( ; d . indexOf ( " " + f + " " ) > - 1 ; ) d = d . replace ( " " + f + " " , " " ) ; h = r . trim ( d ) , e !== h && c . setAttribute ( "class" , h ) } return this } , toggleClass : function ( a , b ) { var c = typeof a ; return "boolean" == typeof b && "string" === c ? b ? this . addClass ( a ) : this . removeClass ( a ) : r . isFunction ( a ) ? this . each ( function ( c ) { r ( this ) . toggleClass ( a . call ( this , c , mb ( this ) , b ) , b ) } ) : this . each ( function ( ) { var b , d , e , f ; if ( "string" === c ) for ( d = 0 , e = r ( this ) , f = a . match ( K ) || [ ] ; b = f [ d ++ ] ; ) e . hasClass ( b ) ? e . removeClass ( b ) : e . addClass ( b ) ; else void 0 !== a && "boolean" !== c || ( b = mb ( this ) , b && V . set ( this , "__className__" , b ) , this . setAttribute && this . setAttribute ( "class" , b || a === ! 1 ? "" : V . get ( this , "__className__" ) || "" ) ) } ) } , hasClass : function ( a ) { var b , c , d = 0 ; for ( b = " " + a + " " ; c = this [ d ++ ] ; ) if ( 1 === c . nodeType && ( " " + mb ( c ) + " " ) . replace ( lb , " " ) . indexOf ( b ) > - 1 ) return ! 0 ; return ! 1 } } ) ; var nb = /\r/g , ob = /[\x20\t\r\n\f]+/g ; r . fn . extend ( { val : function ( a ) { var b , c , d , e = this [ 0 ] ; return arguments . length ? ( d = r . isFunction ( a ) , this . each ( function ( c ) { var e ; 1 === this . nodeType && ( e = d ? a . call ( this , c , r ( this ) . val ( ) ) : a , null == e ? e = "" : "number" == typeof e ? e += "" : r . isArray ( e ) && ( e = r . map ( e , function ( a ) { return null == a ? "" : a + "" } ) ) , b = r . valHooks [ this . type ] || r . valHooks [ this . nodeName . toLowerCase ( ) ] , b && "set" in b && void 0 !== b . set ( this , e , "value" ) || ( this . value = e ) ) } ) ) : e ? ( b = r . valHooks [ e . type ] || r . valHooks [ e . nodeName . toLowerCase ( ) ] , b && "get" in b && void 0 !== ( c = b . get ( e , "value" ) ) ? c : ( c = e . value , "string" == typeof c ? c . replace ( nb , "" ) : null == c ? "" : c ) ) : void 0 } } ) , r . extend ( { valHooks : { option : { get : function ( a ) { var b = r . find . attr ( a , "value" ) ; return null != b ? b : r . trim ( r . text ( a ) ) . replace ( ob , " " ) } } , select : { get : function ( a ) { for ( var b , c , d = a . options , e = a . selectedIndex , f = "select-one" === a . type , g = f ? null : [ ] , h = f ? e + 1 : d . length , i = e < 0 ? h : f ? e : 0 ; i < h ; i ++ ) if ( c = d [ i ] , ( c . selected || i === e ) && ! c . disabled && ( ! c . parentNode . disabled || ! r . nodeName ( c . parentNode , "optgroup" ) ) ) { if ( b = r ( c ) . val ( ) , f ) return b ; g . push ( b ) } return g } , set : function ( a , b ) { for ( var c , d , e = a . options , f = r . makeArray ( b ) , g = e . length ; g -- ; ) d = e [ g ] , ( d . selected = r . inArray ( r . valHooks . option . get ( d ) , f ) > - 1 ) && ( c = ! 0 ) ; return c || ( a . selectedIndex = - 1 ) , f } } } } ) , r . each
'"' + i + '"' } function Dt ( t ) { var e = t . charAt ( 0 ) , i = t . slice ( 1 ) ; return sr . test ( i ) ? t : ( i = i . indexOf ( '"' ) > - 1 ? i . replace ( ur , Pt ) : i , e + "scope." + i ) } function Pt ( t , e ) { return vr [ e ] } function Rt ( t ) { ar . test ( t ) , vr . length = 0 ; var e = t . replace ( cr , Ft ) . replace ( hr , "" ) ; return e = ( " " + e ) . replace ( pr , Dt ) . replace ( ur , Pt ) , Lt ( e ) } function Lt ( t ) { try { return new Function ( "scope" , "return " + t + ";" ) } catch ( e ) { return St } } function Ht ( t ) { var e = Nt ( t ) ; return e ? function ( t , i ) { Et ( t , e , i ) } : void 0 } function It ( t , e ) { t = t . trim ( ) ; var i = nr . get ( t ) ; if ( i ) return e && ! i . set && ( i . set = Ht ( i . exp ) ) , i ; var n = { exp : t } ; return n . get = Mt ( t ) && t . indexOf ( "[" ) < 0 ? Lt ( "scope." + t ) : Rt ( t ) , e && ( n . set = Ht ( t ) ) , nr . put ( t , n ) , n } function Mt ( t ) { return fr . test ( t ) && ! dr . test ( t ) && "Math." !== t . slice ( 0 , 5 ) } function Vt ( ) { gr . length = 0 , _r . length = 0 , yr = { } , br = { } , wr = ! 1 } function Bt ( ) { for ( var t = ! 0 ; t ; ) t = ! 1 , Wt ( gr ) , Wt ( _r ) , gr . length ? t = ! 0 : ( Li && An . devtools && Li . emit ( "flush" ) , Vt ( ) ) } function Wt ( t ) { for ( var e = 0 ; e < t . length ; e ++ ) { var i = t [ e ] , n = i . id ; yr [ n ] = null , i . run ( ) } t . length = 0 } function zt ( t ) { var e = t . id ; if ( null == yr [ e ] ) { var i = t . user ? _r : gr ; yr [ e ] = i . length , i . push ( t ) , wr || ( wr = ! 0 , Yi ( Bt ) ) } } function Ut ( t , e , i , n ) { n && v ( this , n ) ; var r = "function" == typeof e ; if ( this . vm = t , t . _watchers . push ( this ) , this . expression = e , this . cb = i , this . id = ++ Cr , this . active = ! 0 , this . dirty = this . lazy , this . deps = [ ] , this . newDeps = [ ] , this . depIds = new Ki , this . newDepIds = new Ki , this . prevError = null , r ) this . getter = e , this . setter = void 0 ; else { var s = It ( e , this . twoWay ) ; this . getter = s . get , this . setter = s . set } this . value = this . lazy ? void 0 : this . get ( ) , this . queued = this . shallow = ! 1 } function Jt ( t , e ) { var i = void 0 , n = void 0 ; e || ( e = $r , e . clear ( ) ) ; var r = Di ( t ) , s = m ( t ) ; if ( ( r || s ) && Object . isExtensible ( t ) ) { if ( t . _ _ob _ _ ) { var o = t . _ _ob _ _ . dep . id ; if ( e . has ( o ) ) return ; e . add ( o ) } if ( r ) for ( i = t . length ; i -- ; ) Jt ( t [ i ] , e ) ; else if ( s ) for ( n = Object . keys ( t ) , i = n . length ; i -- ; ) Jt ( t [ n [ i ] ] , e ) } } function qt ( t ) { return it ( t ) && at ( t . content ) } function Qt ( t , e ) { var i = e ? t : t . trim ( ) , n = xr . get ( i ) ; if ( n ) return n ; var r = document . createDocumentFragment ( ) , s = t . match ( Tr ) , o = Nr . test ( t ) , a = jr . test ( t ) ; if ( s || o || a ) { var h = s && s [ 1 ] , l = Or [ h ] || Or . efault , c = l [ 0 ] , u = l [ 1 ] , f = l [ 2 ] , p = document . createElement ( "div" ) ; for ( p . innerHTML = u + t + f ; c -- ; ) p = p . lastChild ; for ( var d ; d = p . firstChild ; ) r . appendChild ( d ) } else r . appendChild ( document . createTextNode ( t ) ) ; return e || tt ( r ) , xr . put ( i , r ) , r } function Gt ( t ) { if ( qt ( t ) ) return Qt ( t . innerHTML ) ; if ( "SCRIPT" === t . tagName ) return Qt ( t . textContent ) ; for ( var e , i = Zt ( t ) , n = document . createDocumentFragment ( ) ; e = i . firstChild ; ) n . appendChild ( e ) ; return tt ( n ) , n } function Zt ( t ) { if ( ! t . querySelectorAll ) return t . cloneNode ( ) ; var e , i , n , r = t . cloneNode ( ! 0 ) ; if ( Er ) { var s = r ; if ( qt ( t ) && ( t = t . content , s = r . content ) , i = t . querySelectorAll ( "template" ) , i . length ) for ( n = s . querySelectorAll ( "template" ) , e = n . length ; e -- ; ) n [ e ] . parentNode . replaceChild ( Zt ( i [ e ] ) , n [ e ] ) } if ( Sr ) if ( "TEXTAREA" === t . tagName ) r . value = t . value ; else if ( i = t . querySelectorAll ( "textarea" ) , i . length ) for ( n = r . querySelectorAll ( "textarea" ) , e = n . length ; e -- ; ) n [ e ] . value = i [ e ] . value ; return r } function Xt ( t , e , i ) { var n , r ; return at ( t ) ? ( tt ( t ) , e ? Zt ( t ) : t ) : ( "string" == typeof t ? i || "#" !== t . charAt ( 0 ) ? r = Qt ( t , i ) : ( r = Ar . get ( t ) , r || ( n = document . getElementById ( t . slice ( 1 ) ) , n && ( r = Gt ( n ) , Ar . put ( t , r ) ) ) ) : t . nodeType && ( r = Gt ( t ) ) , r && e ? Zt ( r ) : r ) } function Yt ( t , e , i , n , r , s ) { this . children = [ ] , this . childFrags = [ ] , this . vm = e , this . scope = r , this . inserted = ! 1 , this . parentFrag = s , s && s . childFrags . push ( this ) , this . unlink = t ( e , i , n , r , this ) ; var o = this . single = 1 === i . childNodes . length && ! i . childNodes [ 0 ] . _ _v _anchor ; o ? ( this . node = i . childNodes [ 0 ] , this . before = Kt , this . remove = te ) : ( this . node = nt ( "fragment-start" ) , this . end = nt ( "fragment-end" ) , this . frag = i , U ( this . node , i ) , i . appendChild ( this . end ) , this . before = ee , this . remove = ie ) , this . node . _ _v _frag = this } function Kt ( t , e ) { this . inserted = ! 0 ; var i = e !== ! 1 ? D : B ; i ( this . node , t , this . vm ) , H ( this . node ) && this . callHook ( ne ) } function te ( ) { this . inserted = ! 1 ; var t = H ( this . node ) , e = this ; this . beforeRemove ( ) , P ( this . node , this . vm , function ( ) { t && e . callHook ( re ) , e . destroy ( ) } ) } function ee ( t , e ) { this . inserted = ! 0 ; var i = this . vm , n = e !== ! 1 ? D : B ; st ( this . node , this . end , function ( e ) { n ( e , t , i ) } ) , H ( this . node ) && this . callHook ( ne ) } function ie ( ) { this . inserted = ! 1 ; var t = this , e = H ( this . node ) ; this . beforeRemove ( ) , ot ( this . node , this . end , this . vm , this . frag , function ( ) { e && t . callHook ( re ) , t .
Sn . data = function ( t , e , i ) { return i ? t || e ? function ( ) { var n = "function" == typeof e ? e . call ( i ) : e , r = "function" == typeof t ? t . call ( i ) : void 0 ; return n ? ut ( n , r ) : r } : void 0 : e ? "function" != typeof e ? t : t ? function ( ) { return ut ( e . call ( this ) , t . call ( this ) ) } : e : t } , Sn . el = function ( t , e , i ) { if ( i || ! e || "function" == typeof e ) { var n = e || t ; return i && "function" == typeof n ? n . call ( i ) : n } } , Sn . init = Sn . created = Sn . ready = Sn . attached = Sn . detached = Sn . beforeCompile = Sn . compiled = Sn . beforeDestroy = Sn . destroyed = Sn . activate = function ( t , e ) { return e ? t ? t . concat ( e ) : Di ( e ) ? e : [ e ] : t } , An . _assetTypes . forEach ( function ( t ) { Sn [ t + "s" ] = ft } ) , Sn . watch = Sn . events = function ( t , e ) { if ( ! e ) return t ; if ( ! t ) return e ; var i = { } ; v ( i , t ) ; for ( var n in e ) { var r = i [ n ] , s = e [ n ] ; r && ! Di ( r ) && ( r = [ r ] ) , i [ n ] = r ? r . concat ( s ) : [ s ] } return i } , Sn . props = Sn . methods = Sn . computed = function ( t , e ) { if ( ! e ) return t ; if ( ! t ) return e ; var i = Object . create ( null ) ; return v ( i , t ) , v ( i , e ) , i } ; var Fn = function ( t , e ) { return void 0 === e ? t : e } , Dn = 0 ; _t . target = null , _t . prototype . addSub = function ( t ) { this . subs . push ( t ) } , _t . prototype . removeSub = function ( t ) { this . subs . $remove ( t ) } , _t . prototype . depend = function ( ) { _t . target . addDep ( this ) } , _t . prototype . notify = function ( ) { for ( var t = d ( this . subs ) , e = 0 , i = t . length ; i > e ; e ++ ) t [ e ] . update ( ) } ; var Pn = Array . prototype , Rn = Object . create ( Pn ) ; [ "push" , "pop" , "shift" , "unshift" , "splice" , "sort" , "reverse" ] . forEach ( function ( t ) { var e = Pn [ t ] ; _ ( Rn , t , function ( ) { for ( var i = arguments . length , n = new Array ( i ) ; i -- ; ) n [ i ] = arguments [ i ] ; var r , s = e . apply ( this , n ) , o = this . _ _ob _ _ ; switch ( t ) { case "push" : r = n ; break ; case "unshift" : r = n ; break ; case "splice" : r = n . slice ( 2 ) } return r && o . observeArray ( r ) , o . dep . notify ( ) , s } ) } ) , _ ( Pn , "$set" , function ( t , e ) { return t >= this . length && ( this . length = Number ( t ) + 1 ) , this . splice ( t , 1 , e ) [ 0 ] } ) , _ ( Pn , "$remove" , function ( t ) { if ( this . length ) { var e = b ( this , t ) ; return e > - 1 ? this . splice ( e , 1 ) : void 0 } } ) ; var Ln = Object . getOwnPropertyNames ( Rn ) , Hn = ! 0 ; bt . prototype . walk = function ( t ) { for ( var e = Object . keys ( t ) , i = 0 , n = e . length ; n > i ; i ++ ) this . convert ( e [ i ] , t [ e [ i ] ] ) } , bt . prototype . observeArray = function ( t ) { for ( var e = 0 , i = t . length ; i > e ; e ++ ) $t ( t [ e ] ) } , bt . prototype . convert = function ( t , e ) { kt ( this . value , t , e ) } , bt . prototype . addVm = function ( t ) { ( this . vms || ( this . vms = [ ] ) ) . push ( t ) } , bt . prototype . removeVm = function ( t ) { this . vms . $remove ( t ) } ; var In = Object . freeze ( { defineReactive : kt , set : t , del : e , hasOwn : i , isLiteral : n , isReserved : r , _toString : s , toNumber : o , toBoolean : a , stripQuotes : h , camelize : l , hyphenate : u , classify : f , bind : p , toArray : d , extend : v , isObject : m , isPlainObject : g , def : _ , debounce : y , indexOf : b , cancellable : w , looseEqual : C , isArray : Di , hasProto : Pi , inBrowser : Ri , devtools : Li , isIE : Ii , isIE9 : Mi , isAndroid : Vi , isIos : Bi , iosVersionMatch : Wi , iosVersion : zi , hasMutationObserverBug : Ui , get transitionProp ( ) { return Ji } , get transitionEndEvent ( ) { return qi } , get animationProp ( ) { return Qi } , get animationEndEvent ( ) { return Gi } , nextTick : Yi , get _Set ( ) { return Ki } , query : L , inDoc : H , getAttr : I , getBindAttr : M , hasBindAttr : V , before : B , after : W , remove : z , prepend : U , replace : J , on : q , off : Q , setClass : Z , addClass : X , removeClass : Y , extractContent : K , trimNode : tt , isTemplate : it , createAnchor : nt , findRef : rt , mapNodeRange : st , removeNodeRange : ot , isFragment : at , getOuterHTML : ht , mergeOptions : mt , resolveAsset : gt , checkComponentAttr : lt , commonTagRE : jn , reservedTagRE : En , warn : On } ) , Mn = 0 , Vn = new $ ( 1e3 ) , Bn = 0 , Wn = 1 , zn = 2 , Un = 3 , Jn = 0 , qn = 1 , Qn = 2 , Gn = 3 , Zn = 4 , Xn = 5 , Yn = 6 , Kn = 7 , tr = 8 , er = [ ] ; er [ Jn ] = { ws : [ Jn ] , ident : [ Gn , Bn ] , "[" : [ Zn ] , eof : [ Kn ] } , er [ qn ] = { ws : [ qn ] , "." : [ Qn ] , "[" : [ Zn ] , eof : [ Kn ] } , er [ Qn ] = { ws : [ Qn ] , ident : [ Gn , Bn ] } , er [ Gn ] = { ident : [ Gn , Bn ] , 0 : [ Gn , Bn ] , number : [ Gn , Bn ] , ws : [ qn , Wn ] , "." : [ Qn , Wn ] , "[" : [ Zn , Wn ] , eof : [ Kn , Wn ] } , er [ Zn ] = { "'" : [ Xn , Bn ] , '"' : [ Yn , Bn ] , "[" : [ Zn , zn ] , "]" : [ qn , Un ] , eof : tr , else : [ Zn , Bn ] } , er [ Xn ] = { "'" : [ Zn , Bn ] , eof : tr , else : [ Xn , Bn ] } , er [ Yn ] = { '"' : [ Zn , Bn ] , eof : tr , else : [ Yn , Bn ] } ; var ir = Object . freeze ( { parsePath : Nt , getPath : jt , setPath : Et } ) , nr = new $ ( 1e3 ) , rr = "Math,Date,this,true,false,null,undefined,Infinity,NaN,isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,parseInt,parseFloat" , sr = new RegExp ( "^(" + rr . replace ( /,/g , "\\b|" ) + "\\b)" ) , or = " break , case , class , catch , const , continue , debugger , default , delete , do , else , export , extends , finally , for , function , if , import , in , instanceof , let , return , super , switch , throw , try , var , while , with , yield , enum , await , implements , pac
t . charAt ( 0 ) . toUpperCase ( ) + t . slice ( 1 ) ) : "" } , uppercase : function ( t ) { return t || 0 === t ? t . toString ( ) . toUpperCase ( ) : "" } , lowercase : function ( t ) { return t || 0 === t ? t . toString ( ) . toLowerCase ( ) : "" } , currency : function ( t , e , i ) { if ( t = parseFloat ( t ) , ! isFinite ( t ) || ! t && 0 !== t ) return "" ; e = null != e ? e : "$" , i = null != i ? i : 2 ; var n = Math . abs ( t ) . toFixed ( i ) , r = i ? n . slice ( 0 , - 1 - i ) : n , s = r . length % 3 , o = s > 0 ? r . slice ( 0 , s ) + ( r . length > 3 ? "," : "" ) : "" , a = i ? n . slice ( - 1 - i ) : "" , h = 0 > t ? "-" : "" ; return h + e + o + r . slice ( s ) . replace ( to , "$1," ) + a } , pluralize : function ( t ) { var e = d ( arguments , 1 ) , i = e . length ; if ( i > 1 ) { var n = t % 10 - 1 ; return n in e ? e [ n ] : e [ i - 1 ] } return e [ 0 ] + ( 1 === t ? "" : "s" ) } , debounce : function ( t , e ) { return t ? ( e || ( e = 300 ) , y ( t , e ) ) : void 0 } } ; return Ai ( wi ) , wi . version = "1.0.26" , setTimeout ( function ( ) { An . devtools && Li && Li . emit ( "init" , wi ) } , 0 ) , wi } ) , ! function ( a ) { "function" == typeof define && define . amd ? define ( [ "jquery" ] , a ) : a ( "object" == typeof module && module . exports ? require ( "jquery" ) : jQuery ) } ( function ( a ) { var b = "2.0.0" , c = { } , d = { exclude : [ ] , excludeWithin : [ ] , offset : 0 , direction : "top" , delegateSelector : null , scrollElement : null , scrollTarget : null , beforeScroll : function ( ) { } , afterScroll : function ( ) { } , easing : "swing" , speed : 400 , autoCoefficient : 2 , preventDefault : ! 0 } , e = function ( b ) { var c = [ ] , d = ! 1 , e = b . dir && "left" === b . dir ? "scrollLeft" : "scrollTop" ; return this . each ( function ( ) { var b = a ( this ) ; if ( this !== document && this !== window ) return ! document . scrollingElement || this !== document . documentElement && this !== document . body ? void ( b [ e ] ( ) > 0 ? c . push ( this ) : ( b [ e ] ( 1 ) , d = b [ e ] ( ) > 0 , d && c . push ( this ) , b [ e ] ( 0 ) ) ) : ( c . push ( document . scrollingElement ) , ! 1 ) } ) , c . length || this . each ( function ( ) { this === document . documentElement && "smooth" === a ( this ) . css ( "scrollBehavior" ) && ( c = [ this ] ) , c . length || "BODY" !== this . nodeName || ( c = [ this ] ) } ) , "first" === b . el && c . length > 1 && ( c = [ c [ 0 ] ] ) , c } ; a . fn . extend ( { scrollable : function ( a ) { var b = e . call ( this , { dir : a } ) ; return this . pushStack ( b ) } , firstScrollable : function ( a ) { var b = e . call ( this , { el : "first" , dir : a } ) ; return this . pushStack ( b ) } , smoothScroll : function ( b , c ) { if ( b = b || { } , "options" === b ) return c ? this . each ( function ( ) { var b = a ( this ) , d = a . extend ( b . data ( "ssOpts" ) || { } , c ) ; a ( this ) . data ( "ssOpts" , d ) } ) : this . first ( ) . data ( "ssOpts" ) ; var d = a . extend ( { } , a . fn . smoothScroll . defaults , b ) , e = function ( b ) { var c = function ( a ) { return a . replace ( /(:|\.|\/)/g , "\\$1" ) } , e = this , f = a ( this ) , g = a . extend ( { } , d , f . data ( "ssOpts" ) || { } ) , h = d . exclude , i = g . excludeWithin , j = 0 , k = 0 , l = ! 0 , m = { } , n = a . smoothScroll . filterPath ( location . pathname ) , o = a . smoothScroll . filterPath ( e . pathname ) , p = location . hostname === e . hostname || ! e . hostname , q = g . scrollTarget || o === n , r = c ( e . hash ) ; if ( r && ! a ( r ) . length && ( l = ! 1 ) , g . scrollTarget || p && q && r ) { for ( ; l && j < h . length ; ) f . is ( c ( h [ j ++ ] ) ) && ( l = ! 1 ) ; for ( ; l && k < i . length ; ) f . closest ( i [ k ++ ] ) . length && ( l = ! 1 ) } else l = ! 1 ; l && ( g . preventDefault && b . preventDefault ( ) , a . extend ( m , g , { scrollTarget : g . scrollTarget || r , link : e } ) , a . smoothScroll ( m ) ) } ; return null !== b . delegateSelector ? this . off ( "click.smoothscroll" , b . delegateSelector ) . on ( "click.smoothscroll" , b . delegateSelector , e ) : this . off ( "click.smoothscroll" ) . on ( "click.smoothscroll" , e ) , this } } ) , a . smoothScroll = function ( b , d ) { if ( "options" === b && "object" == typeof d ) return a . extend ( c , d ) ; var e , f , g , h , i , j = 0 , k = "offset" , l = "scrollTop" , m = { } , n = { } ; "number" == typeof b ? ( e = a . extend ( { link : null } , a . fn . smoothScroll . defaults , c ) , g = b ) : ( e = a . extend ( { link : null } , a . fn . smoothScroll . defaults , b || { } , c ) , e . scrollElement && ( k = "position" , "static" === e . scrollElement . css ( "position" ) && e . scrollElement . css ( "position" , "relative" ) ) ) , l = "left" === e . direction ? "scrollLeft" : l , e . scrollElement ? ( f = e . scrollElement , /^(?:HTML|BODY)$/ . test ( f [ 0 ] . nodeName ) || ( j = f [ l ] ( ) ) ) : f = a ( "html, body" ) . firstScrollable ( e . direction ) , e . beforeScroll . call ( f , e ) , g = "number" == typeof b ? b : d || a ( e . scrollTarget ) [ k ] ( ) && a ( e . scrollTarget ) [ k ] ( ) [ e . direction ] || 0 , m [ l ] = g + j + e . offset , h = e . speed , "auto" === h && ( i = Math . abs ( m [ l ] - f [ l ] ( ) ) , h = i / e . autoCoefficient ) , n = { duration : h , easing : e . easing , complete : function ( ) { e . afterScroll . call ( e . link , e ) } } , e . step && ( n . step = e . step ) , f . length ? f . stop ( ) . animate ( m , n ) : e . afterScroll . call ( e . link , e ) } , a . smoothScroll . version = b , a . smoothScroll . filterPath = function ( a ) { return a = a || "" , a . replace ( /^\// , "" ) . replace ( /(?:index|default).[a-zA-Z]{3,4}$/ , "" ) . replace ( /\/$/ , "" ) } , a . fn . smoothScroll . defaults = d } ) ; var _typeof =
} ( function ( e ) { function t ( e ) { e . state . placeholder && ( e . state . placeholder . parentNode . removeChild ( e . state . placeholder ) , e . state . placeholder = null ) } function n ( e ) { t ( e ) ; var n = e . state . placeholder = document . createElement ( "pre" ) ; n . style . cssText = "height: 0; overflow: visible" , n . className = "CodeMirror-placeholder" ; var r = e . getOption ( "placeholder" ) ; "string" == typeof r && ( r = document . createTextNode ( r ) ) , n . appendChild ( r ) , e . display . lineSpace . insertBefore ( n , e . display . lineSpace . firstChild ) } function r ( e ) { o ( e ) && n ( e ) } function i ( e ) { var r = e . getWrapperElement ( ) , i = o ( e ) ; r . className = r . className . replace ( " CodeMirror-empty" , "" ) + ( i ? " CodeMirror-empty" : "" ) , i ? n ( e ) : t ( e ) } function o ( e ) { return 1 === e . lineCount ( ) && "" === e . getLine ( 0 ) } e . defineOption ( "placeholder" , "" , function ( n , o , a ) { var l = a && a != e . Init ; if ( o && ! l ) n . on ( "blur" , r ) , n . on ( "change" , i ) , n . on ( "swapDoc" , i ) , i ( n ) ; else if ( ! o && l ) { n . off ( "blur" , r ) , n . off ( "change" , i ) , n . off ( "swapDoc" , i ) , t ( n ) ; var s = n . getWrapperElement ( ) ; s . className = s . className . replace ( " CodeMirror-empty" , "" ) } o && ! n . hasFocus ( ) && r ( n ) } ) } ) } , { "../../lib/codemirror" : 10 } ] , 7 : [ function ( t , n , r ) { ! function ( i ) { "object" == typeof r && "object" == typeof n ? i ( t ( "../../lib/codemirror" ) ) : "function" == typeof e && e . amd ? e ( [ "../../lib/codemirror" ] , i ) : i ( CodeMirror ) } ( function ( e ) { "use strict" ; var t = /^(\s*)(>[> ]*|[*+-]\s|(\d+)([.)]))(\s*)/ , n = /^(\s*)(>[> ]*|[*+-]|(\d+)[.)])(\s*)$/ , r = /[*+-]\s/ ; e . commands . newlineAndIndentContinueMarkdownList = function ( i ) { if ( i . getOption ( "disableInput" ) ) return e . Pass ; for ( var o = i . listSelections ( ) , a = [ ] , l = 0 ; l < o . length ; l ++ ) { var s = o [ l ] . head , c = i . getStateAfter ( s . line ) , u = c . list !== ! 1 , f = 0 !== c . quote , h = i . getLine ( s . line ) , d = t . exec ( h ) ; if ( ! o [ l ] . empty ( ) || ! u && ! f || ! d ) return void i . execCommand ( "newlineAndIndent" ) ; if ( n . test ( h ) ) i . replaceRange ( "" , { line : s . line , ch : 0 } , { line : s . line , ch : s . ch + 1 } ) , a [ l ] = "\n" ; else { var p = d [ 1 ] , m = d [ 5 ] , g = r . test ( d [ 2 ] ) || d [ 2 ] . indexOf ( ">" ) >= 0 ? d [ 2 ] : parseInt ( d [ 3 ] , 10 ) + 1 + d [ 4 ] ; a [ l ] = "\n" + p + g + m } } i . replaceSelections ( a ) } } ) } , { "../../lib/codemirror" : 10 } ] , 8 : [ function ( t , n , r ) { ! function ( i ) { "object" == typeof r && "object" == typeof n ? i ( t ( "../../lib/codemirror" ) ) : "function" == typeof e && e . amd ? e ( [ "../../lib/codemirror" ] , i ) : i ( CodeMirror ) } ( function ( e ) { "use strict" ; e . overlayMode = function ( t , n , r ) { return { startState : function ( ) { return { base : e . startState ( t ) , overlay : e . startState ( n ) , basePos : 0 , baseCur : null , overlayPos : 0 , overlayCur : null , streamSeen : null } } , copyState : function ( r ) { return { base : e . copyState ( t , r . base ) , overlay : e . copyState ( n , r . overlay ) , basePos : r . basePos , baseCur : null , overlayPos : r . overlayPos , overlayCur : null } } , token : function ( e , i ) { return ( e != i . streamSeen || Math . min ( i . basePos , i . overlayPos ) < e . start ) && ( i . streamSeen = e , i . basePos = i . overlayPos = e . start ) , e . start == i . basePos && ( i . baseCur = t . token ( e , i . base ) , i . basePos = e . pos ) , e . start == i . overlayPos && ( e . pos = e . start , i . overlayCur = n . token ( e , i . overlay ) , i . overlayPos = e . pos ) , e . pos = Math . min ( i . basePos , i . overlayPos ) , null == i . overlayCur ? i . baseCur : null != i . baseCur && i . overlay . combineTokens || r && null == i . overlay . combineTokens ? i . baseCur + " " + i . overlayCur : i . overlayCur } , indent : t . indent && function ( e , n ) { return t . indent ( e . base , n ) } , electricChars : t . electricChars , innerMode : function ( e ) { return { state : e . base , mode : t } } , blankLine : function ( e ) { t . blankLine && t . blankLine ( e . base ) , n . blankLine && n . blankLine ( e . overlay ) } } } } ) } , { "../../lib/codemirror" : 10 } ] , 9 : [ function ( t , n , r ) { ! function ( i ) { "object" == typeof r && "object" == typeof n ? i ( t ( "../../lib/codemirror" ) ) : "function" == typeof e && e . amd ? e ( [ "../../lib/codemirror" ] , i ) : i ( CodeMirror ) } ( function ( e ) { "use strict" ; function t ( e ) { e . operation ( function ( ) { a ( e ) } ) } function n ( e ) { e . state . markedSelection . length && e . operation ( function ( ) { i ( e ) } ) } function r ( e , t , n , r ) { if ( 0 != c ( t , n ) ) for ( var i = e . state . markedSelection , o = e . state . markedSelectionStyle , a = t . line ; ; ) { var u = a == t . line ? t : s ( a , 0 ) , f = a + l , h = f >= n . line , d = h ? n : s ( f , 0 ) , p = e . markText ( u , d , { className : o } ) ; if ( null == r ? i . push ( p ) : i . splice ( r ++ , 0 , p ) , h ) break ; a = f } } function i ( e ) { for ( var t = e . state . markedSelection , n = 0 ; n < t . length ; ++ n ) t [ n ] . clear ( ) ; t . length = 0 } function o ( e ) { i ( e ) ; for ( var t = e . listSelections ( ) , n = 0 ; n < t . length ; n ++ ) r ( e , t [ n ] . from ( ) , t [ n ] . to ( ) ) } function a ( e ) { if ( ! e . somethingSelected ( ) ) return i ( e ) ; if ( e . listSelections ( ) . length > 1 ) return o ( e ) ; var t = e . getCursor ( "start" ) , n = e . getCursor ( "
null == i && t == h && ( p = u ) , ( ! l || m . top < l . top || m . top == l . top && m . left < l . left ) && ( l = m ) , ( ! s || f . bottom > s . bottom || f . bottom == s . bottom && f . right > s . right ) && ( s = f ) , c + 1 > d && ( d = c ) , r ( d , f . top , p - d , f . bottom ) } ) , { start : l , end : s } } var o = e . display , a = e . doc , l = document . createDocumentFragment ( ) , s = Ge ( e . display ) , c = s . left , u = Math . max ( o . sizerWidth , $e ( e ) - o . sizer . offsetLeft ) - s . right , f = t . from ( ) , h = t . to ( ) ; if ( f . line == h . line ) i ( f . line , f . ch , h . ch ) ; else { var d = Zr ( a , f . line ) , p = Zr ( a , h . line ) , m = yr ( d ) == yr ( p ) , g = i ( f . line , f . ch , m ? d . text . length + 1 : null ) . end , v = i ( h . line , m ? 0 : null , h . ch ) . start ; m && ( g . top < v . top - 2 ? ( r ( g . right , g . top , null , g . bottom ) , r ( c , v . top , v . left , v . bottom ) ) : r ( g . right , g . top , v . left - g . right , g . bottom ) ) , g . bottom < v . top && r ( c , g . bottom , null , v . top ) } n . appendChild ( l ) } function Be ( e ) { if ( e . state . focused ) { var t = e . display ; clearInterval ( t . blinker ) ; var n = ! 0 ; t . cursorDiv . style . visibility = "" , e . options . cursorBlinkRate > 0 ? t . blinker = setInterval ( function ( ) { t . cursorDiv . style . visibility = ( n = ! n ) ? "" : "hidden" } , e . options . cursorBlinkRate ) : e . options . cursorBlinkRate < 0 && ( t . cursorDiv . style . visibility = "hidden" ) } } function _e ( e , t ) { e . doc . mode . startState && e . doc . frontier < e . display . viewTo && e . state . highlight . set ( t , Bi ( Fe , e ) ) } function Fe ( e ) { var t = e . doc ; if ( t . frontier < t . first && ( t . frontier = t . first ) , ! ( t . frontier >= e . display . viewTo ) ) { var n = + new Date + e . options . workTime , r = sa ( t . mode , je ( e , t . frontier ) ) , i = [ ] ; t . iter ( t . frontier , Math . min ( t . first + t . size , e . display . viewTo + 500 ) , function ( o ) { if ( t . frontier >= e . display . viewFrom ) { var a = o . styles , l = o . text . length > e . options . maxHighlightLength , s = Rr ( e , o , l ? sa ( t . mode , r ) : r , ! 0 ) ; o . styles = s . styles ; var c = o . styleClasses , u = s . classes ; u ? o . styleClasses = u : c && ( o . styleClasses = null ) ; for ( var f = ! a || a . length != o . styles . length || c != u && ( ! c || ! u || c . bgClass != u . bgClass || c . textClass != u . textClass ) , h = 0 ; ! f && h < a . length ; ++ h ) f = a [ h ] != o . styles [ h ] ; f && i . push ( t . frontier ) , o . stateAfter = l ? r : sa ( t . mode , r ) } else o . text . length <= e . options . maxHighlightLength && Hr ( e , o . text , r ) , o . stateAfter = t . frontier % 5 == 0 ? sa ( t . mode , r ) : null ; return ++ t . frontier , + new Date > n ? ( _e ( e , e . options . workDelay ) , ! 0 ) : void 0 } ) , i . length && At ( e , function ( ) { for ( var t = 0 ; t < i . length ; t ++ ) Ht ( e , i [ t ] , "text" ) } ) } } function ze ( e , t , n ) { for ( var r , i , o = e . doc , a = n ? - 1 : t - ( e . doc . mode . innerMode ? 1e3 : 100 ) , l = t ; l > a ; -- l ) { if ( l <= o . first ) return o . first ; var s = Zr ( o , l - 1 ) ; if ( s . stateAfter && ( ! n || l <= o . frontier ) ) return l ; var c = Fa ( s . text , null , e . options . tabSize ) ; ( null == i || r > c ) && ( i = l - 1 , r = c ) } return i } function je ( e , t , n ) { var r = e . doc , i = e . display ; if ( ! r . mode . startState ) return ! 0 ; var o = ze ( e , t , n ) , a = o > r . first && Zr ( r , o - 1 ) . stateAfter ; return a = a ? sa ( r . mode , a ) : ca ( r . mode ) , r . iter ( o , t , function ( n ) { Hr ( e , n . text , a ) ; var l = o == t - 1 || o % 5 == 0 || o >= i . viewFrom && o < i . viewTo ; n . stateAfter = l ? sa ( r . mode , a ) : null , ++ o } ) , n && ( r . frontier = o ) , a } function Ue ( e ) { return e . lineSpace . offsetTop } function qe ( e ) { return e . mover . offsetHeight - e . lineSpace . offsetHeight } function Ge ( e ) { if ( e . cachedPaddingH ) return e . cachedPaddingH ; var t = qi ( e . measure , ji ( "pre" , "x" ) ) , n = window . getComputedStyle ? window . getComputedStyle ( t ) : t . currentStyle , r = { left : parseInt ( n . paddingLeft ) , right : parseInt ( n . paddingRight ) } ; return isNaN ( r . left ) || isNaN ( r . right ) || ( e . cachedPaddingH = r ) , r } function Ye ( e ) { return Da - e . display . nativeBarWidth } function $e ( e ) { return e . display . scroller . clientWidth - Ye ( e ) - e . display . barWidth } function Ve ( e ) { return e . display . scroller . clientHeight - Ye ( e ) - e . display . barHeight } function Ke ( e , t , n ) { var r = e . options . lineWrapping , i = r && $e ( e ) ; if ( ! t . measure . heights || r && t . measure . width != i ) { var o = t . measure . heights = [ ] ; if ( r ) { t . measure . width = i ; for ( var a = t . text . firstChild . getClientRects ( ) , l = 0 ; l < a . length - 1 ; l ++ ) { var s = a [ l ] , c = a [ l + 1 ] ; Math . abs ( s . bottom - c . bottom ) > 2 && o . push ( ( s . bottom + c . top ) / 2 - n . top ) } } o . push ( n . bottom - n . top ) } } function Xe ( e , t , n ) { if ( e . line == t ) return { map : e . measure . map , cache : e . measure . cache } ; for ( var r = 0 ; r < e . rest . length ; r ++ ) if ( e . rest [ r ] == t ) return { map : e . measure . maps [ r ] , cache : e . measure . caches [ r ] } ; for ( var r = 0 ; r < e . rest . length ; r ++ ) if ( ti ( e . rest [ r ] ) > n ) return { map : e . measure . maps [ r ] , cache : e . measure . caches [ r ] , before : ! 0 } } function Ze ( e , t ) { t = yr ( t ) ; var n = ti ( t ) , r = e . display . externalMeasured = new Pt ( e . doc , t , n ) ; r . lineN = n ; var i = r . built = Br ( e , r ) ; return r . text = i . pre , qi ( e . display . lineMeasure , i . pre ) , r } function Je ( e , t , n , r ) { return tt ( e , et ( e , t ) , n , r ) } function Qe (
} if ( ! ( Ni ( e , "beforeChange" ) || e . cm && Ni ( e . cm , "beforeChange" ) ) || ( t = Ln ( e , t , ! 0 ) ) ) { var r = Ho && ! n && sr ( e , t . from , t . to ) ; if ( r ) for ( var i = r . length - 1 ; i >= 0 ; -- i ) Mn ( e , { from : r [ i ] . from , to : r [ i ] . to , text : i ? [ "" ] : t . text } ) ; else Mn ( e , t ) } } function Mn ( e , t ) { if ( 1 != t . text . length || "" != t . text [ 0 ] || 0 != _o ( t . from , t . to ) ) { var n = kn ( e , t ) ; ci ( e , t , n , e . cm ? e . cm . curOp . id : NaN ) , En ( e , t , n , or ( e , t ) ) ; var r = [ ] ; Kr ( e , function ( e , n ) { n || - 1 != Pi ( r , e . history ) || ( xi ( e . history , t ) , r . push ( e . history ) ) , En ( e , t , null , or ( e , t ) ) } ) } } function Nn ( e , t , n ) { if ( ! e . cm || ! e . cm . state . suppressEdits ) { for ( var r , i = e . history , o = e . sel , a = "undo" == t ? i . done : i . undone , l = "undo" == t ? i . undone : i . done , s = 0 ; s < a . length && ( r = a [ s ] , n ? ! r . ranges || r . equals ( e . sel ) : r . ranges ) ; s ++ ) ; if ( s != a . length ) { for ( i . lastOrigin = i . lastSelOrigin = null ; r = a . pop ( ) , r . ranges ; ) { if ( hi ( r , l ) , n && ! r . equals ( e . sel ) ) return void Te ( e , r , { clearRedo : ! 1 } ) ; o = r } var c = [ ] ; hi ( o , l ) , l . push ( { changes : c , generation : i . generation } ) , i . generation = r . generation || ++ i . maxGeneration ; for ( var u = Ni ( e , "beforeChange" ) || e . cm && Ni ( e . cm , "beforeChange" ) , s = r . changes . length - 1 ; s >= 0 ; -- s ) { var f = r . changes [ s ] ; if ( f . origin = t , u && ! Ln ( e , f , ! 1 ) ) return void ( a . length = 0 ) ; c . push ( ai ( e , f ) ) ; var h = s ? kn ( e , f ) : Ii ( a ) ; En ( e , f , h , lr ( e , f ) ) , ! s && e . cm && e . cm . scrollIntoView ( { from : f . from , to : Qo ( f ) } ) ; var d = [ ] ; Kr ( e , function ( e , t ) { t || - 1 != Pi ( d , e . history ) || ( xi ( e . history , f ) , d . push ( e . history ) ) , En ( e , f , null , lr ( e , f ) ) } ) } } } } function An ( e , t ) { if ( 0 != t && ( e . first += t , e . sel = new ue ( Ri ( e . sel . ranges , function ( e ) { return new fe ( Bo ( e . anchor . line + t , e . anchor . ch ) , Bo ( e . head . line + t , e . head . ch ) ) } ) , e . sel . primIndex ) , e . cm ) ) { Dt ( e . cm , e . first , e . first - t , t ) ; for ( var n = e . cm . display , r = n . viewFrom ; r < n . viewTo ; r ++ ) Ht ( e . cm , r , "gutter" ) } } function En ( e , t , n , r ) { if ( e . cm && ! e . cm . curOp ) return Et ( e . cm , En ) ( e , t , n , r ) ; if ( t . to . line < e . first ) return void An ( e , t . text . length - 1 - ( t . to . line - t . from . line ) ) ; if ( ! ( t . from . line > e . lastLine ( ) ) ) { if ( t . from . line < e . first ) { var i = t . text . length - 1 - ( e . first - t . from . line ) ; An ( e , i ) , t = { from : Bo ( e . first , 0 ) , to : Bo ( t . to . line + i , t . to . ch ) , text : [ Ii ( t . text ) ] , origin : t . origin } } var o = e . lastLine ( ) ; t . to . line > o && ( t = { from : t . from , to : Bo ( o , Zr ( e , o ) . text . length ) , text : [ t . text [ 0 ] ] , origin : t . origin } ) , t . removed = Jr ( e , t . from , t . to ) , n || ( n = kn ( e , t ) ) , e . cm ? On ( e . cm , t , r ) : Yr ( e , t , r ) , Me ( e , n , Wa ) } } function On ( e , t , n ) { var r = e . doc , i = e . display , a = t . from , l = t . to , s = ! 1 , c = a . line ; e . options . lineWrapping || ( c = ti ( yr ( Zr ( r , a . line ) ) ) , r . iter ( c , l . line + 1 , function ( e ) { return e == i . maxLine ? ( s = ! 0 , ! 0 ) : void 0 } ) ) , r . sel . contains ( t . from , t . to ) > - 1 && Mi ( e ) , Yr ( r , t , n , o ( e ) ) , e . options . lineWrapping || ( r . iter ( c , a . line + t . text . length , function ( e ) { var t = f ( e ) ; t > i . maxLineLength && ( i . maxLine = e , i . maxLineLength = t , i . maxLineChanged = ! 0 , s = ! 1 ) } ) , s && ( e . curOp . updateMaxLine = ! 0 ) ) , r . frontier = Math . min ( r . frontier , a . line ) , _e ( e , 400 ) ; var u = t . text . length - ( l . line - a . line ) - 1 ; t . full ? Dt ( e ) : a . line != l . line || 1 != t . text . length || Gr ( e . doc , t ) ? Dt ( e , a . line , l . line + 1 , u ) : Ht ( e , a . line , "text" ) ; var h = Ni ( e , "changes" ) , d = Ni ( e , "change" ) ; if ( d || h ) { var p = { from : a , to : l , text : t . text , removed : t . removed , origin : t . origin } ; d && Ci ( e , "change" , e , p ) , h && ( e . curOp . changeObjs || ( e . curOp . changeObjs = [ ] ) ) . push ( p ) } e . display . selForContextMenu = null } function In ( e , t , n , r , i ) { if ( r || ( r = n ) , _o ( r , n ) < 0 ) { var o = r ; r = n , n = o } "string" == typeof t && ( t = e . splitLines ( t ) ) , Tn ( e , { from : n , to : r , text : t , origin : i } ) } function Pn ( e , t ) { if ( ! Ti ( e , "scrollCursorIntoView" ) ) { var n = e . display , r = n . sizer . getBoundingClientRect ( ) , i = null ; if ( t . top + r . top < 0 ? i = ! 0 : t . bottom + r . top > ( window . innerHeight || document . documentElement . clientHeight ) && ( i = ! 1 ) , null != i && ! Mo ) { var o = ji ( "div" , " " , null , "position: absolute; top: " + ( t . top - n . viewOffset - Ue ( e . display ) ) + "px; height: " + ( t . bottom - t . top + Ye ( e ) + n . barHeight ) + "px; left: " + t . left + "px; width: 2px;" ) ; e . display . lineSpace . appendChild ( o ) , o . scrollIntoView ( i ) , e . display . lineSpace . removeChild ( o ) } } } function Rn ( e , t , n , r ) { null == r && ( r = 0 ) ; for ( var i = 0 ; 5 > i ; i ++ ) { var o = ! 1 , a = dt ( e , t ) , l = n && n != t ? dt ( e , n ) : a , s = Hn ( e , Math . min ( a . left , l . left ) , Math . min ( a . top , l . top ) - r , Math . max ( a . left , l . left ) , Math . max ( a . bottom , l . bottom ) + r ) , c = e . doc . scrollTop , u = e . doc . scrollLeft ; if ( null != s . scrollTop && ( rn ( e , s . scrollTop ) , Math . abs ( e . doc . scrollTop - c ) > 1 && ( o = ! 0 ) ) , null != s . scrollLeft && ( on ( e , s . scrollLeft ) , Math . abs ( e . doc . scrollLeft - u ) > 1 && ( o = ! 0 ) ) , ! o ) break } return a } function Dn ( e , t , n , r , i ) { var o = Hn ( e , t , n , r , i ) ; null != o . scrollTop && rn (
Qa || ( Xi ( ) , Qa = ! 0 ) } function Xi ( ) { var e ; Ea ( window , "resize" , function ( ) { null == e && ( e = setTimeout ( function ( ) { e = null , Vi ( qt ) } , 100 ) ) } ) , Ea ( window , "blur" , function ( ) { Vi ( yn ) } ) } function Zi ( e ) { if ( null == Ka ) { var t = ji ( "span" , " " ) ; qi ( e , ji ( "span" , [ t , document . createTextNode ( "x" ) ] ) ) , 0 != e . firstChild . offsetHeight && ( Ka = t . offsetWidth <= 1 && t . offsetHeight > 2 && ! ( xo && 8 > bo ) ) } var n = Ka ? ji ( "span" , " " ) : ji ( "span" , " " , null , "display: inline-block; width: 1px; margin-right: -1px" ) ; return n . setAttribute ( "cm-text" , "" ) , n } function Ji ( e ) { if ( null != Xa ) return Xa ; var t = qi ( e , document . createTextNode ( "AخA" ) ) , n = qa ( t , 0 , 1 ) . getBoundingClientRect ( ) ; if ( ! n || n . left == n . right ) return ! 1 ; var r = qa ( t , 1 , 2 ) . getBoundingClientRect ( ) ; return Xa = r . right - n . right < 3 } function Qi ( e ) { if ( null != il ) return il ; var t = qi ( e , ji ( "span" , "x" ) ) , n = t . getBoundingClientRect ( ) , r = qa ( t , 0 , 1 ) . getBoundingClientRect ( ) ; return il = Math . abs ( n . left - r . left ) > 1 } function eo ( e , t , n , r ) { if ( ! e ) return r ( t , n , "ltr" ) ; for ( var i = ! 1 , o = 0 ; o < e . length ; ++ o ) { var a = e [ o ] ; ( a . from < n && a . to > t || t == n && a . to == t ) && ( r ( Math . max ( a . from , t ) , Math . min ( a . to , n ) , 1 == a . level ? "rtl" : "ltr" ) , i = ! 0 ) } i || r ( t , n , "ltr" ) } function to ( e ) { return e . level % 2 ? e . to : e . from } function no ( e ) { return e . level % 2 ? e . from : e . to } function ro ( e ) { var t = ii ( e ) ; return t ? to ( t [ 0 ] ) : 0 } function io ( e ) { var t = ii ( e ) ; return t ? no ( Ii ( t ) ) : e . text . length } function oo ( e , t ) { var n = Zr ( e . doc , t ) , r = yr ( n ) ; r != n && ( t = ti ( r ) ) ; var i = ii ( r ) , o = i ? i [ 0 ] . level % 2 ? io ( r ) : ro ( r ) : 0 ; return Bo ( t , o ) } function ao ( e , t ) { for ( var n , r = Zr ( e . doc , t ) ; n = gr ( r ) ; ) r = n . find ( 1 , ! 0 ) . line , t = null ; var i = ii ( r ) , o = i ? i [ 0 ] . level % 2 ? ro ( r ) : io ( r ) : r . text . length ; return Bo ( null == t ? ti ( r ) : t , o ) } function lo ( e , t ) { var n = oo ( e , t . line ) , r = Zr ( e . doc , n . line ) , i = ii ( r ) ; if ( ! i || 0 == i [ 0 ] . level ) { var o = Math . max ( 0 , r . text . search ( /\S/ ) ) , a = t . line == n . line && t . ch <= o && t . ch ; return Bo ( n . line , a ? 0 : o ) } return n } function so ( e , t , n ) { var r = e [ 0 ] . level ; return t == r || n != r && n > t } function co ( e , t ) { al = null ; for ( var n , r = 0 ; r < e . length ; ++ r ) { var i = e [ r ] ; if ( i . from < t && i . to > t ) return r ; if ( i . from == t || i . to == t ) { if ( null != n ) return so ( e , i . level , e [ n ] . level ) ? ( i . from != i . to && ( al = n ) , r ) : ( i . from != i . to && ( al = r ) , n ) ; n = r } } return n } function uo ( e , t , n , r ) { if ( ! r ) return t + n ; do t += n ; while ( t > 0 && zi ( e . text . charAt ( t ) ) ) ; return t } function fo ( e , t , n , r ) { var i = ii ( e ) ; if ( ! i ) return ho ( e , t , n , r ) ; for ( var o = co ( i , t ) , a = i [ o ] , l = uo ( e , t , a . level % 2 ? - n : n , r ) ; ; ) { if ( l > a . from && l < a . to ) return l ; if ( l == a . from || l == a . to ) return co ( i , l ) == o ? l : ( a = i [ o += n ] , n > 0 == a . level % 2 ? a . to : a . from ) ; if ( a = i [ o += n ] , ! a ) return null ; l = n > 0 == a . level % 2 ? uo ( e , a . to , - 1 , r ) : uo ( e , a . from , 1 , r ) } } function ho ( e , t , n , r ) { var i = t + n ; if ( r ) for ( ; i > 0 && zi ( e . text . charAt ( i ) ) ; ) i += n ; return 0 > i || i > e . text . length ? null : i } var po = navigator . userAgent , mo = navigator . platform , go = /gecko\/\d/i . test ( po ) , vo = /MSIE \d/ . test ( po ) , yo = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/ . exec ( po ) , xo = vo || yo , bo = xo && ( vo ? document . documentMode || 6 : yo [ 1 ] ) , wo = /WebKit\// . test ( po ) , ko = wo && /Qt\/\d+\.\d+/ . test ( po ) , So = /Chrome\// . test ( po ) , Co = /Opera\// . test ( po ) , Lo = /Apple Computer/ . test ( navigator . vendor ) , To = /Mac OS X 1\d\D([8-9]|\d\d)\D/ . test ( po ) , Mo = /PhantomJS/ . test ( po ) , No = /AppleWebKit/ . test ( po ) && /Mobile\/\w+/ . test ( po ) , Ao = No || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i . test ( po ) , Eo = No || /Mac/ . test ( mo ) , Oo = /\bCrOS\b/ . test ( po ) , Io = /win/i . test ( mo ) , Po = Co && po . match ( /Version\/(\d*\.\d*)/ ) ; Po && ( Po = Number ( Po [ 1 ] ) ) , Po && Po >= 15 && ( Co = ! 1 , wo = ! 0 ) ; var Ro = Eo && ( ko || Co && ( null == Po || 12.11 > Po ) ) , Do = go || xo && bo >= 9 , Ho = ! 1 , Wo = ! 1 ; m . prototype = Wi ( { update : function ( e ) { var t = e . scrollWidth > e . clientWidth + 1 , n = e . scrollHeight > e . clientHeight + 1 , r = e . nativeBarWidth ; if ( n ) { this . vert . style . display = "block" , this . vert . style . bottom = t ? r + "px" : "0" ; var i = e . viewHeight - ( t ? r : 0 ) ; this . vert . firstChild . style . height = Math . max ( 0 , e . scrollHeight - e . clientHeight + i ) + "px" } else this . vert . style . display = "" , this . vert . firstChild . style . height = "0" ; if ( t ) { this . horiz . style . display = "block" , this . horiz . style . right = n ? r + "px" : "0" , this . horiz . style . left = e . barLeft + "px" ; var o = e . viewWidth - e . barLeft - ( n ? r : 0 ) ; this . horiz . firstChild . style . width = e . scrollWidth - e . clientWidth + o + "px" } else this . horiz . style . display = "" , this . horiz . firstChild . style . width = "0" ; return ! this . checkedZeroWidth && e . clientHeight > 0 && ( 0 == r && this . zeroWidthHack ( ) , this . checkedZeroWidth = ! 0 ) , { right : n ? r : 0 , bottom : t ? r : 0 } } , setScrollLeft : functi
} , e . defineDocExtension = function ( e , t ) { Ca . prototype [ e ] = t } , e . defineOption = Gn ; var aa = [ ] ; e . defineInitHook = function ( e ) { aa . push ( e ) } ; var la = e . helpers = { } ; e . registerHelper = function ( t , n , r ) { la . hasOwnProperty ( t ) || ( la [ t ] = e [ t ] = { _global : [ ] } ) , la [ t ] [ n ] = r } , e . registerGlobalHelper = function ( t , n , r , i ) { e . registerHelper ( t , n , i ) , la [ t ] . _global . push ( { pred : r , val : i } ) } ; var sa = e . copyState = function ( e , t ) { if ( t === ! 0 ) return t ; if ( e . copyState ) return e . copyState ( t ) ; var n = { } ; for ( var r in t ) { var i = t [ r ] ; i instanceof Array && ( i = i . concat ( [ ] ) ) , n [ r ] = i } return n } , ca = e . startState = function ( e , t , n ) { return ! e . startState || e . startState ( t , n ) } ; e . innerMode = function ( e , t ) { for ( ; e . innerMode ; ) { var n = e . innerMode ( t ) ; if ( ! n || n . mode == e ) break ; t = n . state , e = n . mode } return n || { mode : e , state : t } } ; var ua = e . commands = { selectAll : function ( e ) { e . setSelection ( Bo ( e . firstLine ( ) , 0 ) , Bo ( e . lastLine ( ) ) , Wa ) } , singleSelection : function ( e ) { e . setSelection ( e . getCursor ( "anchor" ) , e . getCursor ( "head" ) , Wa ) } , killLine : function ( e ) { jn ( e , function ( t ) { if ( t . empty ( ) ) { var n = Zr ( e . doc , t . head . line ) . text . length ; return t . head . ch == n && t . head . line < e . lastLine ( ) ? { from : t . head , to : Bo ( t . head . line + 1 , 0 ) } : { from : t . head , to : Bo ( t . head . line , n ) } } return { from : t . from ( ) , to : t . to ( ) } } ) } , deleteLine : function ( e ) { jn ( e , function ( t ) { return { from : Bo ( t . from ( ) . line , 0 ) , to : me ( e . doc , Bo ( t . to ( ) . line + 1 , 0 ) ) } } ) } , delLineLeft : function ( e ) { jn ( e , function ( e ) { return { from : Bo ( e . from ( ) . line , 0 ) , to : e . from ( ) } } ) } , delWrappedLineLeft : function ( e ) { jn ( e , function ( t ) { var n = e . charCoords ( t . head , "div" ) . top + 5 , r = e . coordsChar ( { left : 0 , top : n } , "div" ) ; return { from : r , to : t . from ( ) } } ) } , delWrappedLineRight : function ( e ) { jn ( e , function ( t ) { var n = e . charCoords ( t . head , "div" ) . top + 5 , r = e . coordsChar ( { left : e . display . lineDiv . offsetWidth + 100 , top : n } , "div" ) ; return { from : t . from ( ) , to : r } } ) } , undo : function ( e ) { e . undo ( ) } , redo : function ( e ) { e . redo ( ) } , undoSelection : function ( e ) { e . undoSelection ( ) } , redoSelection : function ( e ) { e . redoSelection ( ) } , goDocStart : function ( e ) { e . extendSelection ( Bo ( e . firstLine ( ) , 0 ) ) } , goDocEnd : function ( e ) { e . extendSelection ( Bo ( e . lastLine ( ) ) ) } , goLineStart : function ( e ) { e . extendSelectionsBy ( function ( t ) { return oo ( e , t . head . line ) } , { origin : "+move" , bias : 1 } ) } , goLineStartSmart : function ( e ) { e . extendSelectionsBy ( function ( t ) { return lo ( e , t . head ) } , { origin : "+move" , bias : 1 } ) } , goLineEnd : function ( e ) { e . extendSelectionsBy ( function ( t ) { return ao ( e , t . head . line ) } , { origin : "+move" , bias : - 1 } ) } , goLineRight : function ( e ) { e . extendSelectionsBy ( function ( t ) { var n = e . charCoords ( t . head , "div" ) . top + 5 ; return e . coordsChar ( { left : e . display . lineDiv . offsetWidth + 100 , top : n } , "div" ) } , _a ) } , goLineLeft : function ( e ) { e . extendSelectionsBy ( function ( t ) { var n = e . charCoords ( t . head , "div" ) . top + 5 ; return e . coordsChar ( { left : 0 , top : n } , "div" ) } , _a ) } , goLineLeftSmart : function ( e ) { e . extendSelectionsBy ( function ( t ) { var n = e . charCoords ( t . head , "div" ) . top + 5 , r = e . coordsChar ( { left : 0 , top : n } , "div" ) ; return r . ch < e . getLine ( r . line ) . search ( /\S/ ) ? lo ( e , t . head ) : r } , _a ) } , goLineUp : function ( e ) { e . moveV ( - 1 , "line" ) } , goLineDown : function ( e ) { e . moveV ( 1 , "line" ) } , goPageUp : function ( e ) { e . moveV ( - 1 , "page" ) } , goPageDown : function ( e ) { e . moveV ( 1 , "page" ) } , goCharLeft : function ( e ) { e . moveH ( - 1 , "char" ) } , goCharRight : function ( e ) { e . moveH ( 1 , "char" ) } , goColumnLeft : function ( e ) { e . moveH ( - 1 , "column" ) } , goColumnRight : function ( e ) { e . moveH ( 1 , "column" ) } , goWordLeft : function ( e ) { e . moveH ( - 1 , "word" ) } , goGroupRight : function ( e ) { e . moveH ( 1 , "group" ) } , goGroupLeft : function ( e ) { e . moveH ( - 1 , "group" ) } , goWordRight : function ( e ) { e . moveH ( 1 , "word" ) } , delCharBefore : function ( e ) { e . deleteH ( - 1 , "char" ) } , delCharAfter : function ( e ) { e . deleteH ( 1 , "char" ) } , delWordBefore : function ( e ) { e . deleteH ( - 1 , "word" ) } , delWordAfter : function ( e ) { e . deleteH ( 1 , "word" ) } , delGroupBefore : function ( e ) { e . deleteH ( - 1 , "group" ) } , delGroupAfter : function ( e ) { e . deleteH ( 1 , "group" ) } , indentAuto : function ( e ) { e . indentSelection ( "smart" ) } , indentMore : function ( e ) { e . indentSelection ( "add" ) } , indentLess : function ( e ) { e . indentSelection ( "subtract" ) } , insertTab : function ( e ) { e . replaceSelection ( "\t" ) } , insertSoftTab : function ( e ) { for ( var t = [ ] , n = e . listSelections ( ) , r = e . options . tabSize , i = 0 ; i < n . length ; i ++ ) { var o = n [ i ] . from ( ) , a = Fa ( e . getLine ( o . line ) , o . ch , r ) ; t . push ( Oi ( r - a % r ) ) } e . replaceSelections ( t ) } , defaultTab : function ( e ) { e . somethingSelected ( ) ? e . indentSelection ( "add" ) : e . execCommand ( "
h = m - 1 } for ( var b , w = [ ] , h = 0 ; u > h ; ) if ( l . test ( f [ h ] ) ) { var k = h ; for ( ++ h ; u > h && l . test ( f [ h ] ) ; ++ h ) ; w . push ( new t ( 0 , k , h ) ) } else { var S = h , C = w . length ; for ( ++ h ; u > h && "L" != f [ h ] ; ++ h ) ; for ( var v = S ; h > v ; ) if ( s . test ( f [ v ] ) ) { v > S && w . splice ( C , 0 , new t ( 1 , S , v ) ) ; var L = v ; for ( ++ v ; h > v && s . test ( f [ v ] ) ; ++ v ) ; w . splice ( C , 0 , new t ( 2 , L , v ) ) , S = v } else ++ v ; h > S && w . splice ( C , 0 , new t ( 1 , S , h ) ) } return 1 == w [ 0 ] . level && ( b = n . match ( /^\s+/ ) ) && ( w [ 0 ] . from = b [ 0 ] . length , w . unshift ( new t ( 0 , 0 , b [ 0 ] . length ) ) ) , 1 == Ii ( w ) . level && ( b = n . match ( /\s+$/ ) ) && ( Ii ( w ) . to -= b [ 0 ] . length , w . push ( new t ( 0 , u - b [ 0 ] . length , u ) ) ) , 2 == w [ 0 ] . level && w . unshift ( new t ( 1 , w [ 0 ] . to , w [ 0 ] . to ) ) , w [ 0 ] . level != Ii ( w ) . level && w . push ( new t ( w [ 0 ] . level , u , u ) ) , w } } ( ) ; return e . version = "5.15.2" , e } ) } , { } ] , 11 : [ function ( t , n , r ) { ! function ( i ) { "object" == typeof r && "object" == typeof n ? i ( t ( "../../lib/codemirror" ) , t ( "../markdown/markdown" ) , t ( "../../addon/mode/overlay" ) ) : "function" == typeof e && e . amd ? e ( [ "../../lib/codemirror" , "../markdown/markdown" , "../../addon/mode/overlay" ] , i ) : i ( CodeMirror ) } ( function ( e ) { "use strict" ; var t = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i ; e . defineMode ( "gfm" , function ( n , r ) { function i ( e ) { return e . code = ! 1 , null } var o = 0 , a = { startState : function ( ) { return { code : ! 1 , codeBlock : ! 1 , ateSpace : ! 1 } } , copyState : function ( e ) { return { code : e . code , codeBlock : e . codeBlock , ateSpace : e . ateSpace } } , token : function ( e , n ) { if ( n . combineTokens = null , n . codeBlock ) return e . match ( /^```+/ ) ? ( n . codeBlock = ! 1 , null ) : ( e . skipToEnd ( ) , null ) ; if ( e . sol ( ) && ( n . code = ! 1 ) , e . sol ( ) && e . match ( /^```+/ ) ) return e . skipToEnd ( ) , n . codeBlock = ! 0 , null ; if ( "`" === e . peek ( ) ) { e . next ( ) ; var i = e . pos ; e . eatWhile ( "`" ) ; var a = 1 + e . pos - i ; return n . code ? a === o && ( n . code = ! 1 ) : ( o = a , n . code = ! 0 ) , null } if ( n . code ) return e . next ( ) , null ; if ( e . eatSpace ( ) ) return n . ateSpace = ! 0 , null ; if ( ( e . sol ( ) || n . ateSpace ) && ( n . ateSpace = ! 1 , r . gitHubSpice !== ! 1 ) ) { if ( e . match ( /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/ ) ) return n . combineTokens = ! 0 , "link" ; if ( e . match ( /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/ ) ) return n . combineTokens = ! 0 , "link" } return e . match ( t ) && "](" != e . string . slice ( e . start - 2 , e . start ) && ( 0 == e . start || /\W/ . test ( e . string . charAt ( e . start - 1 ) ) ) ? ( n . combineTokens = ! 0 , "link" ) : ( e . next ( ) , null ) } , blankLine : i } , l = { underscoresBreakWords : ! 1 , taskLists : ! 0 , fencedCodeBlocks : "```" , strikethrough : ! 0 } ; for ( var s in r ) l [ s ] = r [ s ] ; return l . name = "markdown" , e . overlayMode ( e . getMode ( n , l ) , a ) } , "markdown" ) , e . defineMIME ( "text/x-gfm" , "gfm" ) } ) } , { "../../addon/mode/overlay" : 8 , "../../lib/codemirror" : 10 , "../markdown/markdown" : 12 } ] , 12 : [ function ( t , n , r ) { ! function ( i ) { "object" == typeof r && "object" == typeof n ? i ( t ( "../../lib/codemirror" ) , t ( "../xml/xml" ) , t ( "../meta" ) ) : "function" == typeof e && e . amd ? e ( [ "../../lib/codemirror" , "../xml/xml" , "../meta" ] , i ) : i ( CodeMirror ) } ( function ( e ) { "use strict" ; e . defineMode ( "markdown" , function ( t , n ) { function r ( n ) { if ( e . findModeByName ) { var r = e . findModeByName ( n ) ; r && ( n = r . mime || r . mimes [ 0 ] ) } var i = e . getMode ( t , n ) ; return "null" == i . name ? null : i } function i ( e , t , n ) { return t . f = t . inline = n , n ( e , t ) } function o ( e , t , n ) { return t . f = t . block = n , n ( e , t ) } function a ( e ) { return ! e || ! /\S/ . test ( e . string ) } function l ( e ) { r
} ] , 15 : [ function ( e , t , n ) { n . read = function ( e , t , n , r , i ) { var o , a , l = 8 * i - r - 1 , s = ( 1 << l ) - 1 , c = s >> 1 , u = - 7 , f = n ? i - 1 : 0 , h = n ? - 1 : 1 , d = e [ t + f ] ; for ( f += h , o = d & ( 1 << - u ) - 1 , d >>= - u , u += l ; u > 0 ; o = 256 * o + e [ t + f ] , f += h , u -= 8 ) ; for ( a = o & ( 1 << - u ) - 1 , o >>= - u , u += r ; u > 0 ; a = 256 * a + e [ t + f ] , f += h , u -= 8 ) ; if ( 0 === o ) o = 1 - c ; else { if ( o === s ) return a ? NaN : ( d ? - 1 : 1 ) * ( 1 / 0 ) ; a += Math . pow ( 2 , r ) , o -= c } return ( d ? - 1 : 1 ) * a * Math . pow ( 2 , o - r ) } , n . write = function ( e , t , n , r , i , o ) { var a , l , s , c = 8 * o - i - 1 , u = ( 1 << c ) - 1 , f = u >> 1 , h = 23 === i ? Math . pow ( 2 , - 24 ) - Math . pow ( 2 , - 77 ) : 0 , d = r ? 0 : o - 1 , p = r ? 1 : - 1 , m = 0 > t || 0 === t && 0 > 1 / t ? 1 : 0 ; for ( t = Math . abs ( t ) , isNaN ( t ) || t === 1 / 0 ? ( l = isNaN ( t ) ? 1 : 0 , a = u ) : ( a = Math . floor ( Math . log ( t ) / Math . LN2 ) , t * ( s = Math . pow ( 2 , - a ) ) < 1 && ( a -- , s *= 2 ) , t += a + f >= 1 ? h / s : h * Math . pow ( 2 , 1 - f ) , t * s >= 2 && ( a ++ , s /= 2 ) , a + f >= u ? ( l = 0 , a = u ) : a + f >= 1 ? ( l = ( t * s - 1 ) * Math . pow ( 2 , i ) , a += f ) : ( l = t * Math . pow ( 2 , f - 1 ) * Math . pow ( 2 , i ) , a = 0 ) ) ; i >= 8 ; e [ n + d ] = 255 & l , d += p , l /= 256 , i -= 8 ) ; for ( a = a << i | l , c += i ; c > 0 ; e [ n + d ] = 255 & a , d += p , a /= 256 , c -= 8 ) ; e [ n + d - p ] |= 128 * m } } , { } ] , 16 : [ function ( e , t , n ) { var r = { } . toString ; t . exports = Array . isArray || function ( e ) { return "[object Array]" == r . call ( e ) } } , { } ] , 17 : [ function ( t , n , r ) { ( function ( t ) { ( function ( ) { function t ( e ) { this . tokens = [ ] , this . tokens . links = { } , this . options = e || h . defaults , this . rules = d . normal , this . options . gfm && ( this . options . tables ? this . rules = d . tables : this . rules = d . gfm ) } function i ( e , t ) { if ( this . options = t || h . defaults , this . links = e , this . rules = p . normal , this . renderer = this . options . renderer || new o , this . renderer . options = this . options , ! this . links ) throw new Error ( "Tokens array requires a `links` property." ) ; this . options . gfm ? this . options . breaks ? this . rules = p . breaks : this . rules = p . gfm : this . options . pedantic && ( this . rules = p . pedantic ) } function o ( e ) { this . options = e || { } } function a ( e ) { this . tokens = [ ] , this . token = null , this . options = e || h . defaults , this . options . renderer = this . options . renderer || new o , this . renderer = this . options . renderer , this . renderer . options = this . options } function l ( e , t ) { return e . replace ( t ? /&/g : /&(?!#?\w+;)/g , "&" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /"/g , """ ) . replace ( /'/g , "'" ) } function s ( e ) { return e . replace ( /&([#\w]+);/g , function ( e , t ) { return t = t . toLowerCase ( ) , "colon" === t ? ":" : "#" === t . charAt ( 0 ) ? "x" === t . charAt ( 1 ) ? String . fromCharCode ( parseInt ( t . substring ( 2 ) , 16 ) ) : String . fromCharCode ( + t . substring ( 1 ) ) : "" } ) } function c ( e , t ) { return e = e . source , t = t || "" , function n ( r , i ) { return r ? ( i = i . source || i , i = i . replace ( /(^|[^\[])\^/g , "$1" ) , e = e . replace ( r , i ) , n ) : new RegExp ( e , t ) } } function u ( ) { } function f ( e ) { for ( var t , n , r = 1 ; r < arguments . length ; r ++ ) { t = arguments [ r ] ; for ( n in t ) Object . prototype . hasOwnProperty . call ( t , n ) && ( e [ n ] = t [ n ] ) } return e } function h ( e , n , r ) { if ( r || "function" == typeof n ) { r || ( r = n , n = null ) , n = f ( { } , h . defaults , n || { } ) ; var i , o , s = n . highlight , c = 0 ; try { i = t . lex ( e , n ) } catch ( u ) { return r ( u ) } o = i . length ; var d = function ( e ) { if ( e ) return n . highlight = s , r ( e ) ; var t ; try { t = a . parse ( i , n ) } catch ( o ) { e = o } return n . highlight = s , e ? r ( e ) : r ( null , t ) } ; if ( ! s || s . length < 3 ) return d ( ) ; if ( delete n . highlight , ! o ) return d ( ) ; for ( ; c < i . length ; c ++ ) ! function ( e ) { return "code" !== e . type ? -- o || d ( ) : s ( e . text , e . lang , function ( t , n ) { return t ? d ( t ) : null == n || n === e . text ? -- o || d ( ) : ( e . text = n , e . escaped = ! 0 , void ( -- o || d ( ) ) ) } ) } ( i [ c ] ) } else try { return n && ( n = f ( { } , h . defaults , n ) ) , a . parse ( t . lex ( e , n ) , n ) } catch ( u ) { if ( u . message += "\nPlease report this to https://github.com/chjj/marked." , ( n || h . defaults ) . silent ) return "<p>An error occured:</p><pre>" + l ( u . message + "" , ! 0 ) + "</pre>" ; throw u } } var d = { newline : /^\n+/ , code : /^( {4}[^\n]+\n*)+/ , fences : u , hr : /^( *[-*_]){3,} *(?:\n+|$)/ , heading : /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/ , nptable : u , lheading : /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/ , blockquote : /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/ , list : /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/ , html : /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/ , def : /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/ , table : u , paragraph : /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/ , text : /^[^\n]+/ } ; d . bullet = /(?:[*+-]|\d+\.)/ , d . item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/ , d . item = c ( d . item , "gm" ) ( /bull/g , d . bullet ) ( ) , d . list = c ( d . list ) ( /bull/g , d . bullet ) ( "hr" , "\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))" ) ( "def" , "\\n+(?=" + d . def . source + ")" ) ( ) , d . blockquote = c ( d .
r . className += " disabled-for-preview" ) ) , o . innerHTML = e . options . previewRender ( e . value ( ) , o ) ; var a = t . getWrapperElement ( ) . nextSibling ; /editor-preview-active-side/ . test ( a . className ) && N ( e ) } function E ( e , t , n , r ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { var i , o = n [ 0 ] , a = n [ 1 ] , l = e . getCursor ( "start" ) , s = e . getCursor ( "end" ) ; r && ( a = a . replace ( "#url#" , r ) ) , t ? ( i = e . getLine ( l . line ) , o = i . slice ( 0 , l . ch ) , a = i . slice ( l . ch ) , e . replaceRange ( o + a , { line : l . line , ch : 0 } ) ) : ( i = e . getSelection ( ) , e . replaceSelection ( o + i + a ) , l . ch += o . length , l !== s && ( s . ch += o . length ) ) , e . setSelection ( l , s ) , e . focus ( ) } } function O ( e , t , n ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { for ( var r = e . getCursor ( "start" ) , i = e . getCursor ( "end" ) , o = r . line ; o <= i . line ; o ++ ) ! function ( r ) { var i = e . getLine ( r ) , o = i . search ( /[^#]/ ) ; i = void 0 !== t ? 0 >= o ? "bigger" == t ? "###### " + i : "# " + i : 6 == o && "smaller" == t ? i . substr ( 7 ) : 1 == o && "bigger" == t ? i . substr ( 2 ) : "bigger" == t ? i . substr ( 1 ) : "#" + i : 1 == n ? 0 >= o ? "# " + i : o == n ? i . substr ( o + 1 ) : "# " + i . substr ( o + 1 ) : 2 == n ? 0 >= o ? "## " + i : o == n ? i . substr ( o + 1 ) : "## " + i . substr ( o + 1 ) : 0 >= o ? "### " + i : o == n ? i . substr ( o + 1 ) : "### " + i . substr ( o + 1 ) , e . replaceRange ( i , { line : r , ch : 0 } , { line : r , ch : 99999999999999 } ) } ( o ) ; e . focus ( ) } } function I ( e , t ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) { for ( var n = l ( e ) , r = e . getCursor ( "start" ) , i = e . getCursor ( "end" ) , o = { quote : /^(\s*)\>\s+/ , "unordered-list" : /^(\s*)(\*|\-|\+)\s+/ , "ordered-list" : /^(\s*)\d+\.\s+/ } , a = { quote : "> " , "unordered-list" : "* " , "ordered-list" : "1. " } , s = r . line ; s <= i . line ; s ++ ) ! function ( r ) { var i = e . getLine ( r ) ; i = n [ t ] ? i . replace ( o [ t ] , "$1" ) : a [ t ] + i , e . replaceRange ( i , { line : r , ch : 0 } , { line : r , ch : 99999999999999 } ) } ( s ) ; e . focus ( ) } } function P ( e , t , n , r ) { if ( ! /editor-preview-active/ . test ( e . codemirror . getWrapperElement ( ) . lastChild . className ) ) { r = "undefined" == typeof r ? n : r ; var i , o = e . codemirror , a = l ( o ) , s = n , c = r , u = o . getCursor ( "start" ) , f = o . getCursor ( "end" ) ; a [ t ] ? ( i = o . getLine ( u . line ) , s = i . slice ( 0 , u . ch ) , c = i . slice ( u . ch ) , "bold" == t ? ( s = s . replace ( /(\*\*|__)(?![\s\S]*(\*\*|__))/ , "" ) , c = c . replace ( /(\*\*|__)/ , "" ) ) : "italic" == t ? ( s = s . replace ( /(\*|_)(?![\s\S]*(\*|_))/ , "" ) , c = c . replace ( /(\*|_)/ , "" ) ) : "strikethrough" == t && ( s = s . replace ( /(\*\*|~~)(?![\s\S]*(\*\*|~~))/ , "" ) , c = c . replace ( /(\*\*|~~)/ , "" ) ) , o . replaceRange ( s + c , { line : u . line , ch : 0 } , { line : u . line , ch : 99999999999999 } ) , "bold" == t || "strikethrough" == t ? ( u . ch -= 2 , u !== f && ( f . ch -= 2 ) ) : "italic" == t && ( u . ch -= 1 , u !== f && ( f . ch -= 1 ) ) ) : ( i = o . getSelection ( ) , "bold" == t ? ( i = i . split ( "**" ) . join ( "" ) , i = i . split ( "__" ) . join ( "" ) ) : "italic" == t ? ( i = i . split ( "*" ) . join ( "" ) , i = i . split ( "_" ) . join ( "" ) ) : "strikethrough" == t && ( i = i . split ( "~~" ) . join ( "" ) ) , o . replaceSelection ( s + i + c ) , u . ch += n . length , f . ch = u . ch + i . length ) , o . setSelection ( u , f ) , o . focus ( ) } } function R ( e ) { if ( ! /editor-preview-active/ . test ( e . getWrapperElement ( ) . lastChild . className ) ) for ( var t , n = e . getCursor ( "start" ) , r = e . getCursor ( "end" ) , i = n . line ; i <= r . line ; i ++ ) t = e . getLine ( i ) , t = t . replace ( /^[ ]*([# ]+|\*|\-|[> ]+|[0-9]+(.|\)))[ ]*/ , "" ) , e . replaceRange ( t , { line : i , ch : 0 } , { line : i , ch : 99999999999999 } ) } function D ( e , t ) { for ( var n in t ) t . hasOwnProperty ( n ) && ( t [ n ] instanceof Array ? e [ n ] = t [ n ] . concat ( e [ n ] instanceof Array ? e [ n ] : [ ] ) : null !== t [ n ] && "object" == typeof t [ n ] && t [ n ] . constructor === Object ? e [ n ] = D ( e [ n ] || { } , t [ n ] ) : e [ n ] = t [ n ] ) ; return e } function H ( e ) { for ( var t = 1 ; t < arguments . length ; t ++ ) e = D ( e , arguments [ t ] ) ; return e } function W ( e ) { var t = /[a-zA-Z0-9_\u0392-\u03c9\u0410-\u04F9]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af]+/g , n = e . match ( t ) , r = 0 ; if ( null === n ) return r ; for ( var i = 0 ; i < n . length ; i ++ ) r += n [ i ] . charCodeAt ( 0 ) >= 19968 ? n [ i ] . length : 1 ; return r } function B ( e ) { e = e || { } , e . parent = this ; var t = ! 0 ; if ( e . autoDownloadFontAwesome === ! 1 && ( t = ! 1 ) , e . autoDownloadFontAwesome !== ! 0 ) for ( var n = document . styleSheets , r = 0 ; r < n . length ; r ++ ) n [ r ] . href && n [ r ] . href . indexOf ( "//maxcdn.bootstrapcdn.com/font-awesome/" ) > - 1 && ( t = ! 1 ) ; if ( t ) { var i = document . createElement ( "link" ) ; i . rel = "stylesheet" , i . href = "https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" , document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( i ) } if ( e . element ) this . element = e . element ; else if ( null === e . element ) return void console . log ( "SimpleMDE: Error. No element was found." ) ; if ( void 0 =
return ( new Date ) . getTime ( ) } ) ; var _ = "\t\n\v\f\r \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 ( null == e ) throw new TypeError ( "can't convert " + e + " to object" ) ; return Object ( e ) } } ) , ace . define ( "ace/lib/fixoldbrowsers" , [ "require" , "exports" , "module" , "ace/lib/regexp" , "ace/lib/es5-shim" ] , function ( e , t , n ) { "use strict" ; e ( "./regexp" ) , e ( "./es5-shim" ) } ) , ace . define ( "ace/lib/dom" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = "http://www.w3.org/1999/xhtml" ; return t . getDocumentHead = function ( e ) { return e || ( e = document ) , e . head || e . getElementsByTagName ( "head" ) [ 0 ] || e . documentElement } , t . createElement = function ( e , t ) { return document . createElementNS ? document . createElementNS ( t || r , e ) : document . createElement ( e ) } , t . hasCssClass = function ( e , t ) { var n = ( e . className + "" ) . split ( /\s+/g ) ; return n . indexOf ( t ) !== - 1 } , t . addCssClass = function ( e , n ) { t . hasCssClass ( e , n ) || ( e . className += " " + n ) } , t . removeCssClass = function ( e , t ) { for ( var n = e . className . split ( /\s+/g ) ; ; ) { var r = n . indexOf ( t ) ; if ( r == - 1 ) break ; n . splice ( r , 1 ) } e . className = n . join ( " " ) } , t . toggleCssClass = function ( e , t ) { for ( var n = e . className . split ( /\s+/g ) , r = ! 0 ; ; ) { var i = n . indexOf ( t ) ; if ( i == - 1 ) break ; r = ! 1 , n . splice ( i , 1 ) } return r && n . push ( t ) , e . className = n . join ( " " ) , r } , t . setCssClass = function ( e , n , r ) { r ? t . addCssClass ( e , n ) : t . removeCssClass ( e , n ) } , t . hasCssString = function ( e , t ) { var r , n = 0 ; if ( t = t || document , t . createStyleSheet && ( r = t . styleSheets ) ) { for ( ; n < r . length ; ) if ( r [ n ++ ] . owningElement . id === e ) return ! 0 } else if ( r = t . getElementsByTagName ( "style" ) ) for ( ; n < r . length ; ) if ( r [ n ++ ] . id === e ) return ! 0 ; return ! 1 } , t . importCssString = function ( n , r , i ) { if ( i = i || document , r && t . hasCssString ( r , i ) ) return null ; var s ; r && ( n += "\n/*# sourceURL=ace/css/" + r + " */" ) , i . createStyleSheet ? ( s = i . createStyleSheet ( ) , s . cssText = n , r && ( s . owningElement . id = r ) ) : ( s = t . createElement ( "style" ) , s . appendChild ( i . createTextNode ( n ) ) , r && ( s . id = r ) , t . getDocumentHead ( i ) . appendChild ( s ) ) } , t . importCssStylsheet = function ( e , n ) { if ( n . createStyleSheet ) n . createStyleSheet ( e ) ; else { var r = t . createElement ( "link" ) ; r . rel = "stylesheet" , r . href = e , t . getDocumentHead ( n ) . appendChild ( r ) } } , t . getInnerWidth = function ( e ) { return parseInt ( t . computedStyle ( e , "paddingLeft" ) , 10 ) + parseInt ( t . computedStyle ( e , "paddingRight" ) , 10 ) + e . clientWidth } , t . getInnerHeight = function ( e ) { return parseInt ( t . computedStyle ( e , "paddingTop" ) , 10 ) + parseInt ( t . computedStyle ( e , "paddingBottom" ) , 10 ) + e . clientHeight } , t . scrollbarWidth = function ( e ) { var n = t . createElement ( "ace_inner" ) ; n . style . width = "100%" , n . style . minWidth = "0px" , n . style . height = "200px" , n . style . display = "block" ; var r = t . createElement ( "ace_outer" ) , i = r . style ; i . position = "absolute" , i . left = "-10000px" , i . overflow = "hidden" , i . width = "200px" , i . minWidth = "0px" , i . height = "150px" , i . display = "block" , r . appendChild ( n ) ; var s = e . documentElement ; s . appendChild ( r ) ; var o = n . offsetWidth ; i . overflow = "scroll" ; var u = n . offsetWidth ; return o == u && ( u = r . clientWidth ) , s . removeChild ( r ) , o - u } , "undefined" == typeof document ? void ( t . importCssString = function ( ) { } ) : ( void 0 !== window . pageYOffset ? ( t . getPageScrollTop = function ( ) { return window . pageYOffset } , t . getPageScrollLeft = function ( ) { return window . pageXOffset } ) : ( t . getPageScrollTop = function ( ) { return document . body . scrollTop } , t . getPageScrollLeft = function ( ) { return document . body . scrollLeft } ) , window . getComputedStyle ? t . computedStyle = function ( e , t ) { return t ? ( window . getComputedStyle ( e , "" ) || { } ) [ t ] || "" : window . getComputedStyle ( e , "" ) || { } } : t . computedStyle = function ( e , t ) { return t ? e . currentStyle [ t ] : e . currentStyle } , t . setInnerHtml = function ( e , t ) { var n = e . cloneNode ( ! 1 ) ; return n . innerHTML = t , e . parentNode . replaceChild ( n , e ) , n } , "textContent" in document . documentElement ? ( t . setInnerText = function ( e , t ) { e . textContent = t } , t . getInnerText = function ( e ) { return e . textContent } ) : ( t . setInnerText = function ( e , t ) { e . innerText = t } , t . getInnerText = function ( e ) { return e . innerText } ) , t . getParentWindow = function ( e ) { return e . defaultView || e . parentWindow } , void 0 ) } ) , ace . define ( "ace/lib/oop" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; t . inherits =
t . clearSelection ( ) , t . isFocused ( ) && t . renderer . $cursorLayer . setBlinking ( ! 1 ) , clearInterval ( v ) , C ( ) , v = setInterval ( C , 20 ) , y = 0 , i . addListener ( document , "mousemove" , O ) } function L ( ) { clearInterval ( v ) , t . session . removeMarker ( h ) , h = null , t . $blockScrolling += 1 , t . selection . fromOrientedRange ( m ) , t . $blockScrolling -= 1 , t . isFocused ( ) && ! w && t . renderer . $cursorLayer . setBlinking ( ! t . getReadOnly ( ) ) , m = null , g = null , y = 0 , E = null , S = null , i . removeListener ( document , "mousemove" , O ) } function O ( ) { null == A && ( A = setTimeout ( function ( ) { null != A && h && L ( ) } , 20 ) ) } function M ( e ) { var t = e . types ; return ! t || Array . prototype . some . call ( t , function ( e ) { return "text/plain" == e || "Text" == e } ) } function _ ( e ) { var t = [ "copy" , "copymove" , "all" , "uninitialized" ] , n = [ "move" , "copymove" , "linkmove" , "all" , "uninitialized" ] , r = s . isMac ? e . altKey : e . ctrlKey , i = "uninitialized" ; try { i = e . dataTransfer . effectAllowed . toLowerCase ( ) } catch ( e ) { } var o = "none" ; return r && t . indexOf ( i ) >= 0 ? o = "copy" : n . indexOf ( i ) >= 0 ? o = "move" : t . indexOf ( i ) >= 0 && ( o = "copy" ) , o } var t = e . editor , n = r . createElement ( "img" ) ; n . src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" , s . isOpera && ( n . style . cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;" ) ; var f = [ "dragWait" , "dragWaitEnd" , "startDrag" , "dragReadyEnd" , "onMouseDrag" ] ; f . forEach ( function ( t ) { e [ t ] = this [ t ] } , this ) , t . addEventListener ( "mousedown" , this . onMouseDown . bind ( e ) ) ; var h , p , d , v , m , g , b , w , E , S , x , c = t . container , y = 0 ; this . onDragStart = function ( e ) { if ( this . cancelDrag || ! c . draggable ) { var r = this ; return setTimeout ( function ( ) { r . startSelect ( ) , r . captureMouse ( e ) } , 0 ) , e . preventDefault ( ) } m = t . getSelectionRange ( ) ; var i = e . dataTransfer ; i . effectAllowed = t . getReadOnly ( ) ? "copy" : "copyMove" , s . isOpera && ( t . container . appendChild ( n ) , n . scrollTop = 0 ) , i . setDragImage && i . setDragImage ( n , 0 , 0 ) , s . isOpera && t . container . removeChild ( n ) , i . clearData ( ) , i . setData ( "Text" , t . session . getTextRange ( ) ) , w = ! 0 , this . setState ( "drag" ) } , this . onDragEnd = function ( e ) { if ( c . draggable = ! 1 , w = ! 1 , this . setState ( null ) , ! t . getReadOnly ( ) ) { var n = e . dataTransfer . dropEffect ; ! b && "move" == n && t . session . remove ( t . getSelectionRange ( ) ) , t . renderer . $cursorLayer . setBlinking ( ! 0 ) } this . editor . unsetStyle ( "ace_dragging" ) , this . editor . renderer . setCursorStyle ( "" ) } , this . onDragEnter = function ( e ) { if ( ! t . getReadOnly ( ) && M ( e . dataTransfer ) ) return p = e . clientX , d = e . clientY , h || k ( ) , y ++ , e . dataTransfer . dropEffect = b = _ ( e ) , i . preventDefault ( e ) } , this . onDragOver = function ( e ) { if ( ! t . getReadOnly ( ) && M ( e . dataTransfer ) ) return p = e . clientX , d = e . clientY , h || ( k ( ) , y ++ ) , null !== A && ( A = null ) , e . dataTransfer . dropEffect = b = _ ( e ) , i . preventDefault ( e ) } , this . onDragLeave = function ( e ) { if ( y -- , y <= 0 && h ) return L ( ) , b = null , i . preventDefault ( e ) } , this . onDrop = function ( e ) { if ( g ) { var n = e . dataTransfer ; if ( w ) switch ( b ) { case "move" : m = m . contains ( g . row , g . column ) ? { start : g , end : g } : t . moveText ( m , g ) ; break ; case "copy" : m = t . moveText ( m , g , ! 0 ) } else { var r = n . getData ( "Text" ) ; m = { start : g , end : t . session . insert ( g , r ) } , t . focus ( ) , b = null } return L ( ) , i . preventDefault ( e ) } } , i . addListener ( c , "dragstart" , this . onDragStart . bind ( e ) ) , i . addListener ( c , "dragend" , this . onDragEnd . bind ( e ) ) , i . addListener ( c , "dragenter" , this . onDragEnter . bind ( e ) ) , i . addListener ( c , "dragover" , this . onDragOver . bind ( e ) ) , i . addListener ( c , "dragleave" , this . onDragLeave . bind ( e ) ) , i . addListener ( c , "drop" , this . onDrop . bind ( e ) ) ; var A = null } function l ( e , t , n , r ) { return Math . sqrt ( Math . pow ( n - e , 2 ) + Math . pow ( r - t , 2 ) ) } var r = e ( "../lib/dom" ) , i = e ( "../lib/event" ) , s = e ( "../lib/useragent" ) , o = 200 , u = 200 , a = 5 ; ( function ( ) { this . dragWait = function ( ) { var e = Date . now ( ) - this . mousedownEvent . time ; e > this . editor . getDragDelay ( ) && this . startDrag ( ) } , this . dragWaitEnd = function ( ) { var e = this . editor . container ; e . draggable = ! 1 , this . startSelect ( this . mousedownEvent . getDocumentPosition ( ) ) , this . selectEnd ( ) } , this . dragReadyEnd = function ( e ) { this . editor . renderer . $cursorLayer . setBlinking ( ! this . editor . getReadOnly ( ) ) , this . editor . unsetStyle ( "ace_dragging" ) , this . editor . renderer . setCursorStyle ( "" ) , this . dragWaitEnd ( ) } , this . startDrag = function ( ) { this . cancelDrag = ! 1 ; var e = this . editor , t = e . container ; t . draggable = ! 0 , e . renderer . $cursorLayer . setBlinking ( ! 1 ) , e . setStyle ( "ace_dragging" ) ; var n = s . isWin ? "default" : "move" ; e . renderer . setCursorStyle ( n ) , this . setState ( "dragReady" ) } , this . onMou
this . moveCursorTo ( r . row , r . column , n ) } , this . detach = function ( ) { this . lead . detach ( ) , this . anchor . detach ( ) , this . session = this . doc = null } , this . fromOrientedRange = function ( e ) { this . setSelectionRange ( e , e . cursor == e . start ) , this . $desiredColumn = e . desiredColumn || this . $desiredColumn } , this . toOrientedRange = function ( e ) { var t = this . getRange ( ) ; return e ? ( e . start . column = t . start . column , e . start . row = t . start . row , e . end . column = t . end . column , e . end . row = t . end . row ) : e = t , e . cursor = this . isBackwards ( ) ? e . start : e . end , e . desiredColumn = this . $desiredColumn , e } , this . getRangeOfMovements = function ( e ) { var t = this . getCursor ( ) ; try { e ( this ) ; var n = this . getCursor ( ) ; return o . fromPoints ( t , n ) } catch ( r ) { return o . fromPoints ( t , t ) } finally { this . moveCursorToPosition ( t ) } } , this . toJSON = function ( ) { if ( this . rangeCount ) var e = this . ranges . map ( function ( e ) { var t = e . clone ( ) ; return t . isBackwards = e . cursor == e . start , t } ) ; else { var e = this . getRange ( ) ; e . isBackwards = this . isBackwards ( ) } return e } , this . fromJSON = function ( e ) { if ( void 0 == e . start ) { if ( this . rangeList ) { this . toSingleRange ( e [ 0 ] ) ; for ( var t = e . length ; t -- ; ) { var n = o . fromPoints ( e [ t ] . start , e [ t ] . end ) ; e [ t ] . isBackwards && ( n . cursor = n . start ) , this . addRange ( n , ! 0 ) } return } e = e [ 0 ] } this . rangeList && this . toSingleRange ( e ) , this . setSelectionRange ( e , e . isBackwards ) } , this . isEqual = function ( e ) { if ( ( e . length || this . rangeCount ) && e . length != this . rangeCount ) return ! 1 ; if ( ! e . length || ! this . ranges ) return this . getRange ( ) . isEqual ( e ) ; for ( var t = this . ranges . length ; t -- ; ) if ( ! this . ranges [ t ] . isEqual ( e [ t ] ) ) return ! 1 ; return ! 0 } } ) . call ( u . prototype ) , t . Selection = u } ) , ace . define ( "ace/tokenizer" , [ "require" , "exports" , "module" , "ace/config" ] , function ( e , t , n ) { "use strict" ; var r = e ( "./config" ) , i = 2e3 , s = function ( e ) { this . states = e , this . regExps = { } , this . matchMappings = { } ; for ( var t in this . states ) { for ( var n = this . states [ t ] , r = [ ] , i = 0 , s = this . matchMappings [ t ] = { defaultToken : "text" } , o = "g" , u = [ ] , a = 0 ; a < n . length ; a ++ ) { var f = n [ a ] ; if ( f . defaultToken && ( s . defaultToken = f . defaultToken ) , f . caseInsensitive && ( o = "gi" ) , null != f . regex ) { f . regex instanceof RegExp && ( f . regex = f . regex . toString ( ) . slice ( 1 , - 1 ) ) ; var l = f . regex , c = new RegExp ( "(?:(" + l + ")|(.))" ) . exec ( "a" ) . length - 2 ; Array . isArray ( f . token ) ? 1 == f . token . length || 1 == c ? f . token = f . token [ 0 ] : c - 1 != f . token . length ? ( this . reportError ( "number of classes and regexp groups doesn't match" , { rule : f , groupCount : c - 1 } ) , f . token = f . token [ 0 ] ) : ( f . tokenArray = f . token , f . token = null , f . onMatch = this . $arrayTokens ) : "function" == typeof f . token && ! f . onMatch && ( c > 1 ? f . onMatch = this . $applyToken : f . onMatch = f . token ) , c > 1 && ( /\\\d/ . test ( f . regex ) ? l = f . regex . replace ( /\\([0-9]+)/g , function ( e , t ) { return "\\" + ( parseInt ( t , 10 ) + i + 1 ) } ) : ( c = 1 , l = this . removeCapturingGroups ( f . regex ) ) , ! f . splitRegex && "string" != typeof f . token && u . push ( f ) ) , s [ i ] = a , i += c , r . push ( l ) , f . onMatch || ( f . onMatch = null ) } } r . length || ( s [ 0 ] = 0 , r . push ( "$" ) ) , u . forEach ( function ( e ) { e . splitRegex = this . createSplitterRegexp ( e . regex , o ) } , this ) , this . regExps [ t ] = new RegExp ( "(" + r . join ( ")|(" ) + ")|($)" , o ) } } ; ( function ( ) { this . $setMaxTokenCount = function ( e ) { i = 0 | e } , this . $applyToken = function ( e ) { var t = this . splitRegex . exec ( e ) . slice ( 1 ) , n = this . token . apply ( this , t ) ; if ( "string" == typeof n ) return [ { type : n , value : e } ] ; for ( var r = [ ] , i = 0 , s = n . length ; i < s ; i ++ ) t [ i ] && ( r [ r . length ] = { type : n [ i ] , value : t [ i ] } ) ; return r } , this . $arrayTokens = function ( e ) { if ( ! e ) return [ ] ; var t = this . splitRegex . exec ( e ) ; if ( ! t ) return "text" ; for ( var n = [ ] , r = this . tokenArray , i = 0 , s = r . length ; i < s ; i ++ ) t [ i + 1 ] && ( n [ n . length ] = { type : r [ i ] , value : t [ i + 1 ] } ) ; return n } , this . removeCapturingGroups = function ( e ) { var t = e . replace ( /\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g , function ( e , t ) { return t ? "(?:" : e } ) ; return t } , this . createSplitterRegexp = function ( e , t ) { if ( e . indexOf ( "(?=" ) != - 1 ) { var n = 0 , r = ! 1 , i = { } ; e . replace ( /(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g , function ( e , t , s , o , u , a ) { return r ? r = "]" != u : u ? r = ! 0 : o ? ( n == i . stack && ( i . end = a + 1 , i . stack = - 1 ) , n -- ) : s && ( n ++ , 1 != s . length && ( i . stack = n , i . start = a ) ) , e } ) , null != i . end && /^\)*$/ . test ( e . substr ( i . end ) ) && ( e = e . substring ( 0 , i . start ) + e . substr ( i . end ) ) } return "^" != e . charAt ( 0 ) && ( e = "^" + e ) , "$" != e . charAt ( e . length - 1 ) && ( e += "$" ) , new RegExp ( e , ( t || "" ) . replace ( "g" , "" ) ) } , this . getLineTokens = function ( e , t ) { if ( t && "string" != typeof t ) { var n = t . slice ( 0 ) ; t = n [ 0 ] , "#tmp" === t && ( n . shift ( ) , t = n . shift ( ) ) } else var n = [ ] ; var r = t || "start" , s = this . sta
Pd : "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D" , Ps : "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62" , Pe : "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63" , Pi : "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20" , Pf : "00BB2019201D203A2E032E052E0A2E0D2E1D2E21" , Pc : "005F203F20402054FE33FE34FE4D-FE4FFF3F" , Po : "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65" , S : "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD" , Sm : "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC" , Sc : "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6" , Sk : "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3" , So : " 00 A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3 - 0 BF80BFA0C7F0CF10CF20D790F01 - 0 F030F13 - 0 F170F1A - 0 F1F0F340F360F380FBE - 0 FC50FC7 - 0 FCC0FCE0FCF0FD5 - 0 FD8109E109F13601390 - 1399194019E0 - 19 FF1B61 - 1 B6A1B74 - 1 B7C210021012103 - 21062108210921142116 - 2118211E-2123212521272129212 E213A213B214A214C214D214F2195 - 2199219 C - 219 F21A121A221A421A521A7 - 21 AD21AF - 21 CD21D021D121D321D5 - 21 F32300 - 2307230 C - 231 F2322 - 2328232 B - 237 B237D - 239 A23B4 - 23 DB23E2 - 23E82400 - 24262440 - 244 A249C - 24E92500 - 25 B625B8 - 25 C025C2 - 25 F72600 - 266E2670 - 26 CD26CF - 26E126 E326E8 - 26 FF2701 - 27042706 - 2709270 C - 27272729 - 274 B274D274F - 27522756 - 275E2761 - 276727942798 - 27 AF27B1 - 27 BE2800 - 28 FF2B00 - 2 B2F2B452B462B50 - 2 B592CE5 - 2 CEA2E80 - 2E992 E9B - 2 EF32F00 - 2 FD52FF0 - 2 FFB300430123013302030363037303E303F319031913196 - 319 F31C0 - 31E3320
} , this . clipRows = function ( e , t ) { var n = this . ranges ; if ( n [ 0 ] . start . row > t || n [ n . length - 1 ] . start . row < e ) return [ ] ; var r = this . pointIndex ( { row : e , column : 0 } ) ; r < 0 && ( r = - r - 1 ) ; var i = this . pointIndex ( { row : t , column : 0 } , r ) ; i < 0 && ( i = - i - 1 ) ; for ( var s = [ ] , o = r ; o < i ; o ++ ) s . push ( n [ o ] ) ; return s } , this . removeAll = function ( ) { return this . ranges . splice ( 0 , this . ranges . length ) } , this . attach = function ( e ) { this . session && this . detach ( ) , this . session = e , this . onChange = this . $onChange . bind ( this ) , this . session . on ( "change" , this . onChange ) } , this . detach = function ( ) { this . session && ( this . session . removeListener ( "change" , this . onChange ) , this . session = null ) } , this . $onChange = function ( e ) { if ( "insert" == e . action ) var t = e . start , n = e . end ; else var n = e . start , t = e . end ; for ( var r = t . row , i = n . row , s = i - r , o = - t . column + n . column , u = this . ranges , a = 0 , f = u . length ; a < f ; a ++ ) { var l = u [ a ] ; if ( ! ( l . end . row < r ) ) { if ( l . start . row > r ) break ; if ( l . start . row == r && l . start . column >= t . column && ( l . start . column != t . column || ! this . $insertRight ) && ( l . start . column += o , l . start . row += s ) , l . end . row == r && l . end . column >= t . column ) { if ( l . end . column == t . column && this . $insertRight ) continue ; l . end . column == t . column && o > 0 && a < f - 1 && l . end . column > l . start . column && l . end . column == u [ a + 1 ] . start . column && ( l . end . column -= o ) , l . end . column += o , l . end . row += s } } } if ( 0 != s && a < f ) for ( ; a < f ; a ++ ) { var l = u [ a ] ; l . start . row += s , l . end . row += s } } } ) . call ( s . prototype ) , t . RangeList = s } ) , ace . define ( "ace/edit_session/fold" , [ "require" , "exports" , "module" , "ace/range" , "ace/range_list" , "ace/lib/oop" ] , function ( e , t , n ) { "use strict" ; function u ( e , t ) { e . row -= t . row , 0 == e . row && ( e . column -= t . column ) } function a ( e , t ) { u ( e . start , t ) , u ( e . end , t ) } function f ( e , t ) { 0 == e . row && ( e . column += t . column ) , e . row += t . row } function l ( e , t ) { f ( e . start , t ) , f ( e . end , t ) } var i = ( e ( "../range" ) . Range , e ( "../range_list" ) . RangeList ) , s = e ( "../lib/oop" ) , o = t . Fold = function ( e , t ) { this . foldLine = null , this . placeholder = t , this . range = e , this . start = e . start , this . end = e . end , this . sameRow = e . start . row == e . end . row , this . subFolds = this . ranges = [ ] } ; s . inherits ( o , i ) , function ( ) { this . toString = function ( ) { return '"' + this . placeholder + '" ' + this . range . toString ( ) } , this . setFoldLine = function ( e ) { this . foldLine = e , this . subFolds . forEach ( function ( t ) { t . setFoldLine ( e ) } ) } , this . clone = function ( ) { var e = this . range . clone ( ) , t = new o ( e , this . placeholder ) ; return this . subFolds . forEach ( function ( e ) { t . subFolds . push ( e . clone ( ) ) } ) , t . collapseChildren = this . collapseChildren , t } , this . addSubFold = function ( e ) { if ( ! this . range . isEqual ( e ) ) { if ( ! this . range . containsRange ( e ) ) throw new Error ( "A fold can't intersect already existing fold" + e . range + this . range ) ; a ( e , this . start ) ; for ( var t = e . start . row , n = e . start . column , r = 0 , i = - 1 ; r < this . subFolds . length && ( i = this . subFolds [ r ] . range . compare ( t , n ) , 1 == i ) ; r ++ ) ; var s = this . subFolds [ r ] ; if ( 0 == i ) return s . addSubFold ( e ) ; for ( var t = e . range . end . row , n = e . range . end . column , o = r , i = - 1 ; o < this . subFolds . length && ( i = this . subFolds [ o ] . range . compare ( t , n ) , 1 == i ) ; o ++ ) ; this . subFolds [ o ] ; if ( 0 == i ) throw new Error ( "A fold can't intersect already existing fold" + e . range + this . range ) ; this . subFolds . splice ( r , o - r , e ) ; return e . setFoldLine ( this . foldLine ) , e } } , this . restoreRange = function ( e ) { return l ( e , this . start ) } } . call ( o . prototype ) } ) , ace . define ( "ace/edit_session/folding" , [ "require" , "exports" , "module" , "ace/range" , "ace/edit_session/fold_line" , "ace/edit_session/fold" , "ace/token_iterator" ] , function ( e , t , n ) { "use strict" ; function u ( ) { this . getFoldAt = function ( e , t , n ) { var r = this . getFoldLine ( e ) ; if ( ! r ) return null ; for ( var i = r . folds , s = 0 ; s < i . length ; s ++ ) { var o = i [ s ] ; if ( o . range . contains ( e , t ) ) { if ( 1 == n && o . range . isEnd ( e , t ) ) continue ; if ( n == - 1 && o . range . isStart ( e , t ) ) continue ; return o } } } , this . getFoldsInRange = function ( e ) { var t = e . start , n = e . end , r = this . $foldData , i = [ ] ; t . column += 1 , n . column -= 1 ; for ( var s = 0 ; s < r . length ; s ++ ) { var o = r [ s ] . range . compareRange ( e ) ; if ( 2 != o ) { if ( o == - 2 ) break ; for ( var u = r [ s ] . folds , a = 0 ; a < u . length ; a ++ ) { var f = u [ a ] ; if ( o = f . range . compareRange ( e ) , o == - 2 ) break ; if ( 2 != o ) { if ( 42 == o ) break ; i . push ( f ) } } } } return t . column -= 1 , n . column += 1 , i } , this . getFoldsInRangeList = function ( e ) { if ( Array . isArray ( e ) ) { var t = [ ] ; e . forEach ( function ( e ) { t = t . concat ( this . getFoldsInRange ( e ) ) } , this ) } else var t = this . getFoldsInRange ( e ) ; return t } , this . getAllFolds = function ( ) { for ( var e = [ ] , t = this . $foldData , n = 0 ; n < t . length ; n ++ ) for ( var r = 0 ; r < t [ n ] . f
min : e , max : t } , this . $modified = ! 0 , this . $useWrapMode && this . _signal ( "changeWrapMode" ) ) } , this . adjustWrapLimit = function ( e , t ) { var n = this . $wrapLimitRange ; n . max < 0 && ( n = { min : t , max : t } ) ; var r = this . $constrainWrapLimit ( e , n . min , n . max ) ; return r != this . $wrapLimit && r > 1 && ( this . $wrapLimit = r , this . $modified = ! 0 , this . $useWrapMode && ( this . $updateWrapData ( 0 , this . getLength ( ) - 1 ) , this . $resetRowCache ( 0 ) , this . _signal ( "changeWrapLimit" ) ) , ! 0 ) } , this . $constrainWrapLimit = function ( e , t , n ) { return t && ( e = Math . max ( t , e ) ) , n && ( e = Math . min ( n , e ) ) , e } , this . getWrapLimit = function ( ) { return this . $wrapLimit } , this . setWrapLimit = function ( e ) { this . setWrapLimitRange ( e , e ) } , this . getWrapLimitRange = function ( ) { return { min : this . $wrapLimitRange . min , max : this . $wrapLimitRange . max } } , this . $updateInternalDataOnChange = function ( e ) { var t = this . $useWrapMode , n = e . action , r = e . start , i = e . end , s = r . row , o = i . row , u = o - s , a = null ; if ( this . $updating = ! 0 , 0 != u ) if ( "remove" === n ) { this [ t ? "$wrapData" : "$rowLengthCache" ] . splice ( s , u ) ; var f = this . $foldData ; a = this . getFoldsInRange ( e ) , this . removeFolds ( a ) ; var l = this . getFoldLine ( i . row ) , c = 0 ; if ( l ) { l . addRemoveChars ( i . row , i . column , r . column - i . column ) , l . shiftRow ( - u ) ; var h = this . getFoldLine ( s ) ; h && h !== l && ( h . merge ( l ) , l = h ) , c = f . indexOf ( l ) + 1 } for ( c ; c < f . length ; c ++ ) { var l = f [ c ] ; l . start . row >= i . row && l . shiftRow ( - u ) } o = s } else { var p = Array ( u ) ; p . unshift ( s , 0 ) ; var d = t ? this . $wrapData : this . $rowLengthCache ; d . splice . apply ( d , p ) ; var f = this . $foldData , l = this . getFoldLine ( s ) , c = 0 ; if ( l ) { var v = l . range . compareInside ( r . row , r . column ) ; 0 == v ? ( l = l . split ( r . row , r . column ) , l && ( l . shiftRow ( u ) , l . addRemoveChars ( o , 0 , i . column - r . column ) ) ) : v == - 1 && ( l . addRemoveChars ( s , 0 , i . column - r . column ) , l . shiftRow ( u ) ) , c = f . indexOf ( l ) + 1 } for ( c ; c < f . length ; c ++ ) { var l = f [ c ] ; l . start . row >= s && l . shiftRow ( u ) } } else { u = Math . abs ( e . start . column - e . end . column ) , "remove" === n && ( a = this . getFoldsInRange ( e ) , this . removeFolds ( a ) , u = - u ) ; var l = this . getFoldLine ( s ) ; l && l . addRemoveChars ( s , r . column , u ) } return t && this . $wrapData . length != this . doc . getLength ( ) && console . error ( "doc.getLength() and $wrapData.length have to be the same!" ) , this . $updating = ! 1 , t ? this . $updateWrapData ( s , o ) : this . $updateRowLengthCache ( s , o ) , a } , this . $updateRowLengthCache = function ( e , t , n ) { this . $rowLengthCache [ e ] = null , this . $rowLengthCache [ t ] = null } , this . $updateWrapData = function ( e , t ) { var a , f , r = this . doc . getAllLines ( ) , i = this . getTabSize ( ) , s = this . $wrapData , o = this . $wrapLimit , l = e ; for ( t = Math . min ( t , r . length - 1 ) ; l <= t ; ) f = this . getFoldLine ( l , f ) , f ? ( a = [ ] , f . walk ( function ( e , t , i , s ) { var o ; if ( null != e ) { o = this . $getDisplayTokens ( e , a . length ) , o [ 0 ] = n ; for ( var f = 1 ; f < o . length ; f ++ ) o [ f ] = u } else o = this . $getDisplayTokens ( r [ t ] . substring ( s , i ) , a . length ) ; a = a . concat ( o ) } . bind ( this ) , f . end . row , r [ f . end . row ] . length + 1 ) , s [ f . start . row ] = this . $computeWrapSplits ( a , o , i ) , l = f . end . row + 1 ) : ( a = this . $getDisplayTokens ( r [ l ] ) , s [ l ] = this . $computeWrapSplits ( a , o , i ) , l ++ ) } ; var e = 1 , t = 2 , n = 3 , u = 4 , l = 9 , p = 10 , d = 11 , v = 12 ; this . $computeWrapSplits = function ( e , r , i ) { function g ( ) { var t = 0 ; if ( 0 === m ) return t ; if ( h ) for ( var n = 0 ; n < e . length ; n ++ ) { var r = e [ n ] ; if ( r == p ) t += 1 ; else { if ( r != d ) { if ( r == v ) continue ; break } t += i } } return c && h !== ! 1 && ( t += i ) , Math . min ( t , m ) } function y ( t ) { var n = e . slice ( a , t ) , r = n . length ; n . join ( "" ) . replace ( /12/g , function ( ) { r -= 1 } ) . replace ( /2/g , function ( ) { r -= 1 } ) , s . length || ( b = g ( ) , s . indent = b ) , f += r , s . push ( f ) , a = t } if ( 0 == e . length ) return [ ] ; for ( var s = [ ] , o = e . length , a = 0 , f = 0 , c = this . $wrapAsCode , h = this . $indentedSoftWrap , m = r <= Math . max ( 2 * i , 8 ) || h === ! 1 ? 0 : Math . floor ( r / 2 ) , b = 0 ; o - a > r - b ; ) { var w = a + r - b ; if ( e [ w - 1 ] >= p && e [ w ] >= p ) y ( w ) ; else if ( e [ w ] != n && e [ w ] != u ) { for ( var E = Math . max ( w - ( r - ( r >> 2 ) ) , a - 1 ) ; w > E && e [ w ] < n ; ) w -- ; if ( c ) { for ( ; w > E && e [ w ] < n ; ) w -- ; for ( ; w > E && e [ w ] == l ; ) w -- } else for ( ; w > E && e [ w ] < p ; ) w -- ; w > E ? y ( ++ w ) : ( w = a + r , e [ w ] == t && w -- , y ( w - b ) ) } else { for ( w ; w != a - 1 && e [ w ] != n ; w -- ) ; if ( w > a ) { y ( w ) ; continue } for ( w = a + r ; w < e . length && e [ w ] == u ; w ++ ) ; if ( w == e . length ) break ; y ( w ) } } return s } , this . $getDisplayTokens = function ( n , r ) { var s , i = [ ] ; r = r || 0 ; for ( var o = 0 ; o < n . length ; o ++ ) { var u = n . charCodeAt ( o ) ; if ( 9 == u ) { s = this . getScreenTabSize ( i . length + r ) , i . push ( d ) ; for ( var a = 1 ; a < s ; a ++ ) i . push ( v ) } else 32 == u ? i . push ( p ) : u > 39 && u < 48 || u > 57 && u < 64 ? i . push ( l ) : u >= 4352 && m ( u ) ? i . push ( e , t ) : i . push ( e ) } return i } , this . $getStringScreenWidth = function ( e , t , n ) { if ( 0 == t ) return [ 0 , 0 ] ; null == t && ( t = 1 / 0 ) , n = n || 0 ; var r , i ; for ( i = 0 ; i < e . length && ( r = e . c
} , { name : "touppercase" , bindKey : o ( "Ctrl-U" , "Ctrl-U" ) , exec : function ( e ) { e . toUpperCase ( ) } , multiSelectAction : "forEach" , scrollIntoView : "cursor" } , { name : "tolowercase" , bindKey : o ( "Ctrl-Shift-U" , "Ctrl-Shift-U" ) , exec : function ( e ) { e . toLowerCase ( ) } , multiSelectAction : "forEach" , scrollIntoView : "cursor" } , { name : "expandtoline" , bindKey : o ( "Ctrl-Shift-L" , "Command-Shift-L" ) , exec : function ( e ) { var t = e . selection . getRange ( ) ; t . start . column = t . end . column = 0 , t . end . row ++ , e . selection . setRange ( t , ! 1 ) } , multiSelectAction : "forEach" , scrollIntoView : "cursor" , readOnly : ! 0 } , { name : "joinlines" , bindKey : o ( null , null ) , exec : function ( e ) { for ( var t = e . selection . isBackwards ( ) , n = t ? e . selection . getSelectionLead ( ) : e . selection . getSelectionAnchor ( ) , i = t ? e . selection . getSelectionAnchor ( ) : e . selection . getSelectionLead ( ) , o = e . session . doc . getLine ( n . row ) . length , u = e . session . doc . getTextRange ( e . selection . getRange ( ) ) , a = u . replace ( /\n\s*/ , " " ) . length , f = e . session . doc . getLine ( n . row ) , l = n . row + 1 ; l <= i . row + 1 ; l ++ ) { var c = r . stringTrimLeft ( r . stringTrimRight ( e . session . doc . getLine ( l ) ) ) ; 0 !== c . length && ( c = " " + c ) , f += c } i . row + 1 < e . session . doc . getLength ( ) - 1 && ( f += e . session . doc . getNewLineCharacter ( ) ) , e . clearSelection ( ) , e . session . doc . replace ( new s ( n . row , 0 , i . row + 2 , 0 ) , f ) , a > 0 ? ( e . selection . moveCursorTo ( n . row , n . column ) , e . selection . selectTo ( n . row , n . column + a ) ) : ( o = e . session . doc . getLine ( n . row ) . length > o ? o + 1 : o , e . selection . moveCursorTo ( n . row , o ) ) } , multiSelectAction : "forEach" , readOnly : ! 0 } , { name : "invertSelection" , bindKey : o ( null , null ) , exec : function ( e ) { var t = e . session . doc . getLength ( ) - 1 , n = e . session . doc . getLine ( t ) . length , r = e . selection . rangeList . ranges , i = [ ] ; r . length < 1 && ( r = [ e . selection . getRange ( ) ] ) ; for ( var o = 0 ; o < r . length ; o ++ ) o == r . length - 1 && ( r [ o ] . end . row !== t || r [ o ] . end . column !== n ) && i . push ( new s ( r [ o ] . end . row , r [ o ] . end . column , t , n ) ) , 0 === o ? ( 0 !== r [ o ] . start . row || 0 !== r [ o ] . start . column ) && i . push ( new s ( 0 , 0 , r [ o ] . start . row , r [ o ] . start . column ) ) : i . push ( new s ( r [ o - 1 ] . end . row , r [ o - 1 ] . end . column , r [ o ] . start . row , r [ o ] . start . column ) ) ; e . exitMultiSelectMode ( ) , e . clearSelection ( ) ; for ( var o = 0 ; o < i . length ; o ++ ) e . selection . addRange ( i [ o ] , ! 1 ) } , readOnly : ! 0 , scrollIntoView : "none" } ] } ) , ace . define ( "ace/editor" , [ "require" , "exports" , "module" , "ace/lib/fixoldbrowsers" , "ace/lib/oop" , "ace/lib/dom" , "ace/lib/lang" , "ace/lib/useragent" , "ace/keyboard/textinput" , "ace/mouse/mouse_handler" , "ace/mouse/fold_handler" , "ace/keyboard/keybinding" , "ace/edit_session" , "ace/search" , "ace/range" , "ace/lib/event_emitter" , "ace/commands/command_manager" , "ace/commands/default_commands" , "ace/config" , "ace/token_iterator" ] , function ( e , t , n ) { "use strict" ; e ( "./lib/fixoldbrowsers" ) ; var r = e ( "./lib/oop" ) , i = e ( "./lib/dom" ) , s = e ( "./lib/lang" ) , o = e ( "./lib/useragent" ) , u = e ( "./keyboard/textinput" ) . TextInput , a = e ( "./mouse/mouse_handler" ) . MouseHandler , f = e ( "./mouse/fold_handler" ) . FoldHandler , l = e ( "./keyboard/keybinding" ) . KeyBinding , c = e ( "./edit_session" ) . EditSession , h = e ( "./search" ) . Search , p = e ( "./range" ) . Range , d = e ( "./lib/event_emitter" ) . EventEmitter , v = e ( "./commands/command_manager" ) . CommandManager , m = e ( "./commands/default_commands" ) . commands , g = e ( "./config" ) , y = e ( "./token_iterator" ) . TokenIterator , b = function ( e , t ) { var n = e . getContainerElement ( ) ; this . container = n , this . renderer = e , this . commands = new v ( o . isMac ? "mac" : "win" , m ) , this . textInput = new u ( e . getTextAreaContainer ( ) , this ) , this . renderer . textarea = this . textInput . getElement ( ) , this . keyBinding = new l ( this ) , this . $mouseHandler = new a ( this ) , new f ( this ) , this . $blockScrolling = 0 , this . $search = ( new h ) . set ( { wrap : ! 0 } ) , this . $historyTracker = this . $historyTracker . bind ( this ) , this . commands . on ( "exec" , this . $historyTracker ) , this . $initOperationListeners ( ) , this . _$emitInputEvent = s . delayedCall ( function ( ) { this . _signal ( "input" , { } ) , this . session && this . session . bgTokenizer && this . session . bgTokenizer . scheduleStart ( ) } . bind ( this ) ) , this . on ( "change" , function ( e , t ) { t . _$emitInputEvent . schedule ( 31 ) } ) , this . setSession ( t || new c ( "" ) ) , g . resetOptions ( this ) , g . _signal ( "editor" , this ) } ; ( function ( ) { r . implement ( this , d ) , this . $initOperationListeners = function ( ) { this . selections = [ ] , this . commands . on ( "exec" , this . startOperation . bind ( this ) , ! 0 ) , this . commands . on ( "afterExec" , this . endOperation . bind ( this ) , ! 0 ) , this . $opResetTimer = s . delayedCall ( this . endOperation . bind ( this ) ) , thi
this . selection . moveCursorBy ( e || 1 , 0 ) } , this . navigateLeft = function ( e ) { if ( this . selection . isEmpty ( ) ) for ( e = e || 1 ; e -- ; ) this . selection . moveCursorLeft ( ) ; else { var t = this . getSelectionRange ( ) . start ; this . moveCursorToPosition ( t ) } this . clearSelection ( ) } , this . navigateRight = function ( e ) { if ( this . selection . isEmpty ( ) ) for ( e = e || 1 ; e -- ; ) this . selection . moveCursorRight ( ) ; else { var t = this . getSelectionRange ( ) . end ; this . moveCursorToPosition ( t ) } this . clearSelection ( ) } , this . navigateLineStart = function ( ) { this . selection . moveCursorLineStart ( ) , this . clearSelection ( ) } , this . navigateLineEnd = function ( ) { this . selection . moveCursorLineEnd ( ) , this . clearSelection ( ) } , this . navigateFileEnd = function ( ) { this . selection . moveCursorFileEnd ( ) , this . clearSelection ( ) } , this . navigateFileStart = function ( ) { this . selection . moveCursorFileStart ( ) , this . clearSelection ( ) } , this . navigateWordRight = function ( ) { this . selection . moveCursorWordRight ( ) , this . clearSelection ( ) } , this . navigateWordLeft = function ( ) { this . selection . moveCursorWordLeft ( ) , this . clearSelection ( ) } , this . replace = function ( e , t ) { t && this . $search . set ( t ) ; var n = this . $search . find ( this . session ) , r = 0 ; return n ? ( this . $tryReplace ( n , e ) && ( r = 1 ) , null !== n && ( this . selection . setSelectionRange ( n ) , this . renderer . scrollSelectionIntoView ( n . start , n . end ) ) , r ) : r } , this . replaceAll = function ( e , t ) { t && this . $search . set ( t ) ; var n = this . $search . findAll ( this . session ) , r = 0 ; if ( ! n . length ) return r ; this . $blockScrolling += 1 ; var i = this . getSelectionRange ( ) ; this . selection . moveTo ( 0 , 0 ) ; for ( var s = n . length - 1 ; s >= 0 ; -- s ) this . $tryReplace ( n [ s ] , e ) && r ++ ; return this . selection . setSelectionRange ( i ) , this . $blockScrolling -= 1 , r } , this . $tryReplace = function ( e , t ) { var n = this . session . getTextRange ( e ) ; return t = this . $search . replace ( n , t ) , null !== t ? ( e . end = this . session . replace ( e , t ) , e ) : null } , this . getLastSearchOptions = function ( ) { return this . $search . getOptions ( ) } , this . find = function ( e , t , n ) { t || ( t = { } ) , "string" == typeof e || e instanceof RegExp ? t . needle = e : "object" == typeof e && r . mixin ( t , e ) ; var i = this . selection . getRange ( ) ; null == t . needle && ( e = this . session . getTextRange ( i ) || this . $search . $options . needle , e || ( i = this . session . getWordRange ( i . start . row , i . start . column ) , e = this . session . getTextRange ( i ) ) , this . $search . set ( { needle : e } ) ) , this . $search . set ( t ) , t . start || this . $search . set ( { start : i } ) ; var s = this . $search . find ( this . session ) ; return t . preventScroll ? s : s ? ( this . revealRange ( s , n ) , s ) : ( t . backwards ? i . start = i . end : i . end = i . start , void this . selection . setRange ( i ) ) } , this . findNext = function ( e , t ) { this . find ( { skipCurrent : ! 0 , backwards : ! 1 } , e , t ) } , this . findPrevious = function ( e , t ) { this . find ( e , { skipCurrent : ! 0 , backwards : ! 0 } , t ) } , this . revealRange = function ( e , t ) { this . $blockScrolling += 1 , this . session . unfold ( e ) , this . selection . setSelectionRange ( e ) , this . $blockScrolling -= 1 ; var n = this . renderer . scrollTop ; this . renderer . scrollSelectionIntoView ( e . start , e . end , . 5 ) , t !== ! 1 && this . renderer . animateScrolling ( n ) } , this . undo = function ( ) { this . $blockScrolling ++ , this . session . getUndoManager ( ) . undo ( ) , this . $blockScrolling -- , this . renderer . scrollCursorIntoView ( null , . 5 ) } , this . redo = function ( ) { this . $blockScrolling ++ , this . session . getUndoManager ( ) . redo ( ) , this . $blockScrolling -- , this . renderer . scrollCursorIntoView ( null , . 5 ) } , this . destroy = function ( ) { this . renderer . destroy ( ) , this . _signal ( "destroy" , this ) , this . session && this . session . destroy ( ) } , this . setAutoScrollEditorIntoView = function ( e ) { if ( e ) { var t , n = this , r = ! 1 ; this . $scrollAnchor || ( this . $scrollAnchor = document . createElement ( "div" ) ) ; var i = this . $scrollAnchor ; i . style . cssText = "position:absolute" , this . container . insertBefore ( i , this . container . firstChild ) ; var s = this . on ( "changeSelection" , function ( ) { r = ! 0 } ) , o = this . renderer . on ( "beforeRender" , function ( ) { r && ( t = n . renderer . container . getBoundingClientRect ( ) ) } ) , u = this . renderer . on ( "afterRender" , function ( ) { if ( r && t && ( n . isFocused ( ) || n . searchBox && n . searchBox . isFocused ( ) ) ) { var e = n . renderer , s = e . $cursorLayer . $pixelPos , o = e . layerConfig , u = s . top - o . offset ; r = s . top >= 0 && u + t . top < 0 || ! ( s . top < o . height && s . top + t . top + o . lineHeight > window . innerHeight ) && null , null != r && ( i . style . top = u + "px" , i . style . left = s . left + "px" , i . style . height = o . lineHeight + "px" , i . scrollIntoView ( r ) ) , r = t = null } } ) ; this . setAutoScrollEditorIntoView = function ( e ) { e || ( delete this . setAutoScrollEditorIntoView , this . off ( " c
this . el . appendChild ( this . $measureNode ) , e . appendChild ( this . el ) , a || this . $testFractionalRect ( ) , this . $measureNode . innerHTML = s . stringRepeat ( "X" , a ) , this . $characterSize = { width : 0 , height : 0 } , this . checkForSizeChanges ( ) } ; ( function ( ) { r . implement ( this , u ) , this . $characterSize = { width : 0 , height : 0 } , this . $testFractionalRect = function ( ) { var e = i . createElement ( "div" ) ; this . $setMeasureNodeStyles ( e . style ) , e . style . width = "0.2px" , document . documentElement . appendChild ( e ) ; var t = e . getBoundingClientRect ( ) . width ; a = t > 0 && t < 1 ? 50 : 100 , e . parentNode . removeChild ( e ) } , this . $setMeasureNodeStyles = function ( e , t ) { e . width = e . height = "auto" , e . left = e . top = "0px" , e . visibility = "hidden" , e . position = "absolute" , e . whiteSpace = "pre" , o . isIE < 8 ? e [ "font-family" ] = "inherit" : e . font = "inherit" , e . overflow = t ? "hidden" : "visible" } , this . checkForSizeChanges = function ( ) { var e = this . $measureSizes ( ) ; if ( e && ( this . $characterSize . width !== e . width || this . $characterSize . height !== e . height ) ) { this . $measureNode . style . fontWeight = "bold" ; var t = this . $measureSizes ( ) ; this . $measureNode . style . fontWeight = "" , this . $characterSize = e , this . charSizes = Object . create ( null ) , this . allowBoldFonts = t && t . width === e . width && t . height === e . height , this . _emit ( "changeCharacterSize" , { data : e } ) } } , this . $pollSizeChanges = function ( ) { if ( this . $pollSizeChangesTimer ) return this . $pollSizeChangesTimer ; var e = this ; return this . $pollSizeChangesTimer = setInterval ( function ( ) { e . checkForSizeChanges ( ) } , 500 ) } , this . setPolling = function ( e ) { e ? this . $pollSizeChanges ( ) : this . $pollSizeChangesTimer && ( clearInterval ( this . $pollSizeChangesTimer ) , this . $pollSizeChangesTimer = 0 ) } , this . $measureSizes = function ( ) { if ( 50 === a ) { var e = null ; try { e = this . $measureNode . getBoundingClientRect ( ) } catch ( t ) { e = { width : 0 , height : 0 } } var n = { height : e . height , width : e . width / a } } else var n = { height : this . $measureNode . clientHeight , width : this . $measureNode . clientWidth / a } ; return 0 === n . width || 0 === n . height ? null : n } , this . $measureCharWidth = function ( e ) { this . $main . innerHTML = s . stringRepeat ( e , a ) ; var t = this . $main . getBoundingClientRect ( ) ; return t . width / a } , this . getCharacterWidth = function ( e ) { var t = this . charSizes [ e ] ; return void 0 === t && ( t = this . charSizes [ e ] = this . $measureCharWidth ( e ) / this . $characterSize . width ) , t } , this . destroy = function ( ) { clearInterval ( this . $pollSizeChangesTimer ) , this . el && this . el . parentNode && this . el . parentNode . removeChild ( this . el ) } } ) . call ( f . prototype ) } ) , ace . define ( "ace/virtual_renderer" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/dom" , "ace/config" , "ace/lib/useragent" , "ace/layer/gutter" , "ace/layer/marker" , "ace/layer/text" , "ace/layer/cursor" , "ace/scrollbar" , "ace/scrollbar" , "ace/renderloop" , "ace/layer/font_metrics" , "ace/lib/event_emitter" ] , function ( e , t , n ) { "use strict" ; var r = e ( "./lib/oop" ) , i = e ( "./lib/dom" ) , s = e ( "./config" ) , o = e ( "./lib/useragent" ) , u = e ( "./layer/gutter" ) . Gutter , a = e ( "./layer/marker" ) . Marker , f = e ( "./layer/text" ) . Text , l = e ( "./layer/cursor" ) . Cursor , c = e ( "./scrollbar" ) . HScrollBar , h = e ( "./scrollbar" ) . VScrollBar , p = e ( "./renderloop" ) . RenderLoop , d = e ( "./layer/font_metrics" ) . FontMetrics , v = e ( "./lib/event_emitter" ) . EventEmitter , m = '.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\' ; background : rgba ( 250 , 250 , 250 , 0.01 ) ; z - index : 1000 ; } . ace _dragging . ace _dark . ace _scroller : before { background : rgba ( 0 , 0 , 0 , 0.01 ) ; } . ace _selecting , . ace _selecting * { cursor : text ! important ; } . ace _gutter { position : absolute ; overflow : hidden ; width : auto ; top : 0 ; bottom : 0 ; left : 0 ; cursor : default ; z - index : 4 ; - ms - user - select : none ; - moz - user - select : none ; - webkit - user - select : none ; user - select : none ; } . ace _gutter - active - line { position : absolute ; left : 0 ; right : 0 ; } . ace _scroller . ace _scroll - left { box - shadow : 17 px 0 16 px
} , this . updateFrontMarkers = function ( ) { this . $markerFront . setMarkers ( this . session . getMarkers ( ! 0 ) ) , this . $loop . schedule ( this . CHANGE _MARKER _FRONT ) } , this . updateBackMarkers = function ( ) { this . $markerBack . setMarkers ( this . session . getMarkers ( ) ) , this . $loop . schedule ( this . CHANGE _MARKER _BACK ) } , this . addGutterDecoration = function ( e , t ) { this . $gutterLayer . addGutterDecoration ( e , t ) } , this . removeGutterDecoration = function ( e , t ) { this . $gutterLayer . removeGutterDecoration ( e , t ) } , this . updateBreakpoints = function ( e ) { this . $loop . schedule ( this . CHANGE _GUTTER ) } , this . setAnnotations = function ( e ) { this . $gutterLayer . setAnnotations ( e ) , this . $loop . schedule ( this . CHANGE _GUTTER ) } , this . updateCursor = function ( ) { this . $loop . schedule ( this . CHANGE _CURSOR ) } , this . hideCursor = function ( ) { this . $cursorLayer . hideCursor ( ) } , this . showCursor = function ( ) { this . $cursorLayer . showCursor ( ) } , this . scrollSelectionIntoView = function ( e , t , n ) { this . scrollCursorIntoView ( e , n ) , this . scrollCursorIntoView ( t , n ) } , this . scrollCursorIntoView = function ( e , t , n ) { if ( 0 !== this . $size . scrollerHeight ) { var r = this . $cursorLayer . getPixelPosition ( e ) , i = r . left , s = r . top , o = n && n . top || 0 , u = n && n . bottom || 0 , a = this . $scrollAnimation ? this . session . getScrollTop ( ) : this . scrollTop ; a + o > s ? ( t && a + o > s + this . lineHeight && ( s -= t * this . $size . scrollerHeight ) , 0 === s && ( s = - this . scrollMargin . top ) , this . session . setScrollTop ( s ) ) : a + this . $size . scrollerHeight - u < s + this . lineHeight && ( t && a + this . $size . scrollerHeight - u < s - this . lineHeight && ( s += t * this . $size . scrollerHeight ) , this . session . setScrollTop ( s + this . lineHeight - this . $size . scrollerHeight ) ) ; var f = this . scrollLeft ; f > i ? ( i < this . $padding + 2 * this . layerConfig . characterWidth && ( i = - this . scrollMargin . left ) , this . session . setScrollLeft ( i ) ) : f + this . $size . scrollerWidth < i + this . characterWidth ? this . session . setScrollLeft ( Math . round ( i + this . characterWidth - this . $size . scrollerWidth ) ) : f <= this . $padding && i - f < this . characterWidth && this . session . setScrollLeft ( 0 ) } } , this . getScrollTop = function ( ) { return this . session . getScrollTop ( ) } , this . getScrollLeft = function ( ) { return this . session . getScrollLeft ( ) } , this . getScrollTopRow = function ( ) { return this . scrollTop / this . lineHeight } , this . getScrollBottomRow = function ( ) { return Math . max ( 0 , Math . floor ( ( this . scrollTop + this . $size . scrollerHeight ) / this . lineHeight ) - 1 ) } , this . scrollToRow = function ( e ) { this . session . setScrollTop ( e * this . lineHeight ) } , this . alignCursor = function ( e , t ) { "number" == typeof e && ( e = { row : e , column : 0 } ) ; var n = this . $cursorLayer . getPixelPosition ( e ) , r = this . $size . scrollerHeight - this . lineHeight , i = n . top - r * ( t || 0 ) ; return this . session . setScrollTop ( i ) , i } , this . STEPS = 8 , this . $calcSteps = function ( e , t ) { var n = 0 , r = this . STEPS , i = [ ] , s = function ( e , t , n ) { return n * ( Math . pow ( e - 1 , 3 ) + 1 ) + t } ; for ( n = 0 ; n < r ; ++ n ) i . push ( s ( n / this . STEPS , e , t - e ) ) ; return i } , this . scrollToLine = function ( e , t , n , r ) { var i = this . $cursorLayer . getPixelPosition ( { row : e , column : 0 } ) , s = i . top ; t && ( s -= this . $size . scrollerHeight / 2 ) ; var o = this . scrollTop ; this . session . setScrollTop ( s ) , n !== ! 1 && this . animateScrolling ( o , r ) } , this . animateScrolling = function ( e , t ) { var n = this . scrollTop ; if ( this . $animatedScroll ) { var r = this ; if ( e != n ) { if ( this . $scrollAnimation ) { var i = this . $scrollAnimation . steps ; if ( i . length && ( e = i [ 0 ] , e == n ) ) return } var s = r . $calcSteps ( e , n ) ; this . $scrollAnimation = { from : e , to : n , steps : s } , clearInterval ( this . $timer ) , r . session . setScrollTop ( s . shift ( ) ) , r . session . $scrollTop = n , this . $timer = setInterval ( function ( ) { s . length ? ( r . session . setScrollTop ( s . shift ( ) ) , r . session . $scrollTop = n ) : null != n ? ( r . session . $scrollTop = - 1 , r . session . setScrollTop ( n ) , n = null ) : ( r . $timer = clearInterval ( r . $timer ) , r . $scrollAnimation = null , t && t ( ) ) } , 10 ) } } } , this . scrollToY = function ( e ) { this . scrollTop !== e && ( this . $loop . schedule ( this . CHANGE _SCROLL ) , this . scrollTop = e ) } , this . scrollToX = function ( e ) { this . scrollLeft !== e && ( this . scrollLeft = e ) , this . $loop . schedule ( this . CHANGE _H _SCROLL ) } , this . scrollTo = function ( e , t ) { this . session . setScrollTop ( t ) , this . session . setScrollLeft ( t ) } , this . scrollBy = function ( e , t ) { t && this . session . setScrollTop ( this . session . getScrollTop ( ) + t ) , e && this . session . setScrollLeft ( this . session . getScrollLeft ( ) + e ) } , this . isScrollableBy = function ( e , t ) { return t < 0 && this . session . getScrollTop ( ) >= 1 - this . scrollMargin . top || ( t > 0 && this . session . getScrollTop ( ) + this . $size . scrollerHeight - this . layerConf
this . selection . $desiredColumn && ( s . column = this . selection . $desiredColumn ) ; var o = this . session . screenToDocumentPosition ( s . row + e , s . column ) ; if ( n . isEmpty ( ) ) var a = o ; else var u = this . session . documentToScreenPosition ( r ? n . end : n . start ) , a = this . session . screenToDocumentPosition ( u . row + e , u . column ) ; if ( r ) { var f = i . fromPoints ( o , a ) ; f . cursor = f . start } else { var f = i . fromPoints ( a , o ) ; f . cursor = f . end } if ( f . desiredColumn = s . column , this . selection . inMultiSelectMode ) { if ( t ) var l = n . cursor } else this . selection . addRange ( n ) ; this . selection . addRange ( f ) , l && this . selection . substractPoint ( l ) } , this . transposeSelections = function ( e ) { for ( var t = this . session , n = t . multiSelect , r = n . ranges , i = r . length ; i -- ; ) { var s = r [ i ] ; if ( s . isEmpty ( ) ) { var o = t . getWordRange ( s . start . row , s . start . column ) ; s . start . row = o . start . row , s . start . column = o . start . column , s . end . row = o . end . row , s . end . column = o . end . column } } n . mergeOverlappingRanges ( ) ; for ( var u = [ ] , i = r . length ; i -- ; ) { var s = r [ i ] ; u . unshift ( t . getTextRange ( s ) ) } e < 0 ? u . unshift ( u . pop ( ) ) : u . push ( u . shift ( ) ) ; for ( var i = r . length ; i -- ; ) { var s = r [ i ] , o = s . clone ( ) ; t . replace ( s , u [ i ] ) , s . start . row = o . start . row , s . start . column = o . start . column } } , this . selectMore = function ( e , t , n ) { var r = this . session , i = r . multiSelect , s = i . toOrientedRange ( ) ; if ( ! s . isEmpty ( ) || ( s = r . getWordRange ( s . start . row , s . start . column ) , s . cursor = e == - 1 ? s . start : s . end , this . multiSelect . addRange ( s ) , ! n ) ) { var o = r . getTextRange ( s ) , u = h ( r , o , e ) ; u && ( u . cursor = e == - 1 ? u . start : u . end , this . $blockScrolling += 1 , this . session . unfold ( u ) , this . multiSelect . addRange ( u ) , this . $blockScrolling -= 1 , this . renderer . scrollCursorIntoView ( null , . 5 ) ) , t && this . multiSelect . substractPoint ( s . cursor ) } } , this . alignCursors = function ( ) { var e = this . session , t = e . multiSelect , n = t . ranges , r = - 1 , s = n . filter ( function ( e ) { return e . cursor . row == r || void ( r = e . cursor . row ) } ) ; if ( n . length && s . length != n . length - 1 ) { s . forEach ( function ( e ) { t . substractPoint ( e . cursor ) } ) ; var d = 0 , v = 1 / 0 , m = n . map ( function ( t ) { var n = t . cursor , r = e . getLine ( n . row ) , i = r . substr ( n . column ) . search ( /\S/g ) ; return i == - 1 && ( i = 0 ) , n . column > d && ( d = n . column ) , i < v && ( v = i ) , i } ) ; n . forEach ( function ( t , n ) { var r = t . cursor , s = d - r . column , o = m [ n ] - v ; s > o ? e . insert ( r , a . stringRepeat ( " " , s - o ) ) : e . remove ( new i ( r . row , r . column , r . row , r . column - s + o ) ) , t . start . column = t . end . column = d , t . start . row = t . end . row = r . row , t . cursor = t . end } ) , t . fromOrientedRange ( n [ 0 ] ) , this . renderer . updateCursor ( ) , this . renderer . updateBackMarkers ( ) } else { var o = this . selection . getRange ( ) , u = o . start . row , f = o . end . row , l = u == f ; if ( l ) { var h , c = this . session . getLength ( ) ; do h = this . session . getLine ( f ) ; while ( /[=:]/ . test ( h ) && ++ f < c ) ; do h = this . session . getLine ( u ) ; while ( /[=:]/ . test ( h ) && -- u > 0 ) ; u < 0 && ( u = 0 ) , f >= c && ( f = c - 1 ) } var p = this . session . removeFullLines ( u , f ) ; p = this . $reAlignText ( p , l ) , this . session . insert ( { row : u , column : 0 } , p . join ( "\n" ) + "\n" ) , l || ( o . start . column = 0 , o . end . column = p [ p . length - 1 ] . length ) , this . selection . setRange ( o ) } } , this . $reAlignText = function ( e , t ) { function u ( e ) { return a . stringRepeat ( " " , e ) } function f ( e ) { return e [ 2 ] ? u ( i ) + e [ 2 ] + u ( s - e [ 2 ] . length + o ) + e [ 4 ] . replace ( /^([=:])\s+/ , "$1 " ) : e [ 0 ] } function l ( e ) { return e [ 2 ] ? u ( i + s - e [ 2 ] . length ) + e [ 2 ] + u ( o , " " ) + e [ 4 ] . replace ( /^([=:])\s+/ , "$1 " ) : e [ 0 ] } function c ( e ) { return e [ 2 ] ? u ( i ) + e [ 2 ] + u ( o ) + e [ 4 ] . replace ( /^([=:])\s+/ , "$1 " ) : e [ 0 ] } var i , s , o , n = ! 0 , r = ! 0 ; return e . map ( function ( e ) { var t = e . match ( /(\s*)(.*?)(\s*)([=:].*)/ ) ; return t ? null == i ? ( i = t [ 1 ] . length , s = t [ 2 ] . length , o = t [ 3 ] . length , t ) : ( i + s + o != t [ 1 ] . length + t [ 2 ] . length + t [ 3 ] . length && ( r = ! 1 ) , i != t [ 1 ] . length && ( n = ! 1 ) , i > t [ 1 ] . length && ( i = t [ 1 ] . length ) , s < t [ 2 ] . length && ( s = t [ 2 ] . length ) , o > t [ 3 ] . length && ( o = t [ 3 ] . length ) , t ) : [ e ] } ) . map ( t ? f : n ? r ? l : f : c ) } } ) . call ( d . prototype ) , t . onSessionChange = function ( e ) { var t = e . session ; t && ! t . multiSelect && ( t . $selectionMarkers = [ ] , t . selection . $initRangeList ( ) , t . multiSelect = t . selection ) , this . multiSelect = t && t . multiSelect ; var n = e . oldSession ; n && ( n . multiSelect . off ( "addRange" , this . $onAddRange ) , n . multiSelect . off ( "removeRange" , this . $onRemoveRange ) , n . multiSelect . off ( "multiSelect" , this . $onMultiSelect ) , n . multiSelect . off ( "singleSelect" , this . $onSingleSelect ) , n . multiSelect . lead . off ( "change" , this . $checkMultiselectChange ) , n . multiSelect . anchor . off ( "change" , this . $checkMultiselectChange ) ) , t && ( t . multiSelect . on ( "addRange" , this . $onAddRange ) , t . multiSelect . on ( "removeRange" , this . $onRemoveRange ) , t . multiSe
regex : "" , next : "no_regex" } ] , qqstring : [ { token : "constant.language.escape" , regex : r } , { token : "string" , regex : "\\\\$" , next : "qqstring" } , { token : "string" , regex : '"|$' , next : "no_regex" } , { defaultToken : "string" } ] , qstring : [ { token : "constant.language.escape" , regex : r } , { token : "string" , regex : "\\\\$" , next : "qstring" } , { token : "string" , regex : "'|$" , next : "no_regex" } , { defaultToken : "string" } ] } , e && e . noES6 || ( this . $rules . no _regex . unshift ( { regex : "[{}]" , onMatch : function ( e , t , n ) { if ( this . next = "{" == e ? this . nextState : "" , "{" == e && n . length ) n . unshift ( "start" , t ) ; else if ( "}" == e && n . length && ( n . shift ( ) , this . next = n . shift ( ) , this . next . indexOf ( "string" ) != - 1 || this . next . indexOf ( "jsx" ) != - 1 ) ) return "paren.quasi.end" ; return "{" == e ? "paren.lparen" : "paren.rparen" } , nextState : "start" } , { token : "string.quasi.start" , regex : /`/ , push : [ { token : "constant.language.escape" , regex : r } , { token : "paren.quasi.start" , regex : /\${/ , push : "start" } , { token : "string.quasi.end" , regex : /`/ , next : "pop" } , { defaultToken : "string.quasi" } ] } ) , ( ! e || 0 != e . jsx ) && a . call ( this ) ) , this . embedRules ( i , "doc-" , [ i . getEndRule ( "no_regex" ) ] ) , this . normalizeRules ( ) } ; r . inherits ( u , s ) , t . JavaScriptHighlightRules = u } ) , ace . define ( "ace/mode/matching_brace_outdent" , [ "require" , "exports" , "module" , "ace/range" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../range" ) . Range , i = function ( ) { } ; ( function ( ) { this . checkOutdent = function ( e , t ) { return ! ! /^\s+$/ . test ( e ) && /^\s*\}/ . test ( t ) } , this . autoOutdent = function ( e , t ) { var n = e . getLine ( t ) , i = n . match ( /^(\s*\})/ ) ; if ( ! i ) return 0 ; var s = i [ 1 ] . length , o = e . findMatchingBracket ( { row : t , column : s } ) ; if ( ! o || o . row == t ) return 0 ; var u = this . $getIndent ( e . getLine ( o . row ) ) ; e . replace ( new r ( t , 0 , t , s - 1 ) , u ) } , this . $getIndent = function ( e ) { return e . match ( /^\s*/ ) [ 0 ] } } ) . call ( i . prototype ) , t . MatchingBraceOutdent = i } ) , ace . define ( "ace/mode/folding/cstyle" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/range" , "ace/mode/folding/fold_mode" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../../lib/oop" ) , i = e ( "../../range" ) . Range , s = e ( "./fold_mode" ) . FoldMode , o = t . FoldMode = function ( e ) { e && ( this . foldingStartMarker = new RegExp ( this . foldingStartMarker . source . replace ( /\|[^|]*?$/ , "|" + e . start ) ) , this . foldingStopMarker = new RegExp ( this . foldingStopMarker . source . replace ( /\|[^|]*?$/ , "|" + e . end ) ) ) } ; r . inherits ( o , s ) , function ( ) { this . foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/ , this . foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/ , this . singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/ , this . tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/ , this . startRegionRe = /^\s*(\/\*|\/\/)#?region\b/ , this . _getFoldWidgetBase = this . getFoldWidget , this . getFoldWidget = function ( e , t , n ) { var r = e . getLine ( n ) ; if ( this . singleLineBlockCommentRe . test ( r ) && ! this . startRegionRe . test ( r ) && ! this . tripleStarBlockCommentRe . test ( r ) ) return "" ; var i = this . _getFoldWidgetBase ( e , t , n ) ; return ! i && this . startRegionRe . test ( r ) ? "start" : i } , this . getFoldWidgetRange = function ( e , t , n , r ) { var i = e . getLine ( n ) ; if ( this . startRegionRe . test ( i ) ) return this . getCommentRegionBlock ( e , i , n ) ; var s = i . match ( this . foldingStartMarker ) ; if ( s ) { var o = s . index ; if ( s [ 1 ] ) return this . openingBracketBlock ( e , s [ 1 ] , n , o ) ; var u = e . getCommentFoldRange ( n , o + s [ 0 ] . length , 1 ) ; return u && ! u . isMultiLine ( ) && ( r ? u = this . getSectionRange ( e , n ) : "all" != t && ( u = null ) ) , u } if ( "markbegin" !== t ) { var s = i . match ( this . foldingStopMarker ) ; if ( s ) { var o = s . index + s [ 0 ] . length ; return s [ 1 ] ? this . closingBracketBlock ( e , s [ 1 ] , n , o ) : e . getCommentFoldRange ( n , o , - 1 ) } } } , this . getSectionRange = function ( e , t ) { var n = e . getLine ( t ) , r = n . search ( /\S/ ) , s = t , o = n . length ; t += 1 ; for ( var u = t , a = e . getLength ( ) ; ++ t < a ; ) { n = e . getLine ( t ) ; var f = n . search ( /\S/ ) ; if ( f !== - 1 ) { if ( r > f ) break ; var l = this . getFoldWidgetRange ( e , "all" , t ) ; if ( l ) { if ( l . start . row <= s ) break ; if ( l . isMultiLine ( ) ) t = l . end . row ; else if ( r == f ) break } u = t } } return new i ( s , o , u , e . getLine ( u ) . length ) } , this . getCommentRegionBlock = function ( e , t , n ) { for ( var r = t . search ( /\s*$/ ) , s = e . getLength ( ) , o = n , u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/ , a = 1 ; ++ n < s ; ) { t = e . getLine ( n ) ; var f = u . exec ( t ) ; if ( f && ( f [ 1 ] ? a -- : a ++ , ! a ) ) break } var l = n ; if ( l > o ) return new i ( o , r , l , t . length ) } } . call ( o . prototype ) } ) , ace . define ( "ace/mode/javascript" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/mode/text" , "ace/mode/javascript_highlight_rules" , "ace/mode/matching_brace_outdent" , "ace/range" , " ace /
return this . $outdent . checkOutdent ( t , n ) } , this . autoOutdent = function ( e , t , n ) { this . $outdent . autoOutdent ( t , n ) } , this . getCompletions = function ( e , t , n , r ) { return this . $completer . getCompletions ( e , t , n , r ) } , this . createWorker = function ( e ) { var t = new u ( [ "ace" ] , "ace/mode/css_worker" , "Worker" ) ; return t . attachToDocument ( e . getDocument ( ) ) , t . on ( "annotate" , function ( t ) { e . setAnnotations ( t . data ) } ) , t . on ( "terminate" , function ( ) { e . clearAnnotations ( ) } ) , t } , this . $id = "ace/mode/css" } . call ( c . prototype ) , t . Mode = c } ) , ace . define ( "ace/mode/html_highlight_rules" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/mode/css_highlight_rules" , "ace/mode/javascript_highlight_rules" , "ace/mode/xml_highlight_rules" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/oop" ) , i = e ( "../lib/lang" ) , s = e ( "./css_highlight_rules" ) . CssHighlightRules , o = e ( "./javascript_highlight_rules" ) . JavaScriptHighlightRules , u = e ( "./xml_highlight_rules" ) . XmlHighlightRules , a = i . createMap ( { a : "anchor" , button : "form" , form : "form" , img : "image" , input : "form" , label : "form" , option : "form" , script : "script" , select : "form" , textarea : "form" , style : "style" , table : "table" , tbody : "table" , td : "table" , tfoot : "table" , th : "table" , tr : "table" } ) , f = function ( ) { u . call ( this ) , this . addRules ( { attributes : [ { include : "tag_whitespace" } , { token : "entity.other.attribute-name.xml" , regex : "[-_a-zA-Z0-9:.]+" } , { token : "keyword.operator.attribute-equals.xml" , regex : "=" , push : [ { include : "tag_whitespace" } , { token : "string.unquoted.attribute-value.html" , regex : "[^<>='\"`\\s]+" , next : "pop" } , { token : "empty" , regex : "" , next : "pop" } ] } , { include : "attribute_value" } ] , tag : [ { token : function ( e , t ) { var n = a [ t ] ; return [ "meta.tag.punctuation." + ( "<" == e ? "" : "end-" ) + "tag-open.xml" , "meta.tag" + ( n ? "." + n : "" ) + ".tag-name.xml" ] } , regex : "(</?)([-_a-zA-Z0-9:.]+)" , next : "tag_stuff" } ] , tag _stuff : [ { include : "attributes" } , { token : "meta.tag.punctuation.tag-close.xml" , regex : "/?>" , next : "start" } ] } ) , this . embedTagRules ( s , "css-" , "style" ) , this . embedTagRules ( new o ( { jsx : ! 1 } ) . getRules ( ) , "js-" , "script" ) , this . constructor === f && this . normalizeRules ( ) } ; r . inherits ( f , u ) , t . HtmlHighlightRules = f } ) , ace . define ( "ace/mode/folding/mixed" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/mode/folding/fold_mode" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../../lib/oop" ) , i = e ( "./fold_mode" ) . FoldMode , s = t . FoldMode = function ( e , t ) { this . defaultMode = e , this . subModes = t } ; r . inherits ( s , i ) , function ( ) { this . $getMode = function ( e ) { "string" != typeof e && ( e = e [ 0 ] ) ; for ( var t in this . subModes ) if ( 0 === e . indexOf ( t ) ) return this . subModes [ t ] ; return null } , this . $tryMode = function ( e , t , n , r ) { var i = this . $getMode ( e ) ; return i ? i . getFoldWidget ( t , n , r ) : "" } , this . getFoldWidget = function ( e , t , n ) { return this . $tryMode ( e . getState ( n - 1 ) , e , t , n ) || this . $tryMode ( e . getState ( n ) , e , t , n ) || this . defaultMode . getFoldWidget ( e , t , n ) } , this . getFoldWidgetRange = function ( e , t , n ) { var r = this . $getMode ( e . getState ( n - 1 ) ) ; return r && r . getFoldWidget ( e , t , n ) || ( r = this . $getMode ( e . getState ( n ) ) ) , r && r . getFoldWidget ( e , t , n ) || ( r = this . defaultMode ) , r . getFoldWidgetRange ( e , t , n ) } } . call ( s . prototype ) } ) , ace . define ( "ace/mode/folding/html" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/mode/folding/mixed" , "ace/mode/folding/xml" , "ace/mode/folding/cstyle" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../../lib/oop" ) , i = e ( "./mixed" ) . FoldMode , s = e ( "./xml" ) . FoldMode , o = e ( "./cstyle" ) . FoldMode , u = t . FoldMode = function ( e , t ) { i . call ( this , new s ( e , t ) , { "js-" : new o , "css-" : new o } ) } ; r . inherits ( u , i ) } ) , ace . define ( "ace/mode/html_completions" , [ "require" , "exports" , "module" , "ace/token_iterator" ] , function ( e , t , n ) { "use strict" ; function f ( e , t ) { return e . type . lastIndexOf ( t + ".xml" ) > - 1 } function l ( e , t ) { for ( var n = new r ( e , t . row , t . column ) , i = n . getCurrentToken ( ) ; i && ! f ( i , "tag-name" ) ; ) i = n . stepBackward ( ) ; if ( i ) return i . value } function c ( e , t ) { for ( var n = new r ( e , t . row , t . column ) , i = n . getCurrentToken ( ) ; i && ! f ( i , "attribute-name" ) ; ) i = n . stepBackward ( ) ; if ( i ) return i . value } var r = e ( "../token_iterator" ) . TokenIterator , i = [ "accesskey" , "class" , "contenteditable" , "contextmenu" , "dir" , "draggable" , "dropzone" , "hidden" , "id" , "inert" , "itemid" , "itemprop" , "itemref" , "itemscope" , "itemtype" , "lang" , "spellcheck" , "style" , "tabindex" , "title" , "translate" ] , s = [ "onabort" , "onblur" , "oncancel" , "oncanplay" , "oncanplaythrough" , "onchange" , " onclick
return ! ( ! uu ( t ) || Vu && Vu in t ) && ( nu ( t ) || C ( t ) ? Xu : wt ) . test ( ke ( t ) ) } function Pn ( t ) { return uu ( t ) && "[object RegExp]" == Hu . call ( t ) } function Zn ( t ) { return ou ( t ) && "[object Set]" == St ( t ) } function qn ( t ) { return ou ( t ) && eu ( t . length ) && ! ! Dt [ Hu . call ( t ) ] } function Vn ( t ) { return "function" == typeof t ? t : null == t ? Ou : "object" == typeof t ? Fi ( t ) ? Qn ( t [ 0 ] , t [ 1 ] ) : Hn ( t ) : Wu ( t ) } function Kn ( t ) { if ( ! xe ( t ) ) return bo ( t ) ; var n , r = [ ] ; for ( n in Tu ( t ) ) Gu . call ( t , n ) && "constructor" != n && r . push ( n ) ; return r } function Gn ( t ) { if ( ! uu ( t ) ) { var n = [ ] ; if ( null != t ) for ( var r in Tu ( t ) ) n . push ( r ) ; return n } r = xe ( t ) ; var e = [ ] ; for ( n in t ) ( "constructor" != n || ! r && Gu . call ( t , n ) ) && e . push ( n ) ; return e } function Jn ( t , n ) { return t < n } function Yn ( t , n ) { var r = - 1 , e = Qe ( t ) ? Cu ( t . length ) : [ ] ; return Po ( t , function ( t , u , o ) { e [ ++ r ] = n ( t , u , o ) } ) , e } function Hn ( t ) { var n = ae ( t ) ; return 1 == n . length && n [ 0 ] [ 2 ] ? je ( n [ 0 ] [ 0 ] , n [ 0 ] [ 1 ] ) : function ( r ) { return r === t || Fn ( r , t , n ) } } function Qn ( t , n ) { return ye ( t ) && n === n && ! uu ( n ) ? je ( Ae ( t ) , n ) : function ( r ) { var e = du ( r , t ) ; return e === P && e === n ? yu ( r , t ) : Tn ( n , e , P , 3 ) } } function Xn ( t , n , r , e , o ) { if ( t !== n ) { if ( ! Fi ( n ) && ! Gi ( n ) ) var i = Gn ( n ) ; u ( i || n , function ( u , f ) { if ( i && ( f = u , u = n [ f ] ) , uu ( u ) ) { o || ( o = new Gt ) ; var c = f , a = o , l = t [ c ] , s = n [ c ] , h = a . get ( s ) ; if ( h ) an ( t , c , h ) ; else { var h = e ? e ( l , s , c + "" , t , n , a ) : P , p = h === P ; p && ( h = s , Fi ( s ) || Gi ( s ) ? Fi ( l ) ? h = l : Xe ( l ) ? h = Wr ( l ) : ( p = ! 1 , h = gn ( s , ! 0 ) ) : fu ( s ) || He ( s ) ? He ( l ) ? h = vu ( l ) : ! uu ( l ) || r && nu ( l ) ? ( p = ! 1 , h = gn ( s , ! 0 ) ) : h = l : p = ! 1 ) , p && ( a . set ( s , h ) , Xn ( h , s , r , e , a ) , a . delete ( s ) ) , an ( t , c , h ) } } else c = e ? e ( t [ f ] , u , f + "" , t , n , o ) : P , c === P && ( c = u ) , an ( t , f , c ) } ) } } function tr ( t , n ) { var r = t . length ; if ( r ) return n += 0 > n ? r : 0 , ge ( n , r ) ? t [ n ] : P } function nr ( t , n , r ) { var e = - 1 ; return n = l ( n . length ? n : [ Ou ] , S ( fe ( ) ) ) , t = Yn ( t , function ( t ) { return { a : l ( n , function ( n ) { return n ( t ) } ) , b : ++ e , c : t } } ) , A ( t , function ( t , n ) { var e ; t : { e = - 1 ; for ( var u = t . a , o = n . a , i = u . length , f = r . length ; ++ e < i ; ) { var c = Sr ( u [ e ] , o [ e ] ) ; if ( c ) { e = e >= f ? c : c * ( "desc" == r [ e ] ? - 1 : 1 ) ; break t } } e = t . b - n . b } return e } ) } function rr ( t , n ) { return t = Tu ( t ) , er ( t , n , function ( n , r ) { return r in t } ) } function er ( t , n , r ) { for ( var e = - 1 , u = n . length , o = { } ; ++ e < u ; ) { var i = n [ e ] , f = t [ i ] ; r ( f , i ) && ( o [ i ] = f ) } return o } function ur ( t ) { return function ( n ) { return In ( n , t ) } } function or ( t , n , r , e ) { var u = e ? y : d , o = - 1 , i = n . length , f = t ; for ( t === n && ( n = Wr ( n ) ) , r && ( f = l ( t , S ( r ) ) ) ; ++ o < i ; ) for ( var c = 0 , a = n [ o ] , a = r ? r ( a ) : a ; - 1 < ( c = u ( f , a , c , e ) ) ; ) f !== t && fo . call ( f , c , 1 ) , fo . call ( t , c , 1 ) ; return t } function ir ( t , n ) { for ( var r = t ? n . length : 0 , e = r - 1 ; r -- ; ) { var u = n [ r ] ; if ( r == e || u !== o ) { var o = u ; if ( ge ( u ) ) fo . call ( t , u , 1 ) ; else if ( ye ( u , t ) ) delete t [ Ae ( u ) ] ; else { var u = Ar ( u ) , i = me ( t , u ) ; null != i && delete i [ Ae ( We ( u ) ) ] } } } } function fr ( t , n ) { return t + po ( mo ( ) * ( n - t + 1 ) ) } function cr ( t , n ) { var r = "" ; if ( ! t || 1 > n || 9007199254740991 < n ) return r ; do n % 2 && ( r += t ) , ( n = po ( n / 2 ) ) && ( t += t ) ; while ( n ) ; return r } function ar ( t , n ) { return n = xo ( n === P ? t . length - 1 : n , 0 ) , function ( ) { for ( var e = arguments , u = - 1 , o = xo ( e . length - n , 0 ) , i = Cu ( o ) ; ++ u < o ; ) i [ u ] = e [ n + u ] ; for ( u = - 1 , o = Cu ( n + 1 ) ; ++ u < n ; ) o [ u ] = e [ u ] ; return o [ n ] = i , r ( t , this , o ) } } function lr ( t , n , r , e ) { if ( ! uu ( t ) ) return t ; n = ye ( n , t ) ? [ n ] : Ar ( n ) ; for ( var u = - 1 , o = n . length , i = o - 1 , f = t ; null != f && ++ u < o ; ) { var c = Ae ( n [ u ] ) , a = r ; if ( u != i ) { var l = f [ c ] , a = e ? e ( l , c , f ) : P ; a === P && ( a = uu ( l ) ? l : ge ( n [ u + 1 ] ) ? [ ] : { } ) } ln ( f , c , a ) , f = f [ c ] } return t } function sr ( t , n , r ) { var e = - 1 , u = t . length ; for ( 0 > n && ( n = - n > u ? 0 : u + n ) , r = r > u ? u : r , 0 > r && ( r += u ) , u = n > r ? 0 : r - n >>> 0 , n >>>= 0 , r = Cu ( u ) ; ++ e < u ; ) r [ e ] = t [ e + n ] ; return r } function hr ( t , n ) { var r ; return Po ( t , function ( t , e , u ) { return r = n ( t , e , u ) , ! r } ) , ! ! r } function pr ( t , n , r ) { var e = 0 , u = t ? t . length : e ; if ( "number" == typeof n && n === n && 2147483647 >= u ) { for ( ; e < u ; ) { var o = e + u >>> 1 , i = t [ o ] ; null !== i && ! au ( i ) && ( r ? i <= n : i < n ) ? e = o + 1 : u = o } return u } return _r ( t , n , Ou , r ) } function _r ( t , n , r , e ) { n = r ( n ) ; for ( var u = 0 , o = t ? t . length : 0 , i = n !== n , f = null === n , c = au ( n ) , a = n === P ; u < o ; ) { var l = po ( ( u + o ) / 2 ) , s = r ( t [ l ] ) , h = s !== P , p = null === s , _ = s === s , v = au ( s ) ; ( i ? e || _ : a ? _ && ( e || h ) : f ? _ && h && ( e || ! p ) : c ? _ && h && ! p && ( e || ! v ) : p || v ? 0 : e ? s <= n : s < n ) ? u = l + 1 : o = l } return jo ( o , 4294967294 ) } function vr ( t , n ) { for ( var r = - 1 , e = t . length , u = 0 , o = [ ] ; ++ r < e ; ) { var i = t [ r ] , f = n ? n ( i ) : i ; if ( ! r || ! Ye ( f , c ) ) { var c = f ; o [ u ++ ] = 0 === i ? 0 : i } } return o } function gr ( t ) { return "number" == typeof t ? t : au ( t ) ? q : + t } function dr ( t ) { if ( "string" == typeof t ) return t ; if ( au ( t ) ) return No ? No . call ( t ) : "" ; var n = t + "" ; return "0" == n && 1 / t == - Z ? "-0" : n } function yr ( t , n , r ) { var e = - 1 , u = c , o = t . length , i = ! 0 , f = [ ] , l = f ; if ( r ) i = ! 1 , u = a ; else if ( 200 <= o ) { if ( u =
return t = n ? l ( t , function ( t ) { if ( "function" != typeof t [ 1 ] ) throw new Nu ( "Expected a function" ) ; return [ e ( t [ 0 ] ) , t [ 1 ] ] } ) : [ ] , ar ( function ( e ) { for ( var u = - 1 ; ++ u < n ; ) { var o = t [ u ] ; if ( r ( o [ 0 ] , this , e ) ) return r ( o [ 1 ] , this , e ) } } ) } , It . conforms = function ( t ) { return dn ( gn ( t , ! 0 ) ) } , It . constant = Eu , It . countBy = wi , It . create = function ( t , n ) { var r = bn ( t ) ; return n ? pn ( r , n ) : r } , It . curry = qe , It . curryRight = Ve , It . debounce = Ke , It . defaults = rf , It . defaultsDeep = ef , It . defer = Li , It . delay = Ci , It . difference = ui , It . differenceBy = oi , It . differenceWith = ii , It . drop = function ( t , n , r ) { var e = t ? t . length : 0 ; return e ? ( n = r || n === P ? 1 : hu ( n ) , sr ( t , 0 > n ? 0 : n , e ) ) : [ ] } , It . dropRight = function ( t , n , r ) { var e = t ? t . length : 0 ; return e ? ( n = r || n === P ? 1 : hu ( n ) , n = e - n , sr ( t , 0 , 0 > n ? 0 : n ) ) : [ ] } , It . dropRightWhile = function ( t , n ) { return t && t . length ? br ( t , fe ( n , 3 ) , ! 0 , ! 0 ) : [ ] } , It . dropWhile = function ( t , n ) { return t && t . length ? br ( t , fe ( n , 3 ) , ! 0 ) : [ ] } , It . fill = function ( t , n , r , e ) { var u = t ? t . length : 0 ; if ( ! u ) return [ ] ; for ( r && "number" != typeof r && de ( t , n , r ) && ( r = 0 , e = u ) , u = t . length , r = hu ( r ) , 0 > r && ( r = - r > u ? 0 : u + r ) , e = e === P || e > u ? u : hu ( e ) , 0 > e && ( e += u ) , e = r > e ? 0 : pu ( e ) ; r < e ; ) t [ r ++ ] = n ; return t } , It . filter = function ( t , n ) { return ( Fi ( t ) ? f : An ) ( t , fe ( n , 3 ) ) } , It . flatMap = function ( t , n ) { return kn ( Fe ( t , n ) , 1 ) } , It . flatMapDeep = function ( t , n ) { return kn ( Fe ( t , n ) , Z ) } , It . flatMapDepth = function ( t , n , r ) { return r = r === P ? 1 : hu ( r ) , kn ( Fe ( t , n ) , r ) } , It . flatten = function ( t ) { return t && t . length ? kn ( t , 1 ) : [ ] } , It . flattenDeep = function ( t ) { return t && t . length ? kn ( t , Z ) : [ ] } , It . flattenDepth = function ( t , n ) { return t && t . length ? ( n = n === P ? 1 : hu ( n ) , kn ( t , n ) ) : [ ] } , It . flip = function ( t ) { return re ( t , 512 ) } , It . flow = Af , It . flowRight = kf , It . fromPairs = function ( t ) { for ( var n = - 1 , r = t ? t . length : 0 , e = { } ; ++ n < r ; ) { var u = t [ n ] ; e [ u [ 0 ] ] = u [ 1 ] } return e } , It . functions = function ( t ) { return null == t ? [ ] : Sn ( t , bu ( t ) ) } , It . functionsIn = function ( t ) { return null == t ? [ ] : Sn ( t , xu ( t ) ) } , It . groupBy = ki , It . initial = function ( t ) { return t && t . length ? sr ( t , 0 , - 1 ) : [ ] } , It . intersection = fi , It . intersectionBy = ci , It . intersectionWith = ai , It . invert = uf , It . invertBy = of , It . invokeMap = Ei , It . iteratee = Su , It . keyBy = Oi , It . keys = bu , It . keysIn = xu , It . map = Fe , It . mapKeys = function ( t , n ) { var r = { } ; return n = fe ( n , 3 ) , En ( t , function ( t , e , u ) { r [ n ( t , e , u ) ] = t } ) , r } , It . mapValues = function ( t , n ) { var r = { } ; return n = fe ( n , 3 ) , En ( t , function ( t , e , u ) { r [ e ] = n ( t , e , u ) } ) , r } , It . matches = function ( t ) { return Hn ( gn ( t , ! 0 ) ) } , It . matchesProperty = function ( t , n ) { return Qn ( t , gn ( n , ! 0 ) ) } , It . memoize = Ge , It . merge = cf , It . mergeWith = af , It . method = Ef , It . methodOf = Of , It . mixin = Iu , It . negate = Je , It . nthArg = function ( t ) { return t = hu ( t ) , ar ( function ( n ) { return tr ( n , t ) } ) } , It . omit = lf , It . omitBy = function ( t , n ) { return ju ( t , Je ( fe ( n ) ) ) } , It . once = function ( t ) { return Ze ( 2 , t ) } , It . orderBy = function ( t , n , r , e ) { return null == t ? [ ] : ( Fi ( n ) || ( n = null == n ? [ ] : [ n ] ) , r = e ? P : r , Fi ( r ) || ( r = null == r ? [ ] : [ r ] ) , nr ( t , n , r ) ) } , It . over = Sf , It . overArgs = Ui , It . overEvery = If , It . overSome = Rf , It . partial = Mi , It . partialRight = zi , It . partition = Si , It . pick = sf , It . pickBy = ju , It . property = Wu , It . propertyOf = function ( t ) { return function ( n ) { return null == t ? P : In ( t , n ) } } , It . pull = li , It . pullAll = Be , It . pullAllBy = function ( t , n , r ) { return t && t . length && n && n . length ? or ( t , n , fe ( r , 2 ) ) : t } , It . pullAllWith = function ( t , n , r ) { return t && t . length && n && n . length ? or ( t , n , P , r ) : t } , It . pullAt = si , It . range = Wf , It . rangeRight = Bf , It . rearg = Di , It . reject = function ( t , n ) { return ( Fi ( t ) ? f : An ) ( t , Je ( fe ( n , 3 ) ) ) } , It . remove = function ( t , n ) { var r = [ ] ; if ( ! t || ! t . length ) return r ; var e = - 1 , u = [ ] , o = t . length ; for ( n = fe ( n , 3 ) ; ++ e < o ; ) { var i = t [ e ] ; n ( i , e , t ) && ( r . push ( i ) , u . push ( e ) ) } return ir ( t , u ) , r } , It . rest = function ( t , n ) { if ( "function" != typeof t ) throw new Nu ( "Expected a function" ) ; return n = n === P ? n : hu ( n ) , ar ( t , n ) } , It . reverse = Le , It . sampleSize = Ne , It . set = function ( t , n , r ) { return null == t ? t : lr ( t , n , r ) } , It . setWith = function ( t , n , r , e ) { return e = "function" == typeof e ? e : P , null == t ? t : lr ( t , n , r , e ) } , It . shuffle = function ( t ) { return Ne ( t , 4294967295 ) } , It . slice = function ( t , n , r ) { var e = t ? t . length : 0 ; return e ? ( r && "number" != typeof r && de ( t , n , r ) ? ( n = 0 , r = e ) : ( n = null == n ? 0 : hu ( n ) , r = r === P ? e : hu ( r ) ) , sr ( t , n , r ) ) : [ ] } , It . sortBy = Ii , It . sortedUniq = function ( t ) { return t && t . length ? vr ( t ) : [ ] } , It . sortedUniqBy = function ( t , n ) { return t && t . length ? vr ( t , fe ( n , 2 ) ) : [ ] } , It . split = function ( t , n , r ) { return r && "number" != typeof r && de ( t , n , r ) && ( n = r = P ) , r = r === P ? 4294967295 : r >>> 0 , r ? ( t = gu ( t ) ) && ( "string" == typeof n || null != n && ! Vi ( n ) ) && ( n