{"version":3,"file":"verilog-CcB4aIua.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/verilog.js"],"sourcesContent":["function mkVerilog(parserConfig) {\n\n  var statementIndentUnit = parserConfig.statementIndentUnit,\n      dontAlignCalls = parserConfig.dontAlignCalls,\n      noIndentKeywords = parserConfig.noIndentKeywords || [],\n      multiLineStrings = parserConfig.multiLineStrings,\n      hooks = parserConfig.hooks || {};\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  /**\n   * Keywords from IEEE 1800-2012\n   */\n  var keywords = words(\n    \"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind \" +\n      \"bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config \" +\n      \"const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable \" +\n      \"dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup \" +\n      \"endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask \" +\n      \"enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin \" +\n      \"function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import \" +\n      \"incdir include initial inout input inside instance int integer interconnect interface intersect join join_any \" +\n      \"join_none large let liblist library local localparam logic longint macromodule matches medium modport module \" +\n      \"nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed \" +\n      \"parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup \" +\n      \"pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg \" +\n      \"reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime \" +\n      \"s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify \" +\n      \"specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on \" +\n      \"table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior \" +\n      \"trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void \" +\n      \"wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor\");\n\n  /** Operators from IEEE 1800-2012\n      unary_operator ::=\n      + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~\n      binary_operator ::=\n      + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | **\n      | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<<\n      | -> | <->\n      inc_or_dec_operator ::= ++ | --\n      unary_module_path_operator ::=\n      ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~\n      binary_module_path_operator ::=\n      == | != | && | || | & | | | ^ | ^~ | ~^\n  */\n  var isOperatorChar = /[\\+\\-\\*\\/!~&|^%=?:]/;\n  var isBracketChar = /[\\[\\]{}()]/;\n\n  var unsignedNumber = /\\d[0-9_]*/;\n  var decimalLiteral = /\\d*\\s*'s?d\\s*\\d[0-9_]*/i;\n  var binaryLiteral = /\\d*\\s*'s?b\\s*[xz01][xz01_]*/i;\n  var octLiteral = /\\d*\\s*'s?o\\s*[xz0-7][xz0-7_]*/i;\n  var hexLiteral = /\\d*\\s*'s?h\\s*[0-9a-fxz?][0-9a-fxz?_]*/i;\n  var realLiteral = /(\\d[\\d_]*(\\.\\d[\\d_]*)?E-?[\\d_]+)|(\\d[\\d_]*\\.\\d[\\d_]*)/i;\n\n  var closingBracketOrWord = /^((\\w+)|[)}\\]])/;\n  var closingBracket = /[)}\\]]/;\n\n  var curPunc;\n  var curKeyword;\n\n  // Block openings which are closed by a matching keyword in the form of (\"end\" + keyword)\n  // E.g. \"task\" => \"endtask\"\n  var blockKeywords = words(\n    \"case checker class clocking config function generate interface module package \" +\n      \"primitive program property specify sequence table task\"\n  );\n\n  // Opening/closing pairs\n  var openClose = {};\n  for (var keyword in blockKeywords) {\n    openClose[keyword] = \"end\" + keyword;\n  }\n  openClose[\"begin\"] = \"end\";\n  openClose[\"casex\"] = \"endcase\";\n  openClose[\"casez\"] = \"endcase\";\n  openClose[\"do\"   ] = \"while\";\n  openClose[\"fork\" ] = \"join;join_any;join_none\";\n  openClose[\"covergroup\"] = \"endgroup\";\n\n  for (var i in noIndentKeywords) {\n    var keyword = noIndentKeywords[i];\n    if (openClose[keyword]) {\n      openClose[keyword] = undefined;\n    }\n  }\n\n  // Keywords which open statements that are ended with a semi-colon\n  var statementKeywords = words(\"always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while\");\n\n  function tokenBase(stream, state) {\n    var ch = stream.peek(), style;\n    if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style;\n    if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false)\n      return style;\n\n    if (/[,;:\\.]/.test(ch)) {\n      curPunc = stream.next();\n      return null;\n    }\n    if (isBracketChar.test(ch)) {\n      curPunc = stream.next();\n      return \"bracket\";\n    }\n    // Macros (tick-defines)\n    if (ch == '`') {\n      stream.next();\n      if (stream.eatWhile(/[\\w\\$_]/)) {\n        return \"def\";\n      } else {\n        return null;\n      }\n    }\n    // System calls\n    if (ch == '$') {\n      stream.next();\n      if (stream.eatWhile(/[\\w\\$_]/)) {\n        return \"meta\";\n      } else {\n        return null;\n      }\n    }\n    // Time literals\n    if (ch == '#') {\n      stream.next();\n      stream.eatWhile(/[\\d_.]/);\n      return \"def\";\n    }\n    // Strings\n    if (ch == '\"') {\n      stream.next();\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    // Comments\n    if (ch == \"/\") {\n      stream.next();\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      stream.backUp(1);\n    }\n\n    // Numeric literals\n    if (stream.match(realLiteral) ||\n        stream.match(decimalLiteral) ||\n        stream.match(binaryLiteral) ||\n        stream.match(octLiteral) ||\n        stream.match(hexLiteral) ||\n        stream.match(unsignedNumber) ||\n        stream.match(realLiteral)) {\n      return \"number\";\n    }\n\n    // Operators\n    if (stream.eatWhile(isOperatorChar)) {\n      return \"meta\";\n    }\n\n    // Keywords / plain variables\n    if (stream.eatWhile(/[\\w\\$_]/)) {\n      var cur = stream.current();\n      if (keywords[cur]) {\n        if (openClose[cur]) {\n          curPunc = \"newblock\";\n        }\n        if (statementKeywords[cur]) {\n          curPunc = \"newstatement\";\n        }\n        curKeyword = cur;\n        return \"keyword\";\n      }\n      return \"variable\";\n    }\n\n    stream.next();\n    return null;\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    var indent = state.indented;\n    var c = new Context(indent, col, type, null, state.context);\n    return state.context = c;\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\") {\n      state.indented = state.context.indented;\n    }\n    return state.context = state.context.prev;\n  }\n\n  function isClosing(text, contextClosing) {\n    if (text == contextClosing) {\n      return true;\n    } else {\n      // contextClosing may be multiple keywords separated by ;\n      var closingKeywords = contextClosing.split(\";\");\n      for (var i in closingKeywords) {\n        if (text == closingKeywords[i]) {\n          return true;\n        }\n      }\n      return false;\n    }\n  }\n\n  function buildElectricInputRegEx() {\n    // Reindentation should occur on any bracket char: {}()[]\n    // or on a match of any of the block closing keywords, at\n    // the end of a line\n    var allClosings = [];\n    for (var i in openClose) {\n      if (openClose[i]) {\n        var closings = openClose[i].split(\";\");\n        for (var j in closings) {\n          allClosings.push(closings[j]);\n        }\n      }\n    }\n    var re = new RegExp(\"[{}()\\\\[\\\\]]|(\" + allClosings.join(\"|\") + \")$\");\n    return re;\n  }\n\n  // Interface\n  return {\n    name: \"verilog\",\n\n    startState: function(indentUnit) {\n      var state = {\n        tokenize: null,\n        context: new Context(-indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n      if (hooks.startState) hooks.startState(state);\n      return state;\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n      }\n      if (hooks.token) {\n        // Call hook, with an optional return value of a style to override verilog styling.\n        var style = hooks.token(stream, state);\n        if (style !== undefined) {\n          return style;\n        }\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      curKeyword = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\" || style == \"variable\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if (curPunc == ctx.type) {\n        popContext(state);\n      } else if ((curPunc == \";\" && ctx.type == \"statement\") ||\n                 (ctx.type && isClosing(curKeyword, ctx.type))) {\n        ctx = popContext(state);\n        while (ctx && ctx.type == \"statement\") ctx = popContext(state);\n      } else if (curPunc == \"{\") {\n        pushContext(state, stream.column(), \"}\");\n      } else if (curPunc == \"[\") {\n        pushContext(state, stream.column(), \"]\");\n      } else if (curPunc == \"(\") {\n        pushContext(state, stream.column(), \")\");\n      } else if (ctx && ctx.type == \"endcase\" && curPunc == \":\") {\n        pushContext(state, stream.column(), \"statement\");\n      } else if (curPunc == \"newstatement\") {\n        pushContext(state, stream.column(), \"statement\");\n      } else if (curPunc == \"newblock\") {\n        if (curKeyword == \"function\" && ctx && (ctx.type == \"statement\" || ctx.type == \"endgroup\")) {\n          // The 'function' keyword can appear in some other contexts where it actually does not\n          // indicate a function (import/export DPI and covergroup definitions).\n          // Do nothing in this case\n        } else if (curKeyword == \"task\" && ctx && ctx.type == \"statement\") {\n          // Same thing for task\n        } else {\n          var close = openClose[curKeyword];\n          pushContext(state, stream.column(), close);\n        }\n      }\n\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter, cx) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return null;\n      if (hooks.indent) {\n        var fromHook = hooks.indent(state);\n        if (fromHook >= 0) return fromHook;\n      }\n      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n      if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n      var closing = false;\n      var possibleClosing = textAfter.match(closingBracketOrWord);\n      if (possibleClosing)\n        closing = isClosing(possibleClosing[0], ctx.type);\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit || cx.unit);\n      else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1);\n      else if (ctx.type == \")\" && !closing) return ctx.indented + (statementIndentUnit || cx.unit);\n      else return ctx.indented + (closing ? 0 : cx.unit);\n    },\n\n    languageData: {\n      indentOnInput: buildElectricInputRegEx(),\n      commentTokens: {line: \"//\", block: {open: \"/*\", close: \"*/\"}}\n    }\n  };\n};\n\nexport const verilog = mkVerilog({})\n\n// TL-Verilog mode.\n// See tl-x.org for language spec.\n// See the mode in action at makerchip.com.\n// Contact: steve.hoover@redwoodeda.com\n\n// TLV Identifier prefixes.\n// Note that sign is not treated separately, so \"+/-\" versions of numeric identifiers\n// are included.\nvar tlvIdentifierStyle = {\n  \"|\": \"link\",\n  \">\": \"property\",  // Should condition this off for > TLV 1c.\n  \"$\": \"variable\",\n  \"$$\": \"variable\",\n  \"?$\": \"qualifier\",\n  \"?*\": \"qualifier\",\n  \"-\": \"contentSeparator\",\n  \"/\": \"property\",\n  \"/-\": \"property\",\n  \"@\": \"variableName.special\",\n  \"@-\": \"variableName.special\",\n  \"@++\": \"variableName.special\",\n  \"@+=\": \"variableName.special\",\n  \"@+=-\": \"variableName.special\",\n  \"@--\": \"variableName.special\",\n  \"@-=\": \"variableName.special\",\n  \"%+\": \"tag\",\n  \"%-\": \"tag\",\n  \"%\": \"tag\",\n  \">>\": \"tag\",\n  \"<<\": \"tag\",\n  \"<>\": \"tag\",\n  \"#\": \"tag\",  // Need to choose a style for this.\n  \"^\": \"attribute\",\n  \"^^\": \"attribute\",\n  \"^!\": \"attribute\",\n  \"*\": \"variable\",\n  \"**\": \"variable\",\n  \"\\\\\": \"keyword\",\n  \"\\\"\": \"comment\"\n};\n\n// Lines starting with these characters define scope (result in indentation).\nvar tlvScopePrefixChars = {\n  \"/\": \"beh-hier\",\n  \">\": \"beh-hier\",\n  \"-\": \"phys-hier\",\n  \"|\": \"pipe\",\n  \"?\": \"when\",\n  \"@\": \"stage\",\n  \"\\\\\": \"keyword\"\n};\nvar tlvIndentUnit = 3;\nvar tlvTrackStatements = false;\nvar tlvIdentMatch = /^([~!@#\\$%\\^&\\*-\\+=\\?\\/\\\\\\|'\"<>]+)([\\d\\w_]*)/;  // Matches an identifier.\n// Note that ':' is excluded, because of it's use in [:].\nvar tlvLineIndentationMatch = /^[! ] */;\nvar tlvCommentMatch = /^\\/[\\/\\*]/;\n\nexport const tlv = mkVerilog({\n  hooks: {\n    electricInput: false,\n\n    // Return undefined for verilog tokenizing, or style for TLV token (null not used).\n    // Standard CM styles are used for most formatting, but some TL-Verilog-specific highlighting\n    // can be enabled with the definition of cm-tlv-* styles, including highlighting for:\n    //   - M4 tokens\n    //   - TLV scope indentation\n    //   - Statement delimitation (enabled by tlvTrackStatements)\n    token: function(stream, state) {\n      var style = undefined;\n      var match;  // Return value of pattern matches.\n\n      // Set highlighting mode based on code region (TLV or SV).\n      if (stream.sol() && ! state.tlvInBlockComment) {\n        // Process region.\n        if (stream.peek() == '\\\\') {\n          style = \"def\";\n          stream.skipToEnd();\n          if (stream.string.match(/\\\\SV/)) {\n            state.tlvCodeActive = false;\n          } else if (stream.string.match(/\\\\TLV/)){\n            state.tlvCodeActive = true;\n          }\n        }\n        // Correct indentation in the face of a line prefix char.\n        if (state.tlvCodeActive && stream.pos == 0 &&\n            (state.indented == 0) && (match = stream.match(tlvLineIndentationMatch, false))) {\n          state.indented = match[0].length;\n        }\n\n        // Compute indentation state:\n        //   o Auto indentation on next line\n        //   o Indentation scope styles\n        var indented = state.indented;\n        var depth = indented / tlvIndentUnit;\n        if (depth <= state.tlvIndentationStyle.length) {\n          // not deeper than current scope\n\n          var blankline = stream.string.length == indented;\n          var chPos = depth * tlvIndentUnit;\n          if (chPos < stream.string.length) {\n            var bodyString = stream.string.slice(chPos);\n            var ch = bodyString[0];\n            if (tlvScopePrefixChars[ch] && ((match = bodyString.match(tlvIdentMatch)) &&\n                                            tlvIdentifierStyle[match[1]])) {\n              // This line begins scope.\n              // Next line gets indented one level.\n              indented += tlvIndentUnit;\n              // Style the next level of indentation (except non-region keyword identifiers,\n              //   which are statements themselves)\n              if (!(ch == \"\\\\\" && chPos > 0)) {\n                state.tlvIndentationStyle[depth] = tlvScopePrefixChars[ch];\n                if (tlvTrackStatements) {state.statementComment = false;}\n                depth++;\n              }\n            }\n          }\n          // Clear out deeper indentation levels unless line is blank.\n          if (!blankline) {\n            while (state.tlvIndentationStyle.length > depth) {\n              state.tlvIndentationStyle.pop();\n            }\n          }\n        }\n        // Set next level of indentation.\n        state.tlvNextIndent = indented;\n      }\n\n      if (state.tlvCodeActive) {\n        // Highlight as TLV.\n\n        var beginStatement = false;\n        if (tlvTrackStatements) {\n          // This starts a statement if the position is at the scope level\n          // and we're not within a statement leading comment.\n          beginStatement =\n            (stream.peek() != \" \") &&   // not a space\n            (style === undefined) &&    // not a region identifier\n            !state.tlvInBlockComment && // not in block comment\n            //!stream.match(tlvCommentMatch, false) && // not comment start\n          (stream.column() == state.tlvIndentationStyle.length * tlvIndentUnit);  // at scope level\n          if (beginStatement) {\n            if (state.statementComment) {\n              // statement already started by comment\n              beginStatement = false;\n            }\n            state.statementComment =\n              stream.match(tlvCommentMatch, false); // comment start\n          }\n        }\n\n        var match;\n        if (style !== undefined) {\n        } else if (state.tlvInBlockComment) {\n          // In a block comment.\n          if (stream.match(/^.*?\\*\\//)) {\n            // Exit block comment.\n            state.tlvInBlockComment = false;\n            if (tlvTrackStatements && !stream.eol()) {\n              // Anything after comment is assumed to be real statement content.\n              state.statementComment = false;\n            }\n          } else {\n            stream.skipToEnd();\n          }\n          style = \"comment\";\n        } else if ((match = stream.match(tlvCommentMatch)) && !state.tlvInBlockComment) {\n          // Start comment.\n          if (match[0] == \"//\") {\n            // Line comment.\n            stream.skipToEnd();\n          } else {\n            // Block comment.\n            state.tlvInBlockComment = true;\n          }\n          style = \"comment\";\n        } else if (match = stream.match(tlvIdentMatch)) {\n          // looks like an identifier (or identifier prefix)\n          var prefix = match[1];\n          var mnemonic = match[2];\n          if (// is identifier prefix\n            tlvIdentifierStyle.hasOwnProperty(prefix) &&\n              // has mnemonic or we're at the end of the line (maybe it hasn't been typed yet)\n            (mnemonic.length > 0 || stream.eol())) {\n            style = tlvIdentifierStyle[prefix];\n          } else {\n            // Just swallow one character and try again.\n            // This enables subsequent identifier match with preceding symbol character, which\n            //   is legal within a statement.  (Eg, !$reset).  It also enables detection of\n            //   comment start with preceding symbols.\n            stream.backUp(stream.current().length - 1);\n          }\n        } else if (stream.match(/^\\t+/)) {\n          // Highlight tabs, which are illegal.\n          style = \"invalid\";\n        } else if (stream.match(/^[\\[\\]{}\\(\\);\\:]+/)) {\n          // [:], (), {}, ;.\n          style = \"meta\";\n        } else if (match = stream.match(/^[mM]4([\\+_])?[\\w\\d_]*/)) {\n          // m4 pre proc\n          style = (match[1] == \"+\") ? \"keyword.special\" : \"keyword\";\n        } else if (stream.match(/^ +/)){\n          // Skip over spaces.\n          if (stream.eol()) {\n            // Trailing spaces.\n            style = \"error\";\n          }\n        } else if (stream.match(/^[\\w\\d_]+/)) {\n          // alpha-numeric token.\n          style = \"number\";\n        } else {\n          // Eat the next char w/ no formatting.\n          stream.next();\n        }\n      } else {\n        if (stream.match(/^[mM]4([\\w\\d_]*)/)) {\n          // m4 pre proc\n          style = \"keyword\";\n        }\n      }\n      return style;\n    },\n\n    indent: function(state) {\n      return (state.tlvCodeActive == true) ? state.tlvNextIndent : -1;\n    },\n\n    startState: function(state) {\n      state.tlvIndentationStyle = [];  // Styles to use for each level of indentation.\n      state.tlvCodeActive = true;  // True when we're in a TLV region (and at beginning of file).\n      state.tlvNextIndent = -1;    // The number of spaces to autoindent the next line if tlvCodeActive.\n      state.tlvInBlockComment = false;  // True inside /**/ comment.\n      if (tlvTrackStatements) {\n        state.statementComment = false;  // True inside a statement's header comment.\n      }\n    }\n\n  }\n});\n"],"names":["mkVerilog","parserConfig","statementIndentUnit","dontAlignCalls","noIndentKeywords","multiLineStrings","hooks","words","str","obj","split","i","length","curPunc","curKeyword","keywords","isOperatorChar","isBracketChar","unsignedNumber","decimalLiteral","binaryLiteral","octLiteral","hexLiteral","realLiteral","closingBracketOrWord","closingBracket","blockKeywords","openClose","keyword","undefined","statementKeywords","tokenBase","stream","state","style","quote","ch","peek","test","next","eatWhile","tokenize","escaped","end","eat","tokenComment","skipToEnd","backUp","match","cur","current","maybeEnd","Context","indented","column","type","align","prev","this","pushContext","col","c","context","popContext","t","isClosing","text","contextClosing","closingKeywords","name","startState","indentUnit","startOfLine","token","ctx","sol","indentation","eatSpace","close","indent","textAfter","cx","fromHook","firstChar","charAt","closing","possibleClosing","unit","languageData","indentOnInput","allClosings","closings","j","push","RegExp","join","buildElectricInputRegEx","commentTokens","line","block","open","verilog","tlvIdentifierStyle","$","$$","tlvScopePrefixChars","tlvIdentMatch","tlvLineIndentationMatch","tlvCommentMatch","electricInput","tlvInBlockComment","string","tlvCodeActive","pos","depth","tlvIndentationStyle","blankline","chPos","bodyString","slice","pop","tlvNextIndent","prefix","mnemonic","hasOwnProperty","eol"],"mappings":"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","x_google_ignoreList":[0]}