@pyscript/core 0.6.9 → 0.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/codemirror-CAEZ6Sg7.js +2 -0
  2. package/dist/{codemirror-1dOfKU91.js.map → codemirror-CAEZ6Sg7.js.map} +1 -1
  3. package/dist/codemirror_commands-BPM8HxXO.js +2 -0
  4. package/dist/{codemirror_commands-CKMxnUcp.js.map → codemirror_commands-BPM8HxXO.js.map} +1 -1
  5. package/dist/codemirror_lang-python-DvjhpaK2.js +2 -0
  6. package/dist/{codemirror_lang-python-D9DYtDWr.js.map → codemirror_lang-python-DvjhpaK2.js.map} +1 -1
  7. package/dist/codemirror_language-4kk4Aqm3.js +2 -0
  8. package/dist/{codemirror_language-B5lTPv2c.js.map → codemirror_language-4kk4Aqm3.js.map} +1 -1
  9. package/dist/codemirror_state-1d1uncXx.js +2 -0
  10. package/dist/{codemirror_state-n1sFh2hh.js.map → codemirror_state-1d1uncXx.js.map} +1 -1
  11. package/dist/codemirror_view-aIuSN42d.js +2 -0
  12. package/dist/{codemirror_view-1a1gCrKZ.js.map → codemirror_view-aIuSN42d.js.map} +1 -1
  13. package/dist/core-Djc_-F2E.js +2 -0
  14. package/dist/core-Djc_-F2E.js.map +1 -0
  15. package/dist/core.css +1 -75
  16. package/dist/core.js +1 -1
  17. package/dist/deprecations-manager-CJPk1tJA.js +2 -0
  18. package/dist/{deprecations-manager-Cf_aFUPK.js.map → deprecations-manager-CJPk1tJA.js.map} +1 -1
  19. package/dist/donkey-B8oMxGx2.js +2 -0
  20. package/dist/{donkey-Cc8svH2Q.js.map → donkey-B8oMxGx2.js.map} +1 -1
  21. package/dist/error-B9FssCEE.js +2 -0
  22. package/dist/error-B9FssCEE.js.map +1 -0
  23. package/dist/index-DqgFLybq.js +2 -0
  24. package/dist/{index-BVFrv_QY.js.map → index-DqgFLybq.js.map} +1 -1
  25. package/dist/mpy-DHvNziqy.js +2 -0
  26. package/dist/{mpy-CQiuZcjW.js.map → mpy-DHvNziqy.js.map} +1 -1
  27. package/dist/py-C5GQdsZt.js +2 -0
  28. package/dist/{py-BgH4mprx.js.map → py-C5GQdsZt.js.map} +1 -1
  29. package/dist/py-editor-Bux-ztRb.js +2 -0
  30. package/dist/{py-editor-Dzsa3rsF.js.map → py-editor-Bux-ztRb.js.map} +1 -1
  31. package/dist/py-terminal-SqxsB6JH.js +2 -0
  32. package/dist/{py-terminal-BX_wPoTi.js.map → py-terminal-SqxsB6JH.js.map} +1 -1
  33. package/dist/storage.js +1 -421
  34. package/dist/storage.js.map +1 -1
  35. package/dist/toml-CvAfdf9_.js +3 -0
  36. package/dist/toml-CvAfdf9_.js.map +1 -0
  37. package/dist/toml-DiUM0_qs.js +3 -0
  38. package/dist/{toml-CkEFU7ly.js.map → toml-DiUM0_qs.js.map} +1 -1
  39. package/dist/xterm-BY7uk_OU.js +2 -0
  40. package/dist/xterm-BY7uk_OU.js.map +1 -0
  41. package/dist/xterm-readline-CZfBw7ic.js +2 -0
  42. package/dist/xterm-readline-CZfBw7ic.js.map +1 -0
  43. package/dist/xterm_addon-fit--gyF3PcZ.js +2 -0
  44. package/dist/xterm_addon-fit--gyF3PcZ.js.map +1 -0
  45. package/dist/xterm_addon-web-links-Cnej-nJ6.js +2 -0
  46. package/dist/xterm_addon-web-links-Cnej-nJ6.js.map +1 -0
  47. package/dist/zip-Bf48tRr5.js +2 -0
  48. package/dist/zip-Bf48tRr5.js.map +1 -0
  49. package/package.json +1 -1
  50. package/src/core.js +2 -2
  51. package/src/plugins/error.js +1 -1
  52. package/src/stdlib/pyscript.js +13 -13
  53. package/dist/codemirror-1dOfKU91.js +0 -1832
  54. package/dist/codemirror_commands-CKMxnUcp.js +0 -1714
  55. package/dist/codemirror_lang-python-D9DYtDWr.js +0 -2462
  56. package/dist/codemirror_language-B5lTPv2c.js +0 -5337
  57. package/dist/codemirror_state-n1sFh2hh.js +0 -3930
  58. package/dist/codemirror_view-1a1gCrKZ.js +0 -11428
  59. package/dist/core-D2ytnMSk.js +0 -4349
  60. package/dist/core-D2ytnMSk.js.map +0 -1
  61. package/dist/deprecations-manager-Cf_aFUPK.js +0 -29
  62. package/dist/donkey-Cc8svH2Q.js +0 -170
  63. package/dist/error-DWoeKPDI.js +0 -59
  64. package/dist/error-DWoeKPDI.js.map +0 -1
  65. package/dist/index-BVFrv_QY.js +0 -1911
  66. package/dist/mpy-CQiuZcjW.js +0 -255
  67. package/dist/py-BgH4mprx.js +0 -182
  68. package/dist/py-editor-Dzsa3rsF.js +0 -433
  69. package/dist/py-terminal-BX_wPoTi.js +0 -61
  70. package/dist/toml-CkEFU7ly.js +0 -103
  71. package/dist/toml-DTuPg5as.js +0 -5
  72. package/dist/toml-DTuPg5as.js.map +0 -1
  73. package/dist/xterm-eU6F6YKE.js +0 -10
  74. package/dist/xterm-eU6F6YKE.js.map +0 -1
  75. package/dist/xterm-readline-C7HDczqS.js +0 -501
  76. package/dist/xterm-readline-C7HDczqS.js.map +0 -1
  77. package/dist/xterm_addon-fit-Cotzxdkz.js +0 -10
  78. package/dist/xterm_addon-fit-Cotzxdkz.js.map +0 -1
  79. package/dist/xterm_addon-web-links-DoNfCjeX.js +0 -10
  80. package/dist/xterm_addon-web-links-DoNfCjeX.js.map +0 -1
  81. package/dist/zip-Cj6c-tjp.js +0 -13
  82. package/dist/zip-Cj6c-tjp.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"codemirror_lang-python-D9DYtDWr.js","sources":["../node_modules/@lezer/lr/dist/index.js","../node_modules/@lezer/python/dist/index.js","../node_modules/@codemirror/lang-python/dist/index.js"],"sourcesContent":["import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */;\n if (lookaheadRecord)\n this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (end > this.pos || type <= parser.maxNode) {\n this.pos = end;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = end;\n }\n this.pushState(nextState, start);\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { ExternalTokenizer, ContextTracker, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst printKeyword = 1,\n indent = 194,\n dedent = 195,\n newline$1 = 196,\n blankLineStart = 197,\n newlineBracketed = 198,\n eof = 199,\n stringContent = 200,\n Escape = 2,\n replacementStart = 3,\n stringEnd = 201,\n ParenL = 24,\n ParenthesizedExpression = 25,\n TupleExpression = 49,\n ComprehensionExpression = 50,\n BracketL = 55,\n ArrayExpression = 56,\n ArrayComprehensionExpression = 57,\n BraceL = 59,\n DictionaryExpression = 60,\n DictionaryComprehensionExpression = 61,\n SetExpression = 62,\n SetComprehensionExpression = 63,\n ArgList = 65,\n subscript = 238,\n String$1 = 71,\n stringStart = 241,\n stringStartD = 242,\n stringStartL = 243,\n stringStartLD = 244,\n stringStartR = 245,\n stringStartRD = 246,\n stringStartRL = 247,\n stringStartRLD = 248,\n FormatString = 72,\n stringStartF = 249,\n stringStartFD = 250,\n stringStartFL = 251,\n stringStartFLD = 252,\n stringStartFR = 253,\n stringStartFRD = 254,\n stringStartFRL = 255,\n stringStartFRLD = 256,\n FormatReplacement = 73,\n nestedFormatReplacement = 77,\n importList = 263,\n TypeParamList = 112,\n ParamList = 130,\n SequencePattern = 151,\n MappingPattern = 152,\n PatternArgList = 155;\n\nconst newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46,\n braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92,\n letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;\n\nconst bracketed = new Set([\n ParenthesizedExpression, TupleExpression, ComprehensionExpression, importList, ArgList, ParamList,\n ArrayExpression, ArrayComprehensionExpression, subscript,\n SetExpression, SetComprehensionExpression, FormatString, FormatReplacement, nestedFormatReplacement,\n DictionaryExpression, DictionaryComprehensionExpression,\n SequencePattern, MappingPattern, PatternArgList, TypeParamList\n]);\n\nfunction isLineBreak(ch) {\n return ch == newline || ch == carriageReturn\n}\n\nfunction isHex(ch) {\n return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n}\n\nconst newlines = new ExternalTokenizer((input, stack) => {\n let prev;\n if (input.next < 0) {\n input.acceptToken(eof);\n } else if (stack.context.flags & cx_Bracketed) {\n if (isLineBreak(input.next)) input.acceptToken(newlineBracketed, 1);\n } else if (((prev = input.peek(-1)) < 0 || isLineBreak(prev)) &&\n stack.canShift(blankLineStart)) {\n let spaces = 0;\n while (input.next == space || input.next == tab) { input.advance(); spaces++; }\n if (input.next == newline || input.next == carriageReturn || input.next == hash)\n input.acceptToken(blankLineStart, -spaces);\n } else if (isLineBreak(input.next)) {\n input.acceptToken(newline$1, 1);\n }\n}, {contextual: true});\n\nconst indentation = new ExternalTokenizer((input, stack) => {\n let context = stack.context;\n if (context.flags) return\n let prev = input.peek(-1);\n if (prev == newline || prev == carriageReturn) {\n let depth = 0, chars = 0;\n for (;;) {\n if (input.next == space) depth++;\n else if (input.next == tab) depth += 8 - (depth % 8);\n else break\n input.advance();\n chars++;\n }\n if (depth != context.indent &&\n input.next != newline && input.next != carriageReturn && input.next != hash) {\n if (depth < context.indent) input.acceptToken(dedent, -chars);\n else input.acceptToken(indent);\n }\n }\n});\n\n// Flags used in Context objects\nconst cx_Bracketed = 1, cx_String = 2, cx_DoubleQuote = 4, cx_Long = 8, cx_Raw = 16, cx_Format = 32;\n\nfunction Context(parent, indent, flags) {\n this.parent = parent;\n this.indent = indent;\n this.flags = flags;\n this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + indent + (indent << 4) + flags + (flags << 6);\n}\n\nconst topIndent = new Context(null, 0, 0);\n\nfunction countIndent(space) {\n let depth = 0;\n for (let i = 0; i < space.length; i++)\n depth += space.charCodeAt(i) == tab ? 8 - (depth % 8) : 1;\n return depth\n}\n\nconst stringFlags = new Map([\n [stringStart, 0],\n [stringStartD, cx_DoubleQuote],\n [stringStartL, cx_Long],\n [stringStartLD, cx_Long | cx_DoubleQuote],\n [stringStartR, cx_Raw],\n [stringStartRD, cx_Raw | cx_DoubleQuote],\n [stringStartRL, cx_Raw | cx_Long],\n [stringStartRLD, cx_Raw | cx_Long | cx_DoubleQuote],\n [stringStartF, cx_Format],\n [stringStartFD, cx_Format | cx_DoubleQuote],\n [stringStartFL, cx_Format | cx_Long],\n [stringStartFLD, cx_Format | cx_Long | cx_DoubleQuote],\n [stringStartFR, cx_Format | cx_Raw],\n [stringStartFRD, cx_Format | cx_Raw | cx_DoubleQuote],\n [stringStartFRL, cx_Format | cx_Raw | cx_Long],\n [stringStartFRLD, cx_Format | cx_Raw | cx_Long | cx_DoubleQuote]\n].map(([term, flags]) => [term, flags | cx_String]));\n\nconst trackIndent = new ContextTracker({\n start: topIndent,\n reduce(context, term, _, input) {\n if ((context.flags & cx_Bracketed) && bracketed.has(term) ||\n (term == String$1 || term == FormatString) && (context.flags & cx_String))\n return context.parent\n return context\n },\n shift(context, term, stack, input) {\n if (term == indent)\n return new Context(context, countIndent(input.read(input.pos, stack.pos)), 0)\n if (term == dedent)\n return context.parent\n if (term == ParenL || term == BracketL || term == BraceL || term == replacementStart)\n return new Context(context, 0, cx_Bracketed)\n if (stringFlags.has(term))\n return new Context(context, 0, stringFlags.get(term) | (context.flags & cx_Bracketed))\n return context\n },\n hash(context) { return context.hash }\n});\n\nconst legacyPrint = new ExternalTokenizer(input => {\n for (let i = 0; i < 5; i++) {\n if (input.next != \"print\".charCodeAt(i)) return\n input.advance();\n }\n if (/\\w/.test(String.fromCharCode(input.next))) return\n for (let off = 0;; off++) {\n let next = input.peek(off);\n if (next == space || next == tab) continue\n if (next != parenOpen && next != dot && next != newline && next != carriageReturn && next != hash)\n input.acceptToken(printKeyword);\n return\n }\n});\n\nconst strings = new ExternalTokenizer((input, stack) => {\n let {flags} = stack.context;\n let quote = (flags & cx_DoubleQuote) ? doubleQuote : singleQuote;\n let long = (flags & cx_Long) > 0;\n let escapes = !(flags & cx_Raw);\n let format = (flags & cx_Format) > 0;\n\n let start = input.pos;\n for (;;) {\n if (input.next < 0) {\n break\n } else if (format && input.next == braceOpen) {\n if (input.peek(1) == braceOpen) {\n input.advance(2);\n } else {\n if (input.pos == start) {\n input.acceptToken(replacementStart, 1);\n return\n }\n break\n }\n } else if (escapes && input.next == backslash) {\n if (input.pos == start) {\n input.advance();\n let escaped = input.next;\n if (escaped >= 0) {\n input.advance();\n skipEscape(input, escaped);\n }\n input.acceptToken(Escape);\n return\n }\n break\n } else if (input.next == quote && (!long || input.peek(1) == quote && input.peek(2) == quote)) {\n if (input.pos == start) {\n input.acceptToken(stringEnd, long ? 3 : 1);\n return\n }\n break\n } else if (input.next == newline) {\n if (long) {\n input.advance();\n } else if (input.pos == start) {\n input.acceptToken(stringEnd);\n return\n }\n break\n } else {\n input.advance();\n }\n }\n if (input.pos > start) input.acceptToken(stringContent);\n});\n\nfunction skipEscape(input, ch) {\n if (ch == letter_o) {\n for (let i = 0; i < 2 && input.next >= 48 && input.next <= 55; i++) input.advance();\n } else if (ch == letter_x) {\n for (let i = 0; i < 2 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_u) {\n for (let i = 0; i < 4 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_U) {\n for (let i = 0; i < 8 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_N) {\n if (input.next == braceOpen) {\n input.advance();\n while (input.next >= 0 && input.next != braceClose && input.next != singleQuote &&\n input.next != doubleQuote && input.next != newline) input.advance();\n if (input.next == braceClose) input.advance();\n }\n }\n}\n\nconst pythonHighlighting = styleTags({\n \"async \\\"*\\\" \\\"**\\\" FormatConversion FormatSpec\": tags.modifier,\n \"for while if elif else try except finally return raise break continue with pass assert await yield match case\": tags.controlKeyword,\n \"in not and or is del\": tags.operatorKeyword,\n \"from def class global nonlocal lambda\": tags.definitionKeyword,\n import: tags.moduleKeyword,\n \"with as print\": tags.keyword,\n Boolean: tags.bool,\n None: tags.null,\n VariableName: tags.variableName,\n \"CallExpression/VariableName\": tags.function(tags.variableName),\n \"FunctionDefinition/VariableName\": tags.function(tags.definition(tags.variableName)),\n \"ClassDefinition/VariableName\": tags.definition(tags.className),\n PropertyName: tags.propertyName,\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n Comment: tags.lineComment,\n Number: tags.number,\n String: tags.string,\n FormatString: tags.special(tags.string),\n Escape: tags.escape,\n UpdateOp: tags.updateOperator,\n \"ArithOp!\": tags.arithmeticOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n Ellipsis: tags.punctuation,\n At: tags.meta,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \".\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,await:44, or:54, and:56, in:60, not:62, is:64, if:70, else:72, lambda:76, yield:94, from:96, async:102, for:104, None:162, True:164, False:164, del:178, pass:182, break:186, continue:190, return:194, raise:202, import:206, as:208, global:212, nonlocal:214, assert:218, type:223, elif:236, while:240, try:246, except:248, finally:250, with:254, def:258, class:268, match:279, case:285};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5QQdO'#DoOOQS,5:Y,5:YO5eQdO'#HdOOQS,5:],5:]O5rQ!fO,5:]O5wQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8gQdO,59bO8lQdO,59bO8sQdO,59jO8zQdO'#HTO:QQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:iQdO,59aO'vQdO,59aO:wQdO,59aOOQS,59y,59yO:|QdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;[QdO,5:QO;aQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;rQdO,5:UO;wQdO,5:WOOOW'#Fy'#FyO;|OWO,5:aOOQS,5:a,5:aO<XQdO'#HwOOOW'#Dw'#DwOOOW'#Fz'#FzO<iOWO,5:bOOQS,5:b,5:bOOQS'#F}'#F}O<wQtO,5:iO?iQtO,5=`O@SQ#xO,5=`O@sQtO,5=`OOQS,5:},5:}OA[QeO'#GWOBnQdO,5;^OOQV,5=^,5=^OByQtO'#IPOChQdO,5;tOOQS-E:[-E:[OOQV,5;s,5;sO4dQdO'#FQOOQV-E9o-E9oOCpQtO,59]OEwQtO,59iOFbQdO'#HVOFmQdO'#HVO1XQdO'#HVOFxQdO'#DTOGQQdO,59mOGVQdO'#HZO'vQdO'#HZO0rQdO,5=tOOQS,5=t,5=tO0rQdO'#EROOQS'#ES'#ESOGtQdO'#GPOHUQdO,58|OHUQdO,58|O*xQdO,5:oOHdQtO'#H]OOQS,5:r,5:rOOQS,5:z,5:zOHwQdO,5;OOIYQdO'#IOO1XQdO'#H}OOQS,5;Q,5;QOOQS'#GT'#GTOInQtO,5;QOI|QdO,5;QOJRQdO'#IQOOQS,5;T,5;TOJaQdO'#H|OOQS,5;W,5;WOJrQdO,5;YO4iQdO,5;`O4iQdO,5;cOJzQtO'#ITO'vQdO'#ITOKUQdO,5;eO4VQdO,5;eO0rQdO,5;jO1XQdO,5;lOKZQeO'#EuOLgQgO,5;fO!!hQdO'#IUO4iQdO,5;jO!!sQdO,5;lO!!{QdO,5;qO!#WQtO,5;vO'vQdO,5;vPOOO,5=[,5=[P!#_OSO,5=[P!#dOdO,5=[O!&XQtO1G.jO!&`QtO1G.jO!)PQtO1G.jO!)ZQtO1G.jO!+tQtO1G.jO!,XQtO1G.jO!,lQdO'#HcO!,zQtO'#GuO0rQdO'#HcO!-UQdO'#HbOOQS,5:Z,5:ZO!-^QdO,5:ZO!-cQdO'#HeO!-nQdO'#HeO!.RQdO,5>OOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/RQtO1G.|O!/YQtO1G.|O1lQdO1G.|O!/uQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!/|QdO1G/eO!0^QdO1G/eO!0fQdO1G/fO'vQdO'#H[O!0kQdO'#H[O!0pQtO1G.{O!1QQdO,59iO!2WQdO,5=zO!2hQdO,5=zO!2pQdO1G/mO!2uQtO1G/mOOQS1G/l1G/lO!3VQdO,5=uO!3|QdO,5=uO0rQdO1G/qO!4kQdO1G/sO!4pQtO1G/sO!5QQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5bQdO'#HxO0rQdO'#HxO!5sQdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6RQ#xO1G2zO!6rQtO1G2zO'vQdO,5<jOOQS,5<j,5<jOOQS-E9|-E9|OOQS,5<r,5<rOOQS-E:U-E:UOOQV1G0x1G0xO1XQdO'#GRO!7ZQtO,5>kOOQS1G1`1G1`O!7xQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!7}QdO'#FrO!8YQdO,59oO!8bQdO1G/XO!8lQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9]QdO'#GtOOQS,5<k,5<kOOQS-E9}-E9}O!9nQdO1G.hOOQS1G0Z1G0ZO!9|QdO,5=wO!:^QdO,5=wO0rQdO1G0jO0rQdO1G0jO!:oQdO,5>jO!;QQdO,5>jO1XQdO,5>jO!;cQdO,5>iOOQS-E:R-E:RO!;hQdO1G0lO!;sQdO1G0lO!;xQdO,5>lO!<WQdO,5>lO!<fQdO,5>hO!<|QdO,5>hO!=_QdO'#EpO0rQdO1G0tO!=jQdO1G0tO!=oQgO1G0zO!AmQgO1G0}O!EhQdO,5>oO!ErQdO,5>oO!EzQtO,5>oO0rQdO1G1PO!FUQdO1G1PO4iQdO1G1UO!!sQdO1G1WOOQV,5;a,5;aO!FZQfO,5;aO!F`QgO1G1QO!JaQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JqQdO,5>pO!KOQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KWQdO'#FSO!KiQ!fO1G1WO!KqQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!KvQdO1G1]O!LOQdO'#F^OOQV1G1b1G1bO!#WQtO1G1bPOOO1G2v1G2vP!LTOSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LYQdO,5=|O!LmQdO,5=|OOQS1G/u1G/uO!LuQdO,5>PO!MVQdO,5>PO!M_QdO,5>PO!MrQdO,5>PO!NSQdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8bQdO7+$pO# uQdO1G.|O# |QdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!TQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!eQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!jQdO7+%PO#!rQdO7+%QO#!wQdO1G3fOOQS7+%X7+%XO##XQdO1G3fO##aQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##fQdO1G3aOOQS-E9q-E9qO#$]QdO7+%]OOQS7+%_7+%_O#$kQdO1G3aO#%YQdO7+%_O#%_QdO1G3gO#%oQdO1G3gO#%wQdO7+%]O#%|QdO,5>dO#&gQdO,5>dO#&gQdO,5>dOOQS'#Dx'#DxO#&xO&jO'#DzO#'TO`O'#HyOOOW1G3}1G3}O#'YQdO1G3}O#'bQdO1G3}O#'mQ#xO7+(fO#(^QtO1G2UP#(wQdO'#GOOOQS,5<m,5<mOOQS-E:P-E:POOQS7+&z7+&zOOQS1G3]1G3]OOQS,5<^,5<^OOQS-E9p-E9pOOQS7+$s7+$sO#)UQdO,5=`O#)oQdO,5=`O#*QQtO,5<aO#*eQdO1G3cOOQS-E9s-E9sOOQS7+&U7+&UO#*uQdO7+&UO#+TQdO,5<nO#+iQdO1G4UOOQS-E:Q-E:QO#+zQdO1G4UOOQS1G4T1G4TOOQS7+&W7+&WO#,]QdO7+&WOOQS,5<p,5<pO#,hQdO1G4WOOQS-E:S-E:SOOQS,5<l,5<lO#,vQdO1G4SOOQS-E:O-E:OO1XQdO'#EqO#-^QdO'#EqO#-iQdO'#IRO#-qQdO,5;[OOQS7+&`7+&`O0rQdO7+&`O#-vQgO7+&fO!JdQdO'#GXO4iQdO7+&fO4iQdO7+&iO#1tQtO,5<tO'vQdO,5<tO#2OQdO1G4ZOOQS-E:W-E:WO#2YQdO1G4ZO4iQdO7+&kO0rQdO7+&kOOQV7+&p7+&pO!KiQ!fO7+&rO!KqQdO7+&rO`QeO1G0{OOQV-E:X-E:XO4iQdO7+&lO4iQdO7+&lOOQV,5<u,5<uO#2bQdO,5<uO!JdQdO,5<uOOQV7+&l7+&lO#2mQgO7+&lO#6hQdO,5<vO#6sQdO1G4[OOQS-E:Y-E:YO#7QQdO1G4[O#7YQdO'#IWO#7hQdO'#IWO1XQdO'#IWOOQS'#IW'#IWO#7sQdO'#IVOOQS,5;n,5;nO#7{QdO,5;nO0rQdO'#FUOOQV7+&r7+&rO4iQdO7+&rOOQV7+&w7+&wO4iQdO7+&wO#8QQfO,5;xOOQV7+&|7+&|POOO7+(b7+(bO#8VQdO1G3iOOQS,5<c,5<cO#8eQdO1G3hOOQS-E9u-E9uO#8xQdO,5<dO#9TQdO,5<dO#9hQdO1G3kOOQS-E9v-E9vO#9xQdO1G3kO#:QQdO1G3kO#:bQdO1G3kO#9xQdO1G3kOOQS<<H[<<H[O#:mQtO1G1zOOQS<<Hk<<HkP#:zQdO'#FtO8sQdO1G3bO#;XQdO1G3bO#;^QdO<<HkOOQS<<Hl<<HlO#;nQdO7+)QOOQS<<Hs<<HsO#<OQtO1G1yP#<oQdO'#FsO#<|QdO7+)RO#=^QdO7+)RO#=fQdO<<HwO#=kQdO7+({OOQS<<Hy<<HyO#>bQdO,5<bO'vQdO,5<bOOQS-E9t-E9tOOQS<<Hw<<HwOOQS,5<g,5<gO0rQdO,5<gO#>gQdO1G4OOOQS-E9y-E9yO#?QQdO1G4OO<XQdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?cO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?nQdO7+)iO#?vQdO1G2zO#@aQdO1G2zP'vQdO'#FuO0rQdO<<IpO1XQdO1G2YP1XQdO'#GSO#@rQdO7+)pO#ATQdO7+)pOOQS<<Ir<<IrP1XQdO'#GUP0rQdO'#GQOOQS,5;],5;]O#AfQdO,5>mO#AtQdO,5>mOOQS1G0v1G0vOOQS<<Iz<<IzOOQV-E:V-E:VO4iQdO<<JQOOQV,5<s,5<sO4iQdO,5<sOOQV<<JQ<<JQOOQV<<JT<<JTO#A|QtO1G2`P#BWQdO'#GYO#B_QdO7+)uO#BiQgO<<JVO4iQdO<<JVOOQV<<J^<<J^O4iQdO<<J^O!KiQ!fO<<J^O#FdQgO7+&gOOQV<<JW<<JWO#FnQgO<<JWOOQV1G2a1G2aO1XQdO1G2aO#JiQdO1G2aO4iQdO<<JWO1XQdO1G2bP0rQdO'#G[O#JtQdO7+)vO#KRQdO7+)vOOQS'#FT'#FTO0rQdO,5>rO#KZQdO,5>rOOQS,5>r,5>rO#KfQdO,5>qO#KwQdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<<Jc<<JcO#LPQdO1G1dOOQS7+)T7+)TP#LUQdO'#FwO#LfQdO1G2OO#LyQdO1G2OO#MZQdO1G2OP#MfQdO'#FxO#MsQdO7+)VO#NTQdO7+)VO#NTQdO7+)VO#N]QdO7+)VO#NmQdO7+(|O8sQdO7+(|OOQSAN>VAN>VO$ WQdO<<LmOOQSAN>cAN>cO0rQdO1G1|O$ hQtO1G1|P$ rQdO'#FvOOQS1G2R1G2RP$!PQdO'#F{O$!^QdO7+)jO$!wQdO,5>gOOOO-E9z-E9zOOOW<<MT<<MTO$#VQdO7+(fOOQSAN?[AN?[OOQS7+'t7+'tO$#pQdO<<M[OOQS,5<q,5<qO$$RQdO1G4XOOQS-E:T-E:TOOQVAN?lAN?lOOQV1G2_1G2_O4iQdOAN?qO$$aQgOAN?qOOQVAN?xAN?xO4iQdOAN?xOOQV<<JR<<JRO4iQdOAN?rO4iQdO7+'{OOQV7+'{7+'{O1XQdO7+'{OOQVAN?rAN?rOOQS7+'|7+'|O$([QdO<<MbOOQS1G4^1G4^O0rQdO1G4^OOQS,5<w,5<wO$(iQdO1G4]OOQS-E:Z-E:ZOOQU'#G_'#G_O$(zQfO7+'OO$)VQdO'#F_O$*^QdO7+'jO$*nQdO7+'jOOQS7+'j7+'jO$*yQdO<<LqO$+ZQdO<<LqO$+ZQdO<<LqO$+cQdO'#H^OOQS<<Lh<<LhO$+mQdO<<LhOOQS7+'h7+'hOOQS'#D|'#D|OOOO1G4R1G4RO$,WQdO1G4RO$,`QdO1G4RP!=_QdO'#GVOOQVG25]G25]O4iQdOG25]OOQVG25dG25dOOQVG25^G25^OOQV<<Kg<<KgO4iQdO<<KgOOQS7+)x7+)xP$,kQdO'#G]OOQU-E:]-E:]OOQV<<Jj<<JjO$-_QtO'#FaOOQS'#Fc'#FcO$-oQdO'#FbO$.aQdO'#FbOOQS'#Fb'#FbO$.fQdO'#IYO$)VQdO'#FiO$)VQdO'#FiO$.}QdO'#FjO$)VQdO'#FkO$/UQdO'#IZOOQS'#IZ'#IZO$/sQdO,5;yOOQS<<KU<<KUO$/{QdO<<KUO$0]QdOANB]O$0mQdOANB]O$0uQdO'#H_OOQS'#H_'#H_O1sQdO'#DcO$1`QdO,5=xOOQSANBSANBSOOOO7+)m7+)mO$1wQdO7+)mOOQVLD*wLD*wOOQVANARANARO5rQ!fO'#GaO$2PQtO,5<SO$)VQdO'#FmOOQS,5<W,5<WOOQS'#Fd'#FdO$2qQdO,5;|O$2vQdO,5;|OOQS'#Fg'#FgO$)VQdO'#G`O$3hQdO,5<QO$4SQdO,5>tO$4dQdO,5>tO1XQdO,5<PO$4uQdO,5<TO$4zQdO,5<TO$)VQdO'#I[O$5PQdO'#I[O$5UQdO,5<UOOQS,5<V,5<VO'vQdO'#FpOOQU1G1e1G1eO4iQdO1G1eOOQSAN@pAN@pO$5ZQdOG27wO$5kQdO,59}OOQS1G3d1G3dOOOO<<MX<<MXOOQS,5<{,5<{OOQS-E:_-E:_O$5pQtO'#FaO$5wQdO'#I]O$6VQdO'#I]O$6_QdO,5<XOOQS1G1h1G1hO$6dQdO1G1hO$6iQdO,5<zOOQS-E:^-E:^O$7TQdO,5=OO$7lQdO1G4`OOQS-E:b-E:bOOQS1G1k1G1kOOQS1G1o1G1oO$7|QdO,5>vO$)VQdO,5>vOOQS1G1p1G1pO$8[QtO,5<[OOQU7+'P7+'PO$+cQdO1G/iO$)VQdO,5<YO$8cQdO,5>wO$8jQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)VQdO'#GdO$8rQdO1G4bO$8|QdO1G4bO$9UQdO1G4bOOQS7+%T7+%TO$9dQdO1G1tO$9rQtO'#FaO$9yQdO,5<}OOQS,5<},5<}O$:XQdO1G4cOOQS-E:a-E:aO$)VQdO,5<|O$:`QdO,5<|O$:eQdO7+)|OOQS-E:`-E:`O$:oQdO7+)|O$)VQdO,5<ZP$)VQdO'#GcO$:wQdO1G2hO$)VQdO1G2hP$;VQdO'#GbO$;^QdO<<MhO$;hQdO1G1uO$;vQdO7+(SO8sQdO'#C}O8sQdO,59bO8sQdO,59bO8sQdO,59bO$<UQtO,5=`O8sQdO1G.|O0rQdO1G/XO0rQdO7+$pP$<iQdO'#GOO'vQdO'#GtO$<vQdO,59bO$<{QdO,59bO$=SQdO,59mO$=XQdO1G/UO1sQdO'#DRO8sQdO,59j\",\n stateData: \"$=r~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PE`O%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO~OS'iO%['hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#lO%kWi~P!#lOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&gO%mWi%nWi~P!&gOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)eOVWi_Wi%qWi%rWi%sWi~P!)eO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.WOlji~P!.WOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/aOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PE`OV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!N_Olji~P!N_OV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/aOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/aO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$,yO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)cOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/aOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)VOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$,yOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)VOz/zO#[/OO%j.yO!['Oa~O{$da~P%SOg'Pa~P$)VOz0SOg'Pa~Oa0UO!['Oi~P$)cOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$,yO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)VO{0^O~Oa0UO!['Oq~P$)cOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)cOa0UO!['Oy~P$)cO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/aO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~\",\n goto: \"!=l'QPPPPPP'RP'Z*s+]+v,b,}-kP.YP'Z.y.y'ZPPP'Z2cPPPPPP2c5VPP5VP7g7p=xPP={>m>pPP'Z'ZPP?PPP'Z'ZPP'Z'Z'Z'Z'Z?T?}'ZP@QP@WD_G{HPPHSH^Hb'ZPPPHeHn'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHtIQIYPIaIgPIaPIaIaPPPIaPKuPLOLYL`KuPIaLiPIaPLpLvPLzM`M}NhLzLzNnN{LzLzLzLz! a! g! j! o! r! |!!S!!`!!r!!x!#S!#Y!#v!#|!$S!$^!$d!$j!$|!%W!%^!%d!%n!%t!%z!&Q!&W!&^!&h!&n!&x!'O!'X!'_!'n!'v!(Q!(XPPPPPPPPPPP!(_!(b!(h!(q!({!)WPPPPPPPPPPPP!-z!/`!3`!6pPP!6x!7X!7b!8Z!8Q!8d!8j!8m!8p!8s!8{!9lPPPPPPPPPPPPPPPPP!9o!9s!9yP!:_!:c!:o!:x!;U!;l!;o!;r!;x!<O!<U!<XP!<a!<j!=f!=i]eOn#g$j)t,P'}`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r}!cQ#c#p$R$d$p%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!P!dQ#c#p$R$d$p$u%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!R!eQ#c#p$R$d$p$u$v%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!T!fQ#c#p$R$d$p$u$v$w%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!V!gQ#c#p$R$d$p$u$v$w$x%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!X!hQ#c#p$R$d$p$u$v$w$x$y%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!]!hQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g'}TOTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r&cVOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/Z/s0c0d0e0f0h0i0j0k0n0r%mXOYZ[dnrxy}!P!Q!U!i!k#[#d#g#y#{#}$Q$h$j$}%S%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/Z0i0j0kQ#vqQ/[.kR0o0q't`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rh#jhz{$W$Z&l&q)S)X+f+g-RW#rq&].k0qQ$]|Q$a!OQ$n!VQ$o!WW$|!i'm*d,gS&[#s#tQ'S$iQ(s&UQ)U&nU)Y&s)Z+jW)a&w+m-T-{Q*Q']W*R'_,`-h.TQ+l)`S,_*S*TQ-Q+eQ-_,TQ-c,WQ.R-al.W-l.^._.a.z.|/R/j/o/t/y0U0Z0^Q/S.`Q/a.tQ/l/OU0P/u0S0[X0V/z0W0_0`R&Z#r!_!wYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZR%^!vQ!{YQ%x#[Q&d#}Q&g$QR,{+YT.j-s/s![!jQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0gQ&X#kQ'c$oR*^'dR'l$|Q%V!mR/_.r'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rS#a_#b!P.[-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rT#a_#bT#^^#_R(o%xa(l%x(n(o+`,{-y-z.oT+[(k+]R-z,{Q$PsQ+l)aR,^*RX#}s$O$P&fQ&y$aQ'a$nQ'd$oR)s'SQ)b&wV-S+m-T-{ZgOn$j)t,PXkOn)t,PQ$k!TQ&z$bQ&{$cQ'^$mQ'b$oQ)q'RQ)x'WQ){'XQ)|'YQ*Z'`S*]'c'dQ+s)gQ+u)hQ+v)iQ+z)oS+|)r*[Q,Q)vQ,R)wS,S)y)zQ,d*^Q-V+rQ-W+tQ-Y+{S-Z+},OQ-`,UQ-b,VQ-|-XQ.O-[Q.P-^Q.Q-_Q.p-}Q.q.RQ/W.dR/r/XWkOn)t,PR#mjQ'`$nS)r'S'aR,O)sQ,]*RR-f,^Q*['`Q+})rR-[,OZiOjn)t,PQ'f$pR*`'gT-j,e-ku.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^t.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^Q/S.`X0V/z0W0_0`!P.Z-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`Q.w.YR/f.xg.z.].{/b/i/n/|0O0Q0]0a0bu.b-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^X.u.W.b/a0PR/c.tV0R/u0S0[R/X.dQnOS#on,PR,P)tQ&^#uR(x&^S%m#R#wS(_%m(bT(b%p&`Q%a!yQ%h!}W(P%a%h(U(YQ(U%eR(Y%jQ&i$RR)O&iQ(e%qQ*{(`T+R(e*{Q'n%OR*e'nS'q%R%SY*i'q*j,m-q.hU*j'r's'tU,m*k*l*mS-q,n,oR.h-rQ#Y]R%t#YQ#_^R%y#_Q(h%vS+W(h+XR+X(iQ+](kR,|+]Q#b_R%{#bQ#ebQ%}#cW&Q#e%}({+bQ({&cR+b0gQ$OsS&e$O&fR&f$PQ&v$_R)_&vQ&V#jR(t&VQ&m$VS)T&m+hR+h)UQ$Z{R&p$ZQ&t$]R)[&tQ+n)bR-U+nQ#hfR&S#hQ)f&zR+q)fQ&}$dS)m&})nR)n'OQ'V$kR)u'VQ'[$lS*P'[,ZR,Z*QQ,a*VR-i,aWjOn)t,PR#ljQ-k,eR.U-kd.{.]/b/i/n/|0O0Q0]0a0bR/h.{U.s.W/a0PR/`.sQ/{/nS0X/{0YR0Y/|S/v/b/cR0T/vQ.}.]R/k.}R!ZPXmOn)t,PWlOn)t,PR'T$jYfOn$j)t,PR&R#g[sOn#g$j)t,PR&d#}&bQOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/Z/s0c0d0e0f0h0i0j0k0n0rQ!nTQ#caQ#poU$Rt%c(SS$d!R$gQ$p!XQ$u!cQ$v!dQ$w!eQ$x!fQ$y!gQ$z!hQ%e!zQ%j#OQ%p#SQ%q#TQ&`#xQ'O$eQ'g$qQ(q&OU(|&h(}+cW)j&|)l+x+yQ*o'|Q*x(]Q+w)kQ,v+QQ/q/VR0g0lQ!yYQ!}ZQ$b!PQ$c!QQ%R!kQ't%S^'{%`%g(O(W*q*t*v^*f'p*h,k,l-p.g/ZQ*l'rQ*m'sQ+t)gQ,j*gQ,n*kQ-n,hQ-o,iQ-r,oQ.e-mR/Y.f[bOn#g$j)t,P!^!vYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZQ#R[Q#fdS#wrxQ$UyW$_}$Q'P)pS$l!U$hW${!i'm*d,gS%v#[+Y`&P#d%|(p(r(z+a-O0kQ&a#yQ&b#{Q&c#}Q'j$}Q'z%^W([%l(^*y*}Q(`%nQ(i%wQ(v&ZS(y&_0iQ)P&jQ)Q&kU)]&u)^+kQ)d&xQ)y'WY)}'Z*O,X,Y-dQ*b'lS*n'w0jW+P(d*z,s,wW+T(g+V,y,zQ+p)eQ,U)zQ,c*YQ,x+UQ-P+dQ-e,]Q-v,uR.S-fhUOn#d#g$j%|&_'w(p(r)t,P%S!uYZ[drxy}!P!Q!U!i!k#[#y#{#}$Q$h$}%S%^%`%g%l%n%w&Z&j&k&u&x'P'W'Z'l'm'p'r's(O(W(^(d(g(z)^)e)g)p)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/Z0i0j0kQ#qpW%W!o!s0d0nQ%X!pQ%Y!qQ%[!tQ%f0cS'v%Z0hQ'x0eQ'y0fQ,p*rQ-u,qS.i-s/sR0p0rU#uq.k0qR(w&][cOn#g$j)t,PZ!xY#[#}$Q+YQ#W[Q#zrR$TxQ%b!yQ%i!}Q%o#RQ'j${Q(V%eQ(Z%jQ(c%pQ(f%qQ*|(`Q,f*bQ-t,pQ.m-uR/].lQ$StQ(R%cR*s(SQ.l-sR/}/sR#QZR#V[R%Q!iQ%O!iV*c'm*d,g!]!lQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0gR%T!kT#]^#_Q%x#[R,{+YQ(m%xS+_(n(oQ,}+`Q-x,{S.n-y-zR/^.oT+Z(k+]Q$`}Q&g$QQ)o'PR+{)pQ$XzQ)W&qR+i)XQ$XzQ&o$WQ)W&qR+i)XQ#khW$Vz$W&q)XQ$[{Q&r$ZZ)R&l)S+f+g-RR$^|R)c&wXlOn)t,PQ$f!RR'Q$gQ$m!UR'R$hR*X'_Q*V'_V-g,`-h.TQ.d-lQ/P.^R/Q._U.]-l.^._Q/U.aQ/b.tQ/g.zU/i.|/j/yQ/n/RQ/|/oQ0O/tU0Q/u0S0[Q0]0UQ0a0ZR0b0^R/T.`R/d.t\",\n nodeNames: \"⚠ print Escape { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard\",\n maxTerm: 277,\n context: trackIndent,\n nodeProps: [\n [\"isolate\", -5,4,71,72,73,77,\"\"],\n [\"group\", -15,6,85,87,88,90,92,94,96,98,99,100,102,105,108,110,\"Statement Statement\",-22,8,18,21,25,40,49,50,56,57,60,61,62,63,64,67,70,71,72,79,80,81,82,\"Expression\",-10,114,116,119,121,122,126,128,133,135,138,\"Statement\",-9,143,144,147,148,150,151,152,153,154,\"Pattern\"],\n [\"openedBy\", 23,\"(\",54,\"[\",58,\"{\"],\n [\"closedBy\", 24,\")\",55,\"]\",59,\"}\"]\n ],\n propSources: [pythonHighlighting],\n skippedNodes: [0,4],\n repeatNodeCount: 34,\n tokenData: \"!2|~R!`OX%TXY%oY[%T[]%o]p%Tpq%oqr'ars)Yst*xtu%Tuv,dvw-hwx.Uxy/tyz0[z{0r{|2S|}2p}!O3W!O!P4_!P!Q:Z!Q!R;k!R![>_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T\",\n tokenizers: [legacyPrint, indentation, newlines, strings, 0, 1, 2, 3, 4],\n topRules: {\"Script\":[0,5]},\n specialized: [{term: 221, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 7652\n});\n\nexport { parser };\n","import { parser } from '@lezer/python';\nimport { syntaxTree, LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Body\",\n \"FunctionDefinition\", \"ClassDefinition\", \"LambdaExpression\",\n \"ForStatement\", \"MatchClause\"\n]);\nfunction defID(type) {\n return (node, def, outer) => {\n if (outer)\n return false;\n let id = node.node.getChild(\"VariableName\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst gatherCompletions = {\n FunctionDefinition: /*@__PURE__*/defID(\"function\"),\n ClassDefinition: /*@__PURE__*/defID(\"class\"),\n ForStatement(node, def, outer) {\n if (outer)\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \"in\")\n break;\n }\n },\n ImportStatement(_node, def) {\n var _a, _b;\n let { node } = _node;\n let isFrom = ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"from\";\n for (let ch = node.getChild(\"import\"); ch; ch = ch.nextSibling) {\n if (ch.name == \"VariableName\" && ((_b = ch.nextSibling) === null || _b === void 0 ? void 0 : _b.name) != \"as\")\n def(ch, isFrom ? \"variable\" : \"namespace\");\n }\n },\n AssignStatement(node, def) {\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \":\" || child.name == \"AssignOp\")\n break;\n }\n },\n ParamList(node, def) {\n for (let prev = null, child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\" && (!prev || !/\\*|AssignOp/.test(prev.name)))\n def(child, \"variable\");\n prev = child;\n }\n },\n CapturePattern: /*@__PURE__*/defID(\"variable\"),\n AsPattern: /*@__PURE__*/defID(\"variable\"),\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def, top) || !top && ScopeNodes.has(node.name))\n return false;\n top = false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w\\xa1-\\uffff][\\w\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\"String\", \"FormatString\", \"Comment\", \"PropertyName\"];\n/**\nCompletion source that looks up locally defined names in\nPython code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nconst globals = /*@__PURE__*/[\n \"__annotations__\", \"__builtins__\", \"__debug__\", \"__doc__\", \"__import__\", \"__name__\",\n \"__loader__\", \"__package__\", \"__spec__\",\n \"False\", \"None\", \"True\"\n].map(n => ({ label: n, type: \"constant\" })).concat(/*@__PURE__*/[\n \"ArithmeticError\", \"AssertionError\", \"AttributeError\", \"BaseException\", \"BlockingIOError\",\n \"BrokenPipeError\", \"BufferError\", \"BytesWarning\", \"ChildProcessError\", \"ConnectionAbortedError\",\n \"ConnectionError\", \"ConnectionRefusedError\", \"ConnectionResetError\", \"DeprecationWarning\",\n \"EOFError\", \"Ellipsis\", \"EncodingWarning\", \"EnvironmentError\", \"Exception\", \"FileExistsError\",\n \"FileNotFoundError\", \"FloatingPointError\", \"FutureWarning\", \"GeneratorExit\", \"IOError\",\n \"ImportError\", \"ImportWarning\", \"IndentationError\", \"IndexError\", \"InterruptedError\",\n \"IsADirectoryError\", \"KeyError\", \"KeyboardInterrupt\", \"LookupError\", \"MemoryError\",\n \"ModuleNotFoundError\", \"NameError\", \"NotADirectoryError\", \"NotImplemented\", \"NotImplementedError\",\n \"OSError\", \"OverflowError\", \"PendingDeprecationWarning\", \"PermissionError\", \"ProcessLookupError\",\n \"RecursionError\", \"ReferenceError\", \"ResourceWarning\", \"RuntimeError\", \"RuntimeWarning\",\n \"StopAsyncIteration\", \"StopIteration\", \"SyntaxError\", \"SyntaxWarning\", \"SystemError\",\n \"SystemExit\", \"TabError\", \"TimeoutError\", \"TypeError\", \"UnboundLocalError\", \"UnicodeDecodeError\",\n \"UnicodeEncodeError\", \"UnicodeError\", \"UnicodeTranslateError\", \"UnicodeWarning\", \"UserWarning\",\n \"ValueError\", \"Warning\", \"ZeroDivisionError\"\n].map(n => ({ label: n, type: \"type\" }))).concat(/*@__PURE__*/[\n \"bool\", \"bytearray\", \"bytes\", \"classmethod\", \"complex\", \"float\", \"frozenset\", \"int\", \"list\",\n \"map\", \"memoryview\", \"object\", \"range\", \"set\", \"staticmethod\", \"str\", \"super\", \"tuple\", \"type\"\n].map(n => ({ label: n, type: \"class\" }))).concat(/*@__PURE__*/[\n \"abs\", \"aiter\", \"all\", \"anext\", \"any\", \"ascii\", \"bin\", \"breakpoint\", \"callable\", \"chr\",\n \"compile\", \"delattr\", \"dict\", \"dir\", \"divmod\", \"enumerate\", \"eval\", \"exec\", \"exit\", \"filter\",\n \"format\", \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\", \"input\", \"isinstance\",\n \"issubclass\", \"iter\", \"len\", \"license\", \"locals\", \"max\", \"min\", \"next\", \"oct\", \"open\",\n \"ord\", \"pow\", \"print\", \"property\", \"quit\", \"repr\", \"reversed\", \"round\", \"setattr\", \"slice\",\n \"sorted\", \"sum\", \"vars\", \"zip\"\n].map(n => ({ label: n, type: \"function\" })));\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"def ${name}(${params}):\\n\\t${}\", {\n label: \"def\",\n detail: \"function\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for ${name} in ${collection}:\\n\\t${}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while ${}:\\n\\t${}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try:\\n\\t${}\\nexcept ${error}:\\n\\t${}\", {\n label: \"try\",\n detail: \"/ except block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t\\n\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t${}\\nelse:\\n\\t${}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name}:\\n\\tdef __init__(self, ${params}):\\n\\t\\t\\t${}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${module}\", {\n label: \"import\",\n detail: \"statement\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"from ${module} import ${names}\", {\n label: \"from\",\n detail: \"import\",\n type: \"keyword\"\n })\n];\n/**\nAutocompletion for built-in Python globals and keywords.\n*/\nconst globalCompletion = /*@__PURE__*/ifNotIn(dontComplete, /*@__PURE__*/completeFromList(/*@__PURE__*/globals.concat(snippets)));\n\nfunction innerBody(context) {\n let { node, pos } = context;\n let lineIndent = context.lineIndent(pos, -1);\n let found = null;\n for (;;) {\n let before = node.childBefore(pos);\n if (!before) {\n break;\n }\n else if (before.name == \"Comment\") {\n pos = before.from;\n }\n else if (before.name == \"Body\") {\n if (context.baseIndentFor(before) + context.unit <= lineIndent)\n found = before;\n node = before;\n }\n else if (before.type.is(\"Statement\")) {\n node = before;\n }\n else {\n break;\n }\n }\n return found;\n}\nfunction indentBody(context, node) {\n let base = context.baseIndentFor(node);\n let line = context.lineAt(context.pos, -1), to = line.from + line.text.length;\n // Don't consider blank, deindented lines at the end of the\n // block part of the block\n if (/^\\s*($|#)/.test(line.text) &&\n context.node.to < to + 100 &&\n !/\\S/.test(context.state.sliceDoc(to, context.node.to)) &&\n context.lineIndent(context.pos, -1) <= base)\n return null;\n // A normally deindenting keyword that appears at a higher\n // indentation than the block should probably be handled by the next\n // level\n if (/^\\s*(else:|elif |except |finally:)/.test(context.textAfter) && context.lineIndent(context.pos, -1) > base)\n return null;\n return base + context.unit;\n}\n/**\nA language provider based on the [Lezer Python\nparser](https://github.com/lezer-parser/python), extended with\nhighlighting and indentation information.\n*/\nconst pythonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"python\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Body: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = indentBody(context, inner || context.node)) !== null && _a !== void 0 ? _a : context.continue();\n },\n IfStatement: cx => /^\\s*(else:|elif )/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"ForStatement WhileStatement\": cx => /^\\s*else:/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n TryStatement: cx => /^\\s*(except |finally:|else:)/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression\": /*@__PURE__*/delimitedIndent({ closing: \")\" }),\n \"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n \"ArrayExpression ArrayComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"]\" }),\n \"String FormatString\": () => null,\n Script: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = (inner && indentBody(context, inner))) !== null && _a !== void 0 ? _a : context.continue();\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"ArrayExpression DictionaryExpression SetExpression TupleExpression\": foldInside,\n Body: (node, state) => ({ from: node.from + 1, to: node.to - (node.to == state.doc.length ? 0 : 1) })\n })\n ],\n }),\n languageData: {\n closeBrackets: {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"'],\n stringPrefixes: [\"f\", \"fr\", \"rf\", \"r\", \"u\", \"b\", \"br\", \"rb\",\n \"F\", \"FR\", \"RF\", \"R\", \"U\", \"B\", \"BR\", \"RB\"]\n },\n commentTokens: { line: \"#\" },\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:)$/\n }\n});\n/**\nPython language support.\n*/\nfunction python() {\n return new LanguageSupport(pythonLanguage, [\n pythonLanguage.data.of({ autocomplete: localCompletionSource }),\n pythonLanguage.data.of({ autocomplete: globalCompletion }),\n ]);\n}\n\nexport { globalCompletion, localCompletionSource, python, pythonLanguage };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"codemirror_lang-python-DvjhpaK2.js","sources":["../node_modules/@lezer/lr/dist/index.js","../node_modules/@lezer/python/dist/index.js","../node_modules/@codemirror/lang-python/dist/index.js"],"sourcesContent":["import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */;\n if (lookaheadRecord)\n this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (end > this.pos || type <= parser.maxNode) {\n this.pos = end;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = end;\n }\n this.pushState(nextState, start);\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { ExternalTokenizer, ContextTracker, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst printKeyword = 1,\n indent = 194,\n dedent = 195,\n newline$1 = 196,\n blankLineStart = 197,\n newlineBracketed = 198,\n eof = 199,\n stringContent = 200,\n Escape = 2,\n replacementStart = 3,\n stringEnd = 201,\n ParenL = 24,\n ParenthesizedExpression = 25,\n TupleExpression = 49,\n ComprehensionExpression = 50,\n BracketL = 55,\n ArrayExpression = 56,\n ArrayComprehensionExpression = 57,\n BraceL = 59,\n DictionaryExpression = 60,\n DictionaryComprehensionExpression = 61,\n SetExpression = 62,\n SetComprehensionExpression = 63,\n ArgList = 65,\n subscript = 238,\n String$1 = 71,\n stringStart = 241,\n stringStartD = 242,\n stringStartL = 243,\n stringStartLD = 244,\n stringStartR = 245,\n stringStartRD = 246,\n stringStartRL = 247,\n stringStartRLD = 248,\n FormatString = 72,\n stringStartF = 249,\n stringStartFD = 250,\n stringStartFL = 251,\n stringStartFLD = 252,\n stringStartFR = 253,\n stringStartFRD = 254,\n stringStartFRL = 255,\n stringStartFRLD = 256,\n FormatReplacement = 73,\n nestedFormatReplacement = 77,\n importList = 263,\n TypeParamList = 112,\n ParamList = 130,\n SequencePattern = 151,\n MappingPattern = 152,\n PatternArgList = 155;\n\nconst newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46,\n braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92,\n letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;\n\nconst bracketed = new Set([\n ParenthesizedExpression, TupleExpression, ComprehensionExpression, importList, ArgList, ParamList,\n ArrayExpression, ArrayComprehensionExpression, subscript,\n SetExpression, SetComprehensionExpression, FormatString, FormatReplacement, nestedFormatReplacement,\n DictionaryExpression, DictionaryComprehensionExpression,\n SequencePattern, MappingPattern, PatternArgList, TypeParamList\n]);\n\nfunction isLineBreak(ch) {\n return ch == newline || ch == carriageReturn\n}\n\nfunction isHex(ch) {\n return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n}\n\nconst newlines = new ExternalTokenizer((input, stack) => {\n let prev;\n if (input.next < 0) {\n input.acceptToken(eof);\n } else if (stack.context.flags & cx_Bracketed) {\n if (isLineBreak(input.next)) input.acceptToken(newlineBracketed, 1);\n } else if (((prev = input.peek(-1)) < 0 || isLineBreak(prev)) &&\n stack.canShift(blankLineStart)) {\n let spaces = 0;\n while (input.next == space || input.next == tab) { input.advance(); spaces++; }\n if (input.next == newline || input.next == carriageReturn || input.next == hash)\n input.acceptToken(blankLineStart, -spaces);\n } else if (isLineBreak(input.next)) {\n input.acceptToken(newline$1, 1);\n }\n}, {contextual: true});\n\nconst indentation = new ExternalTokenizer((input, stack) => {\n let context = stack.context;\n if (context.flags) return\n let prev = input.peek(-1);\n if (prev == newline || prev == carriageReturn) {\n let depth = 0, chars = 0;\n for (;;) {\n if (input.next == space) depth++;\n else if (input.next == tab) depth += 8 - (depth % 8);\n else break\n input.advance();\n chars++;\n }\n if (depth != context.indent &&\n input.next != newline && input.next != carriageReturn && input.next != hash) {\n if (depth < context.indent) input.acceptToken(dedent, -chars);\n else input.acceptToken(indent);\n }\n }\n});\n\n// Flags used in Context objects\nconst cx_Bracketed = 1, cx_String = 2, cx_DoubleQuote = 4, cx_Long = 8, cx_Raw = 16, cx_Format = 32;\n\nfunction Context(parent, indent, flags) {\n this.parent = parent;\n this.indent = indent;\n this.flags = flags;\n this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + indent + (indent << 4) + flags + (flags << 6);\n}\n\nconst topIndent = new Context(null, 0, 0);\n\nfunction countIndent(space) {\n let depth = 0;\n for (let i = 0; i < space.length; i++)\n depth += space.charCodeAt(i) == tab ? 8 - (depth % 8) : 1;\n return depth\n}\n\nconst stringFlags = new Map([\n [stringStart, 0],\n [stringStartD, cx_DoubleQuote],\n [stringStartL, cx_Long],\n [stringStartLD, cx_Long | cx_DoubleQuote],\n [stringStartR, cx_Raw],\n [stringStartRD, cx_Raw | cx_DoubleQuote],\n [stringStartRL, cx_Raw | cx_Long],\n [stringStartRLD, cx_Raw | cx_Long | cx_DoubleQuote],\n [stringStartF, cx_Format],\n [stringStartFD, cx_Format | cx_DoubleQuote],\n [stringStartFL, cx_Format | cx_Long],\n [stringStartFLD, cx_Format | cx_Long | cx_DoubleQuote],\n [stringStartFR, cx_Format | cx_Raw],\n [stringStartFRD, cx_Format | cx_Raw | cx_DoubleQuote],\n [stringStartFRL, cx_Format | cx_Raw | cx_Long],\n [stringStartFRLD, cx_Format | cx_Raw | cx_Long | cx_DoubleQuote]\n].map(([term, flags]) => [term, flags | cx_String]));\n\nconst trackIndent = new ContextTracker({\n start: topIndent,\n reduce(context, term, _, input) {\n if ((context.flags & cx_Bracketed) && bracketed.has(term) ||\n (term == String$1 || term == FormatString) && (context.flags & cx_String))\n return context.parent\n return context\n },\n shift(context, term, stack, input) {\n if (term == indent)\n return new Context(context, countIndent(input.read(input.pos, stack.pos)), 0)\n if (term == dedent)\n return context.parent\n if (term == ParenL || term == BracketL || term == BraceL || term == replacementStart)\n return new Context(context, 0, cx_Bracketed)\n if (stringFlags.has(term))\n return new Context(context, 0, stringFlags.get(term) | (context.flags & cx_Bracketed))\n return context\n },\n hash(context) { return context.hash }\n});\n\nconst legacyPrint = new ExternalTokenizer(input => {\n for (let i = 0; i < 5; i++) {\n if (input.next != \"print\".charCodeAt(i)) return\n input.advance();\n }\n if (/\\w/.test(String.fromCharCode(input.next))) return\n for (let off = 0;; off++) {\n let next = input.peek(off);\n if (next == space || next == tab) continue\n if (next != parenOpen && next != dot && next != newline && next != carriageReturn && next != hash)\n input.acceptToken(printKeyword);\n return\n }\n});\n\nconst strings = new ExternalTokenizer((input, stack) => {\n let {flags} = stack.context;\n let quote = (flags & cx_DoubleQuote) ? doubleQuote : singleQuote;\n let long = (flags & cx_Long) > 0;\n let escapes = !(flags & cx_Raw);\n let format = (flags & cx_Format) > 0;\n\n let start = input.pos;\n for (;;) {\n if (input.next < 0) {\n break\n } else if (format && input.next == braceOpen) {\n if (input.peek(1) == braceOpen) {\n input.advance(2);\n } else {\n if (input.pos == start) {\n input.acceptToken(replacementStart, 1);\n return\n }\n break\n }\n } else if (escapes && input.next == backslash) {\n if (input.pos == start) {\n input.advance();\n let escaped = input.next;\n if (escaped >= 0) {\n input.advance();\n skipEscape(input, escaped);\n }\n input.acceptToken(Escape);\n return\n }\n break\n } else if (input.next == quote && (!long || input.peek(1) == quote && input.peek(2) == quote)) {\n if (input.pos == start) {\n input.acceptToken(stringEnd, long ? 3 : 1);\n return\n }\n break\n } else if (input.next == newline) {\n if (long) {\n input.advance();\n } else if (input.pos == start) {\n input.acceptToken(stringEnd);\n return\n }\n break\n } else {\n input.advance();\n }\n }\n if (input.pos > start) input.acceptToken(stringContent);\n});\n\nfunction skipEscape(input, ch) {\n if (ch == letter_o) {\n for (let i = 0; i < 2 && input.next >= 48 && input.next <= 55; i++) input.advance();\n } else if (ch == letter_x) {\n for (let i = 0; i < 2 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_u) {\n for (let i = 0; i < 4 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_U) {\n for (let i = 0; i < 8 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_N) {\n if (input.next == braceOpen) {\n input.advance();\n while (input.next >= 0 && input.next != braceClose && input.next != singleQuote &&\n input.next != doubleQuote && input.next != newline) input.advance();\n if (input.next == braceClose) input.advance();\n }\n }\n}\n\nconst pythonHighlighting = styleTags({\n \"async \\\"*\\\" \\\"**\\\" FormatConversion FormatSpec\": tags.modifier,\n \"for while if elif else try except finally return raise break continue with pass assert await yield match case\": tags.controlKeyword,\n \"in not and or is del\": tags.operatorKeyword,\n \"from def class global nonlocal lambda\": tags.definitionKeyword,\n import: tags.moduleKeyword,\n \"with as print\": tags.keyword,\n Boolean: tags.bool,\n None: tags.null,\n VariableName: tags.variableName,\n \"CallExpression/VariableName\": tags.function(tags.variableName),\n \"FunctionDefinition/VariableName\": tags.function(tags.definition(tags.variableName)),\n \"ClassDefinition/VariableName\": tags.definition(tags.className),\n PropertyName: tags.propertyName,\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n Comment: tags.lineComment,\n Number: tags.number,\n String: tags.string,\n FormatString: tags.special(tags.string),\n Escape: tags.escape,\n UpdateOp: tags.updateOperator,\n \"ArithOp!\": tags.arithmeticOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n Ellipsis: tags.punctuation,\n At: tags.meta,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \".\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,await:44, or:54, and:56, in:60, not:62, is:64, if:70, else:72, lambda:76, yield:94, from:96, async:102, for:104, None:162, True:164, False:164, del:178, pass:182, break:186, continue:190, return:194, raise:202, import:206, as:208, global:212, nonlocal:214, assert:218, type:223, elif:236, while:240, try:246, except:248, finally:250, with:254, def:258, class:268, match:279, case:285};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5QQdO'#DoOOQS,5:Y,5:YO5eQdO'#HdOOQS,5:],5:]O5rQ!fO,5:]O5wQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8gQdO,59bO8lQdO,59bO8sQdO,59jO8zQdO'#HTO:QQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:iQdO,59aO'vQdO,59aO:wQdO,59aOOQS,59y,59yO:|QdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;[QdO,5:QO;aQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;rQdO,5:UO;wQdO,5:WOOOW'#Fy'#FyO;|OWO,5:aOOQS,5:a,5:aO<XQdO'#HwOOOW'#Dw'#DwOOOW'#Fz'#FzO<iOWO,5:bOOQS,5:b,5:bOOQS'#F}'#F}O<wQtO,5:iO?iQtO,5=`O@SQ#xO,5=`O@sQtO,5=`OOQS,5:},5:}OA[QeO'#GWOBnQdO,5;^OOQV,5=^,5=^OByQtO'#IPOChQdO,5;tOOQS-E:[-E:[OOQV,5;s,5;sO4dQdO'#FQOOQV-E9o-E9oOCpQtO,59]OEwQtO,59iOFbQdO'#HVOFmQdO'#HVO1XQdO'#HVOFxQdO'#DTOGQQdO,59mOGVQdO'#HZO'vQdO'#HZO0rQdO,5=tOOQS,5=t,5=tO0rQdO'#EROOQS'#ES'#ESOGtQdO'#GPOHUQdO,58|OHUQdO,58|O*xQdO,5:oOHdQtO'#H]OOQS,5:r,5:rOOQS,5:z,5:zOHwQdO,5;OOIYQdO'#IOO1XQdO'#H}OOQS,5;Q,5;QOOQS'#GT'#GTOInQtO,5;QOI|QdO,5;QOJRQdO'#IQOOQS,5;T,5;TOJaQdO'#H|OOQS,5;W,5;WOJrQdO,5;YO4iQdO,5;`O4iQdO,5;cOJzQtO'#ITO'vQdO'#ITOKUQdO,5;eO4VQdO,5;eO0rQdO,5;jO1XQdO,5;lOKZQeO'#EuOLgQgO,5;fO!!hQdO'#IUO4iQdO,5;jO!!sQdO,5;lO!!{QdO,5;qO!#WQtO,5;vO'vQdO,5;vPOOO,5=[,5=[P!#_OSO,5=[P!#dOdO,5=[O!&XQtO1G.jO!&`QtO1G.jO!)PQtO1G.jO!)ZQtO1G.jO!+tQtO1G.jO!,XQtO1G.jO!,lQdO'#HcO!,zQtO'#GuO0rQdO'#HcO!-UQdO'#HbOOQS,5:Z,5:ZO!-^QdO,5:ZO!-cQdO'#HeO!-nQdO'#HeO!.RQdO,5>OOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/RQtO1G.|O!/YQtO1G.|O1lQdO1G.|O!/uQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!/|QdO1G/eO!0^QdO1G/eO!0fQdO1G/fO'vQdO'#H[O!0kQdO'#H[O!0pQtO1G.{O!1QQdO,59iO!2WQdO,5=zO!2hQdO,5=zO!2pQdO1G/mO!2uQtO1G/mOOQS1G/l1G/lO!3VQdO,5=uO!3|QdO,5=uO0rQdO1G/qO!4kQdO1G/sO!4pQtO1G/sO!5QQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5bQdO'#HxO0rQdO'#HxO!5sQdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6RQ#xO1G2zO!6rQtO1G2zO'vQdO,5<jOOQS,5<j,5<jOOQS-E9|-E9|OOQS,5<r,5<rOOQS-E:U-E:UOOQV1G0x1G0xO1XQdO'#GRO!7ZQtO,5>kOOQS1G1`1G1`O!7xQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!7}QdO'#FrO!8YQdO,59oO!8bQdO1G/XO!8lQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9]QdO'#GtOOQS,5<k,5<kOOQS-E9}-E9}O!9nQdO1G.hOOQS1G0Z1G0ZO!9|QdO,5=wO!:^QdO,5=wO0rQdO1G0jO0rQdO1G0jO!:oQdO,5>jO!;QQdO,5>jO1XQdO,5>jO!;cQdO,5>iOOQS-E:R-E:RO!;hQdO1G0lO!;sQdO1G0lO!;xQdO,5>lO!<WQdO,5>lO!<fQdO,5>hO!<|QdO,5>hO!=_QdO'#EpO0rQdO1G0tO!=jQdO1G0tO!=oQgO1G0zO!AmQgO1G0}O!EhQdO,5>oO!ErQdO,5>oO!EzQtO,5>oO0rQdO1G1PO!FUQdO1G1PO4iQdO1G1UO!!sQdO1G1WOOQV,5;a,5;aO!FZQfO,5;aO!F`QgO1G1QO!JaQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JqQdO,5>pO!KOQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KWQdO'#FSO!KiQ!fO1G1WO!KqQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!KvQdO1G1]O!LOQdO'#F^OOQV1G1b1G1bO!#WQtO1G1bPOOO1G2v1G2vP!LTOSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LYQdO,5=|O!LmQdO,5=|OOQS1G/u1G/uO!LuQdO,5>PO!MVQdO,5>PO!M_QdO,5>PO!MrQdO,5>PO!NSQdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8bQdO7+$pO# uQdO1G.|O# |QdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!TQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!eQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!jQdO7+%PO#!rQdO7+%QO#!wQdO1G3fOOQS7+%X7+%XO##XQdO1G3fO##aQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##fQdO1G3aOOQS-E9q-E9qO#$]QdO7+%]OOQS7+%_7+%_O#$kQdO1G3aO#%YQdO7+%_O#%_QdO1G3gO#%oQdO1G3gO#%wQdO7+%]O#%|QdO,5>dO#&gQdO,5>dO#&gQdO,5>dOOQS'#Dx'#DxO#&xO&jO'#DzO#'TO`O'#HyOOOW1G3}1G3}O#'YQdO1G3}O#'bQdO1G3}O#'mQ#xO7+(fO#(^QtO1G2UP#(wQdO'#GOOOQS,5<m,5<mOOQS-E:P-E:POOQS7+&z7+&zOOQS1G3]1G3]OOQS,5<^,5<^OOQS-E9p-E9pOOQS7+$s7+$sO#)UQdO,5=`O#)oQdO,5=`O#*QQtO,5<aO#*eQdO1G3cOOQS-E9s-E9sOOQS7+&U7+&UO#*uQdO7+&UO#+TQdO,5<nO#+iQdO1G4UOOQS-E:Q-E:QO#+zQdO1G4UOOQS1G4T1G4TOOQS7+&W7+&WO#,]QdO7+&WOOQS,5<p,5<pO#,hQdO1G4WOOQS-E:S-E:SOOQS,5<l,5<lO#,vQdO1G4SOOQS-E:O-E:OO1XQdO'#EqO#-^QdO'#EqO#-iQdO'#IRO#-qQdO,5;[OOQS7+&`7+&`O0rQdO7+&`O#-vQgO7+&fO!JdQdO'#GXO4iQdO7+&fO4iQdO7+&iO#1tQtO,5<tO'vQdO,5<tO#2OQdO1G4ZOOQS-E:W-E:WO#2YQdO1G4ZO4iQdO7+&kO0rQdO7+&kOOQV7+&p7+&pO!KiQ!fO7+&rO!KqQdO7+&rO`QeO1G0{OOQV-E:X-E:XO4iQdO7+&lO4iQdO7+&lOOQV,5<u,5<uO#2bQdO,5<uO!JdQdO,5<uOOQV7+&l7+&lO#2mQgO7+&lO#6hQdO,5<vO#6sQdO1G4[OOQS-E:Y-E:YO#7QQdO1G4[O#7YQdO'#IWO#7hQdO'#IWO1XQdO'#IWOOQS'#IW'#IWO#7sQdO'#IVOOQS,5;n,5;nO#7{QdO,5;nO0rQdO'#FUOOQV7+&r7+&rO4iQdO7+&rOOQV7+&w7+&wO4iQdO7+&wO#8QQfO,5;xOOQV7+&|7+&|POOO7+(b7+(bO#8VQdO1G3iOOQS,5<c,5<cO#8eQdO1G3hOOQS-E9u-E9uO#8xQdO,5<dO#9TQdO,5<dO#9hQdO1G3kOOQS-E9v-E9vO#9xQdO1G3kO#:QQdO1G3kO#:bQdO1G3kO#9xQdO1G3kOOQS<<H[<<H[O#:mQtO1G1zOOQS<<Hk<<HkP#:zQdO'#FtO8sQdO1G3bO#;XQdO1G3bO#;^QdO<<HkOOQS<<Hl<<HlO#;nQdO7+)QOOQS<<Hs<<HsO#<OQtO1G1yP#<oQdO'#FsO#<|QdO7+)RO#=^QdO7+)RO#=fQdO<<HwO#=kQdO7+({OOQS<<Hy<<HyO#>bQdO,5<bO'vQdO,5<bOOQS-E9t-E9tOOQS<<Hw<<HwOOQS,5<g,5<gO0rQdO,5<gO#>gQdO1G4OOOQS-E9y-E9yO#?QQdO1G4OO<XQdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?cO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?nQdO7+)iO#?vQdO1G2zO#@aQdO1G2zP'vQdO'#FuO0rQdO<<IpO1XQdO1G2YP1XQdO'#GSO#@rQdO7+)pO#ATQdO7+)pOOQS<<Ir<<IrP1XQdO'#GUP0rQdO'#GQOOQS,5;],5;]O#AfQdO,5>mO#AtQdO,5>mOOQS1G0v1G0vOOQS<<Iz<<IzOOQV-E:V-E:VO4iQdO<<JQOOQV,5<s,5<sO4iQdO,5<sOOQV<<JQ<<JQOOQV<<JT<<JTO#A|QtO1G2`P#BWQdO'#GYO#B_QdO7+)uO#BiQgO<<JVO4iQdO<<JVOOQV<<J^<<J^O4iQdO<<J^O!KiQ!fO<<J^O#FdQgO7+&gOOQV<<JW<<JWO#FnQgO<<JWOOQV1G2a1G2aO1XQdO1G2aO#JiQdO1G2aO4iQdO<<JWO1XQdO1G2bP0rQdO'#G[O#JtQdO7+)vO#KRQdO7+)vOOQS'#FT'#FTO0rQdO,5>rO#KZQdO,5>rOOQS,5>r,5>rO#KfQdO,5>qO#KwQdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<<Jc<<JcO#LPQdO1G1dOOQS7+)T7+)TP#LUQdO'#FwO#LfQdO1G2OO#LyQdO1G2OO#MZQdO1G2OP#MfQdO'#FxO#MsQdO7+)VO#NTQdO7+)VO#NTQdO7+)VO#N]QdO7+)VO#NmQdO7+(|O8sQdO7+(|OOQSAN>VAN>VO$ WQdO<<LmOOQSAN>cAN>cO0rQdO1G1|O$ hQtO1G1|P$ rQdO'#FvOOQS1G2R1G2RP$!PQdO'#F{O$!^QdO7+)jO$!wQdO,5>gOOOO-E9z-E9zOOOW<<MT<<MTO$#VQdO7+(fOOQSAN?[AN?[OOQS7+'t7+'tO$#pQdO<<M[OOQS,5<q,5<qO$$RQdO1G4XOOQS-E:T-E:TOOQVAN?lAN?lOOQV1G2_1G2_O4iQdOAN?qO$$aQgOAN?qOOQVAN?xAN?xO4iQdOAN?xOOQV<<JR<<JRO4iQdOAN?rO4iQdO7+'{OOQV7+'{7+'{O1XQdO7+'{OOQVAN?rAN?rOOQS7+'|7+'|O$([QdO<<MbOOQS1G4^1G4^O0rQdO1G4^OOQS,5<w,5<wO$(iQdO1G4]OOQS-E:Z-E:ZOOQU'#G_'#G_O$(zQfO7+'OO$)VQdO'#F_O$*^QdO7+'jO$*nQdO7+'jOOQS7+'j7+'jO$*yQdO<<LqO$+ZQdO<<LqO$+ZQdO<<LqO$+cQdO'#H^OOQS<<Lh<<LhO$+mQdO<<LhOOQS7+'h7+'hOOQS'#D|'#D|OOOO1G4R1G4RO$,WQdO1G4RO$,`QdO1G4RP!=_QdO'#GVOOQVG25]G25]O4iQdOG25]OOQVG25dG25dOOQVG25^G25^OOQV<<Kg<<KgO4iQdO<<KgOOQS7+)x7+)xP$,kQdO'#G]OOQU-E:]-E:]OOQV<<Jj<<JjO$-_QtO'#FaOOQS'#Fc'#FcO$-oQdO'#FbO$.aQdO'#FbOOQS'#Fb'#FbO$.fQdO'#IYO$)VQdO'#FiO$)VQdO'#FiO$.}QdO'#FjO$)VQdO'#FkO$/UQdO'#IZOOQS'#IZ'#IZO$/sQdO,5;yOOQS<<KU<<KUO$/{QdO<<KUO$0]QdOANB]O$0mQdOANB]O$0uQdO'#H_OOQS'#H_'#H_O1sQdO'#DcO$1`QdO,5=xOOQSANBSANBSOOOO7+)m7+)mO$1wQdO7+)mOOQVLD*wLD*wOOQVANARANARO5rQ!fO'#GaO$2PQtO,5<SO$)VQdO'#FmOOQS,5<W,5<WOOQS'#Fd'#FdO$2qQdO,5;|O$2vQdO,5;|OOQS'#Fg'#FgO$)VQdO'#G`O$3hQdO,5<QO$4SQdO,5>tO$4dQdO,5>tO1XQdO,5<PO$4uQdO,5<TO$4zQdO,5<TO$)VQdO'#I[O$5PQdO'#I[O$5UQdO,5<UOOQS,5<V,5<VO'vQdO'#FpOOQU1G1e1G1eO4iQdO1G1eOOQSAN@pAN@pO$5ZQdOG27wO$5kQdO,59}OOQS1G3d1G3dOOOO<<MX<<MXOOQS,5<{,5<{OOQS-E:_-E:_O$5pQtO'#FaO$5wQdO'#I]O$6VQdO'#I]O$6_QdO,5<XOOQS1G1h1G1hO$6dQdO1G1hO$6iQdO,5<zOOQS-E:^-E:^O$7TQdO,5=OO$7lQdO1G4`OOQS-E:b-E:bOOQS1G1k1G1kOOQS1G1o1G1oO$7|QdO,5>vO$)VQdO,5>vOOQS1G1p1G1pO$8[QtO,5<[OOQU7+'P7+'PO$+cQdO1G/iO$)VQdO,5<YO$8cQdO,5>wO$8jQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)VQdO'#GdO$8rQdO1G4bO$8|QdO1G4bO$9UQdO1G4bOOQS7+%T7+%TO$9dQdO1G1tO$9rQtO'#FaO$9yQdO,5<}OOQS,5<},5<}O$:XQdO1G4cOOQS-E:a-E:aO$)VQdO,5<|O$:`QdO,5<|O$:eQdO7+)|OOQS-E:`-E:`O$:oQdO7+)|O$)VQdO,5<ZP$)VQdO'#GcO$:wQdO1G2hO$)VQdO1G2hP$;VQdO'#GbO$;^QdO<<MhO$;hQdO1G1uO$;vQdO7+(SO8sQdO'#C}O8sQdO,59bO8sQdO,59bO8sQdO,59bO$<UQtO,5=`O8sQdO1G.|O0rQdO1G/XO0rQdO7+$pP$<iQdO'#GOO'vQdO'#GtO$<vQdO,59bO$<{QdO,59bO$=SQdO,59mO$=XQdO1G/UO1sQdO'#DRO8sQdO,59j\",\n stateData: \"$=r~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PE`O%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO~OS'iO%['hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#lO%kWi~P!#lOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&gO%mWi%nWi~P!&gOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)eOVWi_Wi%qWi%rWi%sWi~P!)eO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.WOlji~P!.WOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/aOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PE`OV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!N_Olji~P!N_OV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/aOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/aO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$,yO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)cOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/aOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)VOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$,yOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)VOz/zO#[/OO%j.yO!['Oa~O{$da~P%SOg'Pa~P$)VOz0SOg'Pa~Oa0UO!['Oi~P$)cOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$,yO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)VO{0^O~Oa0UO!['Oq~P$)cOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)cOa0UO!['Oy~P$)cO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/aO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~\",\n goto: \"!=l'QPPPPPP'RP'Z*s+]+v,b,}-kP.YP'Z.y.y'ZPPP'Z2cPPPPPP2c5VPP5VP7g7p=xPP={>m>pPP'Z'ZPP?PPP'Z'ZPP'Z'Z'Z'Z'Z?T?}'ZP@QP@WD_G{HPPHSH^Hb'ZPPPHeHn'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHtIQIYPIaIgPIaPIaIaPPPIaPKuPLOLYL`KuPIaLiPIaPLpLvPLzM`M}NhLzLzNnN{LzLzLzLz! a! g! j! o! r! |!!S!!`!!r!!x!#S!#Y!#v!#|!$S!$^!$d!$j!$|!%W!%^!%d!%n!%t!%z!&Q!&W!&^!&h!&n!&x!'O!'X!'_!'n!'v!(Q!(XPPPPPPPPPPP!(_!(b!(h!(q!({!)WPPPPPPPPPPPP!-z!/`!3`!6pPP!6x!7X!7b!8Z!8Q!8d!8j!8m!8p!8s!8{!9lPPPPPPPPPPPPPPPPP!9o!9s!9yP!:_!:c!:o!:x!;U!;l!;o!;r!;x!<O!<U!<XP!<a!<j!=f!=i]eOn#g$j)t,P'}`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r}!cQ#c#p$R$d$p%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!P!dQ#c#p$R$d$p$u%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!R!eQ#c#p$R$d$p$u$v%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!T!fQ#c#p$R$d$p$u$v$w%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!V!gQ#c#p$R$d$p$u$v$w$x%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!X!hQ#c#p$R$d$p$u$v$w$x$y%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g!]!hQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0g'}TOTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r&cVOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/Z/s0c0d0e0f0h0i0j0k0n0r%mXOYZ[dnrxy}!P!Q!U!i!k#[#d#g#y#{#}$Q$h$j$}%S%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/Z0i0j0kQ#vqQ/[.kR0o0q't`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rh#jhz{$W$Z&l&q)S)X+f+g-RW#rq&].k0qQ$]|Q$a!OQ$n!VQ$o!WW$|!i'm*d,gS&[#s#tQ'S$iQ(s&UQ)U&nU)Y&s)Z+jW)a&w+m-T-{Q*Q']W*R'_,`-h.TQ+l)`S,_*S*TQ-Q+eQ-_,TQ-c,WQ.R-al.W-l.^._.a.z.|/R/j/o/t/y0U0Z0^Q/S.`Q/a.tQ/l/OU0P/u0S0[X0V/z0W0_0`R&Z#r!_!wYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZR%^!vQ!{YQ%x#[Q&d#}Q&g$QR,{+YT.j-s/s![!jQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0gQ&X#kQ'c$oR*^'dR'l$|Q%V!mR/_.r'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rS#a_#b!P.[-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rT#a_#bT#^^#_R(o%xa(l%x(n(o+`,{-y-z.oT+[(k+]R-z,{Q$PsQ+l)aR,^*RX#}s$O$P&fQ&y$aQ'a$nQ'd$oR)s'SQ)b&wV-S+m-T-{ZgOn$j)t,PXkOn)t,PQ$k!TQ&z$bQ&{$cQ'^$mQ'b$oQ)q'RQ)x'WQ){'XQ)|'YQ*Z'`S*]'c'dQ+s)gQ+u)hQ+v)iQ+z)oS+|)r*[Q,Q)vQ,R)wS,S)y)zQ,d*^Q-V+rQ-W+tQ-Y+{S-Z+},OQ-`,UQ-b,VQ-|-XQ.O-[Q.P-^Q.Q-_Q.p-}Q.q.RQ/W.dR/r/XWkOn)t,PR#mjQ'`$nS)r'S'aR,O)sQ,]*RR-f,^Q*['`Q+})rR-[,OZiOjn)t,PQ'f$pR*`'gT-j,e-ku.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^t.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^Q/S.`X0V/z0W0_0`!P.Z-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`Q.w.YR/f.xg.z.].{/b/i/n/|0O0Q0]0a0bu.b-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^X.u.W.b/a0PR/c.tV0R/u0S0[R/X.dQnOS#on,PR,P)tQ&^#uR(x&^S%m#R#wS(_%m(bT(b%p&`Q%a!yQ%h!}W(P%a%h(U(YQ(U%eR(Y%jQ&i$RR)O&iQ(e%qQ*{(`T+R(e*{Q'n%OR*e'nS'q%R%SY*i'q*j,m-q.hU*j'r's'tU,m*k*l*mS-q,n,oR.h-rQ#Y]R%t#YQ#_^R%y#_Q(h%vS+W(h+XR+X(iQ+](kR,|+]Q#b_R%{#bQ#ebQ%}#cW&Q#e%}({+bQ({&cR+b0gQ$OsS&e$O&fR&f$PQ&v$_R)_&vQ&V#jR(t&VQ&m$VS)T&m+hR+h)UQ$Z{R&p$ZQ&t$]R)[&tQ+n)bR-U+nQ#hfR&S#hQ)f&zR+q)fQ&}$dS)m&})nR)n'OQ'V$kR)u'VQ'[$lS*P'[,ZR,Z*QQ,a*VR-i,aWjOn)t,PR#ljQ-k,eR.U-kd.{.]/b/i/n/|0O0Q0]0a0bR/h.{U.s.W/a0PR/`.sQ/{/nS0X/{0YR0Y/|S/v/b/cR0T/vQ.}.]R/k.}R!ZPXmOn)t,PWlOn)t,PR'T$jYfOn$j)t,PR&R#g[sOn#g$j)t,PR&d#}&bQOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/Z/s0c0d0e0f0h0i0j0k0n0rQ!nTQ#caQ#poU$Rt%c(SS$d!R$gQ$p!XQ$u!cQ$v!dQ$w!eQ$x!fQ$y!gQ$z!hQ%e!zQ%j#OQ%p#SQ%q#TQ&`#xQ'O$eQ'g$qQ(q&OU(|&h(}+cW)j&|)l+x+yQ*o'|Q*x(]Q+w)kQ,v+QQ/q/VR0g0lQ!yYQ!}ZQ$b!PQ$c!QQ%R!kQ't%S^'{%`%g(O(W*q*t*v^*f'p*h,k,l-p.g/ZQ*l'rQ*m'sQ+t)gQ,j*gQ,n*kQ-n,hQ-o,iQ-r,oQ.e-mR/Y.f[bOn#g$j)t,P!^!vYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZQ#R[Q#fdS#wrxQ$UyW$_}$Q'P)pS$l!U$hW${!i'm*d,gS%v#[+Y`&P#d%|(p(r(z+a-O0kQ&a#yQ&b#{Q&c#}Q'j$}Q'z%^W([%l(^*y*}Q(`%nQ(i%wQ(v&ZS(y&_0iQ)P&jQ)Q&kU)]&u)^+kQ)d&xQ)y'WY)}'Z*O,X,Y-dQ*b'lS*n'w0jW+P(d*z,s,wW+T(g+V,y,zQ+p)eQ,U)zQ,c*YQ,x+UQ-P+dQ-e,]Q-v,uR.S-fhUOn#d#g$j%|&_'w(p(r)t,P%S!uYZ[drxy}!P!Q!U!i!k#[#y#{#}$Q$h$}%S%^%`%g%l%n%w&Z&j&k&u&x'P'W'Z'l'm'p'r's(O(W(^(d(g(z)^)e)g)p)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/Z0i0j0kQ#qpW%W!o!s0d0nQ%X!pQ%Y!qQ%[!tQ%f0cS'v%Z0hQ'x0eQ'y0fQ,p*rQ-u,qS.i-s/sR0p0rU#uq.k0qR(w&][cOn#g$j)t,PZ!xY#[#}$Q+YQ#W[Q#zrR$TxQ%b!yQ%i!}Q%o#RQ'j${Q(V%eQ(Z%jQ(c%pQ(f%qQ*|(`Q,f*bQ-t,pQ.m-uR/].lQ$StQ(R%cR*s(SQ.l-sR/}/sR#QZR#V[R%Q!iQ%O!iV*c'm*d,g!]!lQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v/q0gR%T!kT#]^#_Q%x#[R,{+YQ(m%xS+_(n(oQ,}+`Q-x,{S.n-y-zR/^.oT+Z(k+]Q$`}Q&g$QQ)o'PR+{)pQ$XzQ)W&qR+i)XQ$XzQ&o$WQ)W&qR+i)XQ#khW$Vz$W&q)XQ$[{Q&r$ZZ)R&l)S+f+g-RR$^|R)c&wXlOn)t,PQ$f!RR'Q$gQ$m!UR'R$hR*X'_Q*V'_V-g,`-h.TQ.d-lQ/P.^R/Q._U.]-l.^._Q/U.aQ/b.tQ/g.zU/i.|/j/yQ/n/RQ/|/oQ0O/tU0Q/u0S0[Q0]0UQ0a0ZR0b0^R/T.`R/d.t\",\n nodeNames: \"⚠ print Escape { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard\",\n maxTerm: 277,\n context: trackIndent,\n nodeProps: [\n [\"isolate\", -5,4,71,72,73,77,\"\"],\n [\"group\", -15,6,85,87,88,90,92,94,96,98,99,100,102,105,108,110,\"Statement Statement\",-22,8,18,21,25,40,49,50,56,57,60,61,62,63,64,67,70,71,72,79,80,81,82,\"Expression\",-10,114,116,119,121,122,126,128,133,135,138,\"Statement\",-9,143,144,147,148,150,151,152,153,154,\"Pattern\"],\n [\"openedBy\", 23,\"(\",54,\"[\",58,\"{\"],\n [\"closedBy\", 24,\")\",55,\"]\",59,\"}\"]\n ],\n propSources: [pythonHighlighting],\n skippedNodes: [0,4],\n repeatNodeCount: 34,\n tokenData: \"!2|~R!`OX%TXY%oY[%T[]%o]p%Tpq%oqr'ars)Yst*xtu%Tuv,dvw-hwx.Uxy/tyz0[z{0r{|2S|}2p}!O3W!O!P4_!P!Q:Z!Q!R;k!R![>_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T\",\n tokenizers: [legacyPrint, indentation, newlines, strings, 0, 1, 2, 3, 4],\n topRules: {\"Script\":[0,5]},\n specialized: [{term: 221, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 7652\n});\n\nexport { parser };\n","import { parser } from '@lezer/python';\nimport { syntaxTree, LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Body\",\n \"FunctionDefinition\", \"ClassDefinition\", \"LambdaExpression\",\n \"ForStatement\", \"MatchClause\"\n]);\nfunction defID(type) {\n return (node, def, outer) => {\n if (outer)\n return false;\n let id = node.node.getChild(\"VariableName\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst gatherCompletions = {\n FunctionDefinition: /*@__PURE__*/defID(\"function\"),\n ClassDefinition: /*@__PURE__*/defID(\"class\"),\n ForStatement(node, def, outer) {\n if (outer)\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \"in\")\n break;\n }\n },\n ImportStatement(_node, def) {\n var _a, _b;\n let { node } = _node;\n let isFrom = ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"from\";\n for (let ch = node.getChild(\"import\"); ch; ch = ch.nextSibling) {\n if (ch.name == \"VariableName\" && ((_b = ch.nextSibling) === null || _b === void 0 ? void 0 : _b.name) != \"as\")\n def(ch, isFrom ? \"variable\" : \"namespace\");\n }\n },\n AssignStatement(node, def) {\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \":\" || child.name == \"AssignOp\")\n break;\n }\n },\n ParamList(node, def) {\n for (let prev = null, child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\" && (!prev || !/\\*|AssignOp/.test(prev.name)))\n def(child, \"variable\");\n prev = child;\n }\n },\n CapturePattern: /*@__PURE__*/defID(\"variable\"),\n AsPattern: /*@__PURE__*/defID(\"variable\"),\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def, top) || !top && ScopeNodes.has(node.name))\n return false;\n top = false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w\\xa1-\\uffff][\\w\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\"String\", \"FormatString\", \"Comment\", \"PropertyName\"];\n/**\nCompletion source that looks up locally defined names in\nPython code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nconst globals = /*@__PURE__*/[\n \"__annotations__\", \"__builtins__\", \"__debug__\", \"__doc__\", \"__import__\", \"__name__\",\n \"__loader__\", \"__package__\", \"__spec__\",\n \"False\", \"None\", \"True\"\n].map(n => ({ label: n, type: \"constant\" })).concat(/*@__PURE__*/[\n \"ArithmeticError\", \"AssertionError\", \"AttributeError\", \"BaseException\", \"BlockingIOError\",\n \"BrokenPipeError\", \"BufferError\", \"BytesWarning\", \"ChildProcessError\", \"ConnectionAbortedError\",\n \"ConnectionError\", \"ConnectionRefusedError\", \"ConnectionResetError\", \"DeprecationWarning\",\n \"EOFError\", \"Ellipsis\", \"EncodingWarning\", \"EnvironmentError\", \"Exception\", \"FileExistsError\",\n \"FileNotFoundError\", \"FloatingPointError\", \"FutureWarning\", \"GeneratorExit\", \"IOError\",\n \"ImportError\", \"ImportWarning\", \"IndentationError\", \"IndexError\", \"InterruptedError\",\n \"IsADirectoryError\", \"KeyError\", \"KeyboardInterrupt\", \"LookupError\", \"MemoryError\",\n \"ModuleNotFoundError\", \"NameError\", \"NotADirectoryError\", \"NotImplemented\", \"NotImplementedError\",\n \"OSError\", \"OverflowError\", \"PendingDeprecationWarning\", \"PermissionError\", \"ProcessLookupError\",\n \"RecursionError\", \"ReferenceError\", \"ResourceWarning\", \"RuntimeError\", \"RuntimeWarning\",\n \"StopAsyncIteration\", \"StopIteration\", \"SyntaxError\", \"SyntaxWarning\", \"SystemError\",\n \"SystemExit\", \"TabError\", \"TimeoutError\", \"TypeError\", \"UnboundLocalError\", \"UnicodeDecodeError\",\n \"UnicodeEncodeError\", \"UnicodeError\", \"UnicodeTranslateError\", \"UnicodeWarning\", \"UserWarning\",\n \"ValueError\", \"Warning\", \"ZeroDivisionError\"\n].map(n => ({ label: n, type: \"type\" }))).concat(/*@__PURE__*/[\n \"bool\", \"bytearray\", \"bytes\", \"classmethod\", \"complex\", \"float\", \"frozenset\", \"int\", \"list\",\n \"map\", \"memoryview\", \"object\", \"range\", \"set\", \"staticmethod\", \"str\", \"super\", \"tuple\", \"type\"\n].map(n => ({ label: n, type: \"class\" }))).concat(/*@__PURE__*/[\n \"abs\", \"aiter\", \"all\", \"anext\", \"any\", \"ascii\", \"bin\", \"breakpoint\", \"callable\", \"chr\",\n \"compile\", \"delattr\", \"dict\", \"dir\", \"divmod\", \"enumerate\", \"eval\", \"exec\", \"exit\", \"filter\",\n \"format\", \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\", \"input\", \"isinstance\",\n \"issubclass\", \"iter\", \"len\", \"license\", \"locals\", \"max\", \"min\", \"next\", \"oct\", \"open\",\n \"ord\", \"pow\", \"print\", \"property\", \"quit\", \"repr\", \"reversed\", \"round\", \"setattr\", \"slice\",\n \"sorted\", \"sum\", \"vars\", \"zip\"\n].map(n => ({ label: n, type: \"function\" })));\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"def ${name}(${params}):\\n\\t${}\", {\n label: \"def\",\n detail: \"function\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for ${name} in ${collection}:\\n\\t${}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while ${}:\\n\\t${}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try:\\n\\t${}\\nexcept ${error}:\\n\\t${}\", {\n label: \"try\",\n detail: \"/ except block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t\\n\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t${}\\nelse:\\n\\t${}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name}:\\n\\tdef __init__(self, ${params}):\\n\\t\\t\\t${}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${module}\", {\n label: \"import\",\n detail: \"statement\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"from ${module} import ${names}\", {\n label: \"from\",\n detail: \"import\",\n type: \"keyword\"\n })\n];\n/**\nAutocompletion for built-in Python globals and keywords.\n*/\nconst globalCompletion = /*@__PURE__*/ifNotIn(dontComplete, /*@__PURE__*/completeFromList(/*@__PURE__*/globals.concat(snippets)));\n\nfunction innerBody(context) {\n let { node, pos } = context;\n let lineIndent = context.lineIndent(pos, -1);\n let found = null;\n for (;;) {\n let before = node.childBefore(pos);\n if (!before) {\n break;\n }\n else if (before.name == \"Comment\") {\n pos = before.from;\n }\n else if (before.name == \"Body\") {\n if (context.baseIndentFor(before) + context.unit <= lineIndent)\n found = before;\n node = before;\n }\n else if (before.type.is(\"Statement\")) {\n node = before;\n }\n else {\n break;\n }\n }\n return found;\n}\nfunction indentBody(context, node) {\n let base = context.baseIndentFor(node);\n let line = context.lineAt(context.pos, -1), to = line.from + line.text.length;\n // Don't consider blank, deindented lines at the end of the\n // block part of the block\n if (/^\\s*($|#)/.test(line.text) &&\n context.node.to < to + 100 &&\n !/\\S/.test(context.state.sliceDoc(to, context.node.to)) &&\n context.lineIndent(context.pos, -1) <= base)\n return null;\n // A normally deindenting keyword that appears at a higher\n // indentation than the block should probably be handled by the next\n // level\n if (/^\\s*(else:|elif |except |finally:)/.test(context.textAfter) && context.lineIndent(context.pos, -1) > base)\n return null;\n return base + context.unit;\n}\n/**\nA language provider based on the [Lezer Python\nparser](https://github.com/lezer-parser/python), extended with\nhighlighting and indentation information.\n*/\nconst pythonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"python\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Body: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = indentBody(context, inner || context.node)) !== null && _a !== void 0 ? _a : context.continue();\n },\n IfStatement: cx => /^\\s*(else:|elif )/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"ForStatement WhileStatement\": cx => /^\\s*else:/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n TryStatement: cx => /^\\s*(except |finally:|else:)/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression\": /*@__PURE__*/delimitedIndent({ closing: \")\" }),\n \"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n \"ArrayExpression ArrayComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"]\" }),\n \"String FormatString\": () => null,\n Script: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = (inner && indentBody(context, inner))) !== null && _a !== void 0 ? _a : context.continue();\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"ArrayExpression DictionaryExpression SetExpression TupleExpression\": foldInside,\n Body: (node, state) => ({ from: node.from + 1, to: node.to - (node.to == state.doc.length ? 0 : 1) })\n })\n ],\n }),\n languageData: {\n closeBrackets: {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"'],\n stringPrefixes: [\"f\", \"fr\", \"rf\", \"r\", \"u\", \"b\", \"br\", \"rb\",\n \"F\", \"FR\", \"RF\", \"R\", \"U\", \"B\", \"BR\", \"RB\"]\n },\n commentTokens: { line: \"#\" },\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:)$/\n }\n});\n/**\nPython language support.\n*/\nfunction python() {\n return new LanguageSupport(pythonLanguage, [\n pythonLanguage.data.of({ autocomplete: localCompletionSource }),\n pythonLanguage.data.of({ autocomplete: globalCompletion }),\n ]);\n}\n\nexport { globalCompletion, localCompletionSource, python, pythonLanguage };\n"],"names":["Stack","constructor","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","this","toString","filter","_","i","concat","start","cx","parser","context","StackContext","pushState","push","length","reduce","action","_a","depth","type","lookaheadRecord","setLookAhead","dPrec","dynamicPrecedence","getGoto","minRepeatTerm","storeNode","reduceContext","base","ranges","from","size","nodeSet","types","isAnonymous","lastBigReductionStart","bigReductionCount","lastBigReductionSize","count","stateFlag","baseStateID","pop","term","end","mustSink","cur","top","index","mustMove","scan","shift","shiftContext","maxNode","nextState","apply","next","nextStart","nextEnd","useNode","value","reused","updateContext","tracker","reuse","stream","reset","split","off","slice","recoverByDelete","isNode","canShift","sim","SimulatedStack","stateSlot","hasAction","recoverByInsert","nextStates","best","s","some","v","result","forceReduce","validAction","target","backup","findForcedReduction","seen","explore","includes","allActions","rDepth","found","forceAll","deadEnd","data","restart","sameState","other","dialectEnabled","dialectID","dialect","flags","emitContext","last","hash","emitLookAhead","newCx","close","strict","goto","StackBufferCursor","maybeNext","create","id","fork","decodeArray","input","Type","Uint16Array","array","out","charCodeAt","stop","digit","CachedToken","extended","mask","nullToken","InputStream","chunk","chunkOff","chunk2","chunk2Pos","token","rangeIndex","chunkPos","range","to","readNext","resolveOffset","offset","assoc","clipPos","Math","max","peek","idx","resolved","acceptToken","endOffset","RangeError","acceptTokenTo","endPos","getChunk","nextChunk","advance","n","setDone","read","r","min","TokenGroup","group","precTable","precOffset","groupMask","accEnd","allows","overrides","low","high","mid","readToken","tokenPrecTable","prototype","contextual","fallback","extend","ExternalTokenizer","options","findOffset","prev","tableData","tableOffset","iPrev","verbose","process","env","test","LOG","stackIDs","cutAt","tree","side","cursor","IterMode","IncludeAnonymous","moveTo","childBefore","childAfter","isError","prevSibling","nextSibling","FragmentCursor","fragments","fragment","safeFrom","safeTo","trees","nextFragment","fr","openStart","openEnd","nodeAt","children","positions","Tree","prop","NodeProp","TokenCache","tokens","mainToken","actions","tokenizers","map","getActions","actionIndex","main","tokenizer","updateCachedToken","startIndex","addActions","eofTerm","getMainToken","specialized","specializers","putAction","set","pair","Parse","recovering","nextStackID","minStackPos","stoppedAt","topTerm","stacks","bufferLength","parsedPos","stopped","stoppedTokens","newStacks","advanceStack","tok","finished","findFinished","console","log","stackID","stackToTree","getName","SyntaxError","runRecovery","maxRemaining","sort","a","b","outer","j","splice","stopAt","strictCx","cxHash","cached","match","contextHash","inner","defaultReduce","localStack","advanceFully","pushStackDedup","restarted","tokenEnd","force","forceBase","insert","build","topID","maxBufferLength","minRepeatType","WeakMap","get","String","fromCodePoint","Dialect","source","disabled","x","LRParser","Parser","spec","super","wrappers","version","nodeNames","repeatNodeCount","topTerms","Object","keys","topRules","nodeProps","setProp","nodeID","deserialize","propSpec","NodeSet","name","NodeType","define","undefined","props","indexOf","error","skipped","skippedNodes","propSources","DefaultBufferLength","tokenArray","tokenData","specializerSpecs","getSpecializer","states","Uint32Array","stateData","maxTerm","dialects","dynamicPrecedences","tokenPrec","termNames","parseDialect","createParse","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","configure","config","copy","assign","info","t","find","external","contextTracker","wrap","hasWrappers","topNode","prec","values","part","Uint8Array","newline","bracketed","Set","isLineBreak","ch","isHex","newlines","cx_Bracketed","spaces","indentation","chars","indent","cx_DoubleQuote","cx_Long","cx_Raw","cx_Format","Context","topIndent","stringFlags","Map","trackIndent","has","space","countIndent","legacyPrint","fromCharCode","strings","quote","long","escapes","format","escaped","skipEscape","pythonHighlighting","styleTags","tags","modifier","controlKeyword","operatorKeyword","definitionKeyword","import","moduleKeyword","keyword","Boolean","bool","None","null","VariableName","variableName","function","definition","className","PropertyName","propertyName","Comment","lineComment","Number","number","string","FormatString","special","Escape","escape","UpdateOp","updateOperator","arithmeticOperator","BitOp","bitwiseOperator","CompareOp","compareOperator","AssignOp","definitionOperator","Ellipsis","punctuation","At","meta","paren","squareBracket","brace","derefOperator","separator","spec_identifier","__proto__","await","or","and","in","not","is","if","else","lambda","yield","async","for","True","False","del","pass","break","continue","return","raise","as","global","nonlocal","assert","elif","while","try","except","finally","with","def","class","case","Script","cache","NodeWeakMap","ScopeNodes","defID","node","getChild","gatherCompletions","FunctionDefinition","ClassDefinition","ForStatement","child","firstChild","ImportStatement","_node","_b","isFrom","AssignStatement","ParamList","CapturePattern","AsPattern","getScope","doc","completions","sliceString","label","iterate","gather","c","Identifier","dontComplete","localCompletionSource","syntaxTree","resolveInner","isWord","sliceDoc","explicit","validFor","globals","snippets","snippetCompletion","detail","globalCompletion","ifNotIn","completeFromList","innerBody","lineIndent","before","baseIndentFor","unit","indentBody","line","lineAt","text","textAfter","pythonLanguage","LRLanguage","indentNodeProp","add","Body","IfStatement","baseIndent","TryStatement","delimitedIndent","closing","foldNodeProp","foldInside","languageData","closeBrackets","brackets","stringPrefixes","commentTokens","indentOnInput","python","LanguageSupport","of","autocomplete"],"mappings":"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","x_google_ignoreList":[0,1,2]}