Files
ZERO_CODE/ZeroCodeProject/main/client/node_modules/.cache/babel-loader/8d802904c838318593b9622b123850b8253652ded1bad65ac874dec25d89c795.json
vermouth789 fe39320977 123
123
2026-01-11 00:11:34 +08:00

1 line
133 KiB
JSON

{"ast":null,"code":"require(\"core-js/modules/es.array.push.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\")\n // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd)\n // AMD\n define([\"../../lib/codemirror\"], mod);else\n // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"javascript\", function (config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false;\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function () {\n function kw(type) {\n return {\n type: type,\n style: \"keyword\"\n };\n }\n var A = kw(\"keyword a\"),\n B = kw(\"keyword b\"),\n C = kw(\"keyword c\"),\n D = kw(\"keyword d\");\n var operator = kw(\"operator\"),\n atom = {\n type: \"atom\",\n style: \"atom\"\n };\n return {\n \"if\": kw(\"if\"),\n \"while\": A,\n \"with\": A,\n \"else\": B,\n \"do\": B,\n \"try\": B,\n \"finally\": B,\n \"return\": D,\n \"break\": D,\n \"continue\": D,\n \"new\": kw(\"new\"),\n \"delete\": C,\n \"void\": C,\n \"throw\": C,\n \"debugger\": kw(\"debugger\"),\n \"var\": kw(\"var\"),\n \"const\": kw(\"var\"),\n \"let\": kw(\"var\"),\n \"function\": kw(\"function\"),\n \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"),\n \"switch\": kw(\"switch\"),\n \"case\": kw(\"case\"),\n \"default\": kw(\"default\"),\n \"in\": operator,\n \"typeof\": operator,\n \"instanceof\": operator,\n \"true\": atom,\n \"false\": atom,\n \"null\": atom,\n \"undefined\": atom,\n \"NaN\": atom,\n \"Infinity\": atom,\n \"this\": kw(\"this\"),\n \"class\": kw(\"class\"),\n \"super\": kw(\"atom\"),\n \"yield\": C,\n \"export\": kw(\"export\"),\n \"import\": kw(\"import\"),\n \"extends\": C,\n \"await\": C\n };\n }();\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n function readRegexp(stream) {\n var escaped = false,\n next,\n inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp;\n content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\");\n } else if (ch == \"<\" && stream.match(\"!--\") || ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start))) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\");\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch);\n if (ch == \">\") stream.eat(ch);\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\");\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current();\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word];\n return ret(kw.type, kw.style, word);\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false)) return ret(\"async\", \"keyword\", word);\n }\n return ret(\"variable\", \"variable\", word);\n }\n }\n function tokenString(quote) {\n return function (stream, state) {\n var escaped = false,\n next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)) {\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n function tokenComment(stream, state) {\n var maybeEnd = false,\n ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = ch == \"*\";\n }\n return ret(\"comment\", \"comment\");\n }\n function tokenQuasi(stream, state) {\n var escaped = false,\n next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n if (isTS) {\n // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow));\n if (m) arrow = m.index;\n }\n var depth = 0,\n sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) {\n ++pos;\n break;\n }\n if (--depth == 0) {\n if (ch == \"(\") sawSomething = true;\n break;\n }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return;\n var next = stream.string.charAt(pos - 1);\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") {\n pos--;\n break;\n }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\n \"atom\": true,\n \"number\": true,\n \"variable\": true,\n \"string\": true,\n \"regexp\": true,\n \"this\": true,\n \"import\": true,\n \"jsonld-keyword\": true\n };\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n function inScope(state, varname) {\n if (!trackScope) return false;\n for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next) if (v.name == varname) return true;\n }\n }\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state;\n cx.stream = stream;\n cx.marked = null, cx.cc = cc;\n cx.style = style;\n if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = true;\n while (true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while (cc.length && cc[cc.length - 1].lex) cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {\n state: null,\n column: null,\n marked: null,\n cc: null\n };\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true;\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return;\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context);\n if (newContext != null) {\n state.context = newContext;\n return;\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars);\n return;\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars)) state.globalVars = new Var(varname, state.globalVars);\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null;\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev);\n if (!inner) return null;\n if (inner == context.prev) return context;\n return new Context(inner, context.vars, true);\n } else if (inList(varname, context.vars)) {\n return context;\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false);\n }\n }\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\";\n }\n\n // Combinators\n\n function Context(prev, vars, block) {\n this.prev = prev;\n this.vars = vars;\n this.block = block;\n }\n function Var(name, next) {\n this.name = name;\n this.next = next;\n }\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null));\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false);\n cx.state.localVars = defaultVars;\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true);\n cx.state.localVars = null;\n }\n pushcontext.lex = pushblockcontext.lex = true;\n function popcontext() {\n cx.state.localVars = cx.state.context.vars;\n cx.state.context = cx.state.context.prev;\n }\n popcontext.lex = true;\n function pushlex(type, info) {\n var result = function () {\n var state = cx.state,\n indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev) indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\") state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();else return cont(exp);\n }\n ;\n return exp;\n }\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || isTS && value == \"interface\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex);\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\";\n return cont(statement);\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\";\n if (value == \"enum\") return cont(enumdef);else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex);\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\"), expression, statement, poplex);\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\";\n return cont(statement);\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext, block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement);\n if (value == \"@\") return cont(expression, statement);\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"));\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass();\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex);\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || isTS && value == \"interface\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\"), classExpression, poplex);\n }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false)) return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") {\n return pass(quasi, me);\n }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") {\n cx.marked = \"keyword\";\n return cont(typeexpr, me);\n }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\";\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1);\n return cont(expr);\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function (type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma);else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") {\n cx.marked = \"keyword\";\n return cont(maybeoperatorComma);\n }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") {\n cx.marked = \"keyword\";\n return cont(maybeoperatorNoComma);\n }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {\n cx.marked = \"property\";\n return cont();\n }\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m; // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false))) cx.state.fatArrowAt = cx.stream.pos + m[0].length;\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : cx.style + \" property\";\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop);\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function (type, value) {\n if (type == end || value == end) return pass();\n return pass(what);\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what);\n return cont(expect(end));\n }\n return function (type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr);\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr);else return cont(typeexpr);\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\";\n return cont();\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\";\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr);\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\";\n return cont(afterType);\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr);\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType);\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType);\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType);\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr);\n if (type == \"quasi\") {\n return pass(quasiType, afterType);\n }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr);\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont();\n if (type == \",\" || type == \";\") return cont(typeprops);\n return pass(typeprop, typeprops);\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(typeprop);\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop);\n } else if (type == \":\") {\n return cont(typeexpr);\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop);\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop);\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont();\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg);\n if (type == \":\") return cont(typeexpr);\n if (type == \"spread\") return cont(typearg);\n return pass(typeexpr);\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr);\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType);\n if (value == \"extends\" || value == \"implements\") {\n cx.marked = \"keyword\";\n return cont(typeexpr);\n }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr);\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault);\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr);\n }\n function vardef(_, value) {\n if (value == \"enum\") {\n cx.marked = \"keyword\";\n return cont(enumdef);\n }\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(pattern);\n }\n if (type == \"variable\") {\n register(value);\n return cont();\n }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign);\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2);\n }\n function forspec2(type, value) {\n if (type == \")\") return cont();\n if (type == \";\") return cont(forspec2);\n if (value == \"in\" || value == \"of\") {\n cx.marked = \"keyword\";\n return cont(expression, forspec2);\n }\n return pass(expression, forspec2);\n }\n function functiondef(type, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(functiondef);\n }\n if (type == \"variable\") {\n register(value);\n return cont(functiondef);\n }\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef);\n }\n function functiondecl(type, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(functiondecl);\n }\n if (type == \"variable\") {\n register(value);\n return cont(functiondecl);\n }\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl);\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\";\n return cont(typename);\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex);\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg);\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(funarg);\n }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign);\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {\n register(value);\n return cont(classNameAfter);\n }\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter);\n if (value == \"extends\" || value == \"implements\" || isTS && type == \",\") {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" || type == \"variable\" && (value == \"static\" || value == \"get\" || value == \"set\" || isTS && isModifier(value)) && cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false)) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\") return cont(expression, maybetype, expect(\"]\"), classfield, classBody);\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody);\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody);\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield);\n if (value == \"?\") return cont(classfield);\n if (type == \":\") return cont(typeexpr, maybeAssign);\n if (value == \"=\") return cont(expressionNoComma);\n var context = cx.state.lexical.prev,\n isInterface = context && context.info == \"interface\";\n return pass(isInterface ? functiondecl : functiondef);\n }\n function afterExport(type, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(maybeFrom, expect(\";\"));\n }\n if (value == \"default\") {\n cx.marked = \"keyword\";\n return cont(expression, expect(\";\"));\n }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") {\n cx.marked = \"keyword\";\n return cont(expect(\"variable\"));\n }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports);\n }\n function maybeAs(_type, value) {\n if (value == \"as\") {\n cx.marked = \"keyword\";\n return cont(importSpec);\n }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") {\n cx.marked = \"keyword\";\n return cont(expression);\n }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex);\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0));\n }\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) || state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)));\n }\n\n // Interface\n\n return {\n startState: function (basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\") state.globalVars = parserConfig.globalVars;\n return state;\n },\n token: function (stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n indent: function (state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0),\n lexical = state.lexical,\n top;\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") && (firstChar == \"}\" || (top = state.cc[state.cc.length - 1]) && (top == maybeoperatorComma || top == maybeoperatorNoComma) && !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))) lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\") lexical = lexical.prev;\n var type = lexical.type,\n closing = firstChar == type;\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);else if (type == \"form\" && firstChar == \"{\") return lexical.indented;else if (type == \"form\") return lexical.indented + indentUnit;else if (type == \"stat\") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);else if (lexical.align) return lexical.column + (closing ? 0 : 1);else return lexical.indented + (closing ? 0 : indentUnit);\n },\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n expressionAllowed: expressionAllowed,\n skipExpression: function (state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null));\n }\n };\n });\n CodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n CodeMirror.defineMIME(\"text/javascript\", \"javascript\");\n CodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/javascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/x-json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/manifest+json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/ld+json\", {\n name: \"javascript\",\n jsonld: true\n });\n CodeMirror.defineMIME(\"text/typescript\", {\n name: \"javascript\",\n typescript: true\n });\n CodeMirror.defineMIME(\"application/typescript\", {\n name: \"javascript\",\n typescript: true\n });\n});","map":{"version":3,"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","config","parserConfig","indentUnit","statementIndent","jsonldMode","jsonld","jsonMode","json","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","type","style","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","readRegexp","stream","escaped","next","inSet","content","ret","tp","cont","tokenBase","state","ch","tokenize","tokenString","match","test","eat","tokenComment","skipToEnd","expressionAllowed","current","tokenQuasi","peek","eatWhile","string","slice","start","lexical","word","lastType","propertyIsEnumerable","quote","maybeEnd","brackets","findFatArrow","fatArrowAt","arrow","indexOf","m","exec","index","depth","sawSomething","pos","charAt","bracket","atomicTypes","JSLexical","indented","column","align","prev","info","inScope","varname","v","localVars","name","cx","context","vars","parseJS","cc","marked","hasOwnProperty","combinator","length","pop","expression","statement","lex","pass","i","arguments","push","apply","inList","list","register","block","newContext","registerVarScoped","Var","globalVars","inner","Context","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","result","indent","outer","poplex","expect","wanted","exp","value","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","className","enumdef","typename","typeexpr","pattern","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","body","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","me","expr","property","backUp","continueQuasi","targetNoComma","target","maybeTypeArgs","_","getterSetter","afterprop","maybetype","what","end","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","textAfter","startState","basecolumn","token","sol","indentation","eatSpace","Pass","firstChar","top","c","closing","doubleIndentSwitch","electricInput","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","closeBrackets","helperType","skipExpression","StringStream","registerHelper","defineMIME"],"sources":["/mnt/sdc/Project1/main/client/node_modules/codemirror/mode/javascript/javascript.js"],"sourcesContent":["// 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(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"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 = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}