{"version":3,"sources":["webpack:///./node_modules/codemirror/addon/edit/closetag.js","webpack:///./node_modules/codemirror/addon/search/search.js","webpack:///./node_modules/codemirror/addon/edit/closebrackets.js","webpack:///./node_modules/codemirror/addon/hint/css-hint.js","webpack:///./node_modules/codemirror/addon/fold/comment-fold.js","webpack:///./node_modules/codemirror/mode/sass/sass.js","webpack:///./node_modules/codemirror/addon/search/match-highlighter.js","webpack:///./node_modules/codemirror/addon/hint/xml-hint.js","webpack:///./node_modules/codemirror/addon/dialog/dialog.js","webpack:///./node_modules/codemirror/addon/hint/javascript-hint.js","webpack:///./node_modules/codemirror/addon/fold/foldcode.js","webpack:///./node_modules/codemirror/mode/clike/clike.js","webpack:///./node_modules/codemirror/mode/pug/pug.js","webpack:///./src/components/form/controls/CodeControl.vue?e4f0","webpack:///./node_modules/codemirror/mode/vue/vue.js","webpack:///./node_modules/codemirror/addon/display/fullscreen.js","webpack:///./node_modules/codemirror/addon/search/matchesonscrollbar.js","webpack:///./node_modules/codemirror/addon/comment/comment.js","webpack:///./src/components/form/controls/SqlGenerator.vue?84bc","webpack:///./node_modules/codemirror/addon/mode/simple.js","webpack:///./node_modules/codemirror/mode/stylus/stylus.js","webpack:///./node_modules/codemirror/mode/css/css.js","webpack:///./node_modules/codemirror/addon/hint/anyword-hint.js","webpack:///./node_modules/codemirror/addon/edit/matchbrackets.js","webpack:///./node_modules/codemirror/addon/fold/indent-fold.js","webpack:///./node_modules/vue-codemirror/dist/vue-codemirror.js","webpack:///./node_modules/codemirror/addon/hint/html-hint.js","webpack:///./node_modules/codemirror/addon/hint/sql-hint.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/keymap/sublime.js","webpack:///./node_modules/codemirror/addon/hint/show-hint.js","webpack:///./node_modules/codemirror/addon/scroll/annotatescrollbar.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/addon/fold/markdown-fold.js","webpack:///./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack:///./node_modules/codemirror/addon/fold/xml-fold.js","webpack:///./src/external/codemirror/CodeMirrorImports.js","webpack:///./node_modules/codemirror/addon/fold/brace-fold.js","webpack:///./node_modules/codemirror/addon/search/searchcursor.js","webpack:///./node_modules/codemirror/addon/fold/foldgutter.js","webpack:///./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack:///./node_modules/codemirror/mode/handlebars/handlebars.js","webpack:///./src/components/form/controls/CodeControl.vue?e4d3","webpack:///./src/components/form/controls/SqlGenerator.vue?17be","webpack:///src/components/form/controls/SqlGenerator.vue","webpack:///./src/components/form/controls/SqlGenerator.vue?a71e","webpack:///./src/components/form/controls/SqlGenerator.vue","webpack:///src/components/form/controls/CodeControl.vue","webpack:///./src/components/form/controls/CodeControl.vue?45cb","webpack:///./src/components/form/controls/CodeControl.vue","webpack:///./node_modules/codemirror/addon/mode/multiplex.js","webpack:///./src/assets/sql-generator.svg","webpack:///./node_modules/codemirror/mode/javascript/javascript.js","webpack:///./node_modules/codemirror/mode/sql/sql.js"],"names":["mod","CodeMirror","defineOption","cm","val","old","Init","removeKeyMap","map","name","whenClosing","autoCloseSlash","whenOpening","autoCloseGT","addKeyMap","htmlDontClose","htmlIndent","getOption","Pass","ranges","listSelections","replacements","opt","i","length","empty","pos","head","tok","getTokenAt","inner","innerMode","getMode","state","tagInfo","mode","xmlCurrentTag","tagName","html","configuration","dontCloseTags","indentTags","end","ch","slice","lowerTagName","toLowerCase","type","test","string","charAt","close","indexOf","start","closingTagExists","xmlCurrentContext","emptyTags","text","newPos","Pos","line","indent","dontIndentOnAutoClose","info","replaceRange","anchor","sel","setSelections","indentLine","autoCloseCurrent","typingSlash","dontIndentOnSlash","replacement","mixed","context","top","getLine","replaceSelections","collection","elt","e","newTag","scanForClosingTag","Math","min","lastLine","nextClose","tag","onCx","to","next","commands","closeTag","searchOverlay","query","caseInsensitive","RegExp","replace","global","source","ignoreCase","token","stream","lastIndex","match","exec","index","skipToEnd","SearchState","this","posFrom","posTo","lastQuery","overlay","getSearchState","search","queryCaseInsensitive","getSearchCursor","caseFold","multiline","persistentDialog","deflt","onEnter","onKeyDown","openDialog","value","selectValueOnOpen","closeOnEnter","onClose","clearSearch","bottom","options","dialog","shortText","f","prompt","confirmDialog","fs","openConfirm","confirm","parseString","parseQuery","isRE","startSearch","queryText","removeOverlay","addOverlay","showMatchesOnScrollbar","annotate","clear","doSearch","rev","persistent","immediate","findNext","q","getSelection","hiding","searchNext","event","e_stop","getCursor","style","opacity","shiftKey","_","document","querySelector","display","wrapper","getBoundingClientRect","cursorCoords","getQueryDialog","keyName","extra","cmd","keyMap","execCommand","operation","callback","cursor","find","firstLine","setSelection","from","scrollIntoView","el","attrs","element","createElement","createDocumentFragment","key","arguments","child","appendChild","createTextNode","label","className","phrase","id","setAttribute","getReplaceQueryDialog","getReplacementQueryDialog","getDoReplaceConfirm","replaceAll","getRange","all","dialogText","fragment","advance","doReplace","findPersistent","findPersistentNext","findPersistentPrev","findPrev","defaults","pairs","closeBefore","triples","explode","conf","closeBrackets","ensureBound","Backspace","handleBackspace","Enter","handleEnter","chars","handler","handleChar","getConfig","override","getModeAt","around","charsAround","cur","linesep","lineSeparator","replaceSelection","moveSel","dir","newRanges","primary","range","push","contractSelection","inverted","cmpPos","identical","opening","curType","getTokenTypeAt","prev","isWordChar","stringStartsAfter","left","right","sels","getSelections","triggerElectric","str","pseudoClasses","registerHelper","list","word","spec","resolveMode","result","st","add","propertyKeywords","valueKeywords","colorKeywords","mediaTypes","mediaFeatures","keywords","lastIndexOf","registerGlobalHelper","blockCommentStart","blockCommentEnd","startToken","endToken","startCh","lineText","at","pass","found","endCh","depth","outer","nextOpen","defineMode","config","cssMode","mimeModes","fontProperties","tokenRegexp","words","join","keywordsRegexp","operators","opRegexp","pseudoElementsRegexp","isEndLine","peek","urlTokens","tokenizer","tokenBase","eatSpace","buildStringTokenizer","comment","indentation","multiLine","sol","skipTo","quote","greedy","stringTokenizer","nextChar","peekChar","previousChar","endingString","cursorHalf","buildInterpolationTokenizer","currentTokenizer","indentCount","lastScopeOffset","scopes","offset","currentOffset","indentUnit","unshift","dedent","shift","eatWhile","current","hasOwnProperty","prevProp","prop","tokenLexer","startOfToken","withCurrentIndent","newScopes","scope","startState","definedVars","definedMixins","lastToken","content","lineComment","fold","defineMIME","minChars","delay","wordsOnly","annotateScrollbar","showToken","trim","State","timeout","matchesonscroll","active","cursorActivity","matchHighlighter","hasFocus","scheduleHighlight","onFocus","clearTimeout","setTimeout","highlightMatches","hasBoundary","makeOverlay","searchFor","somethingSelected","isWord","selection","re","chr","boundariesAround","off","on","matches","hint","typed","matchInMiddle","getHints","tags","schemaInfo","quoteChar","prefix","tagStart","replaceToken","before","max","tagType","curTag","childList","children","globalAttrs","set","nm","atValues","atName","call","n","len","substr","returnHintsFromAtValues","returnHints","then","attr","dialogDiv","template","wrap","getWrapperElement","innerHTML","addClass","closeNotification","newVal","currentNotificationClose","defineExtension","closed","me","inp","rmClass","parentNode","removeChild","focus","button","getElementsByTagName","select","onInput","onKeyUp","keyCode","blur","closeOnBlur","evt","relatedTarget","callbacks","buttons","blurring","b","e_preventDefault","doneTimer","duration","forEach","arr","arrayContains","item","Array","prototype","scriptHint","editor","getToken","helperType","tprop","getCompletions","javascriptHint","javascriptKeywords","getCoffeeScriptToken","coffeescriptHint","coffeescriptKeywords","stringProps","split","arrayProps","funcProps","forAllProps","obj","Object","getOwnPropertyNames","getPrototypeOf","o","globalScope","window","maybeAdd","gatherCompletions","Function","base","pop","additionalContext","useGlobalScope","jQuery","v","localVars","c","vars","globalVars","doFold","force","finder","minSize","allowFolded","marks","findMarksAt","__isFold","cleared","myWidget","makeWidget","myRange","markText","replacedWith","clearOnEnter","signal","widget","cloneNode","newFoldFunction","rangeFinder","toggleFold","foldCode","unfold","scanUp","foldAll","unfoldAll","funcs","helpers","getHelpers","defaultOptions","auto","minFoldSize","undefined","editorOptions","foldOptions","Context","indented","column","align","pushContext","col","popContext","t","typeBefore","prevToken","typeAtEndOfLine","isTopScope","contains","propertyIsEnumerable","parserConfig","curPunc","isDefKeyword","statementIndentUnit","dontAlignCalls","types","builtin","blockKeywords","defKeywords","atoms","hooks","multiLineStrings","indentStatements","indentSwitch","namespaceSeparator","isPunctuationChar","numberStart","number","isOperatorChar","isIdentifierChar","isReservedIdentifier","tokenize","tokenString","backUp","eat","tokenComment","escaped","maybeEnd","maybeEOL","typeFirstDefinitions","eol","basecolumn","startOfLine","ctx","styleDefs","textAfter","firstChar","closing","dontIndentStatements","hook","switchBlock","allmanIndentation","electricInput","blockCommentContinue","cKeywords","cppKeywords","objCKeywords","objCBuiltins","basicCTypes","basicObjCTypes","cTypes","identifier","objCTypes","cBlockKeywords","cDefKeywords","cppHook","pointerHook","_stream","cIsReservedIdentifier","cpp14Literal","cpp11StringHook","cpp11RawStringDelim","tokenRawString","cppLooksLikeConstructor","lastTwo","tokenAtString","delim","def","mimes","tokenTripleString","tokenNestedComment","tokenKotlinString","tripleString","modeProps","cx","intendSwitch","tokenCeylonString","first","toUpperCase","KEYWORD","DOCTYPE","ID","CLASS","ATTRS_NEST","jsMode","javaScriptLine","javaScriptLineExcludesColon","javaScriptArguments","javaScriptArgumentsDepth","isInterpolating","interpolationNesting","jsState","restOfLine","isIncludeFiltered","isEach","lastTag","scriptType","isAttrs","attrsNest","inAttributeName","attributeIsType","attrValue","indentOf","Infinity","indentToken","innerState","innerModeForLine","javaScript","yieldStatement","doctype","interpolation","interpolationContinued","caseStatement","when","defaultStatement","extendsStatement","append","prepend","block","include","includeFiltered","includeFilteredContinued","filter","mixin","mixinCallAfter","callArguments","conditional","each","eachContinued","whileStatement","captures","innerModes","substring","setInnerMode","code","attrsContinued","toString","ex","attributesBlock","colon","dot","fail","hideFirstChars","copyState","copy","nextToken","res","tagLanguages","script","mustacheOverlay","overlayMode","backdrop","setFullscreen","fullScreenRestore","scrollTop","pageYOffset","scrollLeft","pageXOffset","width","height","documentElement","overflow","refresh","setNormal","scrollTo","SearchAnnotation","annotateOptions","listenForChanges","annotation","gap","update","findMatches","self","changeHandler","_cm","change","onChange","MAX_MATCHES","offsetLine","changeStart","sizeChange","splice","maxMatches","startLine","endLine","changeEnd","newFrom","newTo","updateAfterChange","noOptions","nonWS","cmp","firstNonWS","probablyInsideString","useInnerComments","toggleComment","minLine","uncomment","commentString","pad","padding","blankLines","commentBlankLines","baseString","whitespace","cut","fullLines","blockComment","startString","endString","lastLineHasText","lead","blockCommentLead","atCursor","didSomething","lineString","lines","endPos","open","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","openEnd","foundEnd","ensureState","states","Error","toRegex","caret","flags","unicode","String","asToken","apply","Rule","data","regex","tokenFunction","pending","pend","local","localState","m","endScan","curState","rule","stack","enterLocalMode","j","a","props","pers","p","persistentStates","lState","forceEnd","indentFunction","meta","dontIndentStates","rules","scan","dedentIfLineStart","defineSimpleMode","simpleMode","states_","hasIndentation","orig","s","indentUnitString","tagKeywords","keySet","tagKeywords_","tagVariablesRegexp","propertyKeywords_","nonStandardPropertyKeywords","nonStandardPropertyKeywords_","valueKeywords_","colorKeywords_","documentTypes","documentTypes_","documentTypesRegexp","wordRegexp","mediaFeatures_","mediaTypes_","fontProperties_","operatorsRegexp","wordOperatorKeywordsRegexp","wordOperatorKeywords_","blockKeywords_","vendorPrefixesRegexp","commonAtoms","commonAtoms_","firstWordMatch","firstWord","tokenCComment","tokenParenthesized","wordIsTag","currentIndent","contextIndent","popAndPass","wordIsProperty","wordIsBlock","wordIsVendorPrefix","wordAsValue","wordLC","typeIsBlock","endOfLine","typeIsInterpolation","typeIsPseudo","escapeRegExp","firstWordOfLine","parens","vendorPrefixes","pseudo","atBlock","atBlock_parens","keyframes","extend","variableName","lineFirstWord","lineIndent","prevLineFirstWord","prevLineIndent","electricChars","commonDef_","hintWords","concat","sort","array","keys","inline","tokenHooks","mediaValueKeywords","counterDescriptors","allowNested","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","tp","stateArg","mediaValueKeywords_","counterDescriptors_","allWords","WORD","RANGE","curLine","curWord","seen","ie_lt8","navigator","userAgent","documentMode","matching","bracketRegex","findMatchingBracket","where","getLineHandle","afterCursor","strict","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","lineEnd","lineNo","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","highlightNonMatching","focused","doMatchBrackets","currentlyHighlighted","clearHighlighted","oldConfig","spaceTo","countColumn","myIndent","lastLineInFold","module","exports","r","l","d","defineProperty","configurable","enumerable","get","__esModule","default","assign","TypeError","writable","codemirror","cminstance","marker","unseenLines","placeholder","merge","Boolean","events","globalOptions","globalEvents","watch","deep","setOption","$nextTick","switchMerge","handerCodeChange","methods","initialize","MergeView","$refs","mergeview","edit","fromTextArea","textarea","setValue","getValue","$emit","unseenLineMarkers","destroy","doc","remove","getScrollInfo","lineInfo","setGutterMarker","gutterMarkers","history","cleanGeneration","mounted","beforeDestroy","install","u","component","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","$createElement","_self","_c","staticClass","class","ref","langs","targets","charsets","encs","media","href","ping","target","hreflang","abbr","acronym","address","applet","area","alt","coords","shape","article","aside","audio","src","mediagroup","crossorigin","preload","autoplay","loop","controls","basefont","bdi","bdo","big","blockquote","cite","body","br","form","formaction","autofocus","disabled","formenctype","formmethod","formnovalidate","formtarget","canvas","caption","center","span","colgroup","command","icon","radiogroup","title","checked","datagrid","multiple","datalist","dd","del","datetime","details","dfn","div","dl","dt","em","embed","eventsource","fieldset","figcaption","figure","font","footer","action","autocomplete","enctype","method","novalidate","frame","frameset","h1","h2","h3","h4","h5","h6","header","hgroup","hr","manifest","iframe","srcdoc","sandbox","seamless","img","ismap","usemap","input","dirname","maxlength","pattern","size","step","accept","readonly","required","ins","kbd","keygen","challenge","keytype","legend","li","link","sizes","mark","menu","charset","meter","low","high","optimum","nav","noframes","noscript","object","typemustmatch","ol","reversed","optgroup","option","selected","output","param","pre","progress","rp","rt","ruby","samp","async","defer","section","small","strike","strong","scoped","sub","summary","sup","table","tbody","td","colspan","rowspan","headers","rows","cols","tfoot","th","thead","time","tr","track","kind","srclang","tt","ul","video","poster","muted","wbr","accesskey","contenteditable","contextmenu","draggable","dropzone","hidden","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","autocorrect","autocapitalize","tabindex","translate","onclick","rel","populate","htmlHint","xml","htmlSchema","tables","defaultTable","identifierQuote","CONS","QUERY_DIV","ALIAS_KEYWORD","isArray","getModeConf","getKeywords","getIdentifierQuote","getText","wrapTable","columns","parseTables","getTable","shallowClone","addMatches","wordlist","formatter","displayText","cleanName","nameParts","insertIdentifierQuotes","nameCompletion","useIdentifierQuotes","cont","w","alias","aliasTable","oldTable","findTableByAlias","tableInsert","eachWord","fullQuery","aliasUpperCase","previousWord","separator","validRange","indexOfSeparator","posFromIndex","prevItem","wordUpperCase","defaultTableName","disableKeywords","objectOrClass","onCursorActivity","markedSelection","markedSelectionStyle","reset","CHUNK_SIZE","coverRange","addAt","cls","atEnd","coverStart","coverEnd","cmds","findPosSubword","clipPos","startPos","cat","moveSubword","extendSelectionsBy","insertLine","above","isReadOnly","newSelection","last","wordAt","addCursorToSelection","newAnchor","findPosV","goalColumn","newHead","newRange","isSelectedRange","goSubwordLeft","goSubwordRight","scrollLineUp","visibleBottomLine","lineAtHeight","clientHeight","defaultTextHeight","scrollLineDown","visibleTopLine","splitSelectionByLine","lineRanges","singleSelectionTop","scroll","selectLine","extended","insertLineAfter","insertLineBefore","selectNextOccurrence","fullWord","sublimeFindFullWord","addSelection","skipAndSelectNextOccurrence","prevAnchor","prevHead","addCursorToPrevLine","addCursorToNextLine","mirror","selectBetweenBrackets","puncType","sortLines","caseSensitive","direction","toSort","au","bu","modifyWordOrSelection","indices","getTarget","findAndGoTo","findPrevious","selectScope","goToBracket","swapLineUp","linesToMove","newSels","swapLineDown","toggleCommentIndented","joinLines","joined","actual","duplicateLine","rangeCount","reverseSortLines","sortLinesInsensitive","reverseSortLinesInsensitive","nextBookmark","sublimeBookmarks","prevBookmark","toggleBookmark","findMarks","sublimeBookmark","k","clearWhenEmpty","clearBookmarks","selectBookmarks","smartBackspace","cursors","toStartOfLine","deletePos","findPosH","prevIndent","findColumn","delLineRight","upcaseAtCursor","downcaseAtCursor","setSublimeMark","sublimeMark","setBookmark","selectToSublimeMark","deleteToSublimeMark","tmp","sublimeKilled","swapWithSublimeMark","setCursor","sublimeYank","showInCenter","findUnder","findUnderPrevious","findAllUnder","primaryIndex","macSublime","normalizeKeyMap","pcSublime","mac","macDefault","sublime","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","debounce","tick","startLen","updateOnCursorActivity","activityFunc","showHint","newOpts","parseOptions","selections","supportsSelection","completionActive","completion","requestAnimationFrame","fn","cancelAnimationFrame","hintOptions","out","resolve","buildKeyMap","handle","baseMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","pick","Tab","Esc","platform","custom","customKeys","ourMap","addBinding","bound","extraKeys","getHintElement","hintsElement","nodeName","Widget","floor","random","picked","ownerDocument","getInputField","parentWindow","defaultView","hints","theme","selectedHint","completions","hintId","container","alignWithWord","below","offsetLeft","offsetTop","isContainerPositioned","getComputedStyle","position","offsetParent","offsetParentPosition","bodyPosition","winW","innerWidth","offsetWidth","winH","innerHeight","offsetHeight","startScroll","box","moveOnOverlap","DOMRect","scrolls","paddingForScrollbar","scrollHeight","overlapY","spaceAbove","closingOnBlur","overlapX","nativeBarWidth","node","firstChild","nextSibling","paddingRight","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onBlur","onScroll","curScroll","newTop","point","srcElement","completeOnSingleClick","selectedHintRange","getSelectedHintRange","scrollToActive","childNodes","applicableHelpers","fetchHints","resolveAutoHints","resolved","app","run","getHelper","fromList","anyword","closeOnPick","identStart","closeCharacters","disable","myTick","finishUpdate","completeSingle","removeAttribute","node1","node2","firstNode","margin","scrollMargin","term","Annotation","scheduleRedraw","doRedraw","redraw","buttonHeight","scrollButtonHeight","annotations","doUpdate","cssText","computeScale","resizeHandler","hScale","barHeight","getScrollerElement","compute","frag","anns","wrapping","singleLineH","curLineObj","getY","visual","getLineHandleVisualStart","getLineNumber","widgets","charCoords","topY","heightAtLine","barWidth","nextTop","ann","textContent","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","blankLine","baseToken","overlayToken","maxDepth","isHeader","tokentype","headerLevel","nextLine","level","lastLineNo","nextNextLine","parserConf","ERRORCLASS","delimiters","identifiers","atProp","wordOperators","indentKeywords","commonKeywords","stringPrefixes","regexPrefixes","commonConstants","constants","scopeOffset","lineOffset","longComment","floatLiteral","intLiteral","tokenFactory","delimiter","singleline","outclass","singleLineStringErrors","alignOffset","_indent","matched","delimiter_index","external","fillAlign","closer","closes","nameStartChar","nameChar","xmlTagStart","Iter","tagAt","iter","prevLine","toTagEnd","gt","lastSlash","selfClose","toTagStart","lt","toNextTag","toPrevTag","findMatchingClose","findMatchingOpen","openTag","findMatchingTag","here","findEnclosingTag","Vue","bracketFolding","findOpening","pair","tokenType","findRange","count","hasImport","semi","has","hasInclude","noFold","regexpFlags","regexp","ensureFlags","maybeMultiline","searchRegexpForward","searchRegexpForwardMultiline","chunk","inside","lastMatchIn","endMargin","newMatch","searchRegexpBackward","searchRegexpBackwardMultiline","chunkSize","adjustPos","folded","foldFunc","mid","searchStringForward","cutFrom","searchStringBackward","topString","SearchCursor","atOccurrence","afterEmptyMatch","reverse","normalize","newText","origin","splitLines","defineDocExtension","clearGutter","foldGutter","gutter","onGutterClick","onViewportChange","onFold","optionChange","updateInViewport","opts","indicatorOpen","indicatorFolded","isFolded","fromPos","updateFoldInfo","foldOption","func","clsFolded","classTest","clsOpen","eachLine","vp","getViewport","changeUpdate","foldOnChangeTimeSpan","updateViewportTimeSpan","defaultTags","maybeBackup","pat","attrRegexpCache","getAttrRegexp","getAttrValue","getTagRegexp","anchored","addTags","dest","findMatchingMode","tagText","htmlMode","multilineTagIndentFactor","multilineTagIndentPastTag","allowMissingTagName","configTags","configScript","scriptTypes","htmlState","inTag","modeSpec","endTagA","endTag","localMode","handlebars_raw","handlebars","dash_comment","multiplexingMode","parseDelimiters","_vm","_h","_b","combinedErrors","$attrs","isSql","codeOptions","onCmReady","updateLocal","nativeOn","$event","generateSql","_e","fullscreen","undo","isFullscreen","hasUndo","_v","exit","_s","$l","save","$projectInfo","staticStyle","sql_assistant","inputVal","mime","js","sql","css","components","BaseControl","Btn","mixins","initialLocal","styleActiveLine","styleSelectedText","smartIndent","autoCloseBrackets","colorize","autoCloseTags","showCursorWhenSelecting","tabSize","lineWrapping","gutters","highlightSelectionMatches","lineNumbers","readOnly","computed","compeleteSingle","rejectText","confirmText","others","returnEnd","innerActive","startingInner","curInner","oldContent","delimStyle","innerToken","innerStyle","cutOff","other","outerIndent","possibleOuterIndent","outerToken","statementIndent","jsonldMode","jsonld","jsonMode","json","trackScope","isTS","typescript","wordRE","wordCharacters","kw","A","B","C","D","operator","atom","isJsonldKeyword","readRegexp","inSet","expressionAllowed","tokenQuasi","lexical","lastType","brackets","findFatArrow","fatArrowAt","arrow","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","parseJS","cc","marked","combinator","expression","statement","lex","inList","register","newContext","registerVarScoped","Var","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","exp","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","expr","property","continueQuasi","targetNoComma","maybeTypeArgs","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","isInterface","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","doubleIndentSwitch","skipExpression","StringStream","hookIdentifier","hookIdentifierDoublequote","hookVar","hookClient","client","defaultBuiltin","sqlKeywords","operatorChars","support","dateSQL","backslashStringEscapes","punctuation","hexNumber","binaryNumber","charCodeAt","decimallessFloat","doubleQuote","tokenLiteral","nCharCast","charsetCast","escapeConstant","commentSlashSlash","commentHash","commentSpaceRequired","zerolessFloat","ODBCdotTable","backslashEscapes","\""],"mappings":"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","file":"js/chunk-c75982cc.7f4d0318.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n/**\n * Tag-closer extension for CodeMirror.\n *\n * This extension adds an \"autoCloseTags\" option that can be set to\n * either true to get the default behavior, or an object to further\n * configure its behavior.\n *\n * These are supported options:\n *\n * `whenClosing` (default true)\n * Whether to autoclose when the '/' of a closing tag is typed.\n * `whenOpening` (default true)\n * Whether to autoclose the tag when the final '>' of an opening\n * tag is typed.\n * `dontCloseTags` (default is empty tags for HTML, none for XML)\n * An array of tag names that should not be autoclosed.\n * `indentTags` (default is block tags for HTML, none for XML)\n * An array of tag names that should, when opened, cause a\n * blank line to be added inside the tag, and the blank line and\n * closing line to be indented.\n * `emptyTags` (default is none)\n * An array of XML tag names that should be autoclosed with '/>'.\n *\n * See demos/closetag.html for a usage example.\n */\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../fold/xml-fold\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../fold/xml-fold\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"autoCloseTags\", false, function(cm, val, old) {\n if (old != CodeMirror.Init && old)\n cm.removeKeyMap(\"autoCloseTags\");\n if (!val) return;\n var map = {name: \"autoCloseTags\"};\n if (typeof val != \"object\" || val.whenClosing !== false)\n map[\"'/'\"] = function(cm) { return autoCloseSlash(cm); };\n if (typeof val != \"object\" || val.whenOpening !== false)\n map[\"'>'\"] = function(cm) { return autoCloseGT(cm); };\n cm.addKeyMap(map);\n });\n\n var htmlDontClose = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\",\n \"source\", \"track\", \"wbr\"];\n var htmlIndent = [\"applet\", \"blockquote\", \"body\", \"button\", \"div\", \"dl\", \"fieldset\", \"form\", \"frameset\", \"h1\", \"h2\", \"h3\", \"h4\",\n \"h5\", \"h6\", \"head\", \"html\", \"iframe\", \"layer\", \"legend\", \"object\", \"ol\", \"p\", \"select\", \"table\", \"ul\"];\n\n function autoCloseGT(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), replacements = [];\n var opt = cm.getOption(\"autoCloseTags\");\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var pos = ranges[i].head, tok = cm.getTokenAt(pos);\n var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;\n var tagInfo = inner.mode.xmlCurrentTag && inner.mode.xmlCurrentTag(state)\n var tagName = tagInfo && tagInfo.name\n if (!tagName) return CodeMirror.Pass\n\n var html = inner.mode.configuration == \"html\";\n var dontCloseTags = (typeof opt == \"object\" && opt.dontCloseTags) || (html && htmlDontClose);\n var indentTags = (typeof opt == \"object\" && opt.indentTags) || (html && htmlIndent);\n\n if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch);\n var lowerTagName = tagName.toLowerCase();\n // Don't process the '>' at the end of an end-tag or self-closing tag\n if (!tagName ||\n tok.type == \"string\" && (tok.end != pos.ch || !/[\\\"\\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) ||\n tok.type == \"tag\" && tagInfo.close ||\n tok.string.indexOf(\"/\") == (pos.ch - tok.start - 1) || // match something like \n dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1 ||\n closingTagExists(cm, inner.mode.xmlCurrentContext && inner.mode.xmlCurrentContext(state) || [], tagName, pos, true))\n return CodeMirror.Pass;\n\n var emptyTags = typeof opt == \"object\" && opt.emptyTags;\n if (emptyTags && indexOf(emptyTags, tagName) > -1) {\n replacements[i] = { text: \"/>\", newPos: CodeMirror.Pos(pos.line, pos.ch + 2) };\n continue;\n }\n\n var indent = indentTags && indexOf(indentTags, lowerTagName) > -1;\n replacements[i] = {indent: indent,\n text: \">\" + (indent ? \"\\n\\n\" : \"\") + \"\",\n newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1)};\n }\n\n var dontIndentOnAutoClose = (typeof opt == \"object\" && opt.dontIndentOnAutoClose);\n for (var i = ranges.length - 1; i >= 0; i--) {\n var info = replacements[i];\n cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor, \"+insert\");\n var sel = cm.listSelections().slice(0);\n sel[i] = {head: info.newPos, anchor: info.newPos};\n cm.setSelections(sel);\n if (!dontIndentOnAutoClose && info.indent) {\n cm.indentLine(info.newPos.line, null, true);\n cm.indentLine(info.newPos.line + 1, null, true);\n }\n }\n }\n\n function autoCloseCurrent(cm, typingSlash) {\n var ranges = cm.listSelections(), replacements = [];\n var head = typingSlash ? \"/\" : \"\") replacement += \">\";\n replacements[i] = replacement;\n }\n cm.replaceSelections(replacements);\n ranges = cm.listSelections();\n if (!dontIndentOnAutoClose) {\n for (var i = 0; i < ranges.length; i++)\n if (i == ranges.length - 1 || ranges[i].head.line < ranges[i + 1].head.line)\n cm.indentLine(ranges[i].head.line);\n }\n }\n\n function autoCloseSlash(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n return autoCloseCurrent(cm, true);\n }\n\n CodeMirror.commands.closeTag = function(cm) { return autoCloseCurrent(cm); };\n\n function indexOf(collection, elt) {\n if (collection.indexOf) return collection.indexOf(elt);\n for (var i = 0, e = collection.length; i < e; ++i)\n if (collection[i] == elt) return i;\n return -1;\n }\n\n // If xml-fold is loaded, we use its functionality to try and verify\n // whether a given tag is actually unclosed.\n function closingTagExists(cm, context, tagName, pos, newTag) {\n if (!CodeMirror.scanForClosingTag) return false;\n var end = Math.min(cm.lastLine() + 1, pos.line + 500);\n var nextClose = CodeMirror.scanForClosingTag(cm, pos, null, end);\n if (!nextClose || nextClose.tag != tagName) return false;\n // If the immediate wrapping context contains onCx instances of\n // the same tag, a closing tag only exists if there are at least\n // that many closing tags of that type following.\n var onCx = newTag ? 1 : 0\n for (var i = context.length - 1; i >= 0; i--) {\n if (context[i] == tagName) ++onCx\n else break\n }\n pos = nextClose.to;\n for (var i = 1; i < onCx; i++) {\n var next = CodeMirror.scanForClosingTag(cm, pos, null, end);\n if (!next || next.tag != tagName) return false;\n pos = next.to;\n }\n return true;\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\")\n query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n else if (!query.global)\n query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n return {token: function(stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }};\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function() { clearSearch(cm); },\n onKeyDown: onKeyDown,\n bottom: cm.options.search.bottom\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);\n else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n if (ch == \"n\") return \"\\n\"\n if (ch == \"r\") return \"\\r\"\n if (ch == \"t\") return \"\\t\"\n if (ch == \"\\\\\") return \"\\\\\"\n return match\n })\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n if (isRE) {\n try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n catch(e) {} // Not a regular expression after all, do a string search\n } else {\n query = parseString(query)\n }\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null\n if (persistent && cm.openDialog) {\n var hiding = null\n var searchNext = function(query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n if (hiding) hiding.style.opacity = 1\n findNext(cm, event.shiftKey, function(_, to) {\n var dialog\n if (to.line < 3 && document.querySelector &&\n (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n (hiding = dialog).style.opacity = .4\n })\n };\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n var keyName = CodeMirror.keyName(event)\n var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n if (query && !state.query) cm.operation(function() {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {cm.operation(function() {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n state.posFrom = cursor.from(); state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to())\n });}\n\n function clearSearch(cm) {cm.operation(function() {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n });}\n\n function el(tag, attrs) {\n var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n for (var key in attrs) {\n element[key] = attrs[key];\n }\n for (var i = 2; i < arguments.length; i++) {\n var child = arguments[i]\n element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n }\n return element;\n }\n\n function getQueryDialog(cm) {\n var label = el(\"label\", {className: \"CodeMirror-search-label\"},\n cm.phrase(\"Search:\"),\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\",\n id: \"CodeMirror-search-field\"}));\n label.setAttribute(\"for\",\"CodeMirror-search-field\");\n return el(\"\", null, label, \" \",\n el(\"span\", {style: \"color: #666\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplaceQueryDialog(cm) {\n return el(\"\", null, \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #666\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplacementQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"With:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}));\n }\n function getDoReplaceConfirm(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Replace?\")), \" \",\n el(\"button\", {}, cm.phrase(\"Yes\")), \" \",\n el(\"button\", {}, cm.phrase(\"No\")), \" \",\n el(\"button\", {}, cm.phrase(\"All\")), \" \",\n el(\"button\", {}, cm.phrase(\"Stop\")));\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function() {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")\n var fragment = el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, dialogText),\n getReplaceQueryDialog(cm))\n dialog(cm, fragment, dialogText, query, function(query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n text = parseString(text)\n if (all) {\n replaceAll(cm, query, text)\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n var advance = function() {\n var start = cursor.from(), match;\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) ||\n (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"),\n [function() {doReplace(match);}, advance,\n function() {replaceAll(cm, query, text)}]);\n };\n var doReplace = function(match) {\n cursor.replace(typeof query == \"string\" ? text :\n text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n advance();\n };\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n CodeMirror.commands.findNext = doSearch;\n CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../mode/css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../mode/css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var pseudoClasses = {\"active\":1, \"after\":1, \"before\":1, \"checked\":1, \"default\":1,\n \"disabled\":1, \"empty\":1, \"enabled\":1, \"first-child\":1, \"first-letter\":1,\n \"first-line\":1, \"first-of-type\":1, \"focus\":1, \"hover\":1, \"in-range\":1,\n \"indeterminate\":1, \"invalid\":1, \"lang\":1, \"last-child\":1, \"last-of-type\":1,\n \"link\":1, \"not\":1, \"nth-child\":1, \"nth-last-child\":1, \"nth-last-of-type\":1,\n \"nth-of-type\":1, \"only-of-type\":1, \"only-child\":1, \"optional\":1, \"out-of-range\":1,\n \"placeholder\":1, \"read-only\":1, \"read-write\":1, \"required\":1, \"root\":1,\n \"selection\":1, \"target\":1, \"valid\":1, \"visited\":1\n };\n\n CodeMirror.registerHelper(\"hint\", \"css\", function(cm) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n if (inner.mode.name != \"css\") return;\n\n if (token.type == \"keyword\" && \"!important\".indexOf(token.string) == 0)\n return {list: [\"!important\"], from: CodeMirror.Pos(cur.line, token.start),\n to: CodeMirror.Pos(cur.line, token.end)};\n\n var start = token.start, end = cur.ch, word = token.string.slice(0, end - start);\n if (/[^\\w$_-]/.test(word)) {\n word = \"\"; start = end = cur.ch;\n }\n\n var spec = CodeMirror.resolveMode(\"text/css\");\n\n var result = [];\n function add(keywords) {\n for (var name in keywords)\n if (!word || name.lastIndexOf(word, 0) == 0)\n result.push(name);\n }\n\n var st = inner.state.state;\n if (st == \"pseudo\" || token.type == \"variable-3\") {\n add(pseudoClasses);\n } else if (st == \"block\" || st == \"maybeprop\") {\n add(spec.propertyKeywords);\n } else if (st == \"prop\" || st == \"parens\" || st == \"at\" || st == \"params\") {\n add(spec.valueKeywords);\n add(spec.colorKeywords);\n } else if (st == \"media\" || st == \"media_parens\") {\n add(spec.mediaTypes);\n add(spec.mediaFeatures);\n }\n\n if (result.length) return {\n list: result,\n from: CodeMirror.Pos(cur.line, start),\n to: CodeMirror.Pos(cur.line, end)\n };\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerGlobalHelper(\"fold\", \"comment\", function(mode) {\n return mode.blockCommentStart && mode.blockCommentEnd;\n}, function(cm, start) {\n var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd;\n if (!startToken || !endToken) return;\n var line = start.line, lineText = cm.getLine(line);\n\n var startCh;\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);\n if (found == -1) {\n if (pass == 1) return;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) return;\n if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1))) &&\n (found == 0 || lineText.slice(found - endToken.length, found) == endToken ||\n !/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found))))) {\n startCh = found + startToken.length;\n break;\n }\n at = found - 1;\n }\n\n var depth = 1, lastLine = cm.lastLine(), end, endCh;\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (pos == nextOpen) ++depth;\n else if (!--depth) { end = i; endCh = pos; break outer; }\n ++pos;\n }\n }\n if (end == null || line == end && endCh == startCh) return;\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n var cssMode = CodeMirror.mimeModes[\"text/css\"];\n var propertyKeywords = cssMode.propertyKeywords || {},\n colorKeywords = cssMode.colorKeywords || {},\n valueKeywords = cssMode.valueKeywords || {},\n fontProperties = cssMode.fontProperties || {};\n\n function tokenRegexp(words) {\n return new RegExp(\"^\" + words.join(\"|\"));\n }\n\n var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n var opRegexp = tokenRegexp(operators);\n\n var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n var word;\n\n function isEndLine(stream) {\n return !stream.peek() || stream.match(/\\s+$/, false);\n }\n\n function urlTokens(stream, state) {\n var ch = stream.peek();\n\n if (ch === \")\") {\n stream.next();\n state.tokenizer = tokenBase;\n return \"operator\";\n } else if (ch === \"(\") {\n stream.next();\n stream.eatSpace();\n\n return \"operator\";\n } else if (ch === \"'\" || ch === '\"') {\n state.tokenizer = buildStringTokenizer(stream.next());\n return \"string\";\n } else {\n state.tokenizer = buildStringTokenizer(\")\", false);\n return \"string\";\n }\n }\n function comment(indentation, multiLine) {\n return function(stream, state) {\n if (stream.sol() && stream.indentation() <= indentation) {\n state.tokenizer = tokenBase;\n return tokenBase(stream, state);\n }\n\n if (multiLine && stream.skipTo(\"*/\")) {\n stream.next();\n stream.next();\n state.tokenizer = tokenBase;\n } else {\n stream.skipToEnd();\n }\n\n return \"comment\";\n };\n }\n\n function buildStringTokenizer(quote, greedy) {\n if (greedy == null) { greedy = true; }\n\n function stringTokenizer(stream, state) {\n var nextChar = stream.next();\n var peekChar = stream.peek();\n var previousChar = stream.string.charAt(stream.pos-2);\n\n var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n if (endingString) {\n if (nextChar !== quote && greedy) { stream.next(); }\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n state.tokenizer = tokenBase;\n return \"string\";\n } else if (nextChar === \"#\" && peekChar === \"{\") {\n state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n stream.next();\n return \"operator\";\n } else {\n return \"string\";\n }\n }\n\n return stringTokenizer;\n }\n\n function buildInterpolationTokenizer(currentTokenizer) {\n return function(stream, state) {\n if (stream.peek() === \"}\") {\n stream.next();\n state.tokenizer = currentTokenizer;\n return \"operator\";\n } else {\n return tokenBase(stream, state);\n }\n };\n }\n\n function indent(state) {\n if (state.indentCount == 0) {\n state.indentCount++;\n var lastScopeOffset = state.scopes[0].offset;\n var currentOffset = lastScopeOffset + config.indentUnit;\n state.scopes.unshift({ offset:currentOffset });\n }\n }\n\n function dedent(state) {\n if (state.scopes.length == 1) return;\n\n state.scopes.shift();\n }\n\n function tokenBase(stream, state) {\n var ch = stream.peek();\n\n // Comment\n if (stream.match(\"/*\")) {\n state.tokenizer = comment(stream.indentation(), true);\n return state.tokenizer(stream, state);\n }\n if (stream.match(\"//\")) {\n state.tokenizer = comment(stream.indentation(), false);\n return state.tokenizer(stream, state);\n }\n\n // Interpolation\n if (stream.match(\"#{\")) {\n state.tokenizer = buildInterpolationTokenizer(tokenBase);\n return \"operator\";\n }\n\n // Strings\n if (ch === '\"' || ch === \"'\") {\n stream.next();\n state.tokenizer = buildStringTokenizer(ch);\n return \"string\";\n }\n\n if(!state.cursorHalf){// state.cursorHalf === 0\n // first half i.e. before : for key-value pairs\n // including selectors\n\n if (ch === \"-\") {\n if (stream.match(/^-\\w+-/)) {\n return \"meta\";\n }\n }\n\n if (ch === \".\") {\n stream.next();\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"qualifier\";\n } else if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n if (ch === \"#\") {\n stream.next();\n // ID selectors\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"builtin\";\n }\n if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"variable-2\";\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/))\n return \"number\";\n\n // Units\n if (stream.match(/^(px|em|in)\\b/))\n return \"unit\";\n\n if (stream.match(keywordsRegexp))\n return \"keyword\";\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n return \"atom\";\n }\n\n if (ch === \"=\") {\n // Match shortcut mixin definition\n if (stream.match(/^=[\\w-]+/)) {\n indent(state);\n return \"meta\";\n }\n }\n\n if (ch === \"+\") {\n // Match shortcut mixin definition\n if (stream.match(/^\\+[\\w-]+/)){\n return \"variable-3\";\n }\n }\n\n if(ch === \"@\"){\n if(stream.match('@extend')){\n if(!stream.match(/\\s*[\\w]/))\n dedent(state);\n }\n }\n\n\n // Indent Directives\n if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n indent(state);\n return \"def\";\n }\n\n // Other Directives\n if (ch === \"@\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"def\";\n }\n\n if (stream.eatWhile(/[\\w-]/)){\n if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n word = stream.current().toLowerCase();\n var prop = state.prevProp + \"-\" + word;\n if (propertyKeywords.hasOwnProperty(prop)) {\n return \"property\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = word;\n return \"property\";\n } else if (fontProperties.hasOwnProperty(word)) {\n return \"property\";\n }\n return \"tag\";\n }\n else if(stream.match(/ *:/,false)){\n indent(state);\n state.cursorHalf = 1;\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n }\n else if(stream.match(/ *,/,false)){\n return \"tag\";\n }\n else{\n indent(state);\n return \"tag\";\n }\n }\n\n if(ch === \":\"){\n if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n return \"variable-3\";\n }\n stream.next();\n state.cursorHalf=1;\n return \"operator\";\n }\n\n } // cursorHalf===0 ends here\n else{\n\n if (ch === \"#\") {\n stream.next();\n // Hex numbers\n if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n\n // Units\n if (stream.match(/^(px|em|in)\\b/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"unit\";\n }\n\n if (stream.match(keywordsRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"keyword\";\n }\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"atom\";\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"variable-2\";\n }\n\n // bang character for !important, !default, etc.\n if (ch === \"!\") {\n stream.next();\n state.cursorHalf = 0;\n return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n }\n\n if (stream.match(opRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"operator\";\n }\n\n // attributes\n if (stream.eatWhile(/[\\w-]/)) {\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word)) {\n return \"atom\";\n } else if (colorKeywords.hasOwnProperty(word)) {\n return \"keyword\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n } else {\n return \"tag\";\n }\n }\n\n //stream.eatSpace();\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n return null;\n }\n\n } // else ends here\n\n if (stream.match(opRegexp))\n return \"operator\";\n\n // If we haven't returned by now, we move 1 character\n // and return an error\n stream.next();\n return null;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.indentCount = 0;\n var style = state.tokenizer(stream, state);\n var current = stream.current();\n\n if (current === \"@return\" || current === \"}\"){\n dedent(state);\n }\n\n if (style !== null) {\n var startOfToken = stream.pos - current.length;\n\n var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n var newScopes = [];\n\n for (var i = 0; i < state.scopes.length; i++) {\n var scope = state.scopes[i];\n\n if (scope.offset <= withCurrentIndent)\n newScopes.push(scope);\n }\n\n state.scopes = newScopes;\n }\n\n\n return style;\n }\n\n return {\n startState: function() {\n return {\n tokenizer: tokenBase,\n scopes: [{offset: 0, type: \"sass\"}],\n indentCount: 0,\n cursorHalf: 0, // cursor half tells us if cursor lies after (1)\n // or before (0) colon (well... more or less)\n definedVars: [],\n definedMixins: []\n };\n },\n token: function(stream, state) {\n var style = tokenLexer(stream, state);\n\n state.lastToken = { style: style, content: stream.current() };\n\n return style;\n },\n\n indent: function(state) {\n return state.scopes[0].offset;\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\",\n fold: \"indent\"\n };\n}, \"css\");\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Highlighting text that matches the selection\n//\n// Defines an option highlightSelectionMatches, which, when enabled,\n// will style strings that match the selection throughout the\n// document.\n//\n// The option can be set to true to simply enable it, or to a\n// {minChars, style, wordsOnly, showToken, delay} object to explicitly\n// configure it. minChars is the minimum amount of characters that should be\n// selected for the behavior to occur, and style is the token style to\n// apply to the matches. This will be prefixed by \"cm-\" to create an\n// actual CSS class name. If wordsOnly is enabled, the matches will be\n// highlighted only if the selected text is a word. showToken, when enabled,\n// will cause the current token to be highlighted when nothing is selected.\n// delay is used to specify how much time to wait, in milliseconds, before\n// highlighting the matches. If annotateScrollbar is enabled, the occurrences\n// will be highlighted on the scrollbar via the matchesonscrollbar addon.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./matchesonscrollbar\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./matchesonscrollbar\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaults = {\n style: \"matchhighlight\",\n minChars: 2,\n delay: 100,\n wordsOnly: false,\n annotateScrollbar: false,\n showToken: false,\n trim: true\n }\n\n function State(options) {\n this.options = {}\n for (var name in defaults)\n this.options[name] = (options && options.hasOwnProperty(name) ? options : defaults)[name]\n this.overlay = this.timeout = null;\n this.matchesonscroll = null;\n this.active = false;\n }\n\n CodeMirror.defineOption(\"highlightSelectionMatches\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n removeOverlay(cm);\n clearTimeout(cm.state.matchHighlighter.timeout);\n cm.state.matchHighlighter = null;\n cm.off(\"cursorActivity\", cursorActivity);\n cm.off(\"focus\", onFocus)\n }\n if (val) {\n var state = cm.state.matchHighlighter = new State(val);\n if (cm.hasFocus()) {\n state.active = true\n highlightMatches(cm)\n } else {\n cm.on(\"focus\", onFocus)\n }\n cm.on(\"cursorActivity\", cursorActivity);\n }\n });\n\n function cursorActivity(cm) {\n var state = cm.state.matchHighlighter;\n if (state.active || cm.hasFocus()) scheduleHighlight(cm, state)\n }\n\n function onFocus(cm) {\n var state = cm.state.matchHighlighter\n if (!state.active) {\n state.active = true\n scheduleHighlight(cm, state)\n }\n }\n\n function scheduleHighlight(cm, state) {\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function() {highlightMatches(cm);}, state.options.delay);\n }\n\n function addOverlay(cm, query, hasBoundary, style) {\n var state = cm.state.matchHighlighter;\n cm.addOverlay(state.overlay = makeOverlay(query, hasBoundary, style));\n if (state.options.annotateScrollbar && cm.showMatchesOnScrollbar) {\n var searchFor = hasBoundary ? new RegExp((/\\w/.test(query.charAt(0)) ? \"\\\\b\" : \"\") +\n query.replace(/[\\\\\\[.+*?(){|^$]/g, \"\\\\$&\") +\n (/\\w/.test(query.charAt(query.length - 1)) ? \"\\\\b\" : \"\")) : query;\n state.matchesonscroll = cm.showMatchesOnScrollbar(searchFor, false,\n {className: \"CodeMirror-selection-highlight-scrollbar\"});\n }\n }\n\n function removeOverlay(cm) {\n var state = cm.state.matchHighlighter;\n if (state.overlay) {\n cm.removeOverlay(state.overlay);\n state.overlay = null;\n if (state.matchesonscroll) {\n state.matchesonscroll.clear();\n state.matchesonscroll = null;\n }\n }\n }\n\n function highlightMatches(cm) {\n cm.operation(function() {\n var state = cm.state.matchHighlighter;\n removeOverlay(cm);\n if (!cm.somethingSelected() && state.options.showToken) {\n var re = state.options.showToken === true ? /[\\w$]/ : state.options.showToken;\n var cur = cm.getCursor(), line = cm.getLine(cur.line), start = cur.ch, end = start;\n while (start && re.test(line.charAt(start - 1))) --start;\n while (end < line.length && re.test(line.charAt(end))) ++end;\n if (start < end)\n addOverlay(cm, line.slice(start, end), re, state.options.style);\n return;\n }\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (from.line != to.line) return;\n if (state.options.wordsOnly && !isWord(cm, from, to)) return;\n var selection = cm.getRange(from, to)\n if (state.options.trim) selection = selection.replace(/^\\s+|\\s+$/g, \"\")\n if (selection.length >= state.options.minChars)\n addOverlay(cm, selection, false, state.options.style);\n });\n }\n\n function isWord(cm, from, to) {\n var str = cm.getRange(from, to);\n if (str.match(/^\\w+$/) !== null) {\n if (from.ch > 0) {\n var pos = {line: from.line, ch: from.ch - 1};\n var chr = cm.getRange(pos, from);\n if (chr.match(/\\W/) === null) return false;\n }\n if (to.ch < cm.getLine(from.line).length) {\n var pos = {line: to.line, ch: to.ch + 1};\n var chr = cm.getRange(to, pos);\n if (chr.match(/\\W/) === null) return false;\n }\n return true;\n } else return false;\n }\n\n function boundariesAround(stream, re) {\n return (!stream.start || !re.test(stream.string.charAt(stream.start - 1))) &&\n (stream.pos == stream.string.length || !re.test(stream.string.charAt(stream.pos)));\n }\n\n function makeOverlay(query, hasBoundary, style) {\n return {token: function(stream) {\n if (stream.match(query) &&\n (!hasBoundary || boundariesAround(stream, hasBoundary)))\n return style;\n stream.next();\n stream.skipTo(query.charAt(0)) || stream.skipToEnd();\n }};\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n\n function matches(hint, typed, matchInMiddle) {\n if (matchInMiddle) return hint.indexOf(typed) >= 0;\n else return hint.lastIndexOf(typed, 0) == 0;\n }\n\n function getHints(cm, options) {\n var tags = options && options.schemaInfo;\n var quote = (options && options.quoteChar) || '\"';\n var matchInMiddle = options && options.matchInMiddle;\n if (!tags) return;\n var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n if (!inner.mode.xmlCurrentTag) return\n var result = [], replaceToken = false, prefix;\n var tag = /\\btag\\b/.test(token.type) && !/>$/.test(token.string);\n var tagName = tag && /^\\w/.test(token.string), tagStart;\n\n if (tagName) {\n var before = cm.getLine(cur.line).slice(Math.max(0, token.start - 2), token.start);\n var tagType = /<\\/$/.test(before) ? \"close\" : /<$/.test(before) ? \"open\" : null;\n if (tagType) tagStart = token.start - (tagType == \"close\" ? 2 : 1);\n } else if (tag && token.string == \"<\") {\n tagType = \"open\";\n } else if (tag && token.string == \"\");\n } else {\n // Attribute completion\n var curTag = tagInfo && tags[tagInfo.name], attrs = curTag && curTag.attrs;\n var globalAttrs = tags[\"!attrs\"];\n if (!attrs && !globalAttrs) return;\n if (!attrs) {\n attrs = globalAttrs;\n } else if (globalAttrs) { // Combine tag-local and global attributes\n var set = {};\n for (var nm in globalAttrs) if (globalAttrs.hasOwnProperty(nm)) set[nm] = globalAttrs[nm];\n for (var nm in attrs) if (attrs.hasOwnProperty(nm)) set[nm] = attrs[nm];\n attrs = set;\n }\n if (token.type == \"string\" || token.string == \"=\") { // A value\n var before = cm.getRange(Pos(cur.line, Math.max(0, cur.ch - 60)),\n Pos(cur.line, token.type == \"string\" ? token.start : token.end));\n var atName = before.match(/([^\\s\\u00a0=<>\\\"\\']+)=$/), atValues;\n if (!atName || !attrs.hasOwnProperty(atName[1]) || !(atValues = attrs[atName[1]])) return;\n if (typeof atValues == 'function') atValues = atValues.call(this, cm); // Functions can be used to supply values for autocomplete widget\n if (token.type == \"string\") {\n prefix = token.string;\n var n = 0;\n if (/['\"]/.test(token.string.charAt(0))) {\n quote = token.string.charAt(0);\n prefix = token.string.slice(1);\n n++;\n }\n var len = token.string.length;\n if (/['\"]/.test(token.string.charAt(len - 1))) {\n quote = token.string.charAt(len - 1);\n prefix = token.string.substr(n, len - 2);\n }\n if (n) { // an opening quote\n var line = cm.getLine(cur.line);\n if (line.length > token.end && line.charAt(token.end) == quote) token.end++; // include a closing quote\n }\n replaceToken = true;\n }\n var returnHintsFromAtValues = function(atValues) {\n if (atValues)\n for (var i = 0; i < atValues.length; ++i) if (!prefix || matches(atValues[i], prefix, matchInMiddle))\n result.push(quote + atValues[i] + quote);\n return returnHints();\n };\n if (atValues && atValues.then) return atValues.then(returnHintsFromAtValues);\n return returnHintsFromAtValues(atValues);\n } else { // An attribute name\n if (token.type == \"attribute\") {\n prefix = token.string;\n replaceToken = true;\n }\n for (var attr in attrs) if (attrs.hasOwnProperty(attr) && (!prefix || matches(attr, prefix, matchInMiddle)))\n result.push(attr);\n }\n }\n function returnHints() {\n return {\n list: result,\n from: replaceToken ? Pos(cur.line, tagStart == null ? token.start : tagStart) : cur,\n to: replaceToken ? Pos(cur.line, token.end) : cur\n };\n }\n return returnHints();\n }\n\n CodeMirror.registerHelper(\"hint\", \"xml\", getHints);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var Pos = CodeMirror.Pos;\n\n function forEach(arr, f) {\n for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);\n }\n\n function arrayContains(arr, item) {\n if (!Array.prototype.indexOf) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n return true;\n }\n }\n return false;\n }\n return arr.indexOf(item) != -1;\n }\n\n function scriptHint(editor, keywords, getToken, options) {\n // Find the token at the cursor\n var cur = editor.getCursor(), token = getToken(editor, cur);\n if (/\\b(?:string|comment)\\b/.test(token.type)) return;\n var innerMode = CodeMirror.innerMode(editor.getMode(), token.state);\n if (innerMode.mode.helperType === \"json\") return;\n token.state = innerMode.state;\n\n // If it's not a 'word-style' token, ignore the token.\n if (!/^[\\w$_]*$/.test(token.string)) {\n token = {start: cur.ch, end: cur.ch, string: \"\", state: token.state,\n type: token.string == \".\" ? \"property\" : null};\n } else if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n\n var tprop = token;\n // If it is a property, find out what it is a property of.\n while (tprop.type == \"property\") {\n tprop = getToken(editor, Pos(cur.line, tprop.start));\n if (tprop.string != \".\") return;\n tprop = getToken(editor, Pos(cur.line, tprop.start));\n if (!context) var context = [];\n context.push(tprop);\n }\n return {list: getCompletions(token, context, keywords, options),\n from: Pos(cur.line, token.start),\n to: Pos(cur.line, token.end)};\n }\n\n function javascriptHint(editor, options) {\n return scriptHint(editor, javascriptKeywords,\n function (e, cur) {return e.getTokenAt(cur);},\n options);\n };\n CodeMirror.registerHelper(\"hint\", \"javascript\", javascriptHint);\n\n function getCoffeeScriptToken(editor, cur) {\n // This getToken, it is for coffeescript, imitates the behavior of\n // getTokenAt method in javascript.js, that is, returning \"property\"\n // type and treat \".\" as independent token.\n var token = editor.getTokenAt(cur);\n if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') {\n token.end = token.start;\n token.string = '.';\n token.type = \"property\";\n }\n else if (/^\\.[\\w$_]*$/.test(token.string)) {\n token.type = \"property\";\n token.start++;\n token.string = token.string.replace(/\\./, '');\n }\n return token;\n }\n\n function coffeescriptHint(editor, options) {\n return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options);\n }\n CodeMirror.registerHelper(\"hint\", \"coffeescript\", coffeescriptHint);\n\n var stringProps = (\"charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight \" +\n \"toUpperCase toLowerCase split concat match replace search\").split(\" \");\n var arrayProps = (\"length concat join splice push pop shift unshift slice reverse sort indexOf \" +\n \"lastIndexOf every some filter forEach map reduce reduceRight \").split(\" \");\n var funcProps = \"prototype apply call bind\".split(\" \");\n var javascriptKeywords = (\"break case catch class const continue debugger default delete do else export extends false finally for function \" +\n \"if in import instanceof new null return super switch this throw true try typeof var void while with yield\").split(\" \");\n var coffeescriptKeywords = (\"and break catch class continue delete do else extends false finally for \" +\n \"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes\").split(\" \");\n\n function forAllProps(obj, callback) {\n if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) {\n for (var name in obj) callback(name)\n } else {\n for (var o = obj; o; o = Object.getPrototypeOf(o))\n Object.getOwnPropertyNames(o).forEach(callback)\n }\n }\n\n function getCompletions(token, context, keywords, options) {\n var found = [], start = token.string, global = options && options.globalScope || window;\n function maybeAdd(str) {\n if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str);\n }\n function gatherCompletions(obj) {\n if (typeof obj == \"string\") forEach(stringProps, maybeAdd);\n else if (obj instanceof Array) forEach(arrayProps, maybeAdd);\n else if (obj instanceof Function) forEach(funcProps, maybeAdd);\n forAllProps(obj, maybeAdd)\n }\n\n if (context && context.length) {\n // If this is a property, see if it belongs to some object we can\n // find in the current environment.\n var obj = context.pop(), base;\n if (obj.type && obj.type.indexOf(\"variable\") === 0) {\n if (options && options.additionalContext)\n base = options.additionalContext[obj.string];\n if (!options || options.useGlobalScope !== false)\n base = base || global[obj.string];\n } else if (obj.type == \"string\") {\n base = \"\";\n } else if (obj.type == \"atom\") {\n base = 1;\n } else if (obj.type == \"function\") {\n if (global.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&\n (typeof global.jQuery == 'function'))\n base = global.jQuery();\n else if (global._ != null && (obj.string == '_') && (typeof global._ == 'function'))\n base = global._();\n }\n while (base != null && context.length)\n base = base[context.pop().string];\n if (base != null) gatherCompletions(base);\n } else {\n // If not, just look in the global object, any local scope, and optional additional-context\n // (reading into JS mode internals to get at the local and global variables)\n for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);\n for (var c = token.state.context; c; c = c.prev)\n for (var v = c.vars; v; v = v.next) maybeAdd(v.name)\n for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);\n if (options && options.additionalContext != null)\n for (var key in options.additionalContext)\n maybeAdd(key);\n if (!options || options.useGlobalScope !== false)\n gatherCompletions(global);\n forEach(keywords, maybeAdd);\n }\n return found;\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n if (force === \"fold\") return range;\n\n var marks = cm.findMarksAt(range.from);\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options, range);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options, range) {\n var widget = getOption(cm, options, \"widget\");\n\n if (typeof widget == \"function\") {\n widget = widget(range.from, range.to);\n }\n\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n } else if (widget) {\n widget = widget.cloneNode(true)\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), { scanUp: false }, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction Context(indented, column, type, info, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.info = info;\n this.align = align;\n this.prev = prev;\n}\nfunction pushContext(state, col, type, info) {\n var indent = state.indented;\n if (state.context && state.context.type == \"statement\" && type != \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, info, null, state.context);\n}\nfunction popContext(state) {\n var t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n}\n\nfunction typeBefore(stream, state, pos) {\n if (state.prevToken == \"variable\" || state.prevToken == \"type\") return true;\n if (/\\S(?:[^- ]>|[*\\]])\\s*$|\\*$/.test(stream.string.slice(0, pos))) return true;\n if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;\n}\n\nfunction isTopScope(context) {\n for (;;) {\n if (!context || context.type == \"top\") return true;\n if (context.type == \"}\" && context.prev.info != \"namespace\") return false;\n context = context.prev;\n }\n}\n\nCodeMirror.defineMode(\"clike\", function(config, parserConfig) {\n var indentUnit = config.indentUnit,\n statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n dontAlignCalls = parserConfig.dontAlignCalls,\n keywords = parserConfig.keywords || {},\n types = parserConfig.types || {},\n builtin = parserConfig.builtin || {},\n blockKeywords = parserConfig.blockKeywords || {},\n defKeywords = parserConfig.defKeywords || {},\n atoms = parserConfig.atoms || {},\n hooks = parserConfig.hooks || {},\n multiLineStrings = parserConfig.multiLineStrings,\n indentStatements = parserConfig.indentStatements !== false,\n indentSwitch = parserConfig.indentSwitch !== false,\n namespaceSeparator = parserConfig.namespaceSeparator,\n isPunctuationChar = parserConfig.isPunctuationChar || /[\\[\\]{}\\(\\),;\\:\\.]/,\n numberStart = parserConfig.numberStart || /[\\d\\.]/,\n number = parserConfig.number || /^(?:0x[a-f\\d]+|0b[01]+|(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?)(u|ll?|l|f)?/i,\n isOperatorChar = parserConfig.isOperatorChar || /[+\\-*&%=<>!?|\\/]/,\n isIdentifierChar = parserConfig.isIdentifierChar || /[\\w\\$_\\xa1-\\uffff]/,\n // An optional function that takes a {string} token and returns true if it\n // should be treated as a builtin.\n isReservedIdentifier = parserConfig.isReservedIdentifier || false;\n\n var curPunc, isDefKeyword;\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (hooks[ch]) {\n var result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (numberStart.test(ch)) {\n stream.backUp(1)\n if (stream.match(number)) return \"number\"\n stream.next()\n }\n if (isPunctuationChar.test(ch)) {\n curPunc = ch;\n return null;\n }\n if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n }\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (isOperatorChar.test(ch)) {\n while (!stream.match(/^\\/[\\/*]/, false) && stream.eat(isOperatorChar)) {}\n return \"operator\";\n }\n stream.eatWhile(isIdentifierChar);\n if (namespaceSeparator) while (stream.match(namespaceSeparator))\n stream.eatWhile(isIdentifierChar);\n\n var cur = stream.current();\n if (contains(keywords, cur)) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n if (contains(defKeywords, cur)) isDefKeyword = true;\n return \"keyword\";\n }\n if (contains(types, cur)) return \"type\";\n if (contains(builtin, cur)\n || (isReservedIdentifier && isReservedIdentifier(cur))) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n return \"builtin\";\n }\n if (contains(atoms, cur)) return \"atom\";\n return \"variable\";\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) {end = true; break;}\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return \"comment\";\n }\n\n function maybeEOL(stream, state) {\n if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context))\n state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n return {\n tokenize: null,\n context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", null, false),\n indented: 0,\n startOfLine: true,\n prevToken: null\n };\n },\n\n token: function(stream, state) {\n var ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) { maybeEOL(stream, state); return null; }\n curPunc = isDefKeyword = null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\" || style == \"meta\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if (curPunc == \";\" || curPunc == \":\" || (curPunc == \",\" && stream.match(/^\\s*(?:\\/\\/.*)?$/, false)))\n while (state.context.type == \"statement\") popContext(state);\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements &&\n (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != \";\") ||\n (ctx.type == \"statement\" && curPunc == \"newstatement\"))) {\n pushContext(state, stream.column(), \"statement\", stream.current());\n }\n\n if (style == \"variable\" &&\n ((state.prevToken == \"def\" ||\n (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) &&\n isTopScope(state.context) && stream.match(/^\\s*\\(/, false)))))\n style = \"def\";\n\n if (hooks.token) {\n var result = hooks.token(stream, state, style);\n if (result !== undefined) style = result;\n }\n\n if (style == \"def\" && parserConfig.styleDefs === false) style = \"variable\";\n\n state.startOfLine = false;\n state.prevToken = isDefKeyword ? \"def\" : style || curPunc;\n maybeEOL(stream, state);\n return style;\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass;\n var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n var closing = firstChar == ctx.type;\n if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n if (parserConfig.dontIndentStatements)\n while (ctx.type == \"statement\" && parserConfig.dontIndentStatements.test(ctx.info))\n ctx = ctx.prev\n if (hooks.indent) {\n var hook = hooks.indent(state, ctx, textAfter, indentUnit);\n if (typeof hook == \"number\") return hook\n }\n var switchBlock = ctx.prev && ctx.prev.info == \"switch\";\n if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {\n while (ctx.type != \"top\" && ctx.type != \"}\") ctx = ctx.prev\n return ctx.indented\n }\n if (ctx.type == \"statement\")\n return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n if (ctx.align && (!dontAlignCalls || ctx.type != \")\"))\n return ctx.column + (closing ? 0 : 1);\n if (ctx.type == \")\" && !closing)\n return ctx.indented + statementIndentUnit;\n\n return ctx.indented + (closing ? 0 : indentUnit) +\n (!closing && switchBlock && !/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 0);\n },\n\n electricInput: indentSwitch ? /^\\s*(?:case .*?:|default:|\\{\\}?|\\})$/ : /^\\s*[{}]$/,\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"brace\"\n };\n});\n\n function words(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n function contains(words, word) {\n if (typeof words === \"function\") {\n return words(word);\n } else {\n return words.propertyIsEnumerable(word);\n }\n }\n var cKeywords = \"auto if break case register continue return default do sizeof \" +\n \"static else struct switch extern typedef union for goto while enum const \" +\n \"volatile inline restrict asm fortran\";\n\n // Keywords from https://en.cppreference.com/w/cpp/keyword includes C++20.\n var cppKeywords = \"alignas alignof and and_eq audit axiom bitand bitor catch \" +\n \"class compl concept constexpr const_cast decltype delete dynamic_cast \" +\n \"explicit export final friend import module mutable namespace new noexcept \" +\n \"not not_eq operator or or_eq override private protected public \" +\n \"reinterpret_cast requires static_assert static_cast template this \" +\n \"thread_local throw try typeid typename using virtual xor xor_eq\";\n\n var objCKeywords = \"bycopy byref in inout oneway out self super atomic nonatomic retain copy \" +\n \"readwrite readonly strong weak assign typeof nullable nonnull null_resettable _cmd \" +\n \"@interface @implementation @end @protocol @encode @property @synthesize @dynamic @class \" +\n \"@public @package @private @protected @required @optional @try @catch @finally @import \" +\n \"@selector @encode @defs @synchronized @autoreleasepool @compatibility_alias @available\";\n\n var objCBuiltins = \"FOUNDATION_EXPORT FOUNDATION_EXTERN NS_INLINE NS_FORMAT_FUNCTION \" +\n \" NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER \" +\n \"NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS NS_REQUIRES_NIL_TERMINATION \" +\n \"NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_SWIFT_NAME NS_REFINED_FOR_SWIFT\"\n\n // Do not use this. Use the cTypes function below. This is global just to avoid\n // excessive calls when cTypes is being called multiple times during a parse.\n var basicCTypes = words(\"int long char short double float unsigned signed \" +\n \"void bool\");\n\n // Do not use this. Use the objCTypes function below. This is global just to avoid\n // excessive calls when objCTypes is being called multiple times during a parse.\n var basicObjCTypes = words(\"SEL instancetype id Class Protocol BOOL\");\n\n // Returns true if identifier is a \"C\" type.\n // C type is defined as those that are reserved by the compiler (basicTypes),\n // and those that end in _t (Reserved by POSIX for types)\n // http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html\n function cTypes(identifier) {\n return contains(basicCTypes, identifier) || /.+_t$/.test(identifier);\n }\n\n // Returns true if identifier is a \"Objective C\" type.\n function objCTypes(identifier) {\n return cTypes(identifier) || contains(basicObjCTypes, identifier);\n }\n\n var cBlockKeywords = \"case do else for if switch while struct enum union\";\n var cDefKeywords = \"struct enum union\";\n\n function cppHook(stream, state) {\n if (!state.startOfLine) return false\n for (var ch, next = null; ch = stream.peek();) {\n if (ch == \"\\\\\" && stream.match(/^.$/)) {\n next = cppHook\n break\n } else if (ch == \"/\" && stream.match(/^\\/[\\/\\*]/, false)) {\n break\n }\n stream.next()\n }\n state.tokenize = next\n return \"meta\"\n }\n\n function pointerHook(_stream, state) {\n if (state.prevToken == \"type\") return \"type\";\n return false;\n }\n\n // For C and C++ (and ObjC): identifiers starting with __\n // or _ followed by a capital letter are reserved for the compiler.\n function cIsReservedIdentifier(token) {\n if (!token || token.length < 2) return false;\n if (token[0] != '_') return false;\n return (token[1] == '_') || (token[1] !== token[1].toLowerCase());\n }\n\n function cpp14Literal(stream) {\n stream.eatWhile(/[\\w\\.']/);\n return \"number\";\n }\n\n function cpp11StringHook(stream, state) {\n stream.backUp(1);\n // Raw strings.\n if (stream.match(/^(?:R|u8R|uR|UR|LR)/)) {\n var match = stream.match(/^\"([^\\s\\\\()]{0,16})\\(/);\n if (!match) {\n return false;\n }\n state.cpp11RawStringDelim = match[1];\n state.tokenize = tokenRawString;\n return tokenRawString(stream, state);\n }\n // Unicode strings/chars.\n if (stream.match(/^(?:u8|u|U|L)/)) {\n if (stream.match(/^[\"']/, /* eat */ false)) {\n return \"string\";\n }\n return false;\n }\n // Ignore this hook.\n stream.next();\n return false;\n }\n\n function cppLooksLikeConstructor(word) {\n var lastTwo = /(\\w+)::~?(\\w+)$/.exec(word);\n return lastTwo && lastTwo[1] == lastTwo[2];\n }\n\n // C#-style strings where \"\" escapes a quote.\n function tokenAtString(stream, state) {\n var next;\n while ((next = stream.next()) != null) {\n if (next == '\"' && !stream.eat('\"')) {\n state.tokenize = null;\n break;\n }\n }\n return \"string\";\n }\n\n // C++11 raw string literal is \"( anything )\", where\n // can be a string up to 16 characters long.\n function tokenRawString(stream, state) {\n // Escape characters that have special regex meanings.\n var delim = state.cpp11RawStringDelim.replace(/[^\\w\\s]/g, '\\\\$&');\n var match = stream.match(new RegExp(\".*?\\\\)\" + delim + '\"'));\n if (match)\n state.tokenize = null;\n else\n stream.skipToEnd();\n return \"string\";\n }\n\n function def(mimes, mode) {\n if (typeof mimes == \"string\") mimes = [mimes];\n var words = [];\n function add(obj) {\n if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))\n words.push(prop);\n }\n add(mode.keywords);\n add(mode.types);\n add(mode.builtin);\n add(mode.atoms);\n if (words.length) {\n mode.helperType = mimes[0];\n CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n }\n\n for (var i = 0; i < mimes.length; ++i)\n CodeMirror.defineMIME(mimes[i], mode);\n }\n\n def([\"text/x-csrc\", \"text/x-c\", \"text/x-chdr\"], {\n name: \"clike\",\n keywords: words(cKeywords),\n types: cTypes,\n blockKeywords: words(cBlockKeywords),\n defKeywords: words(cDefKeywords),\n typeFirstDefinitions: true,\n atoms: words(\"NULL true false\"),\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n },\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def([\"text/x-c++src\", \"text/x-c++hdr\"], {\n name: \"clike\",\n keywords: words(cKeywords + \" \" + cppKeywords),\n types: cTypes,\n blockKeywords: words(cBlockKeywords + \" class try catch\"),\n defKeywords: words(cDefKeywords + \" class namespace\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false NULL nullptr\"),\n dontIndentStatements: /^template$/,\n isIdentifierChar: /[\\w\\$_~\\xa1-\\uffff]/,\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n \"u\": cpp11StringHook,\n \"U\": cpp11StringHook,\n \"L\": cpp11StringHook,\n \"R\": cpp11StringHook,\n \"0\": cpp14Literal,\n \"1\": cpp14Literal,\n \"2\": cpp14Literal,\n \"3\": cpp14Literal,\n \"4\": cpp14Literal,\n \"5\": cpp14Literal,\n \"6\": cpp14Literal,\n \"7\": cpp14Literal,\n \"8\": cpp14Literal,\n \"9\": cpp14Literal,\n token: function(stream, state, style) {\n if (style == \"variable\" && stream.peek() == \"(\" &&\n (state.prevToken == \";\" || state.prevToken == null ||\n state.prevToken == \"}\") &&\n cppLooksLikeConstructor(stream.current()))\n return \"def\";\n }\n },\n namespaceSeparator: \"::\",\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-java\", {\n name: \"clike\",\n keywords: words(\"abstract assert break case catch class const continue default \" +\n \"do else enum extends final finally for goto if implements import \" +\n \"instanceof interface native new package private protected public \" +\n \"return static strictfp super switch synchronized this throw throws transient \" +\n \"try volatile while @interface\"),\n types: words(\"var byte short int long float double boolean char void Boolean Byte Character Double Float \" +\n \"Integer Long Number Object Short String StringBuffer StringBuilder Void\"),\n blockKeywords: words(\"catch class do else finally for if switch try while\"),\n defKeywords: words(\"class interface enum @interface\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false null\"),\n number: /^(?:0x[a-f\\d_]+|0b[01_]+|(?:[\\d_]+\\.?\\d*|\\.\\d+)(?:e[-+]?[\\d_]+)?)(u|ll?|l|f)?/i,\n hooks: {\n \"@\": function(stream) {\n // Don't match the @interface keyword.\n if (stream.match('interface', false)) return false;\n\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '\"': function(stream, state) {\n if (!stream.match(/\"\"$/)) return false;\n state.tokenize = tokenTripleString;\n return state.tokenize(stream, state);\n }\n },\n modeProps: {fold: [\"brace\", \"import\"]}\n });\n\n def(\"text/x-csharp\", {\n name: \"clike\",\n keywords: words(\"abstract as async await base break case catch checked class const continue\" +\n \" default delegate do else enum event explicit extern finally fixed for\" +\n \" foreach goto if implicit in interface internal is lock namespace new\" +\n \" operator out override params private protected public readonly ref return sealed\" +\n \" sizeof stackalloc static struct switch this throw try typeof unchecked\" +\n \" unsafe using virtual void volatile while add alias ascending descending dynamic from get\" +\n \" global group into join let orderby partial remove select set value var yield\"),\n types: words(\"Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func\" +\n \" Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32\" +\n \" UInt64 bool byte char decimal double short int long object\" +\n \" sbyte float string ushort uint ulong\"),\n blockKeywords: words(\"catch class do else finally for foreach if struct switch try while\"),\n defKeywords: words(\"class interface namespace struct var\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false null\"),\n hooks: {\n \"@\": function(stream, state) {\n if (stream.eat('\"')) {\n state.tokenize = tokenAtString;\n return tokenAtString(stream, state);\n }\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n }\n }\n });\n\n function tokenTripleString(stream, state) {\n var escaped = false;\n while (!stream.eol()) {\n if (!escaped && stream.match('\"\"\"')) {\n state.tokenize = null;\n break;\n }\n escaped = stream.next() == \"\\\\\" && !escaped;\n }\n return \"string\";\n }\n\n function tokenNestedComment(depth) {\n return function (stream, state) {\n var ch\n while (ch = stream.next()) {\n if (ch == \"*\" && stream.eat(\"/\")) {\n if (depth == 1) {\n state.tokenize = null\n break\n } else {\n state.tokenize = tokenNestedComment(depth - 1)\n return state.tokenize(stream, state)\n }\n } else if (ch == \"/\" && stream.eat(\"*\")) {\n state.tokenize = tokenNestedComment(depth + 1)\n return state.tokenize(stream, state)\n }\n }\n return \"comment\"\n }\n }\n\n def(\"text/x-scala\", {\n name: \"clike\",\n keywords: words(\n /* scala */\n \"abstract case catch class def do else extends final finally for forSome if \" +\n \"implicit import lazy match new null object override package private protected return \" +\n \"sealed super this throw trait try type val var while with yield _ \" +\n\n /* package scala */\n \"assert assume require print println printf readLine readBoolean readByte readShort \" +\n \"readChar readInt readLong readFloat readDouble\"\n ),\n types: words(\n \"AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either \" +\n \"Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable \" +\n \"Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering \" +\n \"Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder \" +\n \"StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector \" +\n\n /* package java.lang */\n \"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable \" +\n \"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process \" +\n \"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String \" +\n \"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void\"\n ),\n multiLineStrings: true,\n blockKeywords: words(\"catch class enum do else finally for forSome if match switch try while\"),\n defKeywords: words(\"class enum def object package trait type val var\"),\n atoms: words(\"true false null\"),\n indentStatements: false,\n indentSwitch: false,\n isOperatorChar: /[+\\-*&%=<>!?|\\/#:@]/,\n hooks: {\n \"@\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '\"': function(stream, state) {\n if (!stream.match('\"\"')) return false;\n state.tokenize = tokenTripleString;\n return state.tokenize(stream, state);\n },\n \"'\": function(stream) {\n stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n return \"atom\";\n },\n \"=\": function(stream, state) {\n var cx = state.context\n if (cx.type == \"}\" && cx.align && stream.eat(\">\")) {\n state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev)\n return \"operator\"\n } else {\n return false\n }\n },\n\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false\n state.tokenize = tokenNestedComment(1)\n return state.tokenize(stream, state)\n }\n },\n modeProps: {closeBrackets: {pairs: '()[]{}\"\"', triples: '\"'}}\n });\n\n function tokenKotlinString(tripleString){\n return function (stream, state) {\n var escaped = false, next, end = false;\n while (!stream.eol()) {\n if (!tripleString && !escaped && stream.match('\"') ) {end = true; break;}\n if (tripleString && stream.match('\"\"\"')) {end = true; break;}\n next = stream.next();\n if(!escaped && next == \"$\" && stream.match('{'))\n stream.skipTo(\"}\");\n escaped = !escaped && next == \"\\\\\" && !tripleString;\n }\n if (end || !tripleString)\n state.tokenize = null;\n return \"string\";\n }\n }\n\n def(\"text/x-kotlin\", {\n name: \"clike\",\n keywords: words(\n /*keywords*/\n \"package as typealias class interface this super val operator \" +\n \"var fun for is in This throw return annotation \" +\n \"break continue object if else while do try when !in !is as? \" +\n\n /*soft keywords*/\n \"file import where by get set abstract enum open inner override private public internal \" +\n \"protected catch finally out final vararg reified dynamic companion constructor init \" +\n \"sealed field property receiver param sparam lateinit data inline noinline tailrec \" +\n \"external annotation crossinline const operator infix suspend actual expect setparam value\"\n ),\n types: words(\n /* package java.lang */\n \"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable \" +\n \"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process \" +\n \"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String \" +\n \"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray \" +\n \"ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy \" +\n \"LazyThreadSafetyMode LongArray Nothing ShortArray Unit\"\n ),\n intendSwitch: false,\n indentStatements: false,\n multiLineStrings: true,\n number: /^(?:0x[a-f\\d_]+|0b[01_]+|(?:[\\d_]+(\\.\\d+)?|\\.\\d+)(?:e[-+]?[\\d_]+)?)(u|ll?|l|f)?/i,\n blockKeywords: words(\"catch class do else finally for if where try while enum\"),\n defKeywords: words(\"class val var object interface fun\"),\n atoms: words(\"true false null this\"),\n hooks: {\n \"@\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '*': function(_stream, state) {\n return state.prevToken == '.' ? 'variable' : 'operator';\n },\n '\"': function(stream, state) {\n state.tokenize = tokenKotlinString(stream.match('\"\"'));\n return state.tokenize(stream, state);\n },\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenNestedComment(1);\n return state.tokenize(stream, state)\n },\n indent: function(state, ctx, textAfter, indentUnit) {\n var firstChar = textAfter && textAfter.charAt(0);\n if ((state.prevToken == \"}\" || state.prevToken == \")\") && textAfter == \"\")\n return state.indented;\n if ((state.prevToken == \"operator\" && textAfter != \"}\" && state.context.type != \"}\") ||\n state.prevToken == \"variable\" && firstChar == \".\" ||\n (state.prevToken == \"}\" || state.prevToken == \")\") && firstChar == \".\")\n return indentUnit * 2 + ctx.indented;\n if (ctx.align && ctx.type == \"}\")\n return ctx.indented + (state.context.type == (textAfter || \"\").charAt(0) ? 0 : indentUnit);\n }\n },\n modeProps: {closeBrackets: {triples: '\"'}}\n });\n\n def([\"x-shader/x-vertex\", \"x-shader/x-fragment\"], {\n name: \"clike\",\n keywords: words(\"sampler1D sampler2D sampler3D samplerCube \" +\n \"sampler1DShadow sampler2DShadow \" +\n \"const attribute uniform varying \" +\n \"break continue discard return \" +\n \"for while do if else struct \" +\n \"in out inout\"),\n types: words(\"float int bool void \" +\n \"vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 \" +\n \"mat2 mat3 mat4\"),\n blockKeywords: words(\"for while do if else struct\"),\n builtin: words(\"radians degrees sin cos tan asin acos atan \" +\n \"pow exp log exp2 sqrt inversesqrt \" +\n \"abs sign floor ceil fract mod min max clamp mix step smoothstep \" +\n \"length distance dot cross normalize ftransform faceforward \" +\n \"reflect refract matrixCompMult \" +\n \"lessThan lessThanEqual greaterThan greaterThanEqual \" +\n \"equal notEqual any all not \" +\n \"texture1D texture1DProj texture1DLod texture1DProjLod \" +\n \"texture2D texture2DProj texture2DLod texture2DProjLod \" +\n \"texture3D texture3DProj texture3DLod texture3DProjLod \" +\n \"textureCube textureCubeLod \" +\n \"shadow1D shadow2D shadow1DProj shadow2DProj \" +\n \"shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod \" +\n \"dFdx dFdy fwidth \" +\n \"noise1 noise2 noise3 noise4\"),\n atoms: words(\"true false \" +\n \"gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex \" +\n \"gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 \" +\n \"gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 \" +\n \"gl_FogCoord gl_PointCoord \" +\n \"gl_Position gl_PointSize gl_ClipVertex \" +\n \"gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor \" +\n \"gl_TexCoord gl_FogFragCoord \" +\n \"gl_FragCoord gl_FrontFacing \" +\n \"gl_FragData gl_FragDepth \" +\n \"gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix \" +\n \"gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse \" +\n \"gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse \" +\n \"gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose \" +\n \"gl_ProjectionMatrixInverseTranspose \" +\n \"gl_ModelViewProjectionMatrixInverseTranspose \" +\n \"gl_TextureMatrixInverseTranspose \" +\n \"gl_NormalScale gl_DepthRange gl_ClipPlane \" +\n \"gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel \" +\n \"gl_FrontLightModelProduct gl_BackLightModelProduct \" +\n \"gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ \" +\n \"gl_FogParameters \" +\n \"gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords \" +\n \"gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats \" +\n \"gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits \" +\n \"gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits \" +\n \"gl_MaxDrawBuffers\"),\n indentSwitch: false,\n hooks: {\"#\": cppHook},\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-nesc\", {\n name: \"clike\",\n keywords: words(cKeywords + \" as atomic async call command component components configuration event generic \" +\n \"implementation includes interface module new norace nx_struct nx_union post provides \" +\n \"signal task uses abstract extends\"),\n types: cTypes,\n blockKeywords: words(cBlockKeywords),\n atoms: words(\"null true false\"),\n hooks: {\"#\": cppHook},\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-objectivec\", {\n name: \"clike\",\n keywords: words(cKeywords + \" \" + objCKeywords),\n types: objCTypes,\n builtin: words(objCBuiltins),\n blockKeywords: words(cBlockKeywords + \" @synthesize @try @catch @finally @autoreleasepool @synchronized\"),\n defKeywords: words(cDefKeywords + \" @interface @implementation @protocol @class\"),\n dontIndentStatements: /^@.*$/,\n typeFirstDefinitions: true,\n atoms: words(\"YES NO NULL Nil nil true false nullptr\"),\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n },\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-objectivec++\", {\n name: \"clike\",\n keywords: words(cKeywords + \" \" + objCKeywords + \" \" + cppKeywords),\n types: objCTypes,\n builtin: words(objCBuiltins),\n blockKeywords: words(cBlockKeywords + \" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch\"),\n defKeywords: words(cDefKeywords + \" @interface @implementation @protocol @class class namespace\"),\n dontIndentStatements: /^@.*$|^template$/,\n typeFirstDefinitions: true,\n atoms: words(\"YES NO NULL Nil nil true false nullptr\"),\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n \"u\": cpp11StringHook,\n \"U\": cpp11StringHook,\n \"L\": cpp11StringHook,\n \"R\": cpp11StringHook,\n \"0\": cpp14Literal,\n \"1\": cpp14Literal,\n \"2\": cpp14Literal,\n \"3\": cpp14Literal,\n \"4\": cpp14Literal,\n \"5\": cpp14Literal,\n \"6\": cpp14Literal,\n \"7\": cpp14Literal,\n \"8\": cpp14Literal,\n \"9\": cpp14Literal,\n token: function(stream, state, style) {\n if (style == \"variable\" && stream.peek() == \"(\" &&\n (state.prevToken == \";\" || state.prevToken == null ||\n state.prevToken == \"}\") &&\n cppLooksLikeConstructor(stream.current()))\n return \"def\";\n }\n },\n namespaceSeparator: \"::\",\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-squirrel\", {\n name: \"clike\",\n keywords: words(\"base break clone continue const default delete enum extends function in class\" +\n \" foreach local resume return this throw typeof yield constructor instanceof static\"),\n types: cTypes,\n blockKeywords: words(\"case catch class else for foreach if switch try while\"),\n defKeywords: words(\"function local class\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false null\"),\n hooks: {\"#\": cppHook},\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n // Ceylon Strings need to deal with interpolation\n var stringTokenizer = null;\n function tokenCeylonString(type) {\n return function(stream, state) {\n var escaped = false, next, end = false;\n while (!stream.eol()) {\n if (!escaped && stream.match('\"') &&\n (type == \"single\" || stream.match('\"\"'))) {\n end = true;\n break;\n }\n if (!escaped && stream.match('``')) {\n stringTokenizer = tokenCeylonString(type);\n end = true;\n break;\n }\n next = stream.next();\n escaped = type == \"single\" && !escaped && next == \"\\\\\";\n }\n if (end)\n state.tokenize = null;\n return \"string\";\n }\n }\n\n def(\"text/x-ceylon\", {\n name: \"clike\",\n keywords: words(\"abstracts alias assembly assert assign break case catch class continue dynamic else\" +\n \" exists extends finally for function given if import in interface is let module new\" +\n \" nonempty object of out outer package return satisfies super switch then this throw\" +\n \" try value void while\"),\n types: function(word) {\n // In Ceylon all identifiers that start with an uppercase are types\n var first = word.charAt(0);\n return (first === first.toUpperCase() && first !== first.toLowerCase());\n },\n blockKeywords: words(\"case catch class dynamic else finally for function if interface module new object switch try while\"),\n defKeywords: words(\"class dynamic function interface module object package value\"),\n builtin: words(\"abstract actual aliased annotation by default deprecated doc final formal late license\" +\n \" native optional sealed see serializable shared suppressWarnings tagged throws variable\"),\n isPunctuationChar: /[\\[\\]{}\\(\\),;\\:\\.`]/,\n isOperatorChar: /[+\\-*&%=<>!?|^~:\\/]/,\n numberStart: /[\\d#$]/,\n number: /^(?:#[\\da-fA-F_]+|\\$[01_]+|[\\d_]+[kMGTPmunpf]?|[\\d_]+\\.[\\d_]+(?:[eE][-+]?\\d+|[kMGTPmunpf]|)|)/i,\n multiLineStrings: true,\n typeFirstDefinitions: true,\n atoms: words(\"true false null larger smaller equal empty finished\"),\n indentSwitch: false,\n styleDefs: false,\n hooks: {\n \"@\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '\"': function(stream, state) {\n state.tokenize = tokenCeylonString(stream.match('\"\"') ? \"triple\" : \"single\");\n return state.tokenize(stream, state);\n },\n '`': function(stream, state) {\n if (!stringTokenizer || !stream.match('`')) return false;\n state.tokenize = stringTokenizer;\n stringTokenizer = null;\n return state.tokenize(stream, state);\n },\n \"'\": function(stream) {\n stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n return \"atom\";\n },\n token: function(_stream, state, style) {\n if ((style == \"variable\" || style == \"type\") &&\n state.prevToken == \".\") {\n return \"variable-2\";\n }\n }\n },\n modeProps: {\n fold: [\"brace\", \"import\"],\n closeBrackets: {triples: '\"'}\n }\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pug\", function (config) {\n // token types\n var KEYWORD = 'keyword';\n var DOCTYPE = 'meta';\n var ID = 'builtin';\n var CLASS = 'qualifier';\n\n var ATTRS_NEST = {\n '{': '}',\n '(': ')',\n '[': ']'\n };\n\n var jsMode = CodeMirror.getMode(config, 'javascript');\n\n function State() {\n this.javaScriptLine = false;\n this.javaScriptLineExcludesColon = false;\n\n this.javaScriptArguments = false;\n this.javaScriptArgumentsDepth = 0;\n\n this.isInterpolating = false;\n this.interpolationNesting = 0;\n\n this.jsState = CodeMirror.startState(jsMode);\n\n this.restOfLine = '';\n\n this.isIncludeFiltered = false;\n this.isEach = false;\n\n this.lastTag = '';\n this.scriptType = '';\n\n // Attributes Mode\n this.isAttrs = false;\n this.attrsNest = [];\n this.inAttributeName = true;\n this.attributeIsType = false;\n this.attrValue = '';\n\n // Indented Mode\n this.indentOf = Infinity;\n this.indentToken = '';\n\n this.innerMode = null;\n this.innerState = null;\n\n this.innerModeForLine = false;\n }\n /**\n * Safely copy a state\n *\n * @return {State}\n */\n State.prototype.copy = function () {\n var res = new State();\n res.javaScriptLine = this.javaScriptLine;\n res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n res.javaScriptArguments = this.javaScriptArguments;\n res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n res.isInterpolating = this.isInterpolating;\n res.interpolationNesting = this.interpolationNesting;\n\n res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n res.innerMode = this.innerMode;\n if (this.innerMode && this.innerState) {\n res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n }\n\n res.restOfLine = this.restOfLine;\n\n res.isIncludeFiltered = this.isIncludeFiltered;\n res.isEach = this.isEach;\n res.lastTag = this.lastTag;\n res.scriptType = this.scriptType;\n res.isAttrs = this.isAttrs;\n res.attrsNest = this.attrsNest.slice();\n res.inAttributeName = this.inAttributeName;\n res.attributeIsType = this.attributeIsType;\n res.attrValue = this.attrValue;\n res.indentOf = this.indentOf;\n res.indentToken = this.indentToken;\n\n res.innerModeForLine = this.innerModeForLine;\n\n return res;\n };\n\n function javaScript(stream, state) {\n if (stream.sol()) {\n // if javaScriptLine was set at end of line, ignore it\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n }\n if (state.javaScriptLine) {\n if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n return;\n }\n var tok = jsMode.token(stream, state.jsState);\n if (stream.eol()) state.javaScriptLine = false;\n return tok || true;\n }\n }\n function javaScriptArguments(stream, state) {\n if (state.javaScriptArguments) {\n if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n state.javaScriptArguments = false;\n return;\n }\n if (stream.peek() === '(') {\n state.javaScriptArgumentsDepth++;\n } else if (stream.peek() === ')') {\n state.javaScriptArgumentsDepth--;\n }\n if (state.javaScriptArgumentsDepth === 0) {\n state.javaScriptArguments = false;\n return;\n }\n\n var tok = jsMode.token(stream, state.jsState);\n return tok || true;\n }\n }\n\n function yieldStatement(stream) {\n if (stream.match(/^yield\\b/)) {\n return 'keyword';\n }\n }\n\n function doctype(stream) {\n if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n return DOCTYPE;\n }\n }\n\n function interpolation(stream, state) {\n if (stream.match('#{')) {\n state.isInterpolating = true;\n state.interpolationNesting = 0;\n return 'punctuation';\n }\n }\n\n function interpolationContinued(stream, state) {\n if (state.isInterpolating) {\n if (stream.peek() === '}') {\n state.interpolationNesting--;\n if (state.interpolationNesting < 0) {\n stream.next();\n state.isInterpolating = false;\n return 'punctuation';\n }\n } else if (stream.peek() === '{') {\n state.interpolationNesting++;\n }\n return jsMode.token(stream, state.jsState) || true;\n }\n }\n\n function caseStatement(stream, state) {\n if (stream.match(/^case\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function when(stream, state) {\n if (stream.match(/^when\\b/)) {\n state.javaScriptLine = true;\n state.javaScriptLineExcludesColon = true;\n return KEYWORD;\n }\n }\n\n function defaultStatement(stream) {\n if (stream.match(/^default\\b/)) {\n return KEYWORD;\n }\n }\n\n function extendsStatement(stream, state) {\n if (stream.match(/^extends?\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function append(stream, state) {\n if (stream.match(/^append\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function prepend(stream, state) {\n if (stream.match(/^prepend\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function block(stream, state) {\n if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n\n function include(stream, state) {\n if (stream.match(/^include\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function includeFiltered(stream, state) {\n if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n state.isIncludeFiltered = true;\n return KEYWORD;\n }\n }\n\n function includeFilteredContinued(stream, state) {\n if (state.isIncludeFiltered) {\n var tok = filter(stream, state);\n state.isIncludeFiltered = false;\n state.restOfLine = 'string';\n return tok;\n }\n }\n\n function mixin(stream, state) {\n if (stream.match(/^mixin\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function call(stream, state) {\n if (stream.match(/^\\+([-\\w]+)/)) {\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return 'variable';\n }\n if (stream.match('+#{', false)) {\n stream.next();\n state.mixinCallAfter = true;\n return interpolation(stream, state);\n }\n }\n function callArguments(stream, state) {\n if (state.mixinCallAfter) {\n state.mixinCallAfter = false;\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return true;\n }\n }\n\n function conditional(stream, state) {\n if (stream.match(/^(if|unless|else if|else)\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function each(stream, state) {\n if (stream.match(/^(- *)?(each|for)\\b/)) {\n state.isEach = true;\n return KEYWORD;\n }\n }\n function eachContinued(stream, state) {\n if (state.isEach) {\n if (stream.match(/^ in\\b/)) {\n state.javaScriptLine = true;\n state.isEach = false;\n return KEYWORD;\n } else if (stream.sol() || stream.eol()) {\n state.isEach = false;\n } else if (stream.next()) {\n while (!stream.match(/^ in\\b/, false) && stream.next());\n return 'variable';\n }\n }\n }\n\n function whileStatement(stream, state) {\n if (stream.match(/^while\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function tag(stream, state) {\n var captures;\n if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n state.lastTag = captures[1].toLowerCase();\n if (state.lastTag === 'script') {\n state.scriptType = 'application/javascript';\n }\n return 'tag';\n }\n }\n\n function filter(stream, state) {\n if (stream.match(/^:([\\w\\-]+)/)) {\n var innerMode;\n if (config && config.innerModes) {\n innerMode = config.innerModes(stream.current().substring(1));\n }\n if (!innerMode) {\n innerMode = stream.current().substring(1);\n }\n if (typeof innerMode === 'string') {\n innerMode = CodeMirror.getMode(config, innerMode);\n }\n setInnerMode(stream, state, innerMode);\n return 'atom';\n }\n }\n\n function code(stream, state) {\n if (stream.match(/^(!?=|-)/)) {\n state.javaScriptLine = true;\n return 'punctuation';\n }\n }\n\n function id(stream) {\n if (stream.match(/^#([\\w-]+)/)) {\n return ID;\n }\n }\n\n function className(stream) {\n if (stream.match(/^\\.([\\w-]+)/)) {\n return CLASS;\n }\n }\n\n function attrs(stream, state) {\n if (stream.peek() == '(') {\n stream.next();\n state.isAttrs = true;\n state.attrsNest = [];\n state.inAttributeName = true;\n state.attrValue = '';\n state.attributeIsType = false;\n return 'punctuation';\n }\n }\n\n function attrsContinued(stream, state) {\n if (state.isAttrs) {\n if (ATTRS_NEST[stream.peek()]) {\n state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n }\n if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n state.attrsNest.pop();\n } else if (stream.eat(')')) {\n state.isAttrs = false;\n return 'punctuation';\n }\n if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n if (stream.peek() === '=' || stream.peek() === '!') {\n state.inAttributeName = false;\n state.jsState = CodeMirror.startState(jsMode);\n if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n state.attributeIsType = true;\n } else {\n state.attributeIsType = false;\n }\n }\n return 'attribute';\n }\n\n var tok = jsMode.token(stream, state.jsState);\n if (state.attributeIsType && tok === 'string') {\n state.scriptType = stream.current().toString();\n }\n if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n try {\n Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n state.inAttributeName = true;\n state.attrValue = '';\n stream.backUp(stream.current().length);\n return attrsContinued(stream, state);\n } catch (ex) {\n //not the end of an attribute\n }\n }\n state.attrValue += stream.current();\n return tok || true;\n }\n }\n\n function attributesBlock(stream, state) {\n if (stream.match(/^&attributes\\b/)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n return 'keyword';\n }\n }\n\n function indent(stream) {\n if (stream.sol() && stream.eatSpace()) {\n return 'indent';\n }\n }\n\n function comment(stream, state) {\n if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n state.indentOf = stream.indentation();\n state.indentToken = 'comment';\n return 'comment';\n }\n }\n\n function colon(stream) {\n if (stream.match(/^: */)) {\n return 'colon';\n }\n }\n\n function text(stream, state) {\n if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n return 'string';\n }\n if (stream.match(/^(<[^\\n]*)/, false)) {\n // html string\n setInnerMode(stream, state, 'htmlmixed');\n state.innerModeForLine = true;\n return innerMode(stream, state, true);\n }\n }\n\n function dot(stream, state) {\n if (stream.eat('.')) {\n var innerMode = null;\n if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n } else if (state.lastTag === 'style') {\n innerMode = 'css';\n }\n setInnerMode(stream, state, innerMode);\n return 'dot';\n }\n }\n\n function fail(stream) {\n stream.next();\n return null;\n }\n\n\n function setInnerMode(stream, state, mode) {\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = CodeMirror.getMode(config, mode);\n state.indentOf = stream.indentation();\n\n if (mode && mode.name !== 'null') {\n state.innerMode = mode;\n } else {\n state.indentToken = 'string';\n }\n }\n function innerMode(stream, state, force) {\n if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n if (state.innerMode) {\n if (!state.innerState) {\n state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};\n }\n return stream.hideFirstChars(state.indentOf + 2, function () {\n return state.innerMode.token(stream, state.innerState) || true;\n });\n } else {\n stream.skipToEnd();\n return state.indentToken;\n }\n } else if (stream.sol()) {\n state.indentOf = Infinity;\n state.indentToken = null;\n state.innerMode = null;\n state.innerState = null;\n }\n }\n function restOfLine(stream, state) {\n if (stream.sol()) {\n // if restOfLine was set at end of line, ignore it\n state.restOfLine = '';\n }\n if (state.restOfLine) {\n stream.skipToEnd();\n var tok = state.restOfLine;\n state.restOfLine = '';\n return tok;\n }\n }\n\n\n function startState() {\n return new State();\n }\n function copyState(state) {\n return state.copy();\n }\n /**\n * Get the next token in the stream\n *\n * @param {Stream} stream\n * @param {State} state\n */\n function nextToken(stream, state) {\n var tok = innerMode(stream, state)\n || restOfLine(stream, state)\n || interpolationContinued(stream, state)\n || includeFilteredContinued(stream, state)\n || eachContinued(stream, state)\n || attrsContinued(stream, state)\n || javaScript(stream, state)\n || javaScriptArguments(stream, state)\n || callArguments(stream, state)\n\n || yieldStatement(stream)\n || doctype(stream)\n || interpolation(stream, state)\n || caseStatement(stream, state)\n || when(stream, state)\n || defaultStatement(stream)\n || extendsStatement(stream, state)\n || append(stream, state)\n || prepend(stream, state)\n || block(stream, state)\n || include(stream, state)\n || includeFiltered(stream, state)\n || mixin(stream, state)\n || call(stream, state)\n || conditional(stream, state)\n || each(stream, state)\n || whileStatement(stream, state)\n || tag(stream, state)\n || filter(stream, state)\n || code(stream, state)\n || id(stream)\n || className(stream)\n || attrs(stream, state)\n || attributesBlock(stream, state)\n || indent(stream)\n || text(stream, state)\n || comment(stream, state)\n || colon(stream)\n || dot(stream, state)\n || fail(stream);\n\n return tok === true ? null : tok;\n }\n return {\n startState: startState,\n copyState: copyState,\n token: nextToken\n };\n}, 'javascript', 'css', 'htmlmixed');\n\nCodeMirror.defineMIME('text/x-pug', 'pug');\nCodeMirror.defineMIME('text/x-jade', 'pug');\n\n});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeControl.vue?vue&type=style&index=0&id=56ccd7cc&prod&lang=scss&\"","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function (mod) {\n \"use strict\";\n if (typeof exports === \"object\" && typeof module === \"object\") {// CommonJS\n mod(require(\"../../lib/codemirror\"),\n require(\"../../addon/mode/overlay\"),\n require(\"../xml/xml\"),\n require(\"../javascript/javascript\"),\n require(\"../coffeescript/coffeescript\"),\n require(\"../css/css\"),\n require(\"../sass/sass\"),\n require(\"../stylus/stylus\"),\n require(\"../pug/pug\"),\n require(\"../handlebars/handlebars\"));\n } else if (typeof define === \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\",\n \"../../addon/mode/overlay\",\n \"../xml/xml\",\n \"../javascript/javascript\",\n \"../coffeescript/coffeescript\",\n \"../css/css\",\n \"../sass/sass\",\n \"../stylus/stylus\",\n \"../pug/pug\",\n \"../handlebars/handlebars\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function (CodeMirror) {\n var tagLanguages = {\n script: [\n [\"lang\", /coffee(script)?/, \"coffeescript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?coffee(?:script)?$/, \"coffeescript\"],\n [\"lang\", /^babel$/, \"javascript\"],\n [\"type\", /^text\\/babel$/, \"javascript\"],\n [\"type\", /^text\\/ecmascript-\\d+$/, \"javascript\"]\n ],\n style: [\n [\"lang\", /^stylus$/i, \"stylus\"],\n [\"lang\", /^sass$/i, \"sass\"],\n [\"lang\", /^less$/i, \"text/x-less\"],\n [\"lang\", /^scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?styl(us)?$/i, \"stylus\"],\n [\"type\", /^text\\/sass/i, \"sass\"],\n [\"type\", /^(text\\/)?(x-)?scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?less$/i, \"text/x-less\"]\n ],\n template: [\n [\"lang\", /^vue-template$/i, \"vue\"],\n [\"lang\", /^pug$/i, \"pug\"],\n [\"lang\", /^handlebars$/i, \"handlebars\"],\n [\"type\", /^(text\\/)?(x-)?pug$/i, \"pug\"],\n [\"type\", /^text\\/x-handlebars-template$/i, \"handlebars\"],\n [null, null, \"vue-template\"]\n ]\n };\n\n CodeMirror.defineMode(\"vue-template\", function (config, parserConfig) {\n var mustacheOverlay = {\n token: function (stream) {\n if (stream.match(/^\\{\\{.*?\\}\\}/)) return \"meta mustache\";\n while (stream.next() && !stream.match(\"{{\", false)) {}\n return null;\n }\n };\n return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || \"text/html\"), mustacheOverlay);\n });\n\n CodeMirror.defineMode(\"vue\", function (config) {\n return CodeMirror.getMode(config, {name: \"htmlmixed\", tags: tagLanguages});\n }, \"htmlmixed\", \"xml\", \"javascript\", \"coffeescript\", \"css\", \"sass\", \"stylus\", \"pug\", \"handlebars\");\n\n CodeMirror.defineMIME(\"script/x-vue\", \"vue\");\n CodeMirror.defineMIME(\"text/x-vue\", \"vue\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../scroll/annotatescrollbar\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../scroll/annotatescrollbar\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineExtension(\"showMatchesOnScrollbar\", function(query, caseFold, options) {\n if (typeof options == \"string\") options = {className: options};\n if (!options) options = {};\n return new SearchAnnotation(this, query, caseFold, options);\n });\n\n function SearchAnnotation(cm, query, caseFold, options) {\n this.cm = cm;\n this.options = options;\n var annotateOptions = {listenForChanges: false};\n for (var prop in options) annotateOptions[prop] = options[prop];\n if (!annotateOptions.className) annotateOptions.className = \"CodeMirror-search-match\";\n this.annotation = cm.annotateScrollbar(annotateOptions);\n this.query = query;\n this.caseFold = caseFold;\n this.gap = {from: cm.firstLine(), to: cm.lastLine() + 1};\n this.matches = [];\n this.update = null;\n\n this.findMatches();\n this.annotation.update(this.matches);\n\n var self = this;\n cm.on(\"change\", this.changeHandler = function(_cm, change) { self.onChange(change); });\n }\n\n var MAX_MATCHES = 1000;\n\n SearchAnnotation.prototype.findMatches = function() {\n if (!this.gap) return;\n for (var i = 0; i < this.matches.length; i++) {\n var match = this.matches[i];\n if (match.from.line >= this.gap.to) break;\n if (match.to.line >= this.gap.from) this.matches.splice(i--, 1);\n }\n var cursor = this.cm.getSearchCursor(this.query, CodeMirror.Pos(this.gap.from, 0), {caseFold: this.caseFold, multiline: this.options.multiline});\n var maxMatches = this.options && this.options.maxMatches || MAX_MATCHES;\n while (cursor.findNext()) {\n var match = {from: cursor.from(), to: cursor.to()};\n if (match.from.line >= this.gap.to) break;\n this.matches.splice(i++, 0, match);\n if (this.matches.length > maxMatches) break;\n }\n this.gap = null;\n };\n\n function offsetLine(line, changeStart, sizeChange) {\n if (line <= changeStart) return line;\n return Math.max(changeStart, line + sizeChange);\n }\n\n SearchAnnotation.prototype.onChange = function(change) {\n var startLine = change.from.line;\n var endLine = CodeMirror.changeEnd(change).line;\n var sizeChange = endLine - change.to.line;\n if (this.gap) {\n this.gap.from = Math.min(offsetLine(this.gap.from, startLine, sizeChange), change.from.line);\n this.gap.to = Math.max(offsetLine(this.gap.to, startLine, sizeChange), change.from.line);\n } else {\n this.gap = {from: change.from.line, to: endLine + 1};\n }\n\n if (sizeChange) for (var i = 0; i < this.matches.length; i++) {\n var match = this.matches[i];\n var newFrom = offsetLine(match.from.line, startLine, sizeChange);\n if (newFrom != match.from.line) match.from = CodeMirror.Pos(newFrom, match.from.ch);\n var newTo = offsetLine(match.to.line, startLine, sizeChange);\n if (newTo != match.to.line) match.to = CodeMirror.Pos(newTo, match.to.ch);\n }\n clearTimeout(this.update);\n var self = this;\n this.update = setTimeout(function() { self.updateAfterChange(); }, 250);\n };\n\n SearchAnnotation.prototype.updateAfterChange = function() {\n this.findMatches();\n this.annotation.update(this.matches);\n };\n\n SearchAnnotation.prototype.clear = function() {\n this.cm.off(\"change\", this.changeHandler);\n this.annotation.clear();\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.search(nonWS) === -1 ? line : line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SqlGenerator.vue?vue&type=style&index=0&id=9b55a55e&prod&lang=css&\"","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode = function(name, states) {\n CodeMirror.defineMode(name, function(config) {\n return CodeMirror.simpleMode(config, states);\n });\n };\n\n CodeMirror.simpleMode = function(config, states) {\n ensureState(states, \"start\");\n var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n var list = states_[state] = [], orig = states[state];\n for (var i = 0; i < orig.length; i++) {\n var data = orig[i];\n list.push(new Rule(data, states));\n if (data.indent || data.dedent) hasIndentation = true;\n }\n }\n var mode = {\n startState: function() {\n return {state: \"start\", pending: null,\n local: null, localState: null,\n indent: hasIndentation ? [] : null};\n },\n copyState: function(state) {\n var s = {state: state.state, pending: state.pending,\n local: state.local, localState: null,\n indent: state.indent && state.indent.slice(0)};\n if (state.localState)\n s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n if (state.stack)\n s.stack = state.stack.slice(0);\n for (var pers = state.persistentStates; pers; pers = pers.next)\n s.persistentStates = {mode: pers.mode,\n spec: pers.spec,\n state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n next: s.persistentStates};\n return s;\n },\n token: tokenFunction(states_, config),\n innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n indent: indentFunction(states_, meta)\n };\n if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n mode[prop] = meta[prop];\n return mode;\n };\n\n function ensureState(states, name) {\n if (!states.hasOwnProperty(name))\n throw new Error(\"Undefined state \" + name + \" in simple mode\");\n }\n\n function toRegex(val, caret) {\n if (!val) return /(?:)/;\n var flags = \"\";\n if (val instanceof RegExp) {\n if (val.ignoreCase) flags = \"i\";\n if (val.unicode) flags += \"u\"\n val = val.source;\n } else {\n val = String(val);\n }\n return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n }\n\n function asToken(val) {\n if (!val) return null;\n if (val.apply) return val\n if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n var result = [];\n for (var i = 0; i < val.length; i++)\n result.push(val[i] && val[i].replace(/\\./g, \" \"));\n return result;\n }\n\n function Rule(data, states) {\n if (data.next || data.push) ensureState(states, data.next || data.push);\n this.regex = toRegex(data.regex);\n this.token = asToken(data.token);\n this.data = data;\n }\n\n function tokenFunction(states, config) {\n return function(stream, state) {\n if (state.pending) {\n var pend = state.pending.shift();\n if (state.pending.length == 0) state.pending = null;\n stream.pos += pend.text.length;\n return pend.token;\n }\n\n if (state.local) {\n if (state.local.end && stream.match(state.local.end)) {\n var tok = state.local.endToken || null;\n state.local = state.localState = null;\n return tok;\n } else {\n var tok = state.local.mode.token(stream, state.localState), m;\n if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n stream.pos = stream.start + m.index;\n return tok;\n }\n }\n\n var curState = states[state.state];\n for (var i = 0; i < curState.length; i++) {\n var rule = curState[i];\n var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n if (matches) {\n if (rule.data.next) {\n state.state = rule.data.next;\n } else if (rule.data.push) {\n (state.stack || (state.stack = [])).push(state.state);\n state.state = rule.data.push;\n } else if (rule.data.pop && state.stack && state.stack.length) {\n state.state = state.stack.pop();\n }\n\n if (rule.data.mode)\n enterLocalMode(config, state, rule.data.mode, rule.token);\n if (rule.data.indent)\n state.indent.push(stream.indentation() + config.indentUnit);\n if (rule.data.dedent)\n state.indent.pop();\n var token = rule.token\n if (token && token.apply) token = token(matches)\n if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n (state.pending || (state.pending = [])).push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n }\n\n function cmp(a, b) {\n if (a === b) return true;\n if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n var props = 0;\n for (var prop in a) if (a.hasOwnProperty(prop)) {\n if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n props++;\n }\n for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n return props == 0;\n }\n\n function enterLocalMode(config, state, spec, token) {\n var pers;\n if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n var lState = pers ? pers.state : CodeMirror.startState(mode);\n if (spec.persistent && !pers)\n state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n state.localState = lState;\n state.local = {mode: mode,\n end: spec.end && toRegex(spec.end),\n endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n endToken: token && token.join ? token[token.length - 1] : token};\n }\n\n function indexOf(val, arr) {\n for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n }\n\n function indentFunction(states, meta) {\n return function(state, textAfter, line) {\n if (state.local && state.local.mode.indent)\n return state.local.mode.indent(state.localState, textAfter, line);\n if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n return CodeMirror.Pass;\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"stylus\", function(config) {\n var indentUnit = config.indentUnit,\n indentUnitString = '',\n tagKeywords = keySet(tagKeywords_),\n tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,\n propertyKeywords = keySet(propertyKeywords_),\n nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),\n valueKeywords = keySet(valueKeywords_),\n colorKeywords = keySet(colorKeywords_),\n documentTypes = keySet(documentTypes_),\n documentTypesRegexp = wordRegexp(documentTypes_),\n mediaFeatures = keySet(mediaFeatures_),\n mediaTypes = keySet(mediaTypes_),\n fontProperties = keySet(fontProperties_),\n operatorsRegexp = /^\\s*([.]{2,3}|&&|\\|\\||\\*\\*|[?!=:]?=|[-+*\\/%<>]=?|\\?:|\\~)/,\n wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),\n blockKeywords = keySet(blockKeywords_),\n vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/i),\n commonAtoms = keySet(commonAtoms_),\n firstWordMatch = \"\",\n states = {},\n ch,\n style,\n type,\n override;\n\n while (indentUnitString.length < indentUnit) indentUnitString += ' ';\n\n /**\n * Tokenizers\n */\n function tokenBase(stream, state) {\n firstWordMatch = stream.string.match(/(^[\\w-]+\\s*=\\s*$)|(^\\s*[\\w-]+\\s*=\\s*[\\w-])|(^\\s*(\\.|#|@|\\$|\\&|\\[|\\d|\\+|::?|\\{|\\>|~|\\/)?\\s*[\\w-]*([a-z0-9-]|\\*|\\/\\*)(\\(|,)?)/);\n state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\\s*/, \"\") : \"\";\n state.context.line.indent = stream.indentation();\n ch = stream.peek();\n\n // Line comment\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n }\n // Block comment\n if (stream.match(\"/*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n // String\n if (ch == \"\\\"\" || ch == \"'\") {\n stream.next();\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n // Def\n if (ch == \"@\") {\n stream.next();\n stream.eatWhile(/[\\w\\\\-]/);\n return [\"def\", stream.current()];\n }\n // ID selector or Hex color\n if (ch == \"#\") {\n stream.next();\n // Hex color\n if (stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\\b(?!-)/i)) {\n return [\"atom\", \"atom\"];\n }\n // ID selector\n if (stream.match(/^[a-z][\\w-]*/i)) {\n return [\"builtin\", \"hash\"];\n }\n }\n // Vendor prefixes\n if (stream.match(vendorPrefixesRegexp)) {\n return [\"meta\", \"vendor-prefixes\"];\n }\n // Numbers\n if (stream.match(/^-?[0-9]?\\.?[0-9]/)) {\n stream.eatWhile(/[a-z%]/i);\n return [\"number\", \"unit\"];\n }\n // !important|optional\n if (ch == \"!\") {\n stream.next();\n return [stream.match(/^(important|optional)/i) ? \"keyword\": \"operator\", \"important\"];\n }\n // Class\n if (ch == \".\" && stream.match(/^\\.[a-z][\\w-]*/i)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // url url-prefix domain regexp\n if (stream.match(documentTypesRegexp)) {\n if (stream.peek() == \"(\") state.tokenize = tokenParenthesized;\n return [\"property\", \"word\"];\n }\n // Mixins / Functions\n if (stream.match(/^[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"mixin\"];\n }\n // Block mixins\n if (stream.match(/^(\\+|-)[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"block-mixin\"];\n }\n // Parent Reference BEM naming\n if (stream.string.match(/^\\s*&/) && stream.match(/^[-_]+[a-z][\\w-]*/)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // / Root Reference & Parent Reference\n if (stream.match(/^(\\/|&)(-|_|:|\\.|#|[a-z])/)) {\n stream.backUp(1);\n return [\"variable-3\", \"reference\"];\n }\n if (stream.match(/^&{1}\\s*$/)) {\n return [\"variable-3\", \"reference\"];\n }\n // Word operator\n if (stream.match(wordOperatorKeywordsRegexp)) {\n return [\"operator\", \"operator\"];\n }\n // Word\n if (stream.match(/^\\$?[-_]*[a-z0-9]+[\\w-]*/i)) {\n // Variable\n if (stream.match(/^(\\.|\\[)[\\w-\\'\\\"\\]]+/i, false)) {\n if (!wordIsTag(stream.current())) {\n stream.match('.');\n return [\"variable-2\", \"variable-name\"];\n }\n }\n return [\"variable-2\", \"word\"];\n }\n // Operators\n if (stream.match(operatorsRegexp)) {\n return [\"operator\", stream.current()];\n }\n // Delimiters\n if (/[:;,{}\\[\\]\\(\\)]/.test(ch)) {\n stream.next();\n return [null, ch];\n }\n // Non-detected items\n stream.next();\n return [null, null];\n }\n\n /**\n * Token comment\n */\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n /**\n * Token string\n */\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return [\"string\", \"string\"];\n };\n }\n\n /**\n * Token parenthesized\n */\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be \"(\"\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return [null, \"(\"];\n }\n\n /**\n * Context management\n */\n function Context(type, indent, prev, line) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n this.line = line || {firstWord: \"\", indent: 0};\n }\n\n function pushContext(state, stream, type, indent) {\n indent = indent >= 0 ? indent : indentUnit;\n state.context = new Context(type, stream.indentation() + indent, state.context);\n return type;\n }\n\n function popContext(state, currentIndent) {\n var contextIndent = state.context.indent - indentUnit;\n currentIndent = currentIndent || false;\n state.context = state.context.prev;\n if (currentIndent) state.context.indent = contextIndent;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n\n /**\n * Parser\n */\n function wordIsTag(word) {\n return word.toLowerCase() in tagKeywords;\n }\n\n function wordIsProperty(word) {\n word = word.toLowerCase();\n return word in propertyKeywords || word in fontProperties;\n }\n\n function wordIsBlock(word) {\n return word.toLowerCase() in blockKeywords;\n }\n\n function wordIsVendorPrefix(word) {\n return word.toLowerCase().match(vendorPrefixesRegexp);\n }\n\n function wordAsValue(word) {\n var wordLC = word.toLowerCase();\n var override = \"variable-2\";\n if (wordIsTag(word)) override = \"tag\";\n else if (wordIsBlock(word)) override = \"block-keyword\";\n else if (wordIsProperty(word)) override = \"property\";\n else if (wordLC in valueKeywords || wordLC in commonAtoms) override = \"atom\";\n else if (wordLC == \"return\" || wordLC in colorKeywords) override = \"keyword\";\n\n // Font family\n else if (word.match(/^[A-Z]/)) override = \"string\";\n return override;\n }\n\n function typeIsBlock(type, stream) {\n return ((endOfLine(stream) && (type == \"{\" || type == \"]\" || type == \"hash\" || type == \"qualifier\")) || type == \"block-mixin\");\n }\n\n function typeIsInterpolation(type, stream) {\n return type == \"{\" && stream.match(/^\\s*\\$?[\\w-]+/i, false);\n }\n\n function typeIsPseudo(type, stream) {\n return type == \":\" && stream.match(/^[a-z-]+/, false);\n }\n\n function startOfLine(stream) {\n return stream.sol() || stream.string.match(new RegExp(\"^\\\\s*\" + escapeRegExp(stream.current())));\n }\n\n function endOfLine(stream) {\n return stream.eol() || stream.match(/^\\s*$/, false);\n }\n\n function firstWordOfLine(line) {\n var re = /^\\s*[-_]*[a-z0-9]+[\\w-]*/i;\n var result = typeof line == \"string\" ? line.match(re) : line.string.match(re);\n return result ? result[0].replace(/^\\s*/, \"\") : \"\";\n }\n\n\n /**\n * Block\n */\n states.block = function(type, stream, state) {\n if ((type == \"comment\" && startOfLine(stream)) ||\n (type == \",\" && endOfLine(stream)) ||\n type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (endOfLine(stream) && type == \"]\") {\n if (!/^\\s*(\\.|#|:|\\[|\\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n }\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"}\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (type == \"variable-name\") {\n if (stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"variableName\");\n }\n else {\n return pushContext(state, stream, \"variableName\", 0);\n }\n }\n if (type == \"=\") {\n if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"*\") {\n if (endOfLine(stream) || stream.match(/\\s*(,|\\.|#|\\[|:|{)/,false)) {\n override = \"tag\";\n return pushContext(state, stream, \"block\");\n }\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (/@extends?/.test(type)) {\n return pushContext(state, stream, \"extend\", 0);\n }\n if (type && type.charAt(0) == \"@\") {\n\n // Property Lookup\n if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n return \"block\";\n }\n if (/(@import|@require|@charset)/.test(type)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"reference\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n\n if (type == \"vendor-prefixes\") {\n return pushContext(state, stream, \"vendorPrefixes\");\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n\n if (override == \"property\") {\n if (startOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n } else {\n override = \"atom\";\n return \"block\";\n }\n }\n\n if (override == \"tag\") {\n\n // tag is a css value\n if (/embed|menu|pre|progress|sub|table/.test(word)) {\n if (wordIsProperty(firstWordOfLine(stream))) {\n override = \"atom\";\n return \"block\";\n }\n }\n\n // tag is an attribute\n if (stream.string.match(new RegExp(\"\\\\[\\\\s*\" + word + \"|\" + word +\"\\\\s*\\\\]\"))) {\n override = \"atom\";\n return \"block\";\n }\n\n // tag is a variable\n if (tagVariablesRegexp.test(word)) {\n if ((startOfLine(stream) && stream.string.match(/=/)) ||\n (!startOfLine(stream) &&\n !stream.string.match(/^(\\s*\\.|#|\\&|\\[|\\/|>|\\*)/) &&\n !wordIsTag(firstWordOfLine(stream)))) {\n override = \"variable-2\";\n if (wordIsBlock(firstWordOfLine(stream))) return \"block\";\n return pushContext(state, stream, \"block\", 0);\n }\n }\n\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n }\n if (override == \"block-keyword\") {\n override = \"keyword\";\n\n // Postfix conditionals\n if (stream.current(/(if|unless)/) && !startOfLine(stream)) {\n return \"block\";\n }\n return pushContext(state, stream, \"block\");\n }\n if (word == \"return\") return pushContext(state, stream, \"block\", 0);\n\n // Placeholder selector\n if (override == \"variable-2\" && stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/)) {\n return pushContext(state, stream, \"block\");\n }\n }\n return state.context.type;\n };\n\n\n /**\n * Parens\n */\n states.parens = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \")\") {\n if (state.context.prev.type == \"parens\") {\n return popContext(state);\n }\n if ((stream.string.match(/^[a-z][\\w-]*\\(/i) && endOfLine(stream)) ||\n wordIsBlock(firstWordOfLine(stream)) ||\n /(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(firstWordOfLine(stream)) ||\n (!stream.string.match(/^-?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) &&\n wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (stream.string.match(/^[\\$-]?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) ||\n stream.string.match(/^\\s*(\\(|\\)|[0-9])/) ||\n stream.string.match(/^\\s+[a-z][\\w-]*\\(/i) ||\n stream.string.match(/^\\s+[\\$-]?[a-z]/i)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"block\", 0);\n }\n if (type && type.charAt(0) == \"@\" && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n if (override == \"tag\" && tagVariablesRegexp.test(word)) {\n override = \"variable-2\";\n }\n if (override == \"property\" || word == \"to\") override = \"atom\";\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\");\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n return state.context.type;\n };\n\n\n /**\n * Vendor prefixes\n */\n states.vendorPrefixes = function(type, stream, state) {\n if (type == \"word\") {\n override = \"property\";\n return pushContext(state, stream, \"block\", 0);\n }\n return popContext(state);\n };\n\n\n /**\n * Pseudo\n */\n states.pseudo = function(type, stream, state) {\n if (!wordIsProperty(firstWordOfLine(stream.string))) {\n stream.match(/^[a-z-]+/);\n override = \"variable-3\";\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n return popContext(state);\n }\n return popAndPass(type, stream, state);\n };\n\n\n /**\n * atBlock\n */\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (/^(only|not|and|or)$/.test(word))\n override = \"keyword\";\n else if (documentTypes.hasOwnProperty(word))\n override = \"tag\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else override = wordAsValue(stream.current());\n if (override == \"tag\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n }\n if (type == \"operator\" && /^(not|and|or)$/.test(stream.current())) {\n override = \"keyword\";\n }\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return state.context.type;\n if (type == \")\") {\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"atBlock\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n override = wordAsValue(word);\n if (/^(max|min)/.test(word)) override = \"property\";\n if (override == \"tag\") {\n tagVariablesRegexp.test(word) ? override = \"variable-2\" : override = \"atom\";\n }\n return state.context.type;\n }\n return states.atBlock(type, stream, state);\n };\n\n\n /**\n * Keyframes\n */\n states.keyframes = function(type, stream, state) {\n if (stream.indentation() == \"0\" && ((type == \"}\" && startOfLine(stream)) || type == \"]\" || type == \"hash\"\n || type == \"qualifier\" || wordIsTag(stream.current()))) {\n return popAndPass(type, stream, state);\n }\n if (type == \"{\") return pushContext(state, stream, \"keyframes\");\n if (type == \"}\") {\n if (startOfLine(stream)) return popContext(state, true);\n else return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"unit\" && /^[0-9]+\\%$/.test(stream.current())) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"block-keyword\") {\n override = \"keyword\";\n return pushContext(state, stream, \"keyframes\");\n }\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n return state.context.type;\n };\n\n\n /**\n * Interpolation\n */\n states.interpolation = function(type, stream, state) {\n if (type == \"{\") popContext(state) && pushContext(state, stream, \"block\");\n if (type == \"}\") {\n if (stream.string.match(/^\\s*(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/i) ||\n (stream.string.match(/^\\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (!stream.string.match(/^(\\{|\\s*\\&)/) ||\n stream.match(/\\s*[\\w-]/,false)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\", 0);\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"tag\") override = \"atom\";\n }\n return state.context.type;\n };\n\n\n /**\n * Extend/s\n */\n states.extend = function(type, stream, state) {\n if (type == \"[\" || type == \"=\") return \"extend\";\n if (type == \"]\") return popContext(state);\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n return \"extend\";\n }\n return popContext(state);\n };\n\n\n /**\n * Variable name\n */\n states.variableName = function(type, stream, state) {\n if (type == \"string\" || type == \"[\" || type == \"]\" || stream.current().match(/^(\\.|\\$)/)) {\n if (stream.current().match(/^\\.[\\w-]+/i)) override = \"variable-2\";\n return \"variableName\";\n }\n return popAndPass(type, stream, state);\n };\n\n\n return {\n startState: function(base) {\n return {\n tokenize: null,\n state: \"block\",\n context: new Context(\"block\", base || 0, null)\n };\n },\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n state.state = states[state.state](type, stream, state);\n return override;\n },\n indent: function(state, textAfter, line) {\n\n var cx = state.context,\n ch = textAfter && textAfter.charAt(0),\n indent = cx.indent,\n lineFirstWord = firstWordOfLine(textAfter),\n lineIndent = line.match(/^\\s*/)[0].replace(/\\t/g, indentUnitString).length,\n prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : \"\",\n prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;\n\n if (cx.prev &&\n (ch == \"}\" && (cx.type == \"block\" || cx.type == \"atBlock\" || cx.type == \"keyframes\") ||\n ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\"))) {\n indent = cx.indent - indentUnit;\n } else if (!(/(\\})/.test(ch))) {\n if (/@|\\$|\\d/.test(ch) ||\n /^\\{/.test(textAfter) ||\n/^\\s*\\/(\\/|\\*)/.test(textAfter) ||\n /^\\s*\\/\\*/.test(prevLineFirstWord) ||\n /^\\s*[\\w-\\.\\[\\]\\'\\\"]+\\s*(\\?|:|\\+)?=/i.test(textAfter) ||\n/^(\\+|-)?[a-z][\\w-]*\\(/i.test(textAfter) ||\n/^return/.test(textAfter) ||\n wordIsBlock(lineFirstWord)) {\n indent = lineIndent;\n } else if (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(ch) || wordIsTag(lineFirstWord)) {\n if (/\\,\\s*$/.test(prevLineFirstWord)) {\n indent = prevLineIndent;\n } else if (/^\\s+/.test(line) && (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n } else if (!/,\\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {\n if (wordIsBlock(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else if (/^\\{/.test(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;\n } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {\n indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;\n } else if (/^(\\.|#|:|\\[|\\*|&|@|\\+|\\-|>|~|\\/)/.test(prevLineFirstWord) ||\n /=\\s*$/.test(prevLineFirstWord) ||\n wordIsTag(prevLineFirstWord) ||\n /^\\$[\\w-\\.\\[\\]\\'\\\"]/.test(prevLineFirstWord)) {\n indent = prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n }\n }\n return indent;\n },\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"indent\"\n };\n });\n\n // developer.mozilla.org/en-US/docs/Web/HTML/Element\n var tagKeywords_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\", \"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\", \"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\", \"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\", \"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\", \"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\", \"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\", \"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\", \"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\", \"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\", \"u\",\"ul\",\"var\",\"video\"];\n\n // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js\n // Note, \"url-prefix\" should precede \"url\" in order to match correctly in documentTypesRegexp\n var documentTypes_ = [\"domain\", \"regexp\", \"url-prefix\", \"url\"];\n var mediaTypes_ = [\"all\",\"aural\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"embossed\"];\n var mediaFeatures_ = [\"width\",\"min-width\",\"max-width\",\"height\",\"min-height\",\"max-height\",\"device-width\",\"min-device-width\",\"max-device-width\",\"device-height\",\"min-device-height\",\"max-device-height\",\"aspect-ratio\",\"min-aspect-ratio\",\"max-aspect-ratio\",\"device-aspect-ratio\",\"min-device-aspect-ratio\",\"max-device-aspect-ratio\",\"color\",\"min-color\",\"max-color\",\"color-index\",\"min-color-index\",\"max-color-index\",\"monochrome\",\"min-monochrome\",\"max-monochrome\",\"resolution\",\"min-resolution\",\"max-resolution\",\"scan\",\"grid\",\"dynamic-range\",\"video-dynamic-range\"];\n var propertyKeywords_ = [\"align-content\",\"align-items\",\"align-self\",\"alignment-adjust\",\"alignment-baseline\",\"anchor-point\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"appearance\",\"azimuth\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"baseline-shift\",\"binding\",\"bleed\",\"bookmark-label\",\"bookmark-level\",\"bookmark-state\",\"bookmark-target\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"color\",\"color-profile\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"crop\",\"cue\",\"cue-after\",\"cue-before\",\"cursor\",\"direction\",\"display\",\"dominant-baseline\",\"drop-initial-after-adjust\",\"drop-initial-after-align\",\"drop-initial-before-adjust\",\"drop-initial-before-align\",\"drop-initial-size\",\"drop-initial-value\",\"elevation\",\"empty-cells\",\"fit\",\"fit-position\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"float-offset\",\"flow-from\",\"flow-into\",\"font\",\"font-feature-settings\",\"font-family\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-synthesis\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-variant-position\",\"font-weight\",\"grid\",\"grid-area\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-position\",\"grid-auto-rows\",\"grid-column\",\"grid-column-end\",\"grid-column-start\",\"grid-row\",\"grid-row-end\",\"grid-row-start\",\"grid-template\",\"grid-template-areas\",\"grid-template-columns\",\"grid-template-rows\",\"hanging-punctuation\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"inline-box-align\",\"justify-content\",\"left\",\"letter-spacing\",\"line-break\",\"line-height\",\"line-stacking\",\"line-stacking-ruby\",\"line-stacking-shift\",\"line-stacking-strategy\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marker-offset\",\"marks\",\"marquee-direction\",\"marquee-loop\",\"marquee-play-count\",\"marquee-speed\",\"marquee-style\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"move-to\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-style\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"page-policy\",\"pause\",\"pause-after\",\"pause-before\",\"perspective\",\"perspective-origin\",\"pitch\",\"pitch-range\",\"play-during\",\"position\",\"presentation-level\",\"punctuation-trim\",\"quotes\",\"region-break-after\",\"region-break-before\",\"region-break-inside\",\"region-fragment\",\"rendering-intent\",\"resize\",\"rest\",\"rest-after\",\"rest-before\",\"richness\",\"right\",\"rotation\",\"rotation-point\",\"ruby-align\",\"ruby-overhang\",\"ruby-position\",\"ruby-span\",\"shape-image-threshold\",\"shape-inside\",\"shape-margin\",\"shape-outside\",\"size\",\"speak\",\"speak-as\",\"speak-header\",\"speak-numeral\",\"speak-punctuation\",\"speech-rate\",\"stress\",\"string-set\",\"tab-size\",\"table-layout\",\"target\",\"target-name\",\"target-new\",\"target-position\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-skip\",\"text-decoration-style\",\"text-emphasis\",\"text-emphasis-color\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-height\",\"text-indent\",\"text-justify\",\"text-outline\",\"text-overflow\",\"text-shadow\",\"text-size-adjust\",\"text-space-collapse\",\"text-transform\",\"text-underline-position\",\"text-wrap\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"voice-balance\",\"voice-duration\",\"voice-family\",\"voice-pitch\",\"voice-range\",\"voice-rate\",\"voice-stress\",\"voice-volume\",\"volume\",\"white-space\",\"widows\",\"width\",\"will-change\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\",\"clip-path\",\"clip-rule\",\"mask\",\"enable-background\",\"filter\",\"flood-color\",\"flood-opacity\",\"lighting-color\",\"stop-color\",\"stop-opacity\",\"pointer-events\",\"color-interpolation\",\"color-interpolation-filters\",\"color-rendering\",\"fill\",\"fill-opacity\",\"fill-rule\",\"image-rendering\",\"marker\",\"marker-end\",\"marker-mid\",\"marker-start\",\"shape-rendering\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"text-rendering\",\"baseline-shift\",\"dominant-baseline\",\"glyph-orientation-horizontal\",\"glyph-orientation-vertical\",\"text-anchor\",\"writing-mode\",\"font-smoothing\",\"osx-font-smoothing\"];\n var nonStandardPropertyKeywords_ = [\"scrollbar-arrow-color\",\"scrollbar-base-color\",\"scrollbar-dark-shadow-color\",\"scrollbar-face-color\",\"scrollbar-highlight-color\",\"scrollbar-shadow-color\",\"scrollbar-3d-light-color\",\"scrollbar-track-color\",\"shape-inside\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"zoom\"];\n var fontProperties_ = [\"font-family\",\"src\",\"unicode-range\",\"font-variant\",\"font-feature-settings\",\"font-stretch\",\"font-weight\",\"font-style\"];\n var colorKeywords_ = [\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"rebeccapurple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n var valueKeywords_ = [\"above\",\"absolute\",\"activeborder\",\"additive\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alphabetic\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"attr\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"blink\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"bullets\",\"button\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"calc\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"caption\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-decimal\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"conic-gradient\",\"contain\",\"content\",\"contents\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"counter\",\"counters\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"cyclic\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"disclosure-closed\",\"disclosure-open\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ethiopic-numeric\",\"ew-resize\",\"expanded\",\"extends\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"flex\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"high\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-flex\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"japanese-formal\",\"japanese-informal\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"korean-hangul-formal\",\"korean-hanja-formal\",\"korean-hanja-informal\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"linear-gradient\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"matrix\",\"matrix3d\",\"media-play-button\",\"media-slider\",\"media-sliderthumb\",\"media-volume-slider\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"numbers\",\"numeric\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"perspective\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radial-gradient\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"repeating-conic-gradient\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"rotate\",\"rotate3d\",\"rotateX\",\"rotateY\",\"rotateZ\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scale\",\"scale3d\",\"scaleX\",\"scaleY\",\"scaleZ\",\"scroll\",\"scrollbar\",\"scroll-position\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"simp-chinese-formal\",\"simp-chinese-informal\",\"single\",\"skew\",\"skewX\",\"skewY\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"spell-out\",\"square\",\"square-button\",\"standard\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"symbolic\",\"symbols\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"tamil\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textarea\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"trad-chinese-formal\",\"trad-chinese-informal\",\"translate\",\"translate3d\",\"translateX\",\"translateY\",\"translateZ\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"var\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"words\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\",\"row\",\"row-reverse\",\"wrap\",\"wrap-reverse\",\"column-reverse\",\"flex-start\",\"flex-end\",\"space-between\",\"space-around\", \"unset\"];\n\n var wordOperatorKeywords_ = [\"in\",\"and\",\"or\",\"not\",\"is not\",\"is a\",\"is\",\"isnt\",\"defined\",\"if unless\"],\n blockKeywords_ = [\"for\",\"if\",\"else\",\"unless\", \"from\", \"to\"],\n commonAtoms_ = [\"null\",\"true\",\"false\",\"href\",\"title\",\"type\",\"not-allowed\",\"readonly\",\"disabled\"],\n commonDef_ = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"];\n\n var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,\n propertyKeywords_,nonStandardPropertyKeywords_,\n colorKeywords_,valueKeywords_,fontProperties_,\n wordOperatorKeywords_,blockKeywords_,\n commonAtoms_,commonDef_);\n\n function wordRegexp(words) {\n words = words.sort(function(a,b){return b > a;});\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) keys[array[i]] = true;\n return keys;\n }\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var WORD = /[\\w$]+/, RANGE = 500;\n\n CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n var word = options && options.word || WORD;\n var range = options && options.range || RANGE;\n var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n var end = cur.ch, start = end;\n while (start && word.test(curLine.charAt(start - 1))) --start;\n var curWord = start != end && curLine.slice(start, end);\n\n var list = options && options.list || [], seen = {};\n var re = new RegExp(word.source, \"g\");\n for (var dir = -1; dir <= 1; dir += 2) {\n var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n for (; line != endLine; line += dir) {\n var text = editor.getLine(line), m;\n while (m = re.exec(text)) {\n if (line == cur.line && m[0] === curWord) continue;\n if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n seen[m[0]] = true;\n list.push(m[0]);\n }\n }\n }\n }\n return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction lineIndent(cm, lineNo) {\n var text = cm.getLine(lineNo)\n var spaceTo = text.search(/\\S/)\n if (spaceTo == -1 || /\\bcomment\\b/.test(cm.getTokenTypeAt(CodeMirror.Pos(lineNo, spaceTo + 1))))\n return -1\n return CodeMirror.countColumn(text, null, cm.getOption(\"tabSize\"))\n}\n\nCodeMirror.registerHelper(\"fold\", \"indent\", function(cm, start) {\n var myIndent = lineIndent(cm, start.line)\n if (myIndent < 0) return\n var lastLineInFold = null\n\n // Go through lines until we find a line that definitely doesn't belong in\n // the block we're folding, or to the end.\n for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {\n var indent = lineIndent(cm, i)\n if (indent == -1) {\n } else if (indent > myIndent) {\n // Lines with a greater indent are considered part of the block.\n lastLineInFold = i;\n } else {\n // If this line has non-space, non-comment content, and is\n // indented less or equal to the start line, it is the start of\n // another block.\n break;\n }\n }\n if (lastLineInFold) return {\n from: CodeMirror.Pos(start.line, cm.getLine(start.line).length),\n to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)\n };\n});\n\n});\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"codemirror\")):\"function\"==typeof define&&define.amd?define([\"codemirror\"],t):\"object\"==typeof exports?exports.VueCodemirror=t(require(\"codemirror\")):e.VueCodemirror=t(e.codemirror)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=window.CodeMirror||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),r=1;r][<][=] [X]\", \"device-aspect-ratio: X/Y\", \"orientation:portrait\",\n \"orientation:landscape\", \"device-height: [X]\", \"device-width: [X]\"];\n var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags\n\n var data = {\n a: {\n attrs: {\n href: null, ping: null, type: null,\n media: media,\n target: targets,\n hreflang: langs\n }\n },\n abbr: s,\n acronym: s,\n address: s,\n applet: s,\n area: {\n attrs: {\n alt: null, coords: null, href: null, target: null, ping: null,\n media: media, hreflang: langs, type: null,\n shape: [\"default\", \"rect\", \"circle\", \"poly\"]\n }\n },\n article: s,\n aside: s,\n audio: {\n attrs: {\n src: null, mediagroup: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"none\", \"metadata\", \"auto\"],\n autoplay: [\"\", \"autoplay\"],\n loop: [\"\", \"loop\"],\n controls: [\"\", \"controls\"]\n }\n },\n b: s,\n base: { attrs: { href: null, target: targets } },\n basefont: s,\n bdi: s,\n bdo: s,\n big: s,\n blockquote: { attrs: { cite: null } },\n body: s,\n br: s,\n button: {\n attrs: {\n form: null, formaction: null, name: null, value: null,\n autofocus: [\"\", \"autofocus\"],\n disabled: [\"\", \"autofocus\"],\n formenctype: encs,\n formmethod: methods,\n formnovalidate: [\"\", \"novalidate\"],\n formtarget: targets,\n type: [\"submit\", \"reset\", \"button\"]\n }\n },\n canvas: { attrs: { width: null, height: null } },\n caption: s,\n center: s,\n cite: s,\n code: s,\n col: { attrs: { span: null } },\n colgroup: { attrs: { span: null } },\n command: {\n attrs: {\n type: [\"command\", \"checkbox\", \"radio\"],\n label: null, icon: null, radiogroup: null, command: null, title: null,\n disabled: [\"\", \"disabled\"],\n checked: [\"\", \"checked\"]\n }\n },\n data: { attrs: { value: null } },\n datagrid: { attrs: { disabled: [\"\", \"disabled\"], multiple: [\"\", \"multiple\"] } },\n datalist: { attrs: { data: null } },\n dd: s,\n del: { attrs: { cite: null, datetime: null } },\n details: { attrs: { open: [\"\", \"open\"] } },\n dfn: s,\n dir: s,\n div: s,\n dialog: { attrs: { open: null } },\n dl: s,\n dt: s,\n em: s,\n embed: { attrs: { src: null, type: null, width: null, height: null } },\n eventsource: { attrs: { src: null } },\n fieldset: { attrs: { disabled: [\"\", \"disabled\"], form: null, name: null } },\n figcaption: s,\n figure: s,\n font: s,\n footer: s,\n form: {\n attrs: {\n action: null, name: null,\n \"accept-charset\": charsets,\n autocomplete: [\"on\", \"off\"],\n enctype: encs,\n method: methods,\n novalidate: [\"\", \"novalidate\"],\n target: targets\n }\n },\n frame: s,\n frameset: s,\n h1: s, h2: s, h3: s, h4: s, h5: s, h6: s,\n head: {\n attrs: {},\n children: [\"title\", \"base\", \"link\", \"style\", \"meta\", \"script\", \"noscript\", \"command\"]\n },\n header: s,\n hgroup: s,\n hr: s,\n html: {\n attrs: { manifest: null },\n children: [\"head\", \"body\"]\n },\n i: s,\n iframe: {\n attrs: {\n src: null, srcdoc: null, name: null, width: null, height: null,\n sandbox: [\"allow-top-navigation\", \"allow-same-origin\", \"allow-forms\", \"allow-scripts\"],\n seamless: [\"\", \"seamless\"]\n }\n },\n img: {\n attrs: {\n alt: null, src: null, ismap: null, usemap: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"]\n }\n },\n input: {\n attrs: {\n alt: null, dirname: null, form: null, formaction: null,\n height: null, list: null, max: null, maxlength: null, min: null,\n name: null, pattern: null, placeholder: null, size: null, src: null,\n step: null, value: null, width: null,\n accept: [\"audio/*\", \"video/*\", \"image/*\"],\n autocomplete: [\"on\", \"off\"],\n autofocus: [\"\", \"autofocus\"],\n checked: [\"\", \"checked\"],\n disabled: [\"\", \"disabled\"],\n formenctype: encs,\n formmethod: methods,\n formnovalidate: [\"\", \"novalidate\"],\n formtarget: targets,\n multiple: [\"\", \"multiple\"],\n readonly: [\"\", \"readonly\"],\n required: [\"\", \"required\"],\n type: [\"hidden\", \"text\", \"search\", \"tel\", \"url\", \"email\", \"password\", \"datetime\", \"date\", \"month\",\n \"week\", \"time\", \"datetime-local\", \"number\", \"range\", \"color\", \"checkbox\", \"radio\",\n \"file\", \"submit\", \"image\", \"reset\", \"button\"]\n }\n },\n ins: { attrs: { cite: null, datetime: null } },\n kbd: s,\n keygen: {\n attrs: {\n challenge: null, form: null, name: null,\n autofocus: [\"\", \"autofocus\"],\n disabled: [\"\", \"disabled\"],\n keytype: [\"RSA\"]\n }\n },\n label: { attrs: { \"for\": null, form: null } },\n legend: s,\n li: { attrs: { value: null } },\n link: {\n attrs: {\n href: null, type: null,\n hreflang: langs,\n media: media,\n sizes: [\"all\", \"16x16\", \"16x16 32x32\", \"16x16 32x32 64x64\"]\n }\n },\n map: { attrs: { name: null } },\n mark: s,\n menu: { attrs: { label: null, type: [\"list\", \"context\", \"toolbar\"] } },\n meta: {\n attrs: {\n content: null,\n charset: charsets,\n name: [\"viewport\", \"application-name\", \"author\", \"description\", \"generator\", \"keywords\"],\n \"http-equiv\": [\"content-language\", \"content-type\", \"default-style\", \"refresh\"]\n }\n },\n meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },\n nav: s,\n noframes: s,\n noscript: s,\n object: {\n attrs: {\n data: null, type: null, name: null, usemap: null, form: null, width: null, height: null,\n typemustmatch: [\"\", \"typemustmatch\"]\n }\n },\n ol: { attrs: { reversed: [\"\", \"reversed\"], start: null, type: [\"1\", \"a\", \"A\", \"i\", \"I\"] } },\n optgroup: { attrs: { disabled: [\"\", \"disabled\"], label: null } },\n option: { attrs: { disabled: [\"\", \"disabled\"], label: null, selected: [\"\", \"selected\"], value: null } },\n output: { attrs: { \"for\": null, form: null, name: null } },\n p: s,\n param: { attrs: { name: null, value: null } },\n pre: s,\n progress: { attrs: { value: null, max: null } },\n q: { attrs: { cite: null } },\n rp: s,\n rt: s,\n ruby: s,\n s: s,\n samp: s,\n script: {\n attrs: {\n type: [\"text/javascript\"],\n src: null,\n async: [\"\", \"async\"],\n defer: [\"\", \"defer\"],\n charset: charsets\n }\n },\n section: s,\n select: {\n attrs: {\n form: null, name: null, size: null,\n autofocus: [\"\", \"autofocus\"],\n disabled: [\"\", \"disabled\"],\n multiple: [\"\", \"multiple\"]\n }\n },\n small: s,\n source: { attrs: { src: null, type: null, media: null } },\n span: s,\n strike: s,\n strong: s,\n style: {\n attrs: {\n type: [\"text/css\"],\n media: media,\n scoped: null\n }\n },\n sub: s,\n summary: s,\n sup: s,\n table: s,\n tbody: s,\n td: { attrs: { colspan: null, rowspan: null, headers: null } },\n textarea: {\n attrs: {\n dirname: null, form: null, maxlength: null, name: null, placeholder: null,\n rows: null, cols: null,\n autofocus: [\"\", \"autofocus\"],\n disabled: [\"\", \"disabled\"],\n readonly: [\"\", \"readonly\"],\n required: [\"\", \"required\"],\n wrap: [\"soft\", \"hard\"]\n }\n },\n tfoot: s,\n th: { attrs: { colspan: null, rowspan: null, headers: null, scope: [\"row\", \"col\", \"rowgroup\", \"colgroup\"] } },\n thead: s,\n time: { attrs: { datetime: null } },\n title: s,\n tr: s,\n track: {\n attrs: {\n src: null, label: null, \"default\": null,\n kind: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"],\n srclang: langs\n }\n },\n tt: s,\n u: s,\n ul: s,\n \"var\": s,\n video: {\n attrs: {\n src: null, poster: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"auto\", \"metadata\", \"none\"],\n autoplay: [\"\", \"autoplay\"],\n mediagroup: [\"movie\"],\n muted: [\"\", \"muted\"],\n controls: [\"\", \"controls\"]\n }\n },\n wbr: s\n };\n\n var globalAttrs = {\n accesskey: [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n \"class\": null,\n contenteditable: [\"true\", \"false\"],\n contextmenu: null,\n dir: [\"ltr\", \"rtl\", \"auto\"],\n draggable: [\"true\", \"false\", \"auto\"],\n dropzone: [\"copy\", \"move\", \"link\", \"string:\", \"file:\"],\n hidden: [\"hidden\"],\n id: null,\n inert: [\"inert\"],\n itemid: null,\n itemprop: null,\n itemref: null,\n itemscope: [\"itemscope\"],\n itemtype: null,\n lang: [\"en\", \"es\"],\n spellcheck: [\"true\", \"false\"],\n autocorrect: [\"true\", \"false\"],\n autocapitalize: [\"true\", \"false\"],\n style: null,\n tabindex: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n title: null,\n translate: [\"yes\", \"no\"],\n onclick: null,\n rel: [\"stylesheet\", \"alternate\", \"author\", \"bookmark\", \"help\", \"license\", \"next\", \"nofollow\", \"noreferrer\", \"prefetch\", \"prev\", \"search\", \"tag\"]\n };\n function populate(obj) {\n for (var attr in globalAttrs) if (globalAttrs.hasOwnProperty(attr))\n obj.attrs[attr] = globalAttrs[attr];\n }\n\n populate(s);\n for (var tag in data) if (data.hasOwnProperty(tag) && data[tag] != s)\n populate(data[tag]);\n\n CodeMirror.htmlSchema = data;\n function htmlHint(cm, options) {\n var local = {schemaInfo: data};\n if (options) for (var opt in options) local[opt] = options[opt];\n return CodeMirror.hint.xml(cm, local);\n }\n CodeMirror.registerHelper(\"hint\", \"html\", htmlHint);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../mode/sql/sql\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../mode/sql/sql\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var tables;\n var defaultTable;\n var keywords;\n var identifierQuote;\n var CONS = {\n QUERY_DIV: \";\",\n ALIAS_KEYWORD: \"AS\"\n };\n var Pos = CodeMirror.Pos, cmpPos = CodeMirror.cmpPos;\n\n function isArray(val) { return Object.prototype.toString.call(val) == \"[object Array]\" }\n\n function getModeConf(editor) {\n return editor.getModeAt(editor.getCursor()).config || CodeMirror.resolveMode(\"text/x-sql\")\n }\n\n function getKeywords(editor) {\n return getModeConf(editor).keywords || []\n }\n\n function getIdentifierQuote(editor) {\n return getModeConf(editor).identifierQuote || \"`\";\n }\n\n function getText(item) {\n return typeof item == \"string\" ? item : item.text;\n }\n\n function wrapTable(name, value) {\n if (isArray(value)) value = {columns: value}\n if (!value.text) value.text = name\n return value\n }\n\n function parseTables(input) {\n var result = {}\n if (isArray(input)) {\n for (var i = input.length - 1; i >= 0; i--) {\n var item = input[i]\n result[getText(item).toUpperCase()] = wrapTable(getText(item), item)\n }\n } else if (input) {\n for (var name in input)\n result[name.toUpperCase()] = wrapTable(name, input[name])\n }\n return result\n }\n\n function getTable(name) {\n return tables[name.toUpperCase()]\n }\n\n function shallowClone(object) {\n var result = {};\n for (var key in object) if (object.hasOwnProperty(key))\n result[key] = object[key];\n return result;\n }\n\n function match(string, word) {\n var len = string.length;\n var sub = getText(word).substr(0, len);\n return string.toUpperCase() === sub.toUpperCase();\n }\n\n function addMatches(result, search, wordlist, formatter) {\n if (isArray(wordlist)) {\n for (var i = 0; i < wordlist.length; i++)\n if (match(search, wordlist[i])) result.push(formatter(wordlist[i]))\n } else {\n for (var word in wordlist) if (wordlist.hasOwnProperty(word)) {\n var val = wordlist[word]\n if (!val || val === true)\n val = word\n else\n val = val.displayText ? {text: val.text, displayText: val.displayText} : val.text\n if (match(search, val)) result.push(formatter(val))\n }\n }\n }\n\n function cleanName(name) {\n // Get rid name from identifierQuote and preceding dot(.)\n if (name.charAt(0) == \".\") {\n name = name.substr(1);\n }\n // replace duplicated identifierQuotes with single identifierQuotes\n // and remove single identifierQuotes\n var nameParts = name.split(identifierQuote+identifierQuote);\n for (var i = 0; i < nameParts.length; i++)\n nameParts[i] = nameParts[i].replace(new RegExp(identifierQuote,\"g\"), \"\");\n return nameParts.join(identifierQuote);\n }\n\n function insertIdentifierQuotes(name) {\n var nameParts = getText(name).split(\".\");\n for (var i = 0; i < nameParts.length; i++)\n nameParts[i] = identifierQuote +\n // duplicate identifierQuotes\n nameParts[i].replace(new RegExp(identifierQuote,\"g\"), identifierQuote+identifierQuote) +\n identifierQuote;\n var escaped = nameParts.join(\".\");\n if (typeof name == \"string\") return escaped;\n name = shallowClone(name);\n name.text = escaped;\n return name;\n }\n\n function nameCompletion(cur, token, result, editor) {\n // Try to complete table, column names and return start position of completion\n var useIdentifierQuotes = false;\n var nameParts = [];\n var start = token.start;\n var cont = true;\n while (cont) {\n cont = (token.string.charAt(0) == \".\");\n useIdentifierQuotes = useIdentifierQuotes || (token.string.charAt(0) == identifierQuote);\n\n start = token.start;\n nameParts.unshift(cleanName(token.string));\n\n token = editor.getTokenAt(Pos(cur.line, token.start));\n if (token.string == \".\") {\n cont = true;\n token = editor.getTokenAt(Pos(cur.line, token.start));\n }\n }\n\n // Try to complete table names\n var string = nameParts.join(\".\");\n addMatches(result, string, tables, function(w) {\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n\n // Try to complete columns from defaultTable\n addMatches(result, string, defaultTable, function(w) {\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n\n // Try to complete columns\n string = nameParts.pop();\n var table = nameParts.join(\".\");\n\n var alias = false;\n var aliasTable = table;\n // Check if table is available. If not, find table by Alias\n if (!getTable(table)) {\n var oldTable = table;\n table = findTableByAlias(table, editor);\n if (table !== oldTable) alias = true;\n }\n\n var columns = getTable(table);\n if (columns && columns.columns)\n columns = columns.columns;\n\n if (columns) {\n addMatches(result, string, columns, function(w) {\n var tableInsert = table;\n if (alias == true) tableInsert = aliasTable;\n if (typeof w == \"string\") {\n w = tableInsert + \".\" + w;\n } else {\n w = shallowClone(w);\n w.text = tableInsert + \".\" + w.text;\n }\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n }\n\n return start;\n }\n\n function eachWord(lineText, f) {\n var words = lineText.split(/\\s+/)\n for (var i = 0; i < words.length; i++)\n if (words[i]) f(words[i].replace(/[`,;]/g, ''))\n }\n\n function findTableByAlias(alias, editor) {\n var doc = editor.doc;\n var fullQuery = doc.getValue();\n var aliasUpperCase = alias.toUpperCase();\n var previousWord = \"\";\n var table = \"\";\n var separator = [];\n var validRange = {\n start: Pos(0, 0),\n end: Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).length)\n };\n\n //add separator\n var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);\n while(indexOfSeparator != -1) {\n separator.push(doc.posFromIndex(indexOfSeparator));\n indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV, indexOfSeparator+1);\n }\n separator.unshift(Pos(0, 0));\n separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length));\n\n //find valid range\n var prevItem = null;\n var current = editor.getCursor()\n for (var i = 0; i < separator.length; i++) {\n if ((prevItem == null || cmpPos(current, prevItem) > 0) && cmpPos(current, separator[i]) <= 0) {\n validRange = {start: prevItem, end: separator[i]};\n break;\n }\n prevItem = separator[i];\n }\n\n if (validRange.start) {\n var query = doc.getRange(validRange.start, validRange.end, false);\n\n for (var i = 0; i < query.length; i++) {\n var lineText = query[i];\n eachWord(lineText, function(word) {\n var wordUpperCase = word.toUpperCase();\n if (wordUpperCase === aliasUpperCase && getTable(previousWord))\n table = previousWord;\n if (wordUpperCase !== CONS.ALIAS_KEYWORD)\n previousWord = word;\n });\n if (table) break;\n }\n }\n return table;\n }\n\n CodeMirror.registerHelper(\"hint\", \"sql\", function(editor, options) {\n tables = parseTables(options && options.tables)\n var defaultTableName = options && options.defaultTable;\n var disableKeywords = options && options.disableKeywords;\n defaultTable = defaultTableName && getTable(defaultTableName);\n keywords = getKeywords(editor);\n identifierQuote = getIdentifierQuote(editor);\n\n if (defaultTableName && !defaultTable)\n defaultTable = findTableByAlias(defaultTableName, editor);\n\n defaultTable = defaultTable || [];\n\n if (defaultTable.columns)\n defaultTable = defaultTable.columns;\n\n var cur = editor.getCursor();\n var result = [];\n var token = editor.getTokenAt(cur), start, end, search;\n if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n\n if (token.string.match(/^[.`\"'\\w@][\\w$#]*$/g)) {\n search = token.string;\n start = token.start;\n end = token.end;\n } else {\n start = end = cur.ch;\n search = \"\";\n }\n if (search.charAt(0) == \".\" || search.charAt(0) == identifierQuote) {\n start = nameCompletion(cur, token, result, editor);\n } else {\n var objectOrClass = function(w, className) {\n if (typeof w === \"object\") {\n w.className = className;\n } else {\n w = { text: w, className: className };\n }\n return w;\n };\n addMatches(result, search, defaultTable, function(w) {\n return objectOrClass(w, \"CodeMirror-hint-table CodeMirror-hint-default-table\");\n });\n addMatches(\n result,\n search,\n tables, function(w) {\n return objectOrClass(w, \"CodeMirror-hint-table\");\n }\n );\n if (!disableKeywords)\n addMatches(result, search, keywords, function(w) {\n return objectOrClass(w.toUpperCase(), \"CodeMirror-hint-keyword\");\n });\n }\n\n return {list: result, from: Pos(cur.line, start), to: Pos(cur.line, end)};\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// A rough approximation of Sublime Text's keybindings\n// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/edit/matchbrackets\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/edit/matchbrackets\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\", type, startPos = start.ch;\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n if (state == \"start\") {\n if (cat != \"o\") { state = \"in\"; type = cat; }\n else startPos = pos + dir\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n if (type == \"W\" && cat == \"w\" && dir > 0) { // From uppercase to lowercase\n if (pos == startPos + 1) { type = \"w\"; continue; }\n else pos--;\n }\n break;\n }\n }\n }\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function(range) {\n if (cm.display.shift || cm.doc.extend || range.empty())\n return findPosSubword(cm.doc, range.head, dir);\n else\n return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };\n cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };\n\n cmds.scrollLineUp = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine)\n cm.execCommand(\"goLineUp\");\n }\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n cmds.scrollLineDown = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\")+1;\n if (cm.getCursor().line <= visibleTopLine)\n cm.execCommand(\"goLineDown\");\n }\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function(cm) {\n var ranges = cm.listSelections(), lineRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n for (var line = from.line; line <= to.line; ++line)\n if (!(to.line > from.line && line == to.line && to.ch == 0))\n lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)});\n }\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function(cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {scroll: false});\n };\n\n cmds.selectLine = function(cm) {\n var ranges = cm.listSelections(), extended = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)});\n }\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n cm.operation(function() {\n var len = cm.listSelections().length, newSelection = [], last = -1;\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({head: at, anchor: at});\n last = head.line + 1;\n }\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };\n\n cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };\n\n function wordAt(cm, pos) {\n var start = pos.ch, end = start, line = cm.getLine(pos.line);\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)};\n }\n\n cmds.selectNextOccurrence = function(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return\n cm.addSelection(cur.from(), cur.to());\n }\n if (fullWord)\n cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function(cm) {\n var prevAnchor = cm.getCursor(\"anchor\"), prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections()\n .filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n }\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(), newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(\n range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(\n range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ?\n range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ?\n range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {anchor: newAnchor, head: newHead};\n newRanges.push(range);\n newRanges.push(newRange);\n }\n cm.setSelections(newRanges);\n }\n cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1); };\n cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++)\n if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&\n CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true\n return false\n }\n\n var mirror = \"(){}[]\";\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(), newRanges = []\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&\n CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({anchor: startPos, head: closing.pos});\n break;\n }\n }\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function(cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n cmds.selectBetweenBrackets = function(cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined\n }\n\n cmds.goToBracket = function(cm) {\n cm.extendSelectionsBy(function(range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from().line - 1, to = range.to().line;\n newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)});\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine())\n cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n else\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i], from = range.to().line + 1, to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine())\n cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n else\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function(cm) {\n cm.toggleComment({ indent: true });\n }\n\n cmds.joinLines = function(cm) {\n var ranges = cm.listSelections(), joined = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from();\n var start = from.line, end = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end)\n end = ranges[++i].to().line;\n joined.push({start: start, end: end, anchor: !range.empty() && from});\n }\n cm.operation(function() {\n var offset = 0, ranges = [];\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head;\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n ranges.push({anchor: anchor || head, head: head});\n }\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function(cm) {\n cm.operation(function() {\n var rangeCount = cm.listSelections().length;\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty())\n cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n else\n cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n cm.scrollIntoView();\n });\n };\n\n\n function sortLines(cm, caseSensitive, direction) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), toSort = [], selected;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line, to = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to)\n to = ranges[++i].to().line;\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n if (toSort.length) selected = true;\n else toSort.push(cm.firstLine(), cm.lastLine());\n\n cm.operation(function() {\n var ranges = [];\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i], to = toSort[i + 1];\n var start = Pos(from, 0), end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive)\n lines.sort(function(a, b) { return a < b ? -direction : a == b ? 0 : direction; });\n else\n lines.sort(function(a, b) {\n var au = a.toUpperCase(), bu = b.toUpperCase();\n if (au != bu) { a = au; b = bu; }\n return a < b ? -direction : a == b ? 0 : direction;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});\n }\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function(cm) { sortLines(cm, true, 1); };\n cmds.reverseSortLines = function(cm) { sortLines(cm, true, -1); };\n cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false, 1); };\n cmds.reverseSortLinesInsensitive = function(cm) { sortLines(cm, false, -1); };\n\n cmds.nextBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found)\n marks.pop();\n else\n return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function(cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n for (var k = 0; k < marks.length; k++)\n if (marks[k] == found[j])\n marks.splice(k--, 1);\n break;\n }\n }\n if (j == found.length)\n marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false}));\n }\n };\n\n cmds.clearBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks, ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found)\n marks.splice(i--, 0);\n else\n ranges.push({anchor: found.from, head: found.to});\n }\n if (ranges.length)\n cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function() {\n var ranges = cm.listSelections(), indices = [], replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) { indices.push(i); replacements.push(\"\"); }\n else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n cm.replaceSelections(replacements, \"around\", \"case\");\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function(cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n\n cm.operation(function() {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n\n // Delete by one character by default\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line,\n CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n\n // Smart delete only if we found a valid prevIndent location\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function(cm) {\n cm.operation(function() {\n var ranges = cm.listSelections();\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });\n };\n cmds.downcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });\n };\n\n cmds.setSublimeMark = function(cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n cmds.selectToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n cmds.deleteToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n var from = cm.getCursor(), to = found;\n if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; }\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n cmds.swapWithSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n cmds.sublimeYank = function(cm) {\n if (cm.state.sublimeKilled != null)\n cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function(cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n return {from: from, to: to, query: cm.getRange(from, to), word: word};\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)\n : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious())\n cm.setSelection(cur.from(), cur.to());\n else if (target.word)\n cm.setSelection(target.from, target.to);\n }\n };\n cmds.findUnder = function(cm) { findAndGoTo(cm, true); };\n cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };\n cmds.findAllUnder = function(cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n while (cur.findNext()) {\n matches.push({anchor: cur.from(), head: cur.to()});\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch)\n primaryIndex++;\n }\n cm.setSelections(matches, primaryIndex);\n };\n\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Shift-F5\": \"reverseSortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Shift-F9\": \"reverseSortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) { // Does not fit below\n var height = box.bottom - box.top, spaceAbove = box.top - (pos.bottom - pos.top) - 2\n if (winH - box.top < spaceAbove) { // More room at the top\n if (height > spaceAbove) hints.style.height = (height = spaceAbove) + \"px\";\n hints.style.top = ((top = pos.top - height) + offsetTop) + \"px\";\n below = false;\n } else {\n hints.style.height = (winH - box.top - 2) + \"px\";\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = Math.max(pos.left - overlapX - offsetLeft, 0)) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineExtension(\"annotateScrollbar\", function(options) {\n if (typeof options == \"string\") options = {className: options};\n return new Annotation(this, options);\n });\n\n CodeMirror.defineOption(\"scrollButtonHeight\", 0);\n\n function Annotation(cm, options) {\n this.cm = cm;\n this.options = options;\n this.buttonHeight = options.scrollButtonHeight || cm.getOption(\"scrollButtonHeight\");\n this.annotations = [];\n this.doRedraw = this.doUpdate = null;\n this.div = cm.getWrapperElement().appendChild(document.createElement(\"div\"));\n this.div.style.cssText = \"position: absolute; right: 0; top: 0; z-index: 7; pointer-events: none\";\n this.computeScale();\n\n function scheduleRedraw(delay) {\n clearTimeout(self.doRedraw);\n self.doRedraw = setTimeout(function() { self.redraw(); }, delay);\n }\n\n var self = this;\n cm.on(\"refresh\", this.resizeHandler = function() {\n clearTimeout(self.doUpdate);\n self.doUpdate = setTimeout(function() {\n if (self.computeScale()) scheduleRedraw(20);\n }, 100);\n });\n cm.on(\"markerAdded\", this.resizeHandler);\n cm.on(\"markerCleared\", this.resizeHandler);\n if (options.listenForChanges !== false)\n cm.on(\"changes\", this.changeHandler = function() {\n scheduleRedraw(250);\n });\n }\n\n Annotation.prototype.computeScale = function() {\n var cm = this.cm;\n var hScale = (cm.getWrapperElement().clientHeight - cm.display.barHeight - this.buttonHeight * 2) /\n cm.getScrollerElement().scrollHeight\n if (hScale != this.hScale) {\n this.hScale = hScale;\n return true;\n }\n };\n\n Annotation.prototype.update = function(annotations) {\n this.annotations = annotations;\n this.redraw();\n };\n\n Annotation.prototype.redraw = function(compute) {\n if (compute !== false) this.computeScale();\n var cm = this.cm, hScale = this.hScale;\n\n var frag = document.createDocumentFragment(), anns = this.annotations;\n\n var wrapping = cm.getOption(\"lineWrapping\");\n var singleLineH = wrapping && cm.defaultTextHeight() * 1.5;\n var curLine = null, curLineObj = null;\n\n function getY(pos, top) {\n if (curLine != pos.line) {\n curLine = pos.line\n curLineObj = cm.getLineHandle(pos.line)\n var visual = cm.getLineHandleVisualStart(curLineObj)\n if (visual != curLineObj) {\n curLine = cm.getLineNumber(visual)\n curLineObj = visual\n }\n }\n if ((curLineObj.widgets && curLineObj.widgets.length) ||\n (wrapping && curLineObj.height > singleLineH))\n return cm.charCoords(pos, \"local\")[top ? \"top\" : \"bottom\"];\n var topY = cm.heightAtLine(curLineObj, \"local\");\n return topY + (top ? 0 : curLineObj.height);\n }\n\n var lastLine = cm.lastLine()\n if (cm.display.barWidth) for (var i = 0, nextTop; i < anns.length; i++) {\n var ann = anns[i];\n if (ann.to.line > lastLine) continue;\n var top = nextTop || getY(ann.from, true) * hScale;\n var bottom = getY(ann.to, false) * hScale;\n while (i < anns.length - 1) {\n if (anns[i + 1].to.line > lastLine) break;\n nextTop = getY(anns[i + 1].from, true) * hScale;\n if (nextTop > bottom + .9) break;\n ann = anns[++i];\n bottom = getY(ann.to, false) * hScale;\n }\n if (bottom == top) continue;\n var height = Math.max(bottom - top, 3);\n\n var elt = frag.appendChild(document.createElement(\"div\"));\n elt.style.cssText = \"position: absolute; right: 0px; width: \" + Math.max(cm.display.barWidth - 1, 2) + \"px; top: \"\n + (top + this.buttonHeight) + \"px; height: \" + height + \"px\";\n elt.className = this.options.className;\n if (ann.id) {\n elt.setAttribute(\"annotation-id\", ann.id);\n }\n }\n this.div.textContent = \"\";\n this.div.appendChild(frag);\n };\n\n Annotation.prototype.clear = function() {\n this.cm.off(\"refresh\", this.resizeHandler);\n this.cm.off(\"markerAdded\", this.resizeHandler);\n this.cm.off(\"markerCleared\", this.resizeHandler);\n if (this.changeHandler) this.cm.off(\"changes\", this.changeHandler);\n this.div.parentNode.removeChild(this.div);\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"markdown\", function(cm, start) {\n var maxDepth = 100;\n\n function isHeader(lineNo) {\n var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0));\n return tokentype && /\\bheader\\b/.test(tokentype);\n }\n\n function headerLevel(lineNo, line, nextLine) {\n var match = line && line.match(/^#+/);\n if (match && isHeader(lineNo)) return match[0].length;\n match = nextLine && nextLine.match(/^[=\\-]+\\s*$/);\n if (match && isHeader(lineNo + 1)) return nextLine[0] == \"=\" ? 1 : 2;\n return maxDepth;\n }\n\n var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1);\n var level = headerLevel(start.line, firstLine, nextLine);\n if (level === maxDepth) return undefined;\n\n var lastLineNo = cm.lastLine();\n var end = start.line, nextNextLine = cm.getLine(end + 2);\n while (end < lastLineNo) {\n if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break;\n ++end;\n nextLine = nextNextLine;\n nextNextLine = cm.getLine(end + 2);\n }\n\n return {\n from: CodeMirror.Pos(start.line, firstLine.length),\n to: CodeMirror.Pos(end, cm.getLine(end).length)\n };\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n \"is\", \"isnt\", \"in\",\n \"instanceof\", \"typeof\"]);\n var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n indentKeywords = wordRegexp(indentKeywords);\n\n\n var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n var regexPrefixes = /^(\\/{3}|\\/)/;\n var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var constants = wordRegexp(commonConstants);\n\n // Tokenizers\n function tokenBase(stream, state) {\n // Handle scope changes\n if (stream.sol()) {\n if (state.scope.align === null) state.scope.align = false;\n var scopeOffset = state.scope.offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n return \"indent\";\n } else if (lineOffset < scopeOffset) {\n return \"dedent\";\n }\n return null;\n } else {\n if (scopeOffset > 0) {\n dedent(stream, state);\n }\n }\n }\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.peek();\n\n // Handle docco title comment (single line)\n if (stream.match(\"####\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle multi line comments\n if (stream.match(\"###\")) {\n state.tokenize = longComment;\n return state.tokenize(stream, state);\n }\n\n // Single line comment\n if (ch === \"#\") {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle number literals\n if (stream.match(/^-?[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\d+\\.\\d*/)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\.\\d+/)) {\n floatLiteral = true;\n }\n\n if (floatLiteral) {\n // prevent from getting extra . on 1..\n if (stream.peek() == \".\"){\n stream.backUp(1);\n }\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^-?0x[0-9a-f]+/i)) {\n intLiteral = true;\n }\n // Decimal\n if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^-?0(?![\\dx])/i)) {\n intLiteral = true;\n }\n if (intLiteral) {\n return \"number\";\n }\n }\n\n // Handle strings\n if (stream.match(stringPrefixes)) {\n state.tokenize = tokenFactory(stream.current(), false, \"string\");\n return state.tokenize(stream, state);\n }\n // Handle regex literals\n if (stream.match(regexPrefixes)) {\n if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n return state.tokenize(stream, state);\n } else {\n stream.backUp(1);\n }\n }\n\n\n\n // Handle operators and delimiters\n if (stream.match(operators) || stream.match(wordOperators)) {\n return \"operator\";\n }\n if (stream.match(delimiters)) {\n return \"punctuation\";\n }\n\n if (stream.match(constants)) {\n return \"atom\";\n }\n\n if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n return \"property\";\n }\n\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n\n if (stream.match(identifiers)) {\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function tokenFactory(delimiter, singleline, outclass) {\n return function(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\/\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol()) {\n return outclass;\n }\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenBase;\n return outclass;\n } else {\n stream.eat(/['\"\\/]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors) {\n outclass = ERRORCLASS;\n } else {\n state.tokenize = tokenBase;\n }\n }\n return outclass;\n };\n }\n\n function longComment(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^#]/);\n if (stream.match(\"###\")) {\n state.tokenize = tokenBase;\n break;\n }\n stream.eatWhile(\"#\");\n }\n return \"comment\";\n }\n\n function indent(stream, state, type) {\n type = type || \"coffee\";\n var offset = 0, align = false, alignOffset = null;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (scope.type === \"coffee\" || scope.type == \"}\") {\n offset = scope.offset + conf.indentUnit;\n break;\n }\n }\n if (type !== \"coffee\") {\n align = null;\n alignOffset = stream.column() + stream.current().length;\n } else if (state.scope.align) {\n state.scope.align = false;\n }\n state.scope = {\n offset: offset,\n type: type,\n prev: state.scope,\n align: align,\n alignOffset: alignOffset\n };\n }\n\n function dedent(stream, state) {\n if (!state.scope.prev) return;\n if (state.scope.type === \"coffee\") {\n var _indent = stream.indentation();\n var matched = false;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (_indent === scope.offset) {\n matched = true;\n break;\n }\n }\n if (!matched) {\n return true;\n }\n while (state.scope.prev && state.scope.offset !== _indent) {\n state.scope = state.scope.prev;\n }\n return false;\n } else {\n state.scope = state.scope.prev;\n return false;\n }\n }\n\n function tokenLexer(stream, state) {\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle scope changes.\n if (current === \"return\") {\n state.dedent = true;\n }\n if (((current === \"->\" || current === \"=>\") && stream.eol())\n || style === \"indent\") {\n indent(stream, state);\n }\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index !== -1) {\n indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n }\n if (indentKeywords.exec(current)){\n indent(stream, state);\n }\n if (current == \"then\"){\n dedent(stream, state);\n }\n\n\n if (style === \"dedent\") {\n if (dedent(stream, state)) {\n return ERRORCLASS;\n }\n }\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index !== -1) {\n while (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n if (state.scope.type == current)\n state.scope = state.scope.prev;\n }\n if (state.dedent && stream.eol()) {\n if (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n state.dedent = false;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n prop: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var fillAlign = state.scope.align === null && state.scope;\n if (fillAlign && stream.sol()) fillAlign.align = false;\n\n var style = tokenLexer(stream, state);\n if (style && style != \"comment\") {\n if (fillAlign) fillAlign.align = true;\n state.prop = style == \"punctuation\" && stream.current() == \".\"\n }\n\n return style;\n },\n\n indent: function(state, text) {\n if (state.tokenize != tokenBase) return 0;\n var scope = state.scope;\n var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n var closes = closer && scope.type === text.charAt(0);\n if (scope.align)\n return scope.alignOffset - (closes ? 1 : 0);\n else\n return (closes ? scope.prev : scope).offset;\n },\n\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n function Iter(cm, line, ch, range) {\n this.line = line; this.ch = ch;\n this.cm = cm; this.text = cm.getLine(line);\n this.min = range ? Math.max(range.from, cm.firstLine()) : cm.firstLine();\n this.max = range ? Math.min(range.to - 1, cm.lastLine()) : cm.lastLine();\n }\n\n function tagAt(iter, ch) {\n var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n return type && /\\btag\\b/.test(type);\n }\n\n function nextLine(iter) {\n if (iter.line >= iter.max) return;\n iter.ch = 0;\n iter.text = iter.cm.getLine(++iter.line);\n return true;\n }\n function prevLine(iter) {\n if (iter.line <= iter.min) return;\n iter.text = iter.cm.getLine(--iter.line);\n iter.ch = iter.text.length;\n return true;\n }\n\n function toTagEnd(iter) {\n for (;;) {\n var gt = iter.text.indexOf(\">\", iter.ch);\n if (gt == -1) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n function toTagStart(iter) {\n for (;;) {\n var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n if (lt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n xmlTagStart.lastIndex = lt;\n iter.ch = lt;\n var match = xmlTagStart.exec(iter.text);\n if (match && match.index == lt) return match;\n }\n }\n\n function toNextTag(iter) {\n for (;;) {\n xmlTagStart.lastIndex = iter.ch;\n var found = xmlTagStart.exec(iter.text);\n if (!found) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n iter.ch = found.index + found[0].length;\n return found;\n }\n }\n function toPrevTag(iter) {\n for (;;) {\n var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n if (gt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n\n function findMatchingClose(iter, tag) {\n var stack = [];\n for (;;) {\n var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n if (!next || !(end = toTagEnd(iter))) return;\n if (end == \"selfClose\") continue;\n if (next[1]) { // closing tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == next[2])) return {\n tag: next[2],\n from: Pos(startLine, startCh),\n to: Pos(iter.line, iter.ch)\n };\n } else { // opening tag\n stack.push(next[2]);\n }\n }\n }\n function findMatchingOpen(iter, tag) {\n var stack = [];\n for (;;) {\n var prev = toPrevTag(iter);\n if (!prev) return;\n if (prev == \"selfClose\") { toTagStart(iter); continue; }\n var endLine = iter.line, endCh = iter.ch;\n var start = toTagStart(iter);\n if (!start) return;\n if (start[1]) { // closing tag\n stack.push(start[2]);\n } else { // opening tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == start[2])) return {\n tag: start[2],\n from: Pos(iter.line, iter.ch),\n to: Pos(endLine, endCh)\n };\n }\n }\n }\n\n CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n var iter = new Iter(cm, start.line, 0);\n for (;;) {\n var openTag = toNextTag(iter)\n if (!openTag || iter.line != start.line) return\n var end = toTagEnd(iter)\n if (!end) return\n if (!openTag[1] && end != \"selfClose\") {\n var startPos = Pos(iter.line, iter.ch);\n var endPos = findMatchingClose(iter, openTag[2]);\n return endPos && cmp(endPos.from, startPos) > 0 ? {from: startPos, to: endPos.from} : null\n }\n }\n });\n CodeMirror.findMatchingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n var start = end && toTagStart(iter);\n if (!end || !start || cmp(iter, pos) > 0) return;\n var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n if (start[1]) { // closing tag\n return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n } else { // opening tag\n iter = new Iter(cm, to.line, to.ch, range);\n return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n }\n };\n\n CodeMirror.findEnclosingTag = function(cm, pos, range, tag) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n for (;;) {\n var open = findMatchingOpen(iter, tag);\n if (!open) break;\n var forward = new Iter(cm, pos.line, pos.ch, range);\n var close = findMatchingClose(forward, open.tag);\n if (close) return {open: open, close: close};\n }\n };\n\n // Used by addon/edit/closetag.js\n CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n return findMatchingClose(iter, name);\n };\n});\n","import { codemirror } from \"vue-codemirror\"\n\nVue.component(\"codemirror\", codemirror)\n\n// import base style\nimport \"codemirror/lib/codemirror.css\"\nimport \"codemirror/addon/mode/overlay.js\"\nimport \"codemirror/addon/display/fullscreen\"\nimport \"codemirror/addon/display/fullscreen.css\"\n// import language js\nimport \"codemirror/mode/javascript/javascript.js\"\nimport \"codemirror/mode/sql/sql\"\nimport \"codemirror/mode/css/css\"\nimport \"codemirror/mode/htmlmixed/htmlmixed\"\nimport \"codemirror/mode/vue/vue\"\n\n// import theme style\nimport \"codemirror/theme/base16-light.css\"\nimport \"codemirror/theme/monokai.css\"\nimport \"codemirror/theme/darcula.css\"\nimport \"codemirror/theme/dracula.css\"\n\n//fold Gutter\nimport \"codemirror/addon/fold/foldgutter.css\"\nimport \"codemirror/addon/fold/brace-fold.js\"\nimport \"codemirror/addon/fold/comment-fold.js\"\nimport \"codemirror/addon/fold/foldcode.js\"\nimport \"codemirror/addon/fold/foldgutter.js\"\nimport \"codemirror/addon/fold/indent-fold.js\"\nimport \"codemirror/addon/fold/markdown-fold.js\"\nimport \"codemirror/addon/fold/xml-fold.js\"\n// import hint and keymap\nimport \"codemirror/addon/hint/anyword-hint.js\"\nimport \"codemirror/addon/hint/javascript-hint.js\"\nimport \"codemirror/addon/hint/sql-hint.js\"\nimport \"codemirror/addon/hint/xml-hint.js\"\nimport \"codemirror/addon/hint/show-hint.js\"\nimport \"codemirror/addon/hint/css-hint.js\"\nimport \"codemirror/addon/hint/show-hint.css\"\nimport \"codemirror/addon/hint/html-hint.js\"\n\n//keymap\nimport \"codemirror/mode/clike/clike.js\"\nimport \"codemirror/addon/edit/matchbrackets.js\"\nimport \"codemirror/addon/edit/closebrackets.js\"\nimport \"codemirror/addon/edit/closetag.js\"\n\nimport \"codemirror/addon/comment/comment.js\"\nimport \"codemirror/addon/dialog/dialog.js\"\nimport \"codemirror/addon/dialog/dialog.css\"\nimport \"codemirror/addon/search/search.js\"\nimport \"codemirror/addon/search/searchcursor.js\"\nimport \"codemirror/keymap/sublime.js\"\n//highlightSelectMatches\nimport \"codemirror/addon/scroll/annotatescrollbar.js\"\nimport \"codemirror/addon/search/matchesonscrollbar.js\"\nimport \"codemirror/addon/search/match-highlighter.js\"\n// styleSelectedText\nimport \"codemirror/addon/selection/mark-selection.js\"\n// active-line.js\nimport \"codemirror/addon/selection/active-line.js\"\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction bracketFolding(pairs) {\n return function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n\n function findOpening(pair) {\n var tokenType;\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return {ch: found + 1, tokenType: tokenType, pair: pair};\n at = found - 1;\n }\n }\n\n function findRange(found) {\n var count = 1, lastLine = cm.lastLine(), end, startCh = found.ch, endCh\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(found.pair[0], pos), nextClose = text.indexOf(found.pair[1], pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == found.tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n\n if (end == null || line == end) return null\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n }\n\n var found = []\n for (var i = 0; i < pairs.length; i++) {\n var open = findOpening(pairs[i])\n if (open) found.push(open)\n }\n found.sort(function(a, b) { return a.ch - b.ch })\n for (var i = 0; i < found.length; i++) {\n var range = findRange(found[i])\n if (range) return range\n }\n return null\n }\n}\n\nCodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"], [\"(\", \")\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var startLine = start.line, has = hasImport(startLine), prev;\n if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line, has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"changes\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n cm.off(\"optionChange\", optionChange);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"changes\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n cm.on(\"optionChange\", optionChange);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n var fromPos = marks[i].find(-1);\n if (fromPos && fromPos.line === line)\n return marks[i];\n }\n }\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from - 1;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n // we can reuse the built-in indicator element if its className matches the new state\n var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n cm.eachLine(from, to, function(line) {\n ++cur;\n var mark = null;\n var old = line.gutterMarkers;\n if (old) old = old[opts.gutter];\n if (isFolded(cm, cur)) {\n if (clsFolded && old && clsFolded.test(old.className)) return;\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize) {\n if (clsOpen && old && clsOpen.test(old.className)) return;\n mark = marker(opts.indicatorOpen);\n }\n }\n if (!mark && !old) return;\n cm.setGutterMarker(line, opts.gutter, mark);\n });\n }\n\n // copied from CodeMirror/src/util/dom.js\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();\n else cm.foldCode(Pos(line, 0), opts);\n }\n\n function optionChange(cm, option) {\n if (option == \"mode\") onChange(cm)\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\\\s*\" + tagName + \"\\\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/simple\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/simple\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode(\"handlebars-tags\", {\n start: [\n { regex: /\\{\\{\\{/, push: \"handlebars_raw\", token: \"tag\" },\n { regex: /\\{\\{!--/, push: \"dash_comment\", token: \"comment\" },\n { regex: /\\{\\{!/, push: \"comment\", token: \"comment\" },\n { regex: /\\{\\{/, push: \"handlebars\", token: \"tag\" }\n ],\n handlebars_raw: [\n { regex: /\\}\\}\\}/, pop: true, token: \"tag\" },\n ],\n handlebars: [\n { regex: /\\}\\}/, pop: true, token: \"tag\" },\n\n // Double and single quotes\n { regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/, token: \"string\" },\n { regex: /'(?:[^\\\\']|\\\\.)*'?/, token: \"string\" },\n\n // Handlebars keywords\n { regex: />|[#\\/]([A-Za-z_]\\w*)/, token: \"keyword\" },\n { regex: /(?:else|this)\\b/, token: \"keyword\" },\n\n // Numeral\n { regex: /\\d+/i, token: \"number\" },\n\n // Atoms like = and .\n { regex: /=|~|@|true|false/, token: \"atom\" },\n\n // Paths\n { regex: /(?:\\.\\.\\/)*(?:[A-Za-z_][\\w\\.]*)+/, token: \"variable-2\" }\n ],\n dash_comment: [\n { regex: /--\\}\\}/, pop: true, token: \"comment\" },\n\n // Commented code\n { regex: /./, token: \"comment\"}\n ],\n comment: [\n { regex: /\\}\\}/, pop: true, token: \"comment\" },\n { regex: /./, token: \"comment\" }\n ],\n meta: {\n blockCommentStart: \"{{--\",\n blockCommentEnd: \"--}}\"\n }\n });\n\n CodeMirror.defineMode(\"handlebars\", function(config, parserConfig) {\n var handlebars = CodeMirror.getMode(config, \"handlebars-tags\");\n if (!parserConfig || !parserConfig.base) return handlebars;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base),\n {open: \"{{\", close: /\\}\\}\\}?/, mode: handlebars, parseDelimiters: true}\n );\n });\n\n CodeMirror.defineMIME(\"text/x-handlebars-template\", \"handlebars\");\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseControl',_vm._b({attrs:{\"errors\":_vm.combinedErrors}},'BaseControl',_vm.$attrs,false),[_c('div',{class:{ 'pl-codemirror-wrapper': _vm.isSql }},[_c('codemirror',{ref:\"editor\",attrs:{\"id\":_vm.id,\"placeholder\":_vm.placeholder,\"value\":_vm.local,\"options\":_vm.codeOptions,\"name\":_vm.name},on:{\"ready\":_vm.onCmReady,\"input\":_vm.updateLocal}}),(_vm.isSql)?_c('btn',{attrs:{\"variant\":\"primary\"},nativeOn:{\"click\":function($event){return _vm.generateSql.apply(null, arguments)}}},[_c('img',{attrs:{\"src\":require(\"../../../assets/sql-generator.svg\"),\"alt\":\"sql-generate\"}})]):_vm._e()],1),_c('div',{staticClass:\"fullscreen p-2\",class:{ 'sql-fullscreen': _vm.isSql },on:{\"click\":function($event){return _vm.fullscreen()}}},[_c('i',{staticClass:\"fa fa-expand-arrows-alt primary-text\"})]),(_vm.hasUndo)?_c('div',{staticClass:\"undo p-2\",class:{ 'sql-undo': _vm.isSql },on:{\"click\":function($event){return _vm.undo()}}},[_c('i',{staticClass:\"fa fa-undo primary-text\"})]):_vm._e(),(_vm.isFullscreen && _vm.hasUndo)?_c('div',{staticClass:\"position-fixed undo-btn code-editor-btn btn btn-secondary\",on:{\"click\":_vm.undo}},[_c('i',{staticClass:\"fa fa-undo primary-text\"}),_c('span',[_vm._v(\" [Ctrl+u] \")])]):_vm._e(),(_vm.isFullscreen)?_c('div',{staticClass:\"position-fixed cancel-btn code-editor-btn btn btn-secondary\",on:{\"click\":_vm.exit}},[_vm._v(\" \"+_vm._s(_vm.$l(\"platon.code_editor_cancel\", \"Бекор қилиш\"))+\" \"),_c('span',[_vm._v(\" [Esc] \")])]):_vm._e(),(_vm.isFullscreen)?_c('div',{staticClass:\"position-fixed save-btn code-editor-btn btn btn-primary\",on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$l(\"platon.code_editor_save\", \"Сақлаш\"))+\" \"),_c('span',[_vm._v(\" [Ctrl+s] \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.$projectInfo.sql_assistant)?_c('div',{staticStyle:{\"height\":\"70vh\"}},[_c('iframe',{staticStyle:{\"border\":\"none\"},attrs:{\"src\":_vm.$projectInfo.sql_assistant,\"width\":\"100%\",\"height\":\"100%\"}})]):_c('div',{staticClass:\"generator-not-found\"},[_c('h3',[_vm._v(\"404\")]),_c('h4',[_vm._v(_vm._s(_vm.$l(\"sql_not_found\", \"Sql generator assistant not found\")))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","