re2js 2.2.1 → 2.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/RE2Flags.js","../src/PublicFlags.js","../src/Codepoint.js","../src/UnicodeRangeTable.js","../src/UnicodeTables.js","../src/Unicode.js","../src/Utils.js","../src/helpers.js","../src/MatcherInput.js","../src/MachineInput.js","../src/exceptions.js","../src/Matcher.js","../src/Inst.js","../src/Machine.js","../src/DFA.js","../src/Backtracker.js","../src/OnePass.js","../src/Regexp.js","../src/Prefilter.js","../src/Prog.js","../src/Compiler.js","../src/Simplify.js","../src/CharGroup.js","../src/CharClass.js","../src/Parser.js","../src/RE2.js","../src/Set.js","../src/TranslateRegExpString.js","../src/index.js"],"sourcesContent":["//// Parser flags.\nclass RE2Flags {\n // Fold case during matching (case-insensitive).\n static FOLD_CASE = 0x01\n // Treat pattern as a literal string instead of a regexp.\n static LITERAL = 0x02\n // Allow character classes like [^a-z] and [[:space:]] to match newline.\n static CLASS_NL = 0x04\n // Allow '.' to match newline.\n static DOT_NL = 0x08\n // Treat ^ and $ as only matching at beginning and end of text, not\n // around embedded newlines. (Perl's default).\n static ONE_LINE = 0x10\n // Make repetition operators default to non-greedy.\n static NON_GREEDY = 0x20\n // allow Perl extensions:\n // non-capturing parens - (?: )\n // non-greedy operators - *? +? ?? {}?\n // flag edits - (?i) (?-i) (?i: )\n // i - FoldCase\n // m - !OneLine\n // s - DotNL\n // U - NonGreedy\n // line ends: \\A \\z\n // \\Q and \\E to disable/enable metacharacters\n // (?P<name>expr) for named captures\n // \\C (any byte) is not supported.\n static PERL_X = 0x40\n // Allow \\p{Han}, \\P{Han} for Unicode group and negation.\n static UNICODE_GROUPS = 0x80\n // Regexp END_TEXT was $, not \\z. Internal use only.\n static WAS_DOLLAR = 0x100\n // Allow captureless Lookbehinds (?<=) and (?<!)\n static LOOKBEHIND = 0x200\n\n static MATCH_NL = RE2Flags.CLASS_NL | RE2Flags.DOT_NL\n // As close to Perl as possible.\n static PERL = RE2Flags.CLASS_NL | RE2Flags.ONE_LINE | RE2Flags.PERL_X | RE2Flags.UNICODE_GROUPS\n // POSIX syntax.\n static POSIX = 0\n //// Anchors\n static UNANCHORED = 0\n static ANCHOR_START = 1\n static ANCHOR_BOTH = 2\n}\n\nexport { RE2Flags }\n","/**\n * Public flags for RE2JS and RE2Set compilation.\n */\nconst PublicFlags = {\n CASE_INSENSITIVE: 1, // case insensitive matching\n DOTALL: 2, // dot matches all characters, including newline\n MULTILINE: 4, // multiline matching\n DISABLE_UNICODE_GROUPS: 8, // unicode groups will be syntax errors\n LONGEST_MATCH: 16, // matches longest possible string\n LOOKBEHINDS: 512 // enable linear-time captureless lookbehinds\n}\n\nexport { PublicFlags }\n","/**\n * Various constants and helper for unicode codepoints.\n */\nconst ASCII_SIZE = 128\nconst ASCII_TO_UPPER = new Int32Array(ASCII_SIZE)\nconst ASCII_TO_LOWER = new Int32Array(ASCII_SIZE)\n// The highest legal Basic Multilingual Plane (BMP) value.\nconst MAX_BMP = 0xffff\n\nfor (let i = 0; i < ASCII_SIZE; i++) {\n if (i >= 97 && i <= 122) {\n // a-z\n ASCII_TO_UPPER[i] = i - 32\n } else {\n ASCII_TO_UPPER[i] = i\n }\n if (i >= 65 && i <= 90) {\n // A-Z\n ASCII_TO_LOWER[i] = i + 32\n } else {\n ASCII_TO_LOWER[i] = i\n }\n}\n\nclass Codepoint {\n // codePointAt(0)\n static CODES = new Map([\n ['\\x07', 7],\n ['\\b', 8],\n ['\\t', 9],\n ['\\n', 10],\n ['\\v', 11],\n ['\\f', 12],\n ['\\r', 13],\n [' ', 32],\n ['\"', 34],\n ['$', 36],\n ['&', 38],\n ['(', 40],\n [')', 41],\n ['*', 42],\n ['+', 43],\n ['-', 45],\n ['.', 46],\n ['0', 48],\n ['1', 49],\n ['2', 50],\n ['3', 51],\n ['4', 52],\n ['5', 53],\n ['6', 54],\n ['7', 55],\n ['8', 56],\n ['9', 57],\n [':', 58],\n ['<', 60],\n ['>', 62],\n ['?', 63],\n ['A', 65],\n ['B', 66],\n ['C', 67],\n ['F', 70],\n ['P', 80],\n ['Q', 81],\n ['U', 85],\n ['Z', 90],\n ['[', 91],\n ['\\\\', 92],\n [']', 93],\n ['^', 94],\n ['_', 95],\n ['a', 97],\n ['b', 98],\n ['f', 102],\n ['i', 105],\n ['m', 109],\n ['n', 110],\n ['r', 114],\n ['s', 115],\n ['t', 116],\n ['v', 118],\n ['x', 120],\n ['z', 122],\n ['{', 123],\n ['|', 124],\n ['}', 125]\n ])\n\n // convert unicode codepoint to upper case codepoint\n // return same codepoint, if cannot do it (or codepoint not have upper variation)\n static toUpperCase(codepoint) {\n if (codepoint < ASCII_SIZE) return ASCII_TO_UPPER[codepoint]\n\n const s = String.fromCodePoint(codepoint).toUpperCase()\n const expectedLen = s.codePointAt(0) > MAX_BMP ? 2 : 1\n if (s.length > expectedLen) {\n return codepoint\n }\n\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toLowerCase()\n const originExpectedLen = sOrigin.codePointAt(0) > MAX_BMP ? 2 : 1\n if (sOrigin.length > originExpectedLen || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n\n return s.codePointAt(0)\n }\n\n // convert unicode codepoint to lower case codepoint\n // return same codepoint, if cannot do it (or codepoint not have lower variation)\n static toLowerCase(codepoint) {\n if (codepoint < ASCII_SIZE) return ASCII_TO_LOWER[codepoint]\n\n const s = String.fromCodePoint(codepoint).toLowerCase()\n const expectedLen = s.codePointAt(0) > MAX_BMP ? 2 : 1\n if (s.length > expectedLen) {\n return codepoint\n }\n\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toUpperCase()\n const originExpectedLen = sOrigin.codePointAt(0) > MAX_BMP ? 2 : 1\n if (sOrigin.length > originExpectedLen || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n\n return s.codePointAt(0)\n }\n}\n\nexport { Codepoint }\n","class UnicodeRangeTable {\n constructor(data, isStride1 = false) {\n this.data = data // A Uint32Array\n this.isStride1 = isStride1\n this.SIZE = isStride1 ? 2 : 3\n }\n\n // High-performance getters that do NOT allocate memory\n getLo(index) {\n return this.data[index * this.SIZE]\n }\n getHi(index) {\n return this.data[index * this.SIZE + 1]\n }\n getStride(index) {\n return this.isStride1 ? 1 : this.data[index * this.SIZE + 2]\n }\n\n get(index) {\n const i = index * this.SIZE\n return [this.data[i], this.data[i + 1], this.getStride(index)]\n }\n\n get length() {\n return this.data.length / this.SIZE\n }\n}\n\nexport { UnicodeRangeTable }\n","// GENERATED BY tools/scripts/genUnicodeTable.js; DO NOT EDIT.\n// yarn node ./tools/scripts/genUnicodeTable.js > src/UnicodeTables.js\n\nimport { UnicodeRangeTable } from './UnicodeRangeTable'\n\nconst B64_MAP = new Uint8Array(256)\nfor (\n let i = 0, b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-';\n i < 64;\n i++\n) {\n B64_MAP[b.charCodeAt(i)] = i\n}\n\nconst decodeVLQ = (str) => {\n const res = []\n let value = 0,\n shift = 0\n for (let i = 0; i < str.length; i++) {\n let digit = B64_MAP[str.charCodeAt(i)]\n value |= (digit & 0x1f) << shift\n if ((digit & 0x20) === 0) {\n res.push(value)\n value = 0\n shift = 0\n } else {\n shift += 5\n }\n }\n return res\n}\n\nconst decodeRanges = (str, isStride1) => {\n const res = decodeVLQ(str)\n const numRanges = isStride1 ? res.length / 2 : res.length / 3\n const out = new Uint32Array(numRanges * 3)\n let current = 0,\n resIdx = 0\n for (let i = 0; i < numRanges; i++) {\n current += res[resIdx++]\n out[i * 3] = current\n current += res[resIdx++]\n out[i * 3 + 1] = current\n out[i * 3 + 2] = isStride1 ? 1 : res[resIdx++]\n }\n return out\n}\n\nconst decodeOrbit = (str) => {\n const res = decodeVLQ(str)\n const map = new Map()\n let currentKey = 0\n for (let i = 0; i < res.length; i += 2) {\n currentKey += res[i]\n map.set(currentKey, res[i + 1])\n }\n return map\n}\n\nclass LazyMap {\n constructor(initializer) {\n this.initializer = initializer\n this.cache = new Map()\n }\n has(key) {\n return key in this.initializer\n }\n get(key) {\n if (this.cache.has(key)) return this.cache.get(key)\n const fn = this.initializer[key]\n const val = fn ? fn() : null\n this.cache.set(key, val)\n return val\n }\n}\n\nclass UnicodeTables {\n static _CASE_ORBIT = null\n static get CASE_ORBIT() {\n if (!this._CASE_ORBIT) {\n this._CASE_ORBIT = decodeOrbit(\n 'rCrDIzDYqpII-LiC8cQlHa+0HGrpI6EzClClOBmOBkOBoOBpOBnOBrOBsOBqOlByPBzPBxPyK5crCz+HCydD1dD4dB5dB6dC8dEgeBheCieDmeDpeHj-HCweD1fDxeB+9HBwfC1FE2eBxfBjeBjdD1eDmpIHycB0fEmdBgda6cBhdD4cB1cdyhBC0hBK+hBDhiBBiiBIqiBIgkHChkHKikHDjkHBkkHImkHYjjBBnkH9gGygBB0gBB+gBBhhBBlkHBihBBqhBBijBBqypB4OhzHB70H6BgzHD-GiHo8HBp8HBq8HBr8HBs8HBt8HBu8HBv8HBg8HBh8HBi8HBj8HBk8HBl8HBm8HBn8HB48HB58HB68HB78HB88HB98HB+8HB-8HBw8HBx8HBy8HBz8HB08HB18HB28HB38HBo9HBp9HBq9HBr9HBs9HBt9HBu9HBv9HBg9HBh9HBi9HBj9HBk9HBl9HBm9HBn9HE89HJz9HClaFs+HJj+HHwcQwdQ8-HJz-HqJpdErCBlG-ohBrypBBokH6lVm4+BBl4+B'\n )\n }\n return this._CASE_ORBIT\n }\n\n static _Print = null\n static get Print() {\n if (!this._Print) {\n this._Print = new UnicodeRangeTable(\n decodeRanges(\n 'hB9CBjBLBCpWBDFBFGBCCCBSBCsMBClBBDxBBDCBC2BBJaBFFBSVBC-FBCvBBD6BBDkDBP6BBDwBBDOBCbBDCCBJBGfBIqCBCgFBCHBDBBDVBCGBCEEBCBDIBDBBDDBJFFBCCBDBDYBDCBCFBFBBDVBCGBCBBCBBCBBDCCBDBFBBDCBEIIBCBCIIBPBLCBCIBCCBCVBCGBCBBCEBDJBCCBCCBDQQBCBDLBIGBCCBCHBDBBDVBCGBCBBCEBDIBDBBDCBICBFBBCEBDRBLBBCFBECBCDBEBBCCCBEEBEEBBBELBFEBECBCDBDHHPUBGMBCCBCWBCPBDIBCCBCDBIBBCCBCBBDDBDJBIVBCCBCWBCJBCEBDIBCCBCDBIBBGCBCDBDJBCCBNMBCCBCyBBCCBCFBFPBDZBCCBCRBEXBCIBCDDBFBEFFBEBCCCBGBHJBDCBN5BBFcBmBBBCCCBDBCXBCCCBVBDEBCCCBFBCJBDDBhBnCBCjBBFmBBCjBBCOBCMBmBlGBCGGD4LBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBDfBEZBH1CBDFBD-TBCbBE4CBIVBKXBKTBNMBCCBCBBN9CBDJBHJBHNBCKBH4CBIqBBGlCBLeBCLBFLBFEEBoBBDEBMrBBFZBHKBE9BBDgCBCcBDKBHJBHNBDtBBDLBVsCBClFBJ7BBEOBE9BBGqBBDKBJqBBG1QBDFBDlBBDFBDHBCGCBdBD0BBCOBCNBDFBCSBDCBCIBSXBJuBBSBBDaBCMBEhBBPgBBQrEBF5UBXKBWz4BBD9LBGsBBCGGD3BBIBBPXBKGBCGBCGBCGBCGBCGBCGBCGBC9DBjBZBC4CBN1GBbPBC+BBC1CBDmDBGqBBC9CBC1CBKvBBCszcBE2BBK7KBV3FBJ8GBV7BBEJBH3BBJlCBJLBHzDBMdBEtCBCKBFgBBC2BBKNBDJBDmDBZbBLFBDFBDFBKGBCGBC7BBF9DBDJBHj9KBNWBFwBBloItLBDpDBnBGBNEBGZBCEBCCCBCCBCCBoUBhBpBBHyBBCSBCDBFEBCmEBF9FBEFBDFBDFBDCBEGBCGBOBBDLBCZBCSBCBBCOBDNBjB6DBGCBFsBBE3CBCMBEwBwBBsBBjEcBEwBBQbBFjBBKdBGqBBGdBCkBBFNBrB9EBDJBHjBBFjBBFnBBJzBBMLBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBCnCBJIBxBSBCBBGgBBEaBGaBnB3BBFTBDxBBCBBGHBCCBCcBDCBFJBIIBI-BBhBmBBFLBK1BBEcBDaBGZBIDBNGBxCoCB4ByBBOyBBItBBJJBHlBBEcBJBBxGeBCpBBCCBDBBRFBJIBiBtBBJpBBXZBnBbBVWBKtCBFjBBK9BBCEBOYBIJBH0BBCRBJmBBK-CBCTBMRBCuBB-BGBCCCBCBCOBCKBH6BBGJBHDBCHBDBBDVBCGBCBBCEBCJBDBBDCBDHHGGBDGBEEBMJBCDDClBBCJBCDDCDBCJBCBBJBBe7CBCEBfnCBJJBnF1BBDlBBjBkCBMJBHMBU5BBHJBHTBdaBDOBFWB6F7BBlDyCBNHBDDDBGBCBBCdBCBBDLBKJBnCHBDtBBDKBcnCBJyCBOoCBIJB3CHB5ChBBPJBHIBCsBBCNBLcBEfBDVBCNBqCGBCBBCrBBECCBCCBHBJJBHFBCBBCkBBCBBCFBIJBHrBBFJB3HYBIQBCoBBEcB2CQQBwBBO6cBnDuDBCEBMjGBtyCiDBOvhBBRVBL68DBGmSB61G5BBn2B4RBIeBCJBFwCBCJBHdBDFBLlCBLJBCGBCUBGSBxN5BBnG6CBGYBDYBtBqCBF4BBIQBhCEBMGBK1mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBDDBh7D8HBEzNBHWBQQBQtBBDWBKzDB9B1HBLmBBDpCBJvDBWlCB7DTBNTBN2CBKYBoE0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBD9VBQEBCOBxiBeBHFB2GGBCQBDGBCBBCEBG9BBiBxDxDBrBBENBDJBFBBhKeBS5BBGxOxOBoBB3GqBBFhGhGBdBCVBJBBhHGBCDBCBBCOBCkGBDPBqBrCBFJBFBByYjCBtC8BBjGDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBBvIrBBFjDBNOBDOBCOBCkBBLtFB5BcBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBCmDBmgB-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIBnkzVvHB',\n false\n )\n )\n }\n return this._Print\n }\n\n static CATEGORIES = new LazyMap({\n C: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'AfBgDgBBOrWrWBHHBCBICCVuMuMnBBBzBBBE4B4BBGBcDBHQBXhGhGxBBB8BBBmDNB8BBByBBBQddBCCMEBhBGBsCiFiFJBBDBBXIICCBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBPMMBEB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKMMBDBbEByBPBDBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBjoIBvLBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCB-FCBHBBHBBHBBECBIIIBLBDBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIB-BGGBLBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMBxhBPBXJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBF-6DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBrCHBxDUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIlkzVBxHvw-FB',\n false\n )\n ),\n Cc: () => new UnicodeRangeTable(decodeRanges('AfgDgB', true)),\n Cf: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'tFzqBzqBBEBXhGhGyBhMhMBxCxCs5D9-B9-BBDBbEByBEBCJBw03B6H6HBBBimEQQj7IPBhjiBDBwmFHBn0rYffB+CB',\n false\n )\n ),\n Cn: () =>\n new UnicodeRangeTable(\n decodeRanges(\n '4bBBHDBICCVuMuMnBBBzBBBE4B4BBGBcDBHKBvI9B9BBmDmDBMB8BBByBBBQddBCCMEBjBEBuHJJBDDBXXICCBBBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBbFB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKmDmDNBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBDBvzIBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCC-FCBHBBHBBHBBECBIIIBIBGBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIBlCJBCBBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMB3iBJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBJ76DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBjGUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIm8yVBCdBhD-DBxHvw-BB---BBB---BBB',\n false\n )\n ),\n Co: () => new UnicodeRangeTable(decodeRanges('gg4B-nGh4hc9--BD9--B', true)),\n Cs: () => new UnicodeRangeTable(decodeRanges('gg2B--B', true)),\n L: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBHZBwBLLFGGBVBCeBCpOBFLBPEBICCiEEBCBBDDBCHHCCBCCCBSBCyCBCqEBJlFBClBBDHHBnBBoCaBFDBuBqBBkBBBCiDBCQQBIIBLLBBBDRRCdBe4CBMZZBfBKBBFGGBUBFKKEYYBXBIKBGXBCGBRpBB7B1BBETTIJBQPBFHBDBBDVBCGBCEEBCBERROBBCCBPBBLJJBEBFBBDVBCGBCBBCBBCBBgBDBCUUBBBRIBCCBCVBCGBCBBCEBETTQBBYMMBGBDBBDVBCGBCBBCEBEffBCCBBBQSSCFBECBCDBEBBCCCBEEBEEBBBELBX1B1BBGBCCBCWBCPBEbbBBBCBBDBBfFFBGBCCBCWBCJBCEBEffBBBCBBQBBSIBCCBCoBBDRRGCBJCBZFBGRBEXBCIBCDDBFB7BvBBCBBNGB7BBBCCCBDBCXBCCCBIBCBBKDDBDBCWWBCBhBgCgCBGBCjBBcEB0DqBBVRRBEBFDBEEEBIIBBBFMBNSSBkBBCGGDqBBCsKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPBR1CBDFBErTBDQBCZBGqCBHHBIRBOSBPRBPMBCCBQzBBkBFFkC4CBIEBDhBBCGGBkCBLeByBdBDEBMrBBFZB3BWBK0BBzC+C+CBtBBSHB3BdBOBBLrBBbjBBqBCBLjBBDKBGqBBDCBqBDBCFBCBBEGGB+FBhC1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGB1DOORMBmDFFDJBCEEBDBHGCBCBCKBDDBGEBF1B1BB8zC8zCBjHBHDBEBBNlBBCGGD3BBIRRBVBKGBCGBCGBCGBCGBCGBCGBCGBxC2O2OBrBrBBDBGBBF1CBHCBC5CBCDBGqBBC9CBSfBxBPBhQ-tGBhCs0VBkCtBBDsIBEPBLBBVuBBReBDlCByBIBDmDBDxCBVQBCCBCDBCWBezBBPxBB-BFBECCBMMBaBLWBacBIuBBdRRBDBCJBLEBCoBBYCBCHBVWBEEEBwBBCEEBDDBDBDCCZCBDKBICBNFBDFBDFBKGBCGBCqBBCNBHyDBej9KBNWBFwBBloItLBDpDBnBGBNEBGCCBIBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBlBZBHZBM4CBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmMcBEwBBwBfBOTBCHBHlBBLdBDjBBFHBxB9EBTjBBFjBBFnBBJzBBNKBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCQQBCBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4ByBBOyBBOjBBnBbBKWB7HpBBHBBRFB5BcBLJJBUBrBRBvBUBcWBN0BB6BBBDOOBrBBhBYBbjBBeDDJiBBENNBuBBPDBWCCkBRBCYBUBBgCGBCCCBCBCOBCJBIuBBnBHBDBBDVBCGBCBBCEBETTNEBfJBCDDClBBCaaCtBtBBzBBTDBVCBfvBBVBBC5F5FBtBBqBDBlBvBBV8B8BBpBBOoCoCBZBmBGB6FrBB1D-BBgBHBDDDBGBCBBCXBQCC-CHBDmBBRCCdLLBmBBIWWMtBBUTTBnCBoGgBBgBIBCkBBSyByBBcBxDGBCBBClBBWaaBEBCBBCfBPYYBqBBlISBQCCBLBChBB9DwCwCB4cBnHjGBtyCgDBQvhBBSFBa68DBGmSB61GdBj3B4RBIeBSuCBSdBTvBBRDBgBUBGSBxNsBB0G-BBhBYBDYBtBqCBGjCjCBLBhCBBCPPBNNB0mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBn7F0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BeBHFBmI9BBzEsBBLGBRiKiKBcBTrBBlPbBlHdBDwGwGBdBCCBCBBCGBDEBKBBhHGBCDBCBBCOBCkGB8BjCBI1lB1lBBCBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQBlqE-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB',\n false\n )\n ),\n LC: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBHZB7BLLBVBCeBCiGBCDBFvGBDZBhGDBDBBECBCHHCCBCCCBSBCyCBCqEBJlFBClBBKoBB44ClBBCGGDqBBDCBhV1CBDFBjkCKBGqBBDCBhCrBBgCMBChBBmD1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGBmIFFDJBCEEBDBHGCBCBCFBFDDBCBGEBF1B1BB8zC8zCB6DBDmDBHDBEBBNlBBCGGzoetBBTbBnEtCBCWBEDBCsCBZBBE2Z2ZBpBBGIBIvCBh6TGBNEBqgBZBHZBmlBvCBhDjBBFjBB1DKBCOBCGBCBBCKBCOBCGBCBBk2ByBBOyBB+CVBLVB74C-BBhrV-BBhBYBDYBtpZ0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BJBCTBHFB2uCjCB',\n false\n )\n ),\n Ll: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hDZB7BqBqBBWBCHBC2BCBQCBuBCDECBBBDCCDEEBFFDEEBBBDDDCCCDCCBCCDEECDDBDDBBBHGDCOCBSCBDDCEEC4BCBFBDDDBCCFICBjCBDZBiGCCEEEBBBTccBhBBCBBECBCWCBDBCGDB0B0BBuBBCgBCK0BCDMCBgDCxBoBBo6CqBBDCB5XFBjkCIBC2D2DBqBBgCMBChBBnD0ECBHBCgDCBHBJFBLHBJHBJFBLHBJHBJNBDHBJHBJHBJEBCBBHEEBBBCBBJDBDBBJHBLCBCBBzIEEBEEcKFDBBJDBF2B2Bs1CvBBCEEBGCFCCBCCBEBGiDCBIICFFNlBBCGG0oesBCUaCoEMCBBBC+BCBGBCCCDICFCCDCCBBBCSCGGGCMCFCCDOCbEE2ZqBBGIBIvCBh6TGBNEBqhBZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBnqZZBbGBCRBbZBbDBCCCBFBCKBbZBbZBbZBbZBbZBbZBbZBbZBbbBdYBCFBbYBCFBbYBCFBbYBCFBbYBCFBC15B15BBIBCTBHFB4vChBB',\n false\n )\n ),\n Lm: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wVRBFLBPEBICCmEGG-OnHnHlFBBuIBBFgBgBKEEhFoFoF1mBgEgE2R72B72BsDkTkTxOFBvF+BBOjBjBBjBByVOORMBg-CBByHgGgG2OsBsBBDBGiDiDB+C+CBBB34bjnBjnBBEBvIzDzDdBB6DIBxCYYpDDBEBB2OXXqEtDtDWBBoDDBKngVngVuBBBh-BFBCpBBCIB0sBhBhB2K04D04DnrTDB9PCBpBBBnRMBhCBBCPPB9-P9-PBCBCGBCBByhM9BBqGGBud0Q0QsSAB',\n false\n )\n ),\n Lo: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'qFQQhIFFBCBxGBB7ZaBFDBuBfBCJBkBBBCiDBCZZBLLBBBDRRCdBe4CBMZZBfBWVBrBYBIKBGXBCGBRoBB8B1BBETTIJBROBFHBDBBDVBCGBCEEBCBERROBBCCBPBBLJJBEBFBBDVBCGBCBBCBBCBBgBDBCUUBBBRIBCCBCVBCGBCBBCEBETTQBBYMMBGBDBBDVBCGBCBBCEBEffBCCBBBQSSCFBECBCDBEBBCCCBEEBEEBBBELBX1B1BBGBCCBCWBCPBEbbBBBCBBDBBfFFBGBCCBCWBCJBCEBEffBBBCBBQBBSIBCCBCoBBDRRGCBJCBZFBGRBEXBCIBCDDBFB7BvBBCBBNFB8BBBCCCBDBCXBCCCBIBCBBKDDBDBYDBhBgCgCBGBCjBBcEB0DqBBVRRBEBFDBEEEBIIBBBFMBNyDyDBnKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPByDrTBDQBCZBGqCBHHBIRBOSBPRBPMBCCBQzBBpBkCkCBhBBC0BBIEBDhBBCGGBkCBLeByBdBDEBMrBBFZB3BWBK0BBxFuBBSHB3BdBOBBLrBBbjBBqBCBLdByDDBCFBCBBE7hB7hBBCB4-C3BBZWBKGBCGBCGBCGBCGBCGBCGBCGBoR2B2BF1CBJCCB4CBFGGBpBBC9CBSfBxBPBhQ-tGBhC0wUBC2jBBkCnBBJrIBFPBLBBjCyByBBkCBqFoDoDEGBCCBCDBCWBezBBPxBB-BFBECCBMMBaBLWBacBIuBBuBEBDIBLEBCoBBYCBCHBVPBCFBEEEBwBBCEEBDDBDBDCCZBBEKBIPPBEBDFBDFBKGBCGByEiBBej9KBNWBFwBBloItLBDpDBkCCCBIBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBqDJBCsBBDeBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmMcBEwBBwBfBOTBCHBHlBBLdBDjBBFHBhEtCBjDnBBJzBB9CzBBN2JBKVBLHB5EFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCQQBCBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4FjBBnBDBCxJxJBoBBHBBRCBCBB5BcBLJJBUBrBRBvBUBcWBN0BB6BBBDOOBrBBhBYBbjBBeDDJiBBENNBuBBPDBWCCkBRBCYBUBBgCGBCCCBCBCOBCJBIuBBnBHBDBBDVBCGBCBBCEBETTNEBfJBCDDClBBCaaCtBtBBzBBTDBVCBfvBBVBBC5F5FBtBBqBDBlBvBBV8B8BBpBBOoCoCBZBmBGB6FrBB0GHBDDDBGBCBBCXBQCC-CHBDmBBRCCdLLBmBBIWWMtBBUTTBnCBoGgBBgBIBCkBBSyByBBcBxDGBCBBClBBWaaBEBCBBCfBPYYBnBBCBBlISBQCCBLBChBB9DwCwCB4cBnHjGBtyCgDBQvhBBSFBa68DBGmSB61GdBj3B4RBIeBSuCBSdBTvBB0BUBGSB0NnBB2MqCBGwFwFB0mHBqBfBiDyDBuwIiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBxzI2P2PBrBBiBiKiKBcBTrBBlPaBmHdBDwGwGBdBCCBCBBCGBDEBKiHiHBFBCDBCBBCOBCkGB8pBDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQBlqE-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB',\n false\n )\n ),\n Lt: () => new UnicodeRangeTable(decodeRanges('lOGDnB2sH2sHBGBJHBJHBNQQwBAB', false)),\n Lu: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBmDWBCGBiB2BCDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIJDCMCDQCDDDCCBC4BCIBBCBBDCCBCBCGCiJCCEJJHCCBBBCCCBCCBPBCIBkBDDBBBEWCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBpCDBNDBNDBNEBMDBnIFFECBDCBDEEBDBHGCBCBDDBLBBG+B+B9zCvBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoqZZBbZBbZBbCCBGDBDDBCBCHBbZBbBBCDBDHBCGBcBBCDBCEBCEEBFBcZBbZBbZBbZBbZBbZBfYBiBYBiBYBiBYBiBYBiB2pE2pEBgBB',\n false\n )\n ),\n M: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gYvDB0IGBoIsBBCCCBCCBCCpCKBxBUBRmDmDBFBDFBDBBCDBkBffBZB8CKB7BIBKZZBCBCIBCCBCEBsBCB8BIBrBXBCgBB3BCBCRBCGBLBBeCB5BCCBFBDBBDCBKLLBbbDCB5BCCBDBFBBDCBEffBEEMCB5BCCBGBCCBCCBVBBXFBCCB5BCCBFBDBBDCBICBLBBf8B8BBDBECBCDBKpBpBBDB4BCCBFBCCBCDBIBBMBBeCB5BCCBFBCCBCDBIBBMBBQNNBCB4BBBCGBCCBCDBKLLBeeBBBnCFFBEBCCCBGBTBB+BDDBFBNHBjDDDBHBMGBqCBBcECFBByBTBCBBGKBCjBBKlDlDBSBYDBFCBCCBDGBEDBOLBCLLBCBgWCBzdDBdCBeBBfBBhCfBKuBuBBBBC2D2DBjBjB3DLBFLB8GEB6BJBCcBDxBxBBsBBDLBVEBwBQBnBIBNCBfMB5BNBxBTB5ECBCUBFHHDCBnG-BBxWgBB--CCBuEhDhDBeBrRFBqDBB1udDBCJBhBBBxCBBxIEEFYYBDBF0C0CBzBzBBQBbRBOnBnBBGBaMBtBDBwBNBlBkCkCBMBNJJBuBuBBBBzBCCBBBDBBGBBCqBqBBDBGBBtHHBCBBx5TiXiXBOBRPBuejHjH2EEBn0BCBCBBGDBpBCBFmFmFB+R+RBCBiCEB+JBBuCFBnCKByBDB7DCB2BOBqBDDBLLBCBuBKBI+B+BBBBlBNBRBBtBNNBBBxBNBJDBCBB9CLBHDD+ELBWDB4BBBCGBDBBDCBKLLBDDBFBEEBkCIBCDDCDBCEBCPPBzCzCBQBYyCyCBSBsHGBDIBcBBzCQBrDMBmDOBhIOB2HFBCBBDDBCCCBuEuEBFBDGBEddBIBpBGBCDBJKKBJBvBPBnGHBoGHBCHBzCVBCNB7DFBECCBCCBFBCjCjCBDBCBBCEB8KDBKBBCxBxBBFBEEBYmnFmnFHOBpmLRBhuCEB8BGB5gBCCB1BBIDByCMMBslTslTBizEizEBsBBDWB-QEBEFBJHBDGBfDB1ECB89B2BBFxBBJPPXEBCOBxqBGBCQBDGBCBBCEBlDhFhFBFB4L+B+BBCB9PDB-HBB0HDDIBBG7O7OBFBuDGB29lYvHB',\n false\n )\n ),\n Mc: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'joC4B4BDCBJDBCBBzBBB7BCBHBBDBBLsBsB7BCBjC7B7BBBBJCCB2B2BB7B7BCHHBDDBLLnDBBCBBECBCCBLqBqBBBB+BDB+BBB7BCCBDBDBBCBBKBBdPPB7B7BBBBGCBCCBLrBrBBsCsCBBBHHBTBBrKBBgCsFsFBFFHDDBaaBLLBBBDGBWBBDFBDLLBBB5zBffiEIIBGBCBB7KDBDCBFBBCFBhHBB7BCCKCCBJJBEByExBxBGCCBDBCBB+BffFBBD9B9BDCBCEEBxBxBBGBJBBsFWW35EBB0-dBBD5C5CBzBzBBOBvEBBwBxBxBBFFBDDBBBvDBBDBBZuBuBCuDuDDBBGuHuHBCCBCCBCC0gZCCgEuBuBBBBFBB0DZZB8B8BxBCBKBBO+C+CBBBEBBCrFrFBBBgBBB7BBBCDBDBBDCBKLLB1C1CBBBIDDCDBCBBCmDmDBBBJBBErDrDBBBHCCBCBDuHuHBBBHDBDyDyDBBBJBBCuDuDCBBHoDoDCBBFmImIBBBK4H4HBEBCBBFDDCvEvEBBBJDBF1C1CeBB-BqGqGECCoGPPrDIID2G2GBDBFBBC-K-KBNNxBBBJBBCpvQpvQBBBlxD2BBpDBB0rYBBHFB',\n false\n )\n ),\n Me: () => new UnicodeRangeTable(decodeRanges('okBBB1xF-wB-wBBCBCCBsshBCB', false)),\n Mn: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gYvDB0IEBqIsBBCCCBCCBCCpCKBxBUBRmDmDBFBDFBDBBCDBkBffBZB8CKB7BIBKZZBCBCIBCCBCEBsBCB8BIBrBXBCfB4BCCFHBFEEBFBLBBe7B7BFDBJVVBbbDBB6BFFBFFBDDBBBEffBEEMBB6BFFBDBCBBFVVBXXBEBC7B7BDCCBCBJIIBMMBff+BNNzBEE4BCCBBBGCBCDBIBBMBBe7B7BDHHGBBVBBdBB6BBBFDBJVVBeepCIIBBBC7C7CDGBNHBjDDDBHBMGBqCBBcEC4BNBCEBCBBGKBCjBBKnDnDBCBCFBCBBDBBaBBFCBRDBODDBHHQgWgWBBBzdCBeBBfBBfBBhCBBCGBJDDBJBKuBuBBBBC2D2DBjBjB3DCBFBBKHHBBB8GBBD7B7BCGBCCCDHBHJBDxBxBBMBCeBDLBVDBxBCCBDBCGGpBIBNBBhBDBDBBCCB5BCCBEECCB7BHBDBB5ECBCMBCGBFHHEBBnG-BBxWMBFEEBKB--CCBuEhDhDBeBrRDBsDBB1udFFBIBhBBBxCBBxIEEFaaBGG4EBBbRBOnBnBBGBaKBvBCBxBDDBCBDBBoBkCkCBEBDBBDBBNJJwB0B0BCCBDBBGBBCrBrBBJJvHDDFx5Tx5TiXPBRPBuejHjH2EEBn0BCBCBBGDBpBCBFmFmFB+R+RBCBiCEB+JBBuCFBnCKByBDB8D3B3BBNBqBDDBLLBBByBDBDBBI+B+BBBBlBEBCHB-BNNB1B1BBHBLDBDgDgDBBBDCCBHHD+E+EEHBWBB6BBBEmBmBBFBEEBnCFBOECPBB2CHBDCBCYY1CFBCFFBCCBvHvHBCBHBBCBBcBB2CHBDCCBrDrDCDDBEBCmDmDCDDBCBCEBkIIBCBBhIBBCFFxEDBDBBFhBhBBIBpBFBDDBJKKBEBDCBvBMBCBBnGCCBBBCqGqGBFBCFBCzCzCBUBDGBCBBCBB7DFBECCBCCBFBCpCpCBEEC8K8KBMMB1B1BBDBGCCYmnFmnFHOBpmLLBECBhuCEB8BGB5gBgCgCBCByC5lT5lTBizEizEBsBBDWBhRCBSHBDGBfDB1ECB89B2BBFxBBJPPXEBCOBxqBGBCQBDGBCBBCEBlDhFhFBFB4L+B+BBCB9PDB-HBB0HDDIBBG7O7OBFBuDGB29lYvHB',\n false\n )\n ),\n N: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wBJB5DBBGDDBBBitBJBnEJBnGJB9MJB3DJBFFBtDJB3DJB3DJBDFBvDMB0DJBJGBoDJBpDGBISBuDJBhDJB3DJBnCTBtIJBnCJBwWTBybCBwHJBHJBXJBtJJBhEKBmFJBHJB3FJB3CJBnEJBHJB3gBEEBEBHJBnGyBBDEB3W7BBvCVB3TdBqrBqYqYaIBPCB4KDBrEJBfHBCOBhBJBoBOBh7cJB9FJBhKFB7EJBnBJBnGJBXJB3CJB3MJB34UJBuPsBBN4BBSBB2KaBlBDBeJJnEEBrGJBvdHBaGBoBIBsCEBXFBhFBBDPBDtBBhCIB1BBBfCBsCEBpDHBZHBqBGBrKFBxBJBHJB3IeB-EJBrBDBxDGBnEdBhEJB9BJBxEJBITB8HJB3KJB3DJB3LJBnDJBHTBtCLBlNSB+CJB3UJB3CcBkHJBnCJB3BJBnLJBnDUBshBuDBimPJBnpCJB3CJBnEJBCGBvQJBnIWB+KCB6nXJBnuBTBNTBtDYB2iBxBBhqCJBnNJB3PJB4HJBtWIBhEJB4Y6BBCCBCDBtCsBBCOBjeMBk3CJB',\n false\n )\n ),\n Nd: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wBJnxBJnEJnGJ9MJ3DJ3DJ3DJ3DJ3DJ3DJ3DJ3DJ3DJhDJ3DJnCJ3IJnCJn6BJnBJtJJhEJnFJHJ3FJ3CJnEJHJnuiBJnVJnBJnGJXJ3CJ3MJ34UJnsBJnkCJHJ9YJhEJ9BJxEJ3IJ3KJ3DJ3LJnDJHTtCJnNJnDJ3UJ3CJ3HJnCJ3BJnLJ3uQJnpCJ3CJnEJ3QJ37XJ12CxBhqCJnNJ3PJ4HJ2aJ30EJ',\n true\n )\n ),\n Nl: () =>\n new UnicodeRangeTable(\n decodeRanges('u3FCBwzCiBBDDB-zDaaBHBPCBs1dJBxyW0BBtOJJnEEBrhIuDBm8SCB', false)\n ),\n No: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'yFBBGDDBBB2pCFB5LFB5DCBmEGB6GGBSIByNJB2hBTB0jBJBhP20B20BEFBHJBnGPBqB3W3WB6BBvCVB3TdBqrB1kB1kBBCBrEJBfHBCOBhBJBoBOBxrdFBymWsBBiCDBSBB2KaBlBDB1pBHBaGBoBIBsCEBXFBhFBBDPBDtBBhCIB1BBBfCBsCEBpDHBZHBqBGBrKFBhLeB-EJBrBDBxDGBnETB8LTBmqBBBvNIBobSB0aUBn8SGB-YWBqhZTBNTBtDYBvqFIBid6BBCCBCDBtCsBBCOBjeMB',\n false\n )\n ),\n P: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hBCBCFBCDBLBBEBBbCBCccCkBkBGEELBBEEE-VJJzOFBqBBB0BCCDDDtBBBVBBCBBOCCBBBrCDBnDsBsBBMBqHCB3BOBgBmImIBLLtE5D5D6DnMnMNwLwL7CLLBpFpFBNBCmBmBBCBoCrCrCBDBFBBwDFBsFlTlTBHB4EuTuTtBBBvCCBoCBB+ECBCCBmBKB6JBB5GBBhEGBCFBhFBBLGBdCB9DDB8BEB-BBBhCHBM9Z9ZBWBJTBCMBCLBfBBPBB6TDBeBB+hBNBwCBBgBJB0MVBgCDBhBBB8XDBCBBxDwEwEBtBBCfBDLBkNCBFJBDLBRNNjD7C7CjgdBBuICBkDLL0DFB9LDB3CBBpBCBCyByBBwBwBiDMBRBB9DDB-DBBRBB6HzqUzqUBxGxGBIBXiBBCNBCFFCBB2ECBCFBCDBLBBEBBbCBCccCCCBFB7MCB9UxBxB-MoXoXoGgBgBxIIBnBxDxDBFBjCGB6CDByO-J-JjBlElEBDBtBDB+FGBuDBBCDB-DDBxBBBwCDBFOOCCB5CFBsDrJrJBCCBzDzDBDBLBBCpDpD7HWBqDCBdMBtCjEjEBBB9HpIpIBBB8E9C9CBGB0CCBCEB+CJB4GgDgDBDBrBBBmUBBrCMBwFxjBxjBBDB97CBB8zOBBmEiCiCBDBJpRpRBBBoJDBoK9lT9lTovHEB07C-a-aBAB',\n false\n )\n ),\n Pc: () => new UnicodeRangeTable(decodeRanges('-Cg-Hg-HBUU-u3BBBZCBwHAB', false)),\n Pd: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'tB9qB9qB0BiyDiyDmgBqgCqgCBEBiwDDDgBBBFdd-NUUwDxszBxszBBmBmBLqFqFhzD-J-J',\n false\n )\n ),\n Pe: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'pB0B0BgB+1D+1DC-6B-6BqtC4B4BQ7T7TCff-hBMCxChBhBCGC1MUChCCCiBmhBmhBCECtBGCtNICEGCDBB-ozB6G6GeOCESSCCCrF0B0BgBGD',\n false\n )\n ),\n Pf: () => new UnicodeRangeTable(decodeRanges('7F+6H+6HEddpuDCCFDDQEE', false)),\n Pi: () => new UnicodeRangeTable(decodeRanges('rFt7Ht7HDBBDaapuDCCFDDQEE', false)),\n Po: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hBCBCCBDECBLLBEEBcclCGGPBBI-V-VJzOzOBEBqB3B3BDDDtBBBVBBCBBOCCBBBrCDBnDsBsBBMBqHCB3BOBgBmImIBLLtE5D5D6DnMnMNwLwL7CLLBpFpFBNBCxDxDrCEBFBBwDFBsFlTlTBHBmY9D9DBBBoCBB+ECBCCBmBFBCDB6JBB5GBBhEGBCFBhFBBLGBdCB9DDB8BEB-BBBhCHBMjajaBJJBGBJIBDDBDCBEKBCCCBIB7kDDBCBBxDwEwEBFFBBBDDDBHBCBBCDDBLLBDBCJBDDBCCCBLBDCBtNCB6B+F+FjgdBBuICBkDLL0DFB9LDB3CBBpBCBCyByBBwBwBiDMBRBB9DDB-DBBRBB6HlxUlxUBFBDXXVBBDDBECBCDBICBHCCB2E2EBBBCCBDECBLLBEEBcclBDDB7M7MBBB9UxBxB-MoXoXoGgBgBxIIBnBxDxDBFBjCGB6CDB0ZlElEBDBtBDB+FGBuDBBCDB-DDBxBBBwCDBFOOCCB5CFBsDrJrJBCCBzDzDBDBLBBCpDpD7HWBqDCBdMBtCjEjEBBB9HpIpIBBB8E9C9CBGB0CCBCEB+CJB4GgDgDBDBrBBBmUBBrCMBwFxjBxjBBDB97CBB8zOBBmEiCiCBDBJpRpRBBBoJDBoK9lT9lTovHEB07C-a-aBAB',\n false\n )\n ),\n Ps: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'oBzBzBgB-1D-1DC-6B-6B-rCEEnB4B4BQ7T7TCff-hBMCxChBhBCGC1MUChCCCiBmhBmhBCECaTTCECtNICEGCDipzBipzB4GeeCMCESSCCCrFzBzBgBEEDAB',\n false\n )\n ),\n S: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'kBHHRCBgBCCcCCkBEBCBBDCCBCBDEEfgBgBrODBNNBGGBCCCBPB2DPPBxDxDsErIrIBBB3DCBDDDBvGvGLUUB4H4HIBBpEqLqLBHHB2H2H-DjEjEBGBlEwGwGqBmGmGiGCBQCCBBBDFBVECmEHBCFBCBBGDBmGBBxXJB0WuLuLlL+E+EBgBBiLJBKIBhiBCCBBBMCBOCBOCBOBBmCOOoBCBOCBUhBB-BBBCDBCBBLCCBBBGFBCECFMMBFFBDBGDBC7B7BBFFB2LBFcBD+HBXKByCtCBXnTBtBwBBDeBLyMBX+BBFfBD1LBDpEBmHFBmLBBvBZBC4CBN1GBbPBFOOBNNWBBHBB8CBB0HBBFJBhBlBBKRRBdBMdBJQQBeBLmBBQ-JBhuG-BBx0V2BB6RWBKBBoDBB+EDBLDB+RCBiHPPB+9T+9TpEgBBuLPBhCBB3BHBtBDBjDCCBBBD7E7EHRRBBBgBCCcCCiEGBCGBOBB6JIB6BQBDCBCMBEwBwBBrBB7zBBBwSmWmWBiKiKBGBnjC2kC2kCBbBr6SDBG3qU3qUk7DvHBLCBEzNBHWBQQBgDzDB9B1HBLmBBD7BBGCBXBBIdBF8BBWhCBE7F7FB1CBrbaagBaagBaagBaagBaa9B-PB4BDBzBHBCNBCBBp2BwNwNttCEE+DiOiOBvIvIBqBBFjDBNOBDOBCOBCkBBYgFB5BcBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBC7CBLAB',\n false\n )\n ),\n Sc: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'kB+D+DBCBqnB8D8DzPBBzPBBI2H2HoImSmS8sClmClmCBgBB37hBkuVkuVtD7E7E8GBBEBB3-HDB-4wBxtCxtC',\n false\n )\n ),\n Sk: () =>\n new UnicodeRangeTable(\n decodeRanges(\n '+CCCoCHHFEEqQDBNNBGGBCCCBPB2DPPBjoBjoB15FCCBBBMCBOCBOCBOBB9kEBBkzdWBKBBoDBBxePPBniUniUBPB8bCCjF4g9B4g9BBDB',\n false\n )\n ),\n Sm: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'rBRRBBB+BCCuBFFmBgBgB-XwQwQBBB8xGOOoBCBOCBsEoBoBBDBHlClCBDBGBBFGDIgBgBBDDCgBgBBqIBhBBB7CffBXBpBFB2OKK3BHBwDxKxKBDBDeBLPBhIiEBX+BBFfBDhIBxBUBDFB9+zB5Z5ZCCBlFRRBBB+BCCkEHHBCBitDBBhrwBx+Bx+BagBgBagBgBagBgBagBgBat5Ft5FB-uC-uCBHB',\n false\n )\n ),\n So: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'mFDDFCCyerIrIBgEgEBvGvGLUUB4H4HkQ2L2LjEFBClElEwGqBqBoMCBQCCBBBDFBVECmEHBCFBCBBGDBmGBBxXJB0WzWzW+EhBBiLJBKIBksBBBCDBCBBLCCBHHBEBCECFMMBPPCBBC7B7BBKKBDBDDBCBBCBBCGBCeBDBBCCCBdBtIHBFTBDGBDwCBCdBanBBHnCBXKByCtCBX2FBCIBC1BBJuDBC3HBtBrBBhC-HBhQvBBWBBHmBBDpEBmHFBmLBBvBZBC4CBN1GBbPBFOOBNNWBBHBBxKBBFJBhBlBBKRRBdBMdBJQQBeBLmBBQ-JBhuG-BBx0V2BBibDBLBBC+R+RBBBqqUPBuLPBhCBB3BHBuBCBlPEEFBBOBB6JIB6BQBDCBCMBEwBwBBrBB7zBBBwSpgBpgBBGBnjC2kC2kCBGBFQBr6SDBG3qU3qUk7DvHBLCBEzNBHWBQPBhDzDB9B1HBLmBBD7BBGCBXBBIdBF8BBWhCBE7F7FB1CBqlB-PB4BDBzBHBCNBCBBp2B96C96CiEyWyWBqBBFjDBNOBDOBCOBCkBBYgFB5BcBOrBBFIBIBBPFB7E6HBG4WBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBB-B3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBC7CBLAB',\n false\n )\n ),\n Z: () => new UnicodeRangeTable(decodeRanges('gBgEgEgvFgsCgsCBJBeBBGwBwBh9DAB', false)),\n Zl: () => new UnicodeRangeTable(decodeRanges('ohIA', true)),\n Zp: () => new UnicodeRangeTable(decodeRanges('phIA', true)),\n Zs: () => new UnicodeRangeTable(decodeRanges('gBgEgEgvFgsCgsCBJBlBwBwBh9DAB', false))\n })\n\n static get Upper() {\n return this.CATEGORIES.get('Lu')\n }\n\n static SCRIPTS = new LazyMap({\n Adlam: () => new UnicodeRangeTable(decodeRanges('go6DrCFJFB', true)),\n Ahom: () => new UnicodeRangeTable(decodeRanges('g4lCaDOFW', true)),\n Anatolian_Hieroglyphs: () => new UnicodeRangeTable(decodeRanges('ggxCmS', true)),\n Arabic: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gwBEBCFBCNBCCBCfBCJBMZBCrDBChBBxCvBBxHhBBGqCBCcBxy8BtPBDvEBhBPBxDEBCmEBk7DeBkCFBJIBiBFBh43BDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBB',\n false\n )\n ),\n Armenian: () => new UnicodeRangeTable(decodeRanges('xpBlBDxBDCks9BE', true)),\n Avestan: () => new UnicodeRangeTable(decodeRanges('g4iC1BEG', true)),\n Balinese: () => new UnicodeRangeTable(decodeRanges('g4GsCCxB', true)),\n Bamum: () => new UnicodeRangeTable(decodeRanges('g1pB3CpowB4R', true)),\n Bassa_Vah: () => new UnicodeRangeTable(decodeRanges('w26CdDF', true)),\n Batak: () => new UnicodeRangeTable(decodeRanges('g+GzBJD', true)),\n Bengali: () =>\n new UnicodeRangeTable(decodeRanges('gsCDBCHBDBBDVBCGBCEEBCBDIBDBBDDBJFFBCCBDBDYB', false)),\n Beria_Erfe: () => new UnicodeRangeTable(decodeRanges('g17CYDY', true)),\n Bhaiksuki: () => new UnicodeRangeTable(decodeRanges('ggnCICsBCNLc', true)),\n Bopomofo: () => new UnicodeRangeTable(decodeRanges('qXB6wLqBxDf', true)),\n Brahmi: () => new UnicodeRangeTable(decodeRanges('ggkCtCFjBKA', true)),\n Braille: () => new UnicodeRangeTable(decodeRanges('ggK-H', true)),\n Buginese: () => new UnicodeRangeTable(decodeRanges('gwGbDB', true)),\n Buhid: () => new UnicodeRangeTable(decodeRanges('g6FT', true)),\n Canadian_Aboriginal: () => new UnicodeRangeTable(decodeRanges('ggF-TxRlC7tgCP', true)),\n Carian: () => new UnicodeRangeTable(decodeRanges('g1gCwB', true)),\n Caucasian_Albanian: () => new UnicodeRangeTable(decodeRanges('wphCzBMA', true)),\n Chakma: () => new UnicodeRangeTable(decodeRanges('gokC0BCR', true)),\n Cham: () => new UnicodeRangeTable(decodeRanges('gwqB2BKNDJDD', true)),\n Cherokee: () => new UnicodeRangeTable(decodeRanges('g9E1CDFz7lBvC', true)),\n Chorasmian: () => new UnicodeRangeTable(decodeRanges('w9jCb', true)),\n Common: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'AgCBbFBbuBBCOBCEBYgBgBiOmBBGEBDTB1DKKHCC+THHPEEhB9E9ElQiEiEB6mB6mB2MDBjJwvBwvBBBBoCBBsGBBCumBumBOIIBCBCFBCCBDmYmYBKBD2CBCKBEKBCOBShBB-BlBBCCBDFBCaBCQBqBCBF5UBXKBW-cBhIzTBDpEBhQ9CBzMUBCCCBXBQHBFDB8CBBE7C7CB0E0EBOBhBlBBKxBxBB+BBgBwCBwB5C5CBmFBhuG-BBhoWhBBnDCBmFJB1HhFhFsMPPBzuUzuUBxGxGBIBXiBBCSBCDB0ECCBeBbFBbKBLuBuBBhChCBFBCGBLEBjICBFsBBEIBxCMB0BsBBlHaBltuBDB96D8HBEzNBHWBQQBgDzDB9B1HBLmBBD9BBEQBJBBIdBF8BB2GTBNTBN2CBKYBoE0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBDxBByjFjCBtC8BBjWrBBFjDBNOBDOBCOBCkBBLtFB5BZBCBBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBCmDBnghYffB+CB',\n false\n )\n ),\n Coptic: () => new UnicodeRangeTable(decodeRanges('ifNxkKzDGG', true)),\n Cuneiform: () => new UnicodeRangeTable(decodeRanges('ggoC5cnDuDCEMjG', true)),\n Cypriot: () => new UnicodeRangeTable(decodeRanges('ggiCFBDCCBqBBCBBEDD', false)),\n Cypro_Minoan: () => new UnicodeRangeTable(decodeRanges('w8rCiD', true)),\n Cyrillic: () =>\n new UnicodeRangeTable(\n decodeRanges('ggBkEBDoFBx6FKBhFtCtCojEfBhie-CBv8VBBhw4B9BBiBAB', false)\n ),\n Deseret: () => new UnicodeRangeTable(decodeRanges('gghCvC', true)),\n Devanagari: () => new UnicodeRangeTable(decodeRanges('goCwCFODZh7nBfhwcJ', true)),\n Dives_Akuru: () => new UnicodeRangeTable(decodeRanges('gomCGBDDDBGBCBBCdBCBBDLBKJB', false)),\n Dogra: () => new UnicodeRangeTable(decodeRanges('ggmC7B', true)),\n Duployan: () => new UnicodeRangeTable(decodeRanges('ggvDqDGMEIIJDD', true)),\n Egyptian_Hieroglyphs: () => new UnicodeRangeTable(decodeRanges('ggsC1iBL68D', true)),\n Elbasan: () => new UnicodeRangeTable(decodeRanges('gohCnB', true)),\n Elymaic: () => new UnicodeRangeTable(decodeRanges('g-jCW', true)),\n Ethiopic: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gwEoCBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBDfBEZBnvGWBKGBCGBCGBCGBCGBCGBCGBCGBjpfFBDFBDFBKGBCGBylvCGBCDBCBBCOB',\n false\n )\n ),\n Garay: () => new UnicodeRangeTable(decodeRanges('gqjClBEcJB', true)),\n Georgian: () =>\n new UnicodeRangeTable(decodeRanges('glElBBCGGDqBBCDBx8CqBBDCBhiElBBCGG', false)),\n Glagolitic: () => new UnicodeRangeTable(decodeRanges('ggL-Ch9sDGCQDGCBCE', true)),\n Gothic: () => new UnicodeRangeTable(decodeRanges('w5gCa', true)),\n Grantha: () =>\n new UnicodeRangeTable(decodeRanges('g4kCDBCHBDBBDVBCGBCBBCEBDIBDBBDCBDHHGGBDGBEEB', false)),\n Greek: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wbDBCCBDDBCFFCCCBBBCCCBSBC+BBPPBnpGEBzBEBFEB1ChKhKBUBDFBDlBBDFBDHBCGCBdBD0BBCOBCNBDFBCSBDCBCIBoJ-xiB-xiB7uVuCBSgj0Bgj0BBkCB',\n false\n )\n ),\n Gujarati: () =>\n new UnicodeRangeTable(decodeRanges('h0CCBCIBCCBCVBCGBCBBCEBDJBCCBCCBDQQBCBDLBIGB', false)),\n Gunjala_Gondi: () => new UnicodeRangeTable(decodeRanges('grnCFCBCkBCBCFIJ', true)),\n Gurmukhi: () =>\n new UnicodeRangeTable(\n decodeRanges('hwCCBCFBFBBDVBCGBCBBCBBCBBDCCBDBFBBDCBEIIBCBCIIBPB', false)\n ),\n Gurung_Khema: () => new UnicodeRangeTable(decodeRanges('go4C5B', true)),\n Han: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'g0LZBC4CBN1GBwBCCaIBPDBle-tGBhC-vUBhoWtLBDpDBpodBBNGBqgkB-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB',\n false\n )\n ),\n Hangul: () =>\n new UnicodeRangeTable(decodeRanges('goE-HvxHBiI9CyDeiCei3dckUj9KNWFwBl9JeEFDFDFDC', true)),\n Hanifi_Rohingya: () => new UnicodeRangeTable(decodeRanges('gojCnBJJ', true)),\n Hanunoo: () => new UnicodeRangeTable(decodeRanges('g5FU', true)),\n Hatran: () => new UnicodeRangeTable(decodeRanges('gniCSCBGE', true)),\n Hebrew: () => new UnicodeRangeTable(decodeRanges('xsB2BBJaBFFBpp9BZBCEBCCCBCCBCCBIB', false)),\n Hiragana: () => new UnicodeRangeTable(decodeRanges('hiM1CBHCBi7-C+IBTeeBBBulQAB', false)),\n Imperial_Aramaic: () => new UnicodeRangeTable(decodeRanges('giiCVCI', true)),\n Inherited: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gYvDB2IBBlOKBbhXhXBCB8qEtBBDLBlPCBCMBCGBFHHEBBnG-BBtQBBjGgBB65DDBsDBBmrzBPBRNBwejHjH7iEl+uBl+uBBsBBDWBhRCBSHBDGBfDBz6rYvHB',\n false\n )\n ),\n Inscriptional_Pahlavi: () => new UnicodeRangeTable(decodeRanges('g7iCSGH', true)),\n Inscriptional_Parthian: () => new UnicodeRangeTable(decodeRanges('g6iCVDH', true)),\n Javanese: () => new UnicodeRangeTable(decodeRanges('gsqBtCDJFB', true)),\n Kaithi: () => new UnicodeRangeTable(decodeRanges('gkkCiCLA', true)),\n Kannada: () => new UnicodeRangeTable(decodeRanges('gkDMCCCWCJCEDICCCDIBGCCDDJCC', true)),\n Katakana: () =>\n new UnicodeRangeTable(\n decodeRanges('hlM5CBDCBxHPBxGuBBC3CBvgzBJBCsBBzisBDBCGBCBBCgJgJBBBzBPPBCB', false)\n ),\n Kawi: () => new UnicodeRangeTable(decodeRanges('g4nCQCoBEc', true)),\n Kayah_Li: () => new UnicodeRangeTable(decodeRanges('goqBtBCA', true)),\n Kharoshthi: () => new UnicodeRangeTable(decodeRanges('gwiCDCBGHCCCcDCFJII', true)),\n Khitan_Small_Script: () => new UnicodeRangeTable(decodeRanges('k-7C84G84GB0OBqBAB', false)),\n Khmer: () => new UnicodeRangeTable(decodeRanges('g8F9CDJHJnPf', true)),\n Khojki: () => new UnicodeRangeTable(decodeRanges('gwkCRCuB', true)),\n Khudawadi: () => new UnicodeRangeTable(decodeRanges('w1kC6BGJ', true)),\n Kirat_Rai: () => new UnicodeRangeTable(decodeRanges('gq7C5B', true)),\n Lao: () => new UnicodeRangeTable(decodeRanges('h0DBBCCCBDBCXBCCCBVBDEBCCCBFBCJBDDB', false)),\n Latin: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBHZBwBQQGWBCeBCgOBoBEB8wGlBBHwBBGDBGMBClCBiC-HByLOORMBuEBBHccSoBB42CfBj1elDBExCBVOBxZqBBCIBCDB38TGB7gBZBHZBmhCFBCpBBCIBm61BeBHFB',\n false\n )\n ),\n Lepcha: () => new UnicodeRangeTable(decodeRanges('ggH3BEOEC', true)),\n Limbu: () => new UnicodeRangeTable(decodeRanges('goGeBCLBFLBFEEBKB', false)),\n Linear_A: () => new UnicodeRangeTable(decodeRanges('gwhC2JKVLH', true)),\n Linear_B: () => new UnicodeRangeTable(decodeRanges('gggCLCZCSCBCODNjB6D', true)),\n Lisu: () => new UnicodeRangeTable(decodeRanges('wmpBvBx1eA', true)),\n Lycian: () => new UnicodeRangeTable(decodeRanges('g0gCc', true)),\n Lydian: () => new UnicodeRangeTable(decodeRanges('gpiCZGA', true)),\n Mahajani: () => new UnicodeRangeTable(decodeRanges('wqkCmB', true)),\n Makasar: () => new UnicodeRangeTable(decodeRanges('g3nCY', true)),\n Malayalam: () => new UnicodeRangeTable(decodeRanges('goDMCCCyBCCCFFPDZ', true)),\n Mandaic: () => new UnicodeRangeTable(decodeRanges('giCbDA', true)),\n Manichaean: () => new UnicodeRangeTable(decodeRanges('g2iCmBFL', true)),\n Marchen: () => new UnicodeRangeTable(decodeRanges('wjnCfDVCN', true)),\n Masaram_Gondi: () => new UnicodeRangeTable(decodeRanges('gonCGBCBBCrBBECCBCCBHBJJB', false)),\n Medefaidrin: () => new UnicodeRangeTable(decodeRanges('gy7C6C', true)),\n Meetei_Mayek: () => new UnicodeRangeTable(decodeRanges('g3qBWqGtBDJ', true)),\n Mende_Kikakui: () => new UnicodeRangeTable(decodeRanges('gg6DkGDP', true)),\n Meroitic_Cursive: () => new UnicodeRangeTable(decodeRanges('gtiCXFTDtB', true)),\n Meroitic_Hieroglyphs: () => new UnicodeRangeTable(decodeRanges('gsiCf', true)),\n Miao: () => new UnicodeRangeTable(decodeRanges('g47CqCF4BIQ', true)),\n Modi: () => new UnicodeRangeTable(decodeRanges('gwlCkCMJ', true)),\n Mongolian: () => new UnicodeRangeTable(decodeRanges('ggGBBDCCBSBH4CBIqBB2t-BMB', false)),\n Mro: () => new UnicodeRangeTable(decodeRanges('gy6CeCJFB', true)),\n Multani: () => new UnicodeRangeTable(decodeRanges('g0kCGBCCCBCBCOBCKB', false)),\n Myanmar: () => new UnicodeRangeTable(decodeRanges('ggE-EhqmBeiDfxibT', true)),\n Nabataean: () => new UnicodeRangeTable(decodeRanges('gkiCeJI', true)),\n Nag_Mundari: () => new UnicodeRangeTable(decodeRanges('wm5DpB', true)),\n Nandinagari: () => new UnicodeRangeTable(decodeRanges('gtmCHDtBDK', true)),\n New_Tai_Lue: () => new UnicodeRangeTable(decodeRanges('gsGrBFZHKEB', true)),\n Newa: () => new UnicodeRangeTable(decodeRanges('gglC7CCE', true)),\n Nko: () => new UnicodeRangeTable(decodeRanges('g+B6BDC', true)),\n Nushu: () => new UnicodeRangeTable(decodeRanges('h-7CvsQvsQBqMB', false)),\n Nyiakeng_Puachue_Hmong: () => new UnicodeRangeTable(decodeRanges('go4DsBENDJFB', true)),\n Ogham: () => new UnicodeRangeTable(decodeRanges('g0Fc', true)),\n Ol_Chiki: () => new UnicodeRangeTable(decodeRanges('wiHvB', true)),\n Ol_Onal: () => new UnicodeRangeTable(decodeRanges('wu5DqBFA', true)),\n Old_Hungarian: () => new UnicodeRangeTable(decodeRanges('gkjCyBOyBIF', true)),\n Old_Italic: () => new UnicodeRangeTable(decodeRanges('g4gCjBKC', true)),\n Old_North_Arabian: () => new UnicodeRangeTable(decodeRanges('g0iCf', true)),\n Old_Permic: () => new UnicodeRangeTable(decodeRanges('w6gCqB', true)),\n Old_Persian: () => new UnicodeRangeTable(decodeRanges('g9gCjBFN', true)),\n Old_Sogdian: () => new UnicodeRangeTable(decodeRanges('g4jCnB', true)),\n Old_South_Arabian: () => new UnicodeRangeTable(decodeRanges('gziCf', true)),\n Old_Turkic: () => new UnicodeRangeTable(decodeRanges('ggjCoC', true)),\n Old_Uyghur: () => new UnicodeRangeTable(decodeRanges('w7jCZ', true)),\n Oriya: () => new UnicodeRangeTable(decodeRanges('h4CCCHDBDVCGCBCEDIDBDCICFBCEDR', true)),\n Osage: () => new UnicodeRangeTable(decodeRanges('wlhCjBFjB', true)),\n Osmanya: () => new UnicodeRangeTable(decodeRanges('gkhCdDJ', true)),\n Pahawh_Hmong: () => new UnicodeRangeTable(decodeRanges('g46ClCLJCGCUGS', true)),\n Palmyrene: () => new UnicodeRangeTable(decodeRanges('gjiCf', true)),\n Pau_Cin_Hau: () => new UnicodeRangeTable(decodeRanges('g2mC4B', true)),\n Phags_Pa: () => new UnicodeRangeTable(decodeRanges('giqB3B', true)),\n Phoenician: () => new UnicodeRangeTable(decodeRanges('goiCbEA', true)),\n Psalter_Pahlavi: () => new UnicodeRangeTable(decodeRanges('g8iCRIDNG', true)),\n Rejang: () => new UnicodeRangeTable(decodeRanges('wpqBjBMA', true)),\n Runic: () => new UnicodeRangeTable(decodeRanges('g1FqCEK', true)),\n Samaritan: () => new UnicodeRangeTable(decodeRanges('ggCtBDO', true)),\n Saurashtra: () => new UnicodeRangeTable(decodeRanges('gkqBlCJL', true)),\n Sharada: () => new UnicodeRangeTable(decodeRanges('gskC-ChsCH', true)),\n Shavian: () => new UnicodeRangeTable(decodeRanges('wihCvB', true)),\n Siddham: () => new UnicodeRangeTable(decodeRanges('gslC1BDlB', true)),\n Sidetic: () => new UnicodeRangeTable(decodeRanges('gqiCZ', true)),\n SignWriting: () => new UnicodeRangeTable(decodeRanges('gg2DrUQECO', true)),\n Sinhala: () =>\n new UnicodeRangeTable(decodeRanges('hsDCBCRBEXBCIBCDDBFBEFFBEBCCCBGBHJBDCBt-gCTB', false)),\n Sogdian: () => new UnicodeRangeTable(decodeRanges('w5jCpB', true)),\n Sora_Sompeng: () => new UnicodeRangeTable(decodeRanges('wmkCYIJ', true)),\n Soyombo: () => new UnicodeRangeTable(decodeRanges('wymCyC', true)),\n Sundanese: () => new UnicodeRangeTable(decodeRanges('g8G-BhIH', true)),\n Sunuwar: () => new UnicodeRangeTable(decodeRanges('g+mChBPJ', true)),\n Syloti_Nagri: () => new UnicodeRangeTable(decodeRanges('ggqBsB', true)),\n Syriac: () => new UnicodeRangeTable(decodeRanges('g4BNC7BDCxIK', true)),\n Tagalog: () => new UnicodeRangeTable(decodeRanges('g4FVKA', true)),\n Tagbanwa: () => new UnicodeRangeTable(decodeRanges('g7FMCCCB', true)),\n Tai_Le: () => new UnicodeRangeTable(decodeRanges('wqGdDE', true)),\n Tai_Tham: () => new UnicodeRangeTable(decodeRanges('gxG+BCcDKHJHN', true)),\n Tai_Viet: () => new UnicodeRangeTable(decodeRanges('g0qBiCZE', true)),\n Tai_Yo: () => new UnicodeRangeTable(decodeRanges('g25DeCVJB', true)),\n Takri: () => new UnicodeRangeTable(decodeRanges('g0lC5BHJ', true)),\n Tamil: () =>\n new UnicodeRangeTable(\n decodeRanges('i8CBBCFBECBCDBEBBCCCBEEBEEBBBELBFEBECBCDBDHHPUBm+kCxBBOAB', false)\n ),\n Tangsa: () => new UnicodeRangeTable(decodeRanges('wz6CuCCJ', true)),\n Tangut: () => new UnicodeRangeTable(decodeRanges('g-7CgBgBB+3GBhQeBiDyDB', false)),\n Telugu: () => new UnicodeRangeTable(decodeRanges('ggDMCCCWCPDICCCDIBCCCBDDDJII', true)),\n Thaana: () => new UnicodeRangeTable(decodeRanges('g8BxB', true)),\n Thai: () => new UnicodeRangeTable(decodeRanges('hwD5BGb', true)),\n Tibetan: () => new UnicodeRangeTable(decodeRanges('g4DnCCjBFmBCjBCOCGFB', true)),\n Tifinagh: () => new UnicodeRangeTable(decodeRanges('wpL3BIBPA', true)),\n Tirhuta: () => new UnicodeRangeTable(decodeRanges('gklCnCJJ', true)),\n Todhri: () => new UnicodeRangeTable(decodeRanges('guhCzB', true)),\n Tolong_Siki: () => new UnicodeRangeTable(decodeRanges('wtnCrBFJ', true)),\n Toto: () => new UnicodeRangeTable(decodeRanges('w04De', true)),\n Tulu_Tigalari: () =>\n new UnicodeRangeTable(decodeRanges('g8kCJBCDDClBBCJBCDDCDBCJBCBBJBB', false)),\n Ugaritic: () => new UnicodeRangeTable(decodeRanges('g8gCdCA', true)),\n Unknown: () =>\n new UnicodeRangeTable(\n decodeRanges(\n '4bBBHDBICCVuMuMnBBBzBBBE4B4BBGBcDBHKBvI9B9BBmDmDBMB8BBByBBBQddBCCMEBjBEBuHJJBDDBXXICCBBBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBbFB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKmDmDNBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBjoIBvLBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCC-FCBHBBHBBHBBECBIIIBIBGBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIBlCJBCBBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMB3iBJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBJ76DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBjGUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIm8yVBCdBhD-DBxHvw-FB',\n false\n )\n ),\n Vai: () => new UnicodeRangeTable(decodeRanges('gopBrJ', true)),\n Vithkuqi: () => new UnicodeRangeTable(decodeRanges('wrhCKCOCGCBCKCOCGCB', true)),\n Wancho: () => new UnicodeRangeTable(decodeRanges('g24D5BGA', true)),\n Warang_Citi: () => new UnicodeRangeTable(decodeRanges('glmCyCNA', true)),\n Yezidi: () => new UnicodeRangeTable(decodeRanges('g0jCpBCCDB', true)),\n Yi: () => new UnicodeRangeTable(decodeRanges('ggoBskBE2B', true)),\n Zanabazar_Square: () => new UnicodeRangeTable(decodeRanges('gwmCnC', true))\n })\n\n static FOLD_CATEGORIES = new LazyMap({\n L: () => new UnicodeRangeTable(decodeRanges('laA', true)),\n LC: () => new UnicodeRangeTable(decodeRanges('laA', true)),\n Ll: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBmDWBCGBiBuBCEECDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIBBCBBCBBCOCDQCDBBCCCBBBC4BCIBBCBBDCCBCBCGC3HrBrBCEEJHHCCBCCCBCCBPBCIBkBJJCUCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBZHBJHBJHBJEBMEBMDBNEBMEBqJEEBHHxC9zC9zCBuBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoyehBB',\n false\n )\n ),\n Lt: () => new UnicodeRangeTable(decodeRanges('kOCCBCCBCClBCCtsHHBJHBJHBMQQwBAB', false)),\n Lu: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hDZB7BqBqBBWBCHBCuBCEECDOCDsBCDECBBBDCCDEEGDDECBDDDCCCDFFDEECDDECCGBBCBBCBBCOCBSCDBBCEECkBCEQCJDDBCCFICBEBCBBCCCBEEBCCBCBCEBDCCBDDIDDCBBEFBGLLBnFnFsBCCEEEBBBvBDBCdBCBBECBCWCBDBCGD1BvBBCgBCK0BCDMCBgDCyBlBBq6CqBBDCB5XFBjkCIBCvHvHERRzD0ECGGGC8CCBHBJFBLHBJHBJFBMGCJHBJNBzBBBNSSBPPBEEpL2B2Bs1CvBBCEEBGCHDDLiDCJCCFNNBkBBCGG0oesBCUaCoEMCE8BCLCCDICFFFCBBDSCMOCFCCDOCb9a9advCBi8UZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBvyehBB',\n false\n )\n ),\n M: () => new UnicodeRangeTable(decodeRanges('5cgBgBlgHAB', false)),\n Mn: () => new UnicodeRangeTable(decodeRanges('5cgBgBlgHAB', false))\n })\n\n static FOLD_SCRIPT = new LazyMap({\n Common: () => new UnicodeRangeTable(decodeRanges('8cgBgB', false)),\n Greek: () => new UnicodeRangeTable(decodeRanges('1FwUwU', false)),\n Inherited: () => new UnicodeRangeTable(decodeRanges('5cgBgBlgHAB', false))\n })\n}\n\nexport { UnicodeTables }\n","import { Codepoint } from './Codepoint'\nimport { UnicodeTables } from './UnicodeTables'\n/**\n * Utilities for dealing with Unicode better than JS does.\n */\nclass Unicode {\n // The highest legal rune value.\n static MAX_RUNE = 0x10ffff\n // The highest legal ASCII value.\n static MAX_ASCII = 0x7f\n // The highest legal Latin-1 value.\n static MAX_LATIN1 = 0xff\n // The highest legal Basic Multilingual Plane (BMP) value.\n static MAX_BMP = 0xffff\n // Minimum and maximum runes involved in folding.\n // Checked during test.\n static MIN_FOLD = 0x0041\n static MAX_FOLD = 0x1e943\n\n static MIN_HIGH_SURROGATE = 0xd800\n static MAX_HIGH_SURROGATE = 0xdbff\n static MIN_LOW_SURROGATE = 0xdc00\n static MAX_LOW_SURROGATE = 0xdfff\n static MIN_SUPPLEMENTARY_CODE_POINT = 0x10000\n\n // is32 uses binary search to test whether rune is in the specified\n // slice of 32-bit ranges.\n static is32(ranges, r) {\n // binary search over ranges\n let lo = 0\n let hi = ranges.length\n while (lo < hi) {\n const m = lo + Math.floor((hi - lo) / 2)\n\n const rlo = ranges.getLo(m)\n const rhi = ranges.getHi(m)\n if (rlo <= r && r <= rhi) {\n const stride = ranges.getStride(m)\n return (r - rlo) % stride === 0\n }\n if (r < rlo) {\n hi = m\n } else {\n lo = m + 1\n }\n }\n return false\n }\n\n // is tests whether rune is in the specified table of ranges.\n static is(ranges, r) {\n // Fast path for Latin-1 characters using linear search.\n if (r <= this.MAX_LATIN1) {\n for (let i = 0; i < ranges.length; i++) {\n const rhi = ranges.getHi(i)\n if (r > rhi) {\n continue\n }\n\n const rlo = ranges.getLo(i)\n if (r < rlo) {\n return false\n }\n\n const stride = ranges.getStride(i)\n return (r - rlo) % stride === 0\n }\n return false\n }\n\n // Fallback to binary search for runes outside Latin-1\n return ranges.length > 0 && r >= ranges.getLo(0) && this.is32(ranges, r)\n }\n\n // isUpper reports whether the rune is an upper case letter.\n static isUpper(r) {\n if (r <= this.MAX_LATIN1) {\n const s = String.fromCodePoint(r)\n return s.toUpperCase() === s && s.toLowerCase() !== s\n }\n return this.is(UnicodeTables.Upper, r)\n }\n\n // isPrint reports whether the rune is printable (Unicode L/M/N/P/S or ' ').\n static isPrint(r) {\n if (r <= this.MAX_LATIN1) {\n return (r >= 0x20 && r < this.MAX_ASCII) || (r >= 0xa1 && r !== 0xad)\n }\n return this.is(UnicodeTables.Print, r)\n }\n\n // simpleFold iterates over Unicode code points equivalent under\n // the Unicode-defined simple case folding. Among the code points\n // equivalent to rune (including rune itself), SimpleFold returns the\n // smallest r >= rune if one exists, or else the smallest r >= 0.\n //\n // For example:\n // SimpleFold('A') = 'a'\n // SimpleFold('a') = 'A'\n //\n // SimpleFold('K') = 'k'\n // SimpleFold('k') = '\\u212A' (Kelvin symbol, K)\n // SimpleFold('\\u212A') = 'K'\n //\n // SimpleFold('1') = '1'\n //\n // Derived from Go's unicode.SimpleFold.\n //\n static simpleFold(r) {\n // Consult caseOrbit table for special cases.\n if (UnicodeTables.CASE_ORBIT.has(r)) {\n return UnicodeTables.CASE_ORBIT.get(r)\n }\n\n // No folding specified. This is a one- or two-element\n // equivalence class containing rune and toLower(rune)\n // and toUpper(rune) if they are different from rune.\n const l = Codepoint.toLowerCase(r)\n if (l !== r) {\n return l\n }\n return Codepoint.toUpperCase(r)\n }\n\n // equalsIgnoreCase performs case-insensitive equality comparison\n // on the given runes |r1| and |r2|, with special consideration\n // for the likely scenario where both runes are ASCII characters.\n // If non-ASCII, Unicode case folding will be performed on |r1|\n // to compare it to |r2|.\n // -1 is interpreted as the end-of-file mark.\n static equalsIgnoreCase(r1, r2) {\n // Runes already match\n if (r1 === r2) {\n return true\n }\n\n // Safely fail if either is EOF (and they didn't explicitly match above)\n if (r1 < 0 || r2 < 0) {\n return false\n }\n\n // Fast path for the common case where both runes are ASCII characters.\n // Coerces both runes to lowercase if applicable.\n if (r1 <= this.MAX_ASCII && r2 <= this.MAX_ASCII) {\n if (Codepoint.CODES.get('A') <= r1 && r1 <= Codepoint.CODES.get('Z')) {\n r1 |= 0x20\n }\n\n if (Codepoint.CODES.get('A') <= r2 && r2 <= Codepoint.CODES.get('Z')) {\n r2 |= 0x20\n }\n\n return r1 === r2\n }\n\n // Fall back to full Unicode case folding otherwise.\n // Invariant: r1 must be non-negative\n for (let r = this.simpleFold(r1); r !== r1; r = this.simpleFold(r)) {\n if (r === r2) {\n return true\n }\n }\n\n return false\n }\n}\n\nexport { Unicode }\n","import { Codepoint } from './Codepoint'\nimport { Unicode } from './Unicode'\n/**\n * Various constants and helper utilities.\n */\nclass Utils {\n static METACHARACTERS = '\\\\.+*?()|[]{}^$'\n\n //// EMPTY_* flags\n static EMPTY_BEGIN_LINE = 0x01\n static EMPTY_END_LINE = 0x02\n static EMPTY_BEGIN_TEXT = 0x04\n static EMPTY_END_TEXT = 0x08\n static EMPTY_WORD_BOUNDARY = 0x10\n static EMPTY_NO_WORD_BOUNDARY = 0x20\n static EMPTY_ALL = -1\n\n static emptyInts() {\n return []\n }\n\n // Returns true iff |c| is an ASCII letter or decimal digit.\n static isalnum(c) {\n return (\n (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) ||\n (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('Z'))\n )\n }\n\n // If |c| is an ASCII hex digit, returns its value, otherwise -1.\n static unhex(c) {\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n return c - Codepoint.CODES.get('0')\n }\n if (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('f')) {\n return c - Codepoint.CODES.get('a') + 10\n }\n if (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('F')) {\n return c - Codepoint.CODES.get('A') + 10\n }\n return -1\n }\n\n // Appends a RE2 literal to |out| for rune |rune|,\n // with regexp metacharacters escaped.\n static escapeRune(rune) {\n let out = ''\n if (Unicode.isPrint(rune)) {\n if (this.METACHARACTERS.indexOf(String.fromCodePoint(rune)) >= 0) {\n out += '\\\\'\n }\n out += String.fromCodePoint(rune)\n } else {\n switch (rune) {\n case Codepoint.CODES.get('\"'): // '\"'\n out += '\\\\\"'\n break\n case Codepoint.CODES.get('\\\\'): // '\\\\'\n out += '\\\\\\\\'\n break\n case Codepoint.CODES.get('\\t'): // '\\t'\n out += '\\\\t'\n break\n case Codepoint.CODES.get('\\n'): // '\\n'\n out += '\\\\n'\n break\n case Codepoint.CODES.get('\\r'): // '\\r'\n out += '\\\\r'\n break\n case Codepoint.CODES.get('\\b'): // '\\b'\n out += '\\\\b'\n break\n case Codepoint.CODES.get('\\f'): // '\\f'\n out += '\\\\f'\n break\n default: {\n let s = rune.toString(16)\n if (rune < 0x100) {\n out += '\\\\x'\n if (s.length === 1) {\n out += '0'\n }\n out += s\n } else {\n out += `\\\\x{${s}}`\n }\n break\n }\n }\n }\n return out\n }\n\n // Returns the array of runes in the specified Java UTF-16 string.\n static stringToRunes(str) {\n return Array.from(String(str)).map((s) => s.codePointAt(0))\n }\n\n // Returns the Java UTF-16 string containing the single rune |r|.\n static runeToString(r) {\n return String.fromCodePoint(r)\n }\n\n // isWordRune reports whether r is consider a ``word character''\n // during the evaluation of the \\b and \\B zero-width assertions.\n // These assertions are ASCII-only: the word characters are [A-Za-z0-9_].\n static isWordRune(r) {\n return (\n (Codepoint.CODES.get('a') <= r && r <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= r && r <= Codepoint.CODES.get('Z')) ||\n (Codepoint.CODES.get('0') <= r && r <= Codepoint.CODES.get('9')) ||\n r === Codepoint.CODES.get('_')\n )\n }\n\n // emptyOpContext returns the zero-width assertions satisfied at the position\n // between the runes r1 and r2, a bitmask of EMPTY_* flags.\n // Passing r1 == -1 indicates that the position is at the beginning of the\n // text.\n // Passing r2 == -1 indicates that the position is at the end of the text.\n // eslint-disable-next-line no-warning-comments\n // TODO(adonovan): move to Machine.\n static emptyOpContext(r1, r2) {\n let op = 0\n if (r1 < 0) {\n op |= this.EMPTY_BEGIN_TEXT | this.EMPTY_BEGIN_LINE\n }\n if (r1 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_BEGIN_LINE\n }\n if (r2 < 0) {\n op |= this.EMPTY_END_TEXT | this.EMPTY_END_LINE\n }\n if (r2 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_END_LINE\n }\n if (this.isWordRune(r1) !== this.isWordRune(r2)) {\n op |= this.EMPTY_WORD_BOUNDARY\n } else {\n op |= this.EMPTY_NO_WORD_BOUNDARY\n }\n return op\n }\n\n /**\n * Returns a string that quotes all regular expression metacharacters inside the argument text;\n * the returned string is a regular expression matching the literal text. For example,\n * {@code quoteMeta(\"[foo]\").equals(\"\\\\[foo\\\\]\")}.\n * @param {string} s\n * @returns {string}\n */\n static quoteMeta(str) {\n return str\n .split('') // A char loop is correct because all metacharacters fit in one UTF-16 code.\n .map((s) => {\n if (this.METACHARACTERS.indexOf(s) >= 0) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n static charCount(codePoint) {\n return codePoint > Unicode.MAX_BMP ? 2 : 1\n }\n\n static stringToUtf8ByteArray(str) {\n if (globalThis.TextEncoder) {\n return Array.from(new TextEncoder().encode(str))\n } else {\n // fallback, if no TextEncoder\n let out = [],\n p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n (c & 0xfc00) === Unicode.MIN_HIGH_SURROGATE &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === Unicode.MIN_LOW_SURROGATE\n ) {\n // Surrogate Pair\n c =\n Unicode.MIN_SUPPLEMENTARY_CODE_POINT +\n ((c & 0x03ff) << 10) +\n (str.charCodeAt(++i) & 0x03ff)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n }\n }\n\n static utf8ByteArrayToString(bytes) {\n if (globalThis.TextDecoder) {\n return new TextDecoder('utf-8').decode(new Uint8Array(bytes))\n } else {\n // fallback, if no TextDecoder\n let out = [],\n pos = 0,\n c = 0\n while (pos < bytes.length) {\n let c1 = bytes[pos++]\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1)\n } else if (c1 > 191 && c1 < 224) {\n let c2 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63))\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n let c4 = bytes[pos++]\n let u =\n (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n Unicode.MIN_SUPPLEMENTARY_CODE_POINT\n out[c++] = String.fromCharCode(Unicode.MIN_HIGH_SURROGATE + (u >> 10))\n out[c++] = String.fromCharCode(Unicode.MIN_LOW_SURROGATE + (u & 1023))\n } else {\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))\n }\n }\n return out.join('')\n }\n }\n}\n\nexport { Utils }\n","// helper to create enums\n// example\n// Encoding[(Encoding['UTF_16'] = 0)] = 'UTF_16'\n// Encoding[(Encoding['UTF_8'] = 1)] = 'UTF_8'\nconst createEnum = (values = [], initNum = 0) => {\n const enumObject = Object.create(null)\n for (let i = 0; i < values.length; i++) {\n const val = values[i]\n const keyVal = initNum + i\n enumObject[val] = keyVal\n enumObject[keyVal] = val\n }\n return Object.freeze(enumObject)\n}\n\nexport { createEnum }\n","import { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Abstract the representations of input text supplied to Matcher.\n */\nclass MatcherInputBase {\n static Encoding = createEnum(['UTF_16', 'UTF_8'])\n\n getEncoding() {\n throw Error('not implemented')\n }\n\n /**\n *\n * @returns {boolean}\n */\n isUTF8Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_8\n }\n\n /**\n *\n * @returns {boolean}\n */\n isUTF16Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_16\n }\n}\n\nclass Utf8MatcherInput extends MatcherInputBase {\n constructor(bytes = null) {\n super()\n this.bytes = bytes\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_8\n }\n /**\n *\n * @returns {string}\n */\n asCharSequence() {\n return Utils.utf8ByteArrayToString(this.bytes)\n }\n\n /**\n *\n * @returns {number[]}\n */\n asBytes() {\n return this.bytes\n }\n\n /**\n *\n * @returns {number}\n */\n length() {\n return this.bytes.length\n }\n}\n\nclass Utf16MatcherInput extends MatcherInputBase {\n constructor(charSequence = null) {\n super()\n this.charSequence = charSequence\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_16\n }\n\n /**\n *\n * @returns {string}\n */\n asCharSequence() {\n return this.charSequence\n }\n\n /**\n *\n * @returns {number[]}\n */\n asBytes() {\n return this.charSequence\n .toString()\n .split('')\n .map((s) => s.codePointAt(0))\n }\n\n /**\n *\n * @returns {number}\n */\n length() {\n return this.charSequence.length\n }\n}\n\nclass MatcherInput {\n /**\n * Return the MatcherInput for UTF_16 encoding.\n * @returns {Utf16MatcherInput}\n */\n static utf16(charSequence) {\n return new Utf16MatcherInput(charSequence)\n }\n\n /**\n * Return the MatcherInput for UTF_8 encoding.\n * @returns {Utf8MatcherInput}\n */\n static utf8(input) {\n if (Array.isArray(input)) {\n return new Utf8MatcherInput(input)\n }\n\n return new Utf8MatcherInput(Utils.stringToUtf8ByteArray(input))\n }\n}\n\nexport { MatcherInput, MatcherInputBase }\n","import { Utils } from './Utils'\nimport { Unicode } from './Unicode'\n\n/**\n * MachineInput abstracts different representations of the input text supplied to the Machine. It\n * provides one-character lookahead.\n */\nclass MachineInputBase {\n static EOF() {\n return -1 << 3\n }\n\n // can we look ahead without losing info?\n canCheckPrefix() {\n return true\n }\n\n // Returns the end position in the same units as step().\n endPos() {\n return this.end\n }\n\n hasString() {\n return false\n }\n\n hasAnyString() {\n return false\n }\n\n // Helper for the exact-literal fast-path execution router\n prefixLength() {\n return 0\n }\n}\n\n// An implementation of MachineInput for UTF-8 byte arrays.\n// |pos| and |width| are byte indices.\nclass MachineUTF8Input extends MachineInputBase {\n constructor(bytes, start = 0, end = bytes.length) {\n super()\n this.bytes = bytes\n this.start = start\n this.end = end\n }\n\n hasString(prefilter, pos) {\n const target = prefilter.bytes\n if (target.length === 0) return true\n\n // Reuse the high-speed indexOf method already implemented below\n const idx = this.indexOf(this.bytes, target, this.start + pos)\n return idx !== -1 && idx <= this.end - target.length\n }\n\n // Executes a high-speed, single - pass search for multiple literal strings\n // simultaneously using an Aho-Corasick automaton.\n hasAnyString(prefilter, pos) {\n if (!prefilter.ac8) return false\n\n return prefilter.ac8.searchUTF8(this.bytes, this.start + pos, this.end)\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start\n if (pos >= this.end) {\n return MachineInputBase.EOF()\n }\n\n // Read UTF-8 bytes to extract the Rune and its width\n const c = this.bytes[pos] & 0xff\n if (c < 0x80) {\n return (c << 3) | 1\n } else if (c >= 0xc2 && c <= 0xdf && pos + 1 < this.end) {\n const c1 = this.bytes[pos + 1] & 0xff\n if ((c1 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const rune = ((c & 0x1f) << 6) | (c1 & 0x3f)\n return (rune << 3) | 2\n } else if (c >= 0xe0 && c <= 0xef && pos + 2 < this.end) {\n const c1 = this.bytes[pos + 1] & 0xff\n if ((c1 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const c2 = this.bytes[pos + 2] & 0xff\n if ((c2 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const rune = ((c & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f)\n return (rune << 3) | 3\n } else if (c >= 0xf0 && c <= 0xf4 && pos + 3 < this.end) {\n const c1 = this.bytes[pos + 1] & 0xff\n if ((c1 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const c2 = this.bytes[pos + 2] & 0xff\n if ((c2 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const c3 = this.bytes[pos + 3] & 0xff\n if ((c3 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const rune = ((c & 0x07) << 18) | ((c1 & 0x3f) << 12) | ((c2 & 0x3f) << 6) | (c3 & 0x3f)\n return (rune << 3) | 4\n } else {\n // Invalid sequence fallback\n return (c << 3) | 1\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.indexOf(this.bytes, re2.prefixUTF8, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n let r1 = -1\n if (pos > this.start && pos <= this.end) {\n let start = pos - 1\n r1 = this.bytes[start--]\n if (r1 >= 128) {\n let lim = pos - 4\n if (lim < this.start) {\n lim = this.start\n }\n while (start >= lim && (this.bytes[start] & 192) === 128) {\n start--\n }\n\n if (start < this.start) {\n start = this.start\n }\n r1 = this.step(start) >> 3\n }\n }\n const r2 = pos < this.end ? this.step(pos) >> 3 : -1\n return Utils.emptyOpContext(r1, r2)\n }\n\n // Returns the index of the first occurrence of array |target| within\n // array |source| after |fromIndex|, or -1 if not found.\n indexOf(source, target, fromIndex = 0) {\n let targetLength = target.length\n if (targetLength === 0) {\n return fromIndex <= this.end ? fromIndex : -1\n }\n\n let limit = this.end - targetLength\n for (let i = fromIndex; i <= limit; i++) {\n for (let j = 0; j < targetLength; j++) {\n if (source[i + j] !== target[j]) {\n break\n } else if (j === targetLength - 1) {\n return i\n }\n }\n }\n\n return -1\n }\n\n prefixLength(re2) {\n return re2.prefixUTF8.length\n }\n}\n\n// |pos| and |width| are in JS \"char\" units.\nclass MachineUTF16Input extends MachineInputBase {\n constructor(charSequence, start = 0, end = charSequence.length) {\n super()\n this.charSequence = charSequence\n this.start = start\n this.end = end\n }\n\n hasString(prefilter, pos) {\n const idx = this.charSequence.indexOf(prefilter.str, this.start + pos)\n return idx !== -1 && idx <= this.end - prefilter.str.length\n }\n\n // Executes a high-speed, single - pass search for multiple literal strings\n // simultaneously using an Aho-Corasick automaton.\n hasAnyString(prefilter, pos) {\n if (!prefilter.ac16) return false\n\n return prefilter.ac16.searchUTF16(this.charSequence, this.start + pos, this.end)\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start\n if (pos >= this.end) {\n return MachineInputBase.EOF()\n }\n\n const c1 = this.charSequence.charCodeAt(pos)\n\n // Fast path: standard BMP character (not a high surrogate)\n if (c1 < Unicode.MIN_HIGH_SURROGATE || c1 > Unicode.MAX_HIGH_SURROGATE || pos + 1 >= this.end) {\n return (c1 << 3) | 1\n }\n\n // Slow path: Calculate surrogate pair manually\n const c2 = this.charSequence.charCodeAt(pos + 1)\n if (c2 >= Unicode.MIN_LOW_SURROGATE && c2 <= Unicode.MAX_LOW_SURROGATE) {\n const rune =\n (c1 - Unicode.MIN_HIGH_SURROGATE) * 0x400 +\n (c2 - Unicode.MIN_LOW_SURROGATE) +\n Unicode.MIN_SUPPLEMENTARY_CODE_POINT\n return (rune << 3) | 2\n }\n\n // Invalid surrogate pair fallback\n return (c1 << 3) | 1\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.charSequence.indexOf(re2.prefix, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n const r1 =\n pos > 0 && pos <= this.charSequence.length ? this.charSequence.codePointAt(pos - 1) : -1\n const r2 = pos < this.charSequence.length ? this.charSequence.codePointAt(pos) : -1\n return Utils.emptyOpContext(r1, r2)\n }\n\n prefixLength(re2) {\n return re2.prefix.length\n }\n}\n\nclass MachineInput {\n static fromUTF8(bytes, start = 0, end = bytes.length) {\n return new MachineUTF8Input(bytes, start, end)\n }\n\n static fromUTF16(charSequence, start = 0, end = charSequence.length) {\n return new MachineUTF16Input(charSequence, start, end)\n }\n}\n\nexport { MachineInputBase, MachineInput }\n","class RE2JSException extends Error {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSException'\n }\n}\n\n/**\n * An exception thrown by the parser if the pattern was invalid.\n */\nclass RE2JSSyntaxException extends RE2JSException {\n /**\n * @param {string} error\n * @param {string|null} [input=null]\n */\n constructor(error, input = null) {\n let message = `error parsing regexp: ${error}`\n if (input) {\n message += `: \\`${input}\\``\n }\n\n super(message)\n this.name = 'RE2JSSyntaxException'\n this.message = message\n /** @type {string} */\n this.error = error\n /** @type {string|null} */\n this.input = input\n }\n\n /**\n * Retrieves the description of the error.\n * @returns {string}\n */\n getDescription() {\n return this.error\n }\n\n /**\n * Retrieves the erroneous regular-expression pattern.\n * @returns {string|null}\n */\n getPattern() {\n return this.input\n }\n}\n\n/**\n * An exception thrown by the compiler\n */\nclass RE2JSCompileException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSCompileException'\n }\n}\n\n/**\n * An exception thrown by using groups\n */\nclass RE2JSGroupException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSGroupException'\n }\n}\n\n/**\n * An exception thrown by flags\n */\nclass RE2JSFlagsException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSFlagsException'\n }\n}\n\n/**\n * An exception thrown for internal engine errors, such as corrupted bytecodes.\n */\nclass RE2JSInternalException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSInternalException'\n }\n}\n\nexport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException,\n RE2JSInternalException\n}\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MachineInput } from './MachineInput'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { Utils } from './Utils'\nimport { RE2JSGroupException } from './exceptions'\n\n/**\n * A stateful iterator that interprets a regex {@code RE2JS} on a specific input.\n *\n * Conceptually, a Matcher consists of four parts:\n * <ol>\n * <li>A compiled regular expression {@code RE2JS}, set at construction and fixed for the lifetime\n * of the matcher.</li>\n *\n * <li>The remainder of the input string, set at construction or {@link #reset()} and advanced by\n * each match operation such as {@link #find}, {@link #matches} or {@link #lookingAt}.</li>\n *\n * <li>The current match information, accessible via {@link #start}, {@link #end}, and\n * {@link #group}, and updated by each match operation.</li>\n *\n * <li>The append position, used and advanced by {@link #appendReplacement} and {@link #appendTail}\n * if performing a search and replace from the input to an external {@code StringBuffer}.\n *\n * </ol>\n *\n *\n * @author rsc@google.com (Russ Cox)\n */\nclass Matcher {\n /**\n * Quotes '\\' and '$' in {@code s}, so that the returned string could be used in\n * {@link #appendReplacement} as a literal replacement of {@code s}.\n *\n * @param {string} str the string to be quoted\n * @param {boolean} [javaMode=false] whether the replacement will be used in javaMode\n * @returns {string} the quoted string\n */\n static quoteReplacement(str, javaMode = false) {\n if (javaMode) {\n // Java mode escape '\\' and '$' with a backslash\n if (str.indexOf('\\\\') < 0 && str.indexOf('$') < 0) {\n return str\n }\n\n return str\n .split('')\n .map((s) => {\n const c = s.codePointAt(0)\n if (c === Codepoint.CODES.get('\\\\') || c === Codepoint.CODES.get('$')) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n // In JS mode, '\\' is not a special character, but '$' must be escaped as '$$'\n if (str.indexOf('$') < 0) {\n return str\n }\n return str\n .split('')\n .map((s) => {\n if (s.codePointAt(0) === Codepoint.CODES.get('$')) {\n return '$$'\n }\n return s\n })\n .join('')\n }\n /**\n *\n * @param {RE2JS} pattern\n * @param {Utf8MatcherInput|Utf16MatcherInput|number[]|string} input\n */\n constructor(pattern, input) {\n if (pattern === null) {\n throw new Error('pattern is null')\n }\n // The pattern being matched.\n this.patternInput = pattern\n const re2 = this.patternInput.re2()\n // The number of submatches (groups) in the pattern.\n /** @type {number} */\n this.patternGroupCount = re2.numberOfCapturingGroups()\n // The group indexes, in [start, end) pairs. Zeroth pair is overall match.\n /** @type {number[]} */\n this.groups = []\n /** @type {Record<string, number>} */\n this.namedGroups = re2.namedGroups\n /** @type {number} */\n this.numberOfInstructions = re2.numberOfInstructions()\n\n if (input instanceof MatcherInputBase) {\n this.resetMatcherInput(input)\n } else if (Array.isArray(input)) {\n this.resetMatcherInput(MatcherInput.utf8(input))\n } else {\n this.resetMatcherInput(MatcherInput.utf16(input))\n }\n }\n\n /**\n * Returns the {@code RE2JS} associated with this {@code Matcher}.\n * @returns {RE2JS}\n */\n pattern() {\n return this.patternInput\n }\n\n /**\n * Resets the {@code Matcher}, rewinding input and discarding any match information.\n *\n * @returns {Matcher} the {@code Matcher} itself, for chained method calls\n */\n reset() {\n // The input length in UTF16 codes.\n /** @type {number} */\n this.matcherInputLength = this.matcherInput.length()\n // The append position: where the next append should start.\n /** @type {number} */\n this.appendPos = 0\n // Is there a current match?\n this.hasMatch = false\n // Have we found the submatches (groups) of the current match?\n // group[0], group[1] are set regardless.\n this.hasGroups = false\n // The anchor flag to use when repeating the match to find subgroups.\n this.anchorFlag = 0\n return this\n }\n\n /**\n * Resets the {@code Matcher} and changes the input.\n * @param {Utf8MatcherInput|Utf16MatcherInput} input\n * @returns {Matcher} the {@code Matcher} itself, for chained method calls\n */\n resetMatcherInput(input) {\n if (input === null) {\n throw new Error('input is null')\n }\n this.matcherInput = input\n this.reset()\n return this\n }\n\n /**\n * Returns the start of the named group of the most recent match, or -1 if the group was not\n * matched.\n * @param {string|number} [group=0]\n * @returns {number}\n */\n start(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group]\n }\n\n /**\n * Returns the end of the named group of the most recent match, or -1 if the group was not\n * matched.\n * @param {string|number} [group=0]\n * @returns {number}\n */\n end(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group + 1]\n }\n\n /**\n * Returns the program size of this pattern.\n *\n * <p>\n * Similar to the C++ implementation, the program size is a very approximate measure of a regexp's\n * \"cost\". Larger numbers are more expensive than smaller numbers.\n * </p>\n *\n * @returns {number} the program size of this pattern\n */\n programSize() {\n return this.numberOfInstructions\n }\n\n /**\n * Returns the named group of the most recent match, or {@code null} if the group was not matched.\n * @param {string|number} [group=0]\n * @returns {?string}\n */\n group(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n const start = this.start(group)\n const end = this.end(group)\n if (start < 0 && end < 0) {\n return null\n }\n return this.substring(start, end)\n }\n\n /**\n * Returns a dictionary map of all named capturing groups and their matched values.\n * If a group was not matched, its value will be `null`.\n * @returns {Record<string, string|null>}\n */\n getNamedGroups() {\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted')\n }\n\n const result = Object.create(null)\n for (const name of Object.keys(this.namedGroups)) {\n result[name] = this.group(name)\n }\n return result\n }\n\n /**\n * Returns the number of subgroups in this pattern.\n *\n * @returns {number} the number of subgroups; the overall match (group 0) does not count\n */\n groupCount() {\n return this.patternGroupCount\n }\n\n /**\n * Helper: finds subgroup information if needed for group.\n * @param {number} group\n * @private\n */\n loadGroup(group) {\n if (group < 0 || group > this.patternGroupCount) {\n throw new RE2JSGroupException(`Group index out of bounds: ${group}`)\n }\n\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted')\n }\n\n if (group === 0 || this.hasGroups) {\n return\n }\n\n let end = this.groups[1] + 1\n if (end > this.matcherInputLength) {\n end = this.matcherInputLength\n }\n\n const res = this.patternInput\n .re2()\n .matchMachineInput(\n this.matcherInput,\n this.groups[0],\n end,\n this.anchorFlag,\n 1 + this.patternGroupCount\n )\n\n const ok = res[0]\n if (!ok) {\n throw new RE2JSGroupException('inconsistency in matching group data')\n }\n this.groups = res[1]\n this.hasGroups = true\n }\n\n /**\n * Matches the entire input against the pattern (anchored start and end). If there is a match,\n * {@code matches} sets the match state to describe it.\n *\n * @returns {boolean} true if the entire input matches the pattern\n */\n matches() {\n return this.genMatch(0, RE2Flags.ANCHOR_BOTH)\n }\n\n /**\n * Matches the beginning of input against the pattern (anchored start). If there is a match,\n * {@code lookingAt} sets the match state to describe it.\n *\n * @returns {boolean} true if the beginning of the input matches the pattern\n */\n lookingAt() {\n return this.genMatch(0, RE2Flags.ANCHOR_START)\n }\n\n /**\n * Matches the input against the pattern (unanchored), starting at a specified position. If there\n * is a match, {@code find} sets the match state to describe it.\n *\n * @param {number} [start=null] the input position where the search begins\n * @returns {boolean} if it finds a match\n * @throws IndexOutOfBoundsException if start is not a valid input position\n */\n find(start = null) {\n if (start !== null) {\n if (start < 0 || start > this.matcherInputLength) {\n throw new RE2JSGroupException(`start index out of bounds: ${start}`)\n }\n this.reset()\n return this.genMatch(start, 0)\n }\n // no start\n start = 0\n if (this.hasMatch) {\n start = this.groups[1]\n if (this.groups[0] === this.groups[1]) {\n // Safely calculate structural encoding width to avoid sequence corruption\n const machineInput = this.matcherInput.isUTF16Encoding()\n ? MachineInput.fromUTF16(this.matcherInput.asCharSequence(), 0, this.matcherInputLength)\n : MachineInput.fromUTF8(this.matcherInput.asBytes(), 0, this.matcherInputLength)\n\n const r = machineInput.step(start)\n if (r < 0) {\n // EOF\n start++ // Advance past length to force loop exit\n } else {\n start += r & 7 // Advance by safely decoded width\n }\n }\n }\n\n return this.genMatch(start, RE2Flags.UNANCHORED)\n }\n\n /**\n * Helper: does match starting at start, with RE2 anchor flag.\n * @param {number} startByte\n * @param {number} anchor\n * @returns {boolean}\n * @private\n */\n genMatch(startByte, anchor) {\n const hasLookbehinds = this.patternInput.re2().prog.numLb > 0\n const ngroup = hasLookbehinds ? 1 + this.patternGroupCount : 1\n\n const res = this.patternInput\n .re2()\n .matchMachineInput(this.matcherInput, startByte, this.matcherInputLength, anchor, ngroup)\n\n const ok = res[0]\n if (!ok) {\n return false\n }\n this.groups = res[1]\n this.hasMatch = true\n this.hasGroups = hasLookbehinds || this.patternGroupCount === 0\n this.anchorFlag = anchor\n return true\n }\n\n /**\n * Helper: return substring for [start, end).\n * @param {number} start\n * @param {number} end\n * @returns {string}\n */\n substring(start, end) {\n if (this.matcherInput.isUTF8Encoding()) {\n return Utils.utf8ByteArrayToString(this.matcherInput.asBytes().slice(start, end))\n }\n return this.matcherInput.asCharSequence().substring(start, end).toString()\n }\n\n /**\n * Helper for Pattern: return input length.\n * @returns {number}\n */\n inputLength() {\n return this.matcherInputLength\n }\n\n /**\n * Appends to result two strings: the text from the append position up to the beginning of the\n * most recent match, and then the replacement with submatch groups substituted for references of\n * the form {@code $n}, where {@code n} is the group number in decimal. It advances the append\n * position to where the most recent match ended.\n *\n * To embed a literal {@code $}, use \\$ (actually {@code \"\\\\$\"} with string escapes). The escape\n * is only necessary when {@code $} is followed by a digit, but it is always allowed. Only\n * {@code $} and {@code \\} need escaping, but any character can be escaped.\n *\n * The group number {@code n} in {@code $n} is always at least one digit and expands to use more\n * digits as long as the resulting number is a valid group number for this pattern. To cut it off\n * earlier, escape the first digit that should not be used.\n *\n * @param {string} replacement the replacement string\n * @param {boolean} [javaMode=false] activate java mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @throws IllegalStateException if there was no most recent match\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group\n * @private\n */\n appendReplacement(replacement, javaMode = false) {\n let res = ''\n const s = this.start()\n const e = this.end()\n if (this.appendPos < s) {\n res += this.substring(this.appendPos, s)\n }\n this.appendPos = e\n res += javaMode\n ? this.appendReplacementInternalJava(replacement)\n : this.appendReplacementInternalJs(replacement)\n return res\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n * @private\n */\n appendReplacementInternalJava(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('\\\\')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n last = i\n continue\n }\n\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n throw new RE2JSGroupException(`n > number of groups: ${n}`)\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('{')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('}') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('}')) {\n throw new RE2JSGroupException(\"named capture group is missing trailing '}'\")\n }\n\n const groupName = replacement.substring(i + 1, j)\n res += this.group(groupName)\n last = j + 1\n i = j\n continue\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n * @private\n */\n appendReplacementInternalJs(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('$') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n res += '$'\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('&') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n const group = this.group(0)\n if (group !== null) {\n res += group\n } else {\n res += '$&'\n }\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('1') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n res += `$${n}`\n last = i\n i--\n continue\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('<')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('>') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('>')) {\n res += replacement.substring(i - 1, j + 1)\n last = j + 1\n i = j\n continue\n }\n\n const groupName = replacement.substring(i + 1, j)\n if (Object.prototype.hasOwnProperty.call(this.namedGroups, groupName)) {\n res += this.group(groupName)\n } else {\n res += `$<${groupName}>`\n }\n\n last = j + 1\n i = j\n continue\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * Return the substring of the input from the append position to the end of the\n * input.\n * @returns {string}\n */\n appendTail() {\n return this.substring(this.appendPos, this.matcherInputLength)\n }\n\n /**\n * Returns the input with all matches replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [javaMode=false] - activate java mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the matches replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and javaMode is true\n */\n replaceAll(replacement, javaMode = false) {\n return this.replace(replacement, true, javaMode)\n }\n\n /**\n * Returns the input with the first match replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [javaMode=false] - activate java mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the first match replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and javaMode is true\n */\n replaceFirst(replacement, javaMode = false) {\n return this.replace(replacement, false, javaMode)\n }\n\n /**\n * Helper: replaceAll/replaceFirst hybrid.\n * @param {string} replacement - the replacement string\n * @param {boolean} [all=true] - replace all matches\n * @param {boolean} [javaMode=false] - activate java mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @private\n */\n replace(replacement, all = true, javaMode = false) {\n let res = ''\n\n this.reset()\n while (this.find()) {\n res += this.appendReplacement(replacement, javaMode)\n if (!all) {\n break\n }\n }\n\n res += this.appendTail()\n return res\n }\n}\n\nexport { Matcher }\n","import { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { Unicode } from './Unicode'\n/**\n * A single instruction in the regular expression virtual machine.\n *\n * @see http://swtch.com/~rsc/regexp/regexp2.html\n */\nclass Inst {\n static ALT = 1\n static ALT_MATCH = 2\n static CAPTURE = 3\n static EMPTY_WIDTH = 4\n static FAIL = 5\n static MATCH = 6\n static NOP = 7\n static RUNE = 8\n static RUNE1 = 9\n static RUNE_ANY = 10\n static RUNE_ANY_NOT_NL = 11\n static LB_WRITE = 12\n static LB_CHECK = 13\n\n static isRuneOp(op) {\n return Inst.RUNE <= op && op <= Inst.RUNE_ANY_NOT_NL\n }\n\n // Returns an RE2 expression matching exactly |runes|.\n static escapeRunes(runes) {\n let out = '\"'\n for (let rune of runes) {\n out += Utils.escapeRune(rune)\n }\n out += '\"'\n return out\n }\n\n constructor(op) {\n this.op = op\n this.out = 0 // all but MATCH, FAIL\n this.arg = 0 // ALT, ALT_MATCH, CAPTURE, EMPTY_WIDTH\n // length==1 => exact match\n // otherwise a list of [lo,hi] pairs. hi is *inclusive*.\n this.runes = []\n }\n\n // MatchRune returns true if the instruction matches (and consumes) r.\n // It should only be called when op == InstRune.\n matchRune(r) {\n // Special case: single-rune slice is from literal string, not char\n // class.\n if (this.runes.length === 1) {\n const r0 = this.runes[0]\n // If this pattern is case-insensitive, apply Unicode case folding to compare the two runes.\n // Note that this may result in a case-folding loop when executed,\n // so attempt to reduce the chance of that occurring\n // by performing case folding on |r0| from the pattern rather than |r| from the input.\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r)\n }\n return r === r0\n }\n\n const len = this.runes.length\n if (len === 0) return false\n\n // If the array is exactly 2, 4, 6, or 8 items, DO NOT fall through to binary search\n if (len === 2 || len === 4 || len === 6 || len === 8) {\n for (let j = 0; j < len; j += 2) {\n if (r < this.runes[j]) {\n return false\n }\n if (r <= this.runes[j + 1]) {\n return true\n }\n }\n return false // Stop here\n }\n\n // Branchless Binary Search (Lower Bound)\n // Compiles to optimal conditional move (cmov) machine code, preventing\n // branch mispredictions on large, chaotic Unicode arrays\n let base = 0\n let n = len >> 1\n while (n > 1) {\n const half = n >> 1\n base += this.runes[(base + half) << 1] <= r ? half : 0\n n -= half\n }\n base += this.runes[base << 1] <= r ? 1 : 0\n\n const m = base - 1\n return m >= 0 && r <= this.runes[(m << 1) | 1]\n }\n\n // matchRunePos checks whether the instruction matches (and consumes) r.\n // If so, it returns the index of the matching rune pair.\n // If not, it returns -1.\n matchRunePos(r) {\n if (this.runes.length === 1) {\n const r0 = this.runes[0]\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r) ? 0 : -1\n }\n return r === r0 ? 0 : -1\n }\n\n const len = this.runes.length\n if (len === 0) return -1\n\n if (len === 2 || len === 4 || len === 6 || len === 8) {\n for (let j = 0; j < len; j += 2) {\n if (r < this.runes[j]) return -1\n if (r <= this.runes[j + 1]) return Math.floor(j / 2)\n }\n return -1\n }\n\n // Branchless Binary Search (Lower Bound)\n let base = 0\n let n = len >> 1\n while (n > 1) {\n const half = n >> 1\n base += this.runes[(base + half) << 1] <= r ? half : 0\n n -= half\n }\n base += this.runes[base << 1] <= r ? 1 : 0\n\n const m = base - 1\n return m >= 0 && r <= this.runes[(m << 1) | 1] ? m : -1\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n switch (this.op) {\n case Inst.ALT:\n return `alt -> ${this.out}, ${this.arg}`\n case Inst.ALT_MATCH:\n return `altmatch -> ${this.out}, ${this.arg}`\n case Inst.CAPTURE:\n return `cap ${this.arg} -> ${this.out}`\n case Inst.EMPTY_WIDTH:\n return `empty ${this.arg} -> ${this.out}`\n case Inst.MATCH:\n return `match${this.arg !== 0 ? ` ${this.arg}` : ''}`\n case Inst.FAIL:\n return 'fail'\n case Inst.NOP:\n return `nop -> ${this.out}`\n case Inst.LB_WRITE:\n return `lbwrite ${this.lb} -> ${this.out}`\n case Inst.LB_CHECK:\n return `lbcheck ${this.lb} -> ${this.out}, ${this.arg}`\n case Inst.RUNE:\n if (this.runes === null) {\n return 'rune <null>'\n }\n return [\n 'rune ',\n Inst.escapeRunes(this.runes),\n (this.arg & RE2Flags.FOLD_CASE) !== 0 ? '/i' : '',\n ' -> ',\n this.out\n ].join('')\n case Inst.RUNE1:\n return `rune1 ${Inst.escapeRunes(this.runes)} -> ${this.out}`\n case Inst.RUNE_ANY:\n return `any -> ${this.out}`\n case Inst.RUNE_ANY_NOT_NL:\n return `anynotnl -> ${this.out}`\n default:\n throw new Error('unhandled case in Inst.toString')\n }\n }\n}\n\nexport { Inst }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MachineInputBase } from './MachineInput'\nimport { RE2JSInternalException } from './exceptions'\nimport { Utils } from './Utils'\nimport { Inst } from './Inst'\n\n// A logical thread in the NFA.\nclass Thread {\n constructor() {\n this.inst = null\n this.cap = null // Initialized to Int32Array later\n }\n}\n\n// A queue is a 'sparse array' holding pending threads of execution. See:\n// research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html\nclass Queue {\n constructor(numInst) {\n this.sparse = new Int32Array(numInst) // may contain stale but in-bounds values.\n this.densePcs = new Int32Array(numInst) // may contain stale pc in slots >= size\n this.denseThreads = new Array(numInst) // may contain stale Thread in slots >= size\n this.size = 0\n }\n\n contains(pc) {\n const j = this.sparse[pc]\n return j < this.size && this.densePcs[j] === pc\n }\n\n isEmpty() {\n return this.size === 0\n }\n\n add(pc) {\n const j = this.size++\n this.sparse[pc] = j\n this.denseThreads[j] = null\n this.densePcs[j] = pc\n return j\n }\n\n clear() {\n // Prevent memory leaks by nulling out used object references\n for (let i = 0; i < this.size; i++) {\n this.denseThreads[i] = null\n }\n // The sparse set logic safely ignores stale integers in Typed Arrays.\n this.size = 0\n }\n\n toString() {\n let out = '{'\n for (let i = 0; i < this.size; i++) {\n if (i !== 0) {\n out += ', '\n }\n out += this.densePcs[i]\n }\n out += '}'\n return out\n }\n}\n// A Machine matches an input string of Unicode characters against an\n// RE2 instance using a simple NFA.\n//\n// Called by RE2.doExecute.\nclass Machine {\n static THREADS_CHUNK_SIZE = 128\n\n static fromRE2(re2) {\n const m = new Machine()\n m.prog = re2.prog\n m.re2 = re2\n m.q0 = new Queue(m.prog.numInst())\n m.q1 = new Queue(m.prog.numInst())\n m.pool = []\n m.poolSize = 0\n m.matched = false\n // Use Int32Array instead of standard JS array\n m.matchcap = new Int32Array(m.prog.numCap < 2 ? 2 : m.prog.numCap)\n m.ncap = 0\n return m\n }\n\n static fromMachine(machine) {\n return Machine.fromRE2(machine.re2)\n }\n\n // init() reinitializes an existing Machine for re-use on a new input.\n init(ncap) {\n this.ncap = ncap\n if (ncap > this.matchcap.length) {\n this.initNewCap(ncap)\n } else {\n this.resetCap()\n }\n\n // Initialize the Lookbehind tracking table\n if (this.prog.numLb > 0) {\n if (!this.lbTable || this.lbTable.length < this.prog.numLb + 1) {\n this.lbTable = new Int32Array(this.prog.numLb + 1)\n }\n this.lbTable.fill(-1)\n }\n }\n\n // Wipes existing typed array memory without reallocating\n resetCap() {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap.fill(-1)\n }\n }\n\n initNewCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap = new Int32Array(ncap).fill(-1)\n }\n this.matchcap = new Int32Array(ncap).fill(-1)\n }\n\n submatches() {\n if (this.ncap === 0) {\n return Utils.emptyInts()\n }\n // Use subarray() to create a zero-allocation view before converting\n return Array.from(this.matchcap.subarray(0, this.ncap))\n }\n\n // alloc() allocates a new thread with the given instruction.\n // It uses the free pool if possible.\n alloc(inst) {\n if (this.poolSize === 0) {\n const capLen = this.matchcap.length\n\n // Bulk allocate threads in a tight loop so the V8 engine\n // places them adjacently in the young generation heap\n for (let i = 0; i < Machine.THREADS_CHUNK_SIZE; i++) {\n const t = new Thread()\n t.cap = new Int32Array(capLen)\n this.pool[this.poolSize++] = t\n }\n }\n\n // Pop a thread from the top of the pool stack\n this.poolSize--\n const t = this.pool[this.poolSize]\n t.inst = inst\n return t\n }\n\n // Frees all threads on the thread queue, returning them to the free pool.\n freeQueue(queue, from = 0) {\n for (let i = from; i < queue.size; i++) {\n const t = queue.denseThreads[i]\n if (t !== null) {\n this.pool[this.poolSize++] = t\n }\n }\n queue.clear()\n }\n\n // freeThread() returns t to the free pool.\n freeThread(t) {\n this.pool[this.poolSize++] = t\n }\n\n match(input, pos, anchor) {\n const startCond = this.re2.cond\n if (startCond === Utils.EMPTY_ALL) {\n return false\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false\n }\n this.matched = false\n this.matchcap.fill(-1)\n\n let runq = this.q0\n let nextq = this.q1\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n\n let flag\n if (pos === 0) {\n flag = Utils.emptyOpContext(-1, rune)\n } else {\n flag = input.context(pos)\n }\n\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n break\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n break\n }\n if (this.matched) {\n break\n }\n // Disable Prefix Acceleration if the regex contains lookbehinds\n // Fast-forwarding the string pointer will skip over the positions where\n // the parallel lookbehind automata need to be spawned.\n if (\n this.prog.numLb === 0 &&\n !(this.re2.prefix.length === 0) &&\n rune1 !== this.re2.prefixRune &&\n input.canCheckPrefix()\n ) {\n const advance = input.index(this.re2, pos)\n if (advance < 0) {\n break\n }\n pos += advance\n r = input.step(pos)\n rune = r >> 3\n width = r & 7\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n }\n if (!this.matched && (pos === 0 || anchor === RE2Flags.UNANCHORED)) {\n if (this.ncap > 0) {\n this.matchcap[0] = pos\n }\n // Spawn Lookbehind threads BEFORE the main pattern\n for (let i = 0; i < this.prog.lbStarts.length; i++) {\n this.add(runq, this.prog.lbStarts[i], pos, this.matchcap, flag, null)\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null)\n }\n\n const nextPos = pos + width\n flag = input.context(nextPos)\n this.step(runq, nextq, pos, nextPos, rune, flag, anchor, pos === input.endPos())\n\n if (width === 0) {\n break\n }\n if (this.ncap === 0 && this.matched) {\n break\n }\n\n pos += width\n rune = rune1\n width = width1\n if (rune !== -1) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n const tmpq = runq\n runq = nextq\n nextq = tmpq\n }\n this.freeQueue(nextq)\n return this.matched\n }\n\n matchSet(input, pos, anchor) {\n const startCond = this.re2.cond\n if (startCond === Utils.EMPTY_ALL) return []\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return []\n }\n\n let runq = this.q0\n let nextq = this.q1\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n\n let flag = pos === 0 ? Utils.emptyOpContext(-1, rune) : input.context(pos)\n const matches = new Set()\n\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) break\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n break\n }\n }\n if (pos === 0 || anchor === RE2Flags.UNANCHORED) {\n // Spawn Lookbehind threads BEFORE the main pattern\n for (let i = 0; i < this.prog.lbStarts.length; i++) {\n this.add(runq, this.prog.lbStarts[i], pos, this.matchcap, flag, null)\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null)\n }\n\n const nextPos = pos + width\n flag = input.context(nextPos)\n\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j]\n if (t === null) continue\n\n const i = t.inst\n let add = false\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && pos !== input.endPos()) break\n matches.add(i.arg) // Record the matched Set ID\n break\n case Inst.RUNE:\n add = i.matchRune(rune)\n break\n case Inst.RUNE1:\n add = rune === i.runes[0]\n break\n case Inst.RUNE_ANY:\n add = true\n break\n case Inst.RUNE_ANY_NOT_NL:\n add = rune !== Codepoint.CODES.get('\\n')\n break\n default:\n throw new RE2JSInternalException('bad inst')\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, flag, t)\n }\n if (t !== null) {\n this.freeThread(t)\n runq.denseThreads[j] = null\n }\n }\n runq.clear()\n\n if (width === 0) break\n\n pos += width\n rune = rune1\n width = width1\n if (rune !== -1) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n const tmpq = runq\n runq = nextq\n nextq = tmpq\n }\n this.freeQueue(nextq)\n return Array.from(matches).sort((a, b) => a - b)\n }\n\n step(runq, nextq, pos, nextPos, c, nextCond, anchor, atEnd) {\n const longest = this.re2.longest\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j]\n if (t === null) {\n continue\n }\n if (longest && this.matched && this.ncap > 0 && this.matchcap[0] < t.cap[0]) {\n this.freeThread(t)\n continue\n }\n\n const i = t.inst\n let add = false\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && !atEnd) {\n break\n }\n if (this.ncap > 0 && (!longest || !this.matched || this.matchcap[1] < pos)) {\n t.cap[1] = pos\n // Using subarray creates a fast view, avoiding a full array copy\n // until the submatches are finalized at the very end.\n this.matchcap.set(t.cap.subarray(0, this.ncap))\n }\n if (!longest) {\n this.freeQueue(runq, j + 1)\n }\n this.matched = true\n break\n case Inst.RUNE:\n add = i.matchRune(c)\n break\n case Inst.RUNE1:\n add = c === i.runes[0]\n break\n case Inst.RUNE_ANY:\n add = true\n break\n case Inst.RUNE_ANY_NOT_NL:\n add = c !== Codepoint.CODES.get('\\n')\n break\n default:\n throw new RE2JSInternalException('bad inst')\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, nextCond, t)\n }\n if (t !== null) {\n this.freeThread(t)\n runq.denseThreads[j] = null\n }\n }\n runq.clear()\n }\n\n add(q, pc, pos, cap, cond, t) {\n while (true) {\n if (pc === 0) {\n return t\n }\n if (q.contains(pc)) {\n return t\n }\n\n const d = q.add(pc)\n const inst = this.prog.inst[pc]\n switch (inst.op) {\n case Inst.FAIL:\n return t\n case Inst.ALT:\n case Inst.ALT_MATCH:\n t = this.add(q, inst.out, pos, cap, cond, t)\n pc = inst.arg // Flattened tail recursion\n continue\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~cond) === 0) {\n pc = inst.out // Flattened tail recursion\n continue\n }\n return t\n case Inst.NOP:\n pc = inst.out // Flattened tail recursion\n continue\n case Inst.CAPTURE:\n if (inst.arg < this.ncap) {\n const opos = cap[inst.arg]\n cap[inst.arg] = pos\n this.add(q, inst.out, pos, cap, cond, null)\n cap[inst.arg] = opos\n return t\n } else {\n pc = inst.out // Flattened tail recursion\n continue\n }\n case Inst.LB_WRITE:\n this.lbTable[Math.abs(inst.lb)] = pos\n pc = inst.out\n continue\n case Inst.LB_CHECK:\n if (inst.lb > 0) {\n // Positive Lookbehind\n if (this.lbTable[inst.lb] === pos) {\n pc = inst.out // Flattened tail recursion\n continue\n }\n } else if (this.lbTable[-inst.lb] !== pos) {\n // Negative Lookbehind\n pc = inst.out // Flattened tail recursion\n continue\n }\n return t\n case Inst.MATCH:\n case Inst.RUNE:\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n if (t === null) {\n t = this.alloc(inst)\n } else {\n t.inst = inst\n }\n if (this.ncap > 0 && t.cap !== cap) {\n // Direct assignment utilizing Typed Array performance\n for (let c = 0; c < this.ncap; c++) {\n t.cap[c] = cap[c]\n }\n }\n q.denseThreads[d] = t\n t = null\n return t\n default:\n throw new Error('unhandled')\n }\n }\n }\n}\n\nexport { Machine }\n","import { Inst } from './Inst'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\n\n// FNV-1a 32-bit hash for an array of integers.\n// Extremely fast, allocates no memory, and produces good distribution.\nconst hashPCs = (pcs) => {\n let h = -2128831035 // 0x811c9dc5 (32-bit signed offset basis)\n for (let i = 0; i < pcs.length; i++) {\n h ^= pcs[i]\n h = Math.imul(h, 16777619) // 0x01000193 (FNV prime)\n }\n return h\n}\n\n// Zero-allocation array comparison for hash collision resolution\nconst arraysEqual = (a, b) => {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n return true\n}\n\nclass DFAState {\n constructor(nfaStates, isMatch, matchIDs = []) {\n this.nfaStates = nfaStates // Int32Array of Instruction PCs\n this.isMatch = isMatch // Boolean\n this.matchIDs = matchIDs // Array of integers indicating which Set patterns matched\n\n // Latin-1 (Unicode.MAX_LATIN1 + 1) flat arrays for blisteringly fast O(1) lookups\n // completely covering standard English, European languages, and 1-byte encodings.\n this.nextLatin1 = new Array(Unicode.MAX_LATIN1 + 1).fill(null) // Flat array for blisteringly fast ASCII lookups\n this.nextLatin1Anchored = new Array(Unicode.MAX_LATIN1 + 1).fill(null) // Flat array for blisteringly fast ASCII lookups\n // 2 arrays used as hash map for V8 optimization (N is small number, so O(n) faster than Map O(1))\n this.transKeys = []\n this.transVals = []\n\n this.lastSeen = 0 // Track when this state was last used for LRU eviction\n }\n}\n\nclass DFA {\n static MAX_CACHE_CLEARS = 5\n\n constructor(prog) {\n this.prog = prog\n this.stateCache = new Map() // hash(number) -> DFAState[]\n this.stateCount = 0 // Tracks total states for memory limits\n this.startState = null\n this.stateLimit = 10000 // Prevent memory explosion (ReDoS protection)\n this.cacheClears = 0 // Track thrashing\n this.failed = false // mark if DFA cannot work with provided prog\n this.clock = 0 // Global clock for LRU eviction\n }\n\n // Follows epsilon (empty) transitions to find all reachable states without consuming a char\n computeClosure(pcs) {\n const closure = new Set()\n const stack = [...pcs]\n let isMatch = false\n const matchIDs = []\n\n while (stack.length > 0) {\n const pc = stack.pop()\n if (closure.has(pc)) continue\n closure.add(pc)\n\n const inst = this.prog.getInst(pc)\n switch (inst.op) {\n case Inst.MATCH:\n isMatch = true\n if (!matchIDs.includes(inst.arg)) matchIDs.push(inst.arg)\n break\n case Inst.ALT:\n case Inst.ALT_MATCH:\n stack.push(inst.out)\n stack.push(inst.arg)\n break\n case Inst.NOP:\n case Inst.CAPTURE:\n stack.push(inst.out)\n break\n // Bailing out on complex empty-width assertions to keep DFA fast.\n // Engine will seamlessly fall back to the NFA.\n case Inst.EMPTY_WIDTH:\n case Inst.LB_WRITE:\n case Inst.LB_CHECK:\n return null\n }\n }\n\n const sortedPCs = Int32Array.from(closure).sort()\n matchIDs.sort((a, b) => a - b)\n return { pcs: sortedPCs, isMatch, matchIDs }\n }\n\n // Get or create a DFA state from a list of NFA PCs\n getState(pcs) {\n const closureResult = this.computeClosure(pcs)\n if (!closureResult) return null // Bailout to NFA required\n\n const sortedPCs = closureResult.pcs\n const hash = hashPCs(sortedPCs)\n\n // Lookup hash bucket\n let bucket = this.stateCache.get(hash)\n if (bucket) {\n // Resolve potential hash collisions\n for (let i = 0; i < bucket.length; i++) {\n const state = bucket[i]\n if (arraysEqual(state.nfaStates, sortedPCs)) {\n state.lastSeen = ++this.clock\n return state\n }\n }\n } else {\n bucket = []\n this.stateCache.set(hash, bucket)\n }\n\n // DFA already failed once - exit\n if (this.failed) return null\n\n // Safety: prevent memory exhaustion from state explosion\n // We prune the cache to keep the newest 50%\n if (this.stateCount >= this.stateLimit) {\n this.cacheClears++\n\n // If this regex causes continuous cache thrashing, permanently fall back to NFA\n // to avoid spending CPU cycles constantly rebuilding the DFA tree.\n if (this.cacheClears >= DFA.MAX_CACHE_CLEARS) {\n this.failed = true\n this.stateCache.clear()\n this.stateCount = 0\n this.startState = null\n return null\n }\n\n this.evictCache()\n\n // After eviction, the bucket reference might be stale or empty.\n // We must re-fetch or re-create the bucket.\n bucket = this.stateCache.get(hash)\n if (!bucket) {\n bucket = []\n this.stateCache.set(hash, bucket)\n }\n }\n\n // State not found, create it and add to bucket\n const state = new DFAState(sortedPCs, closureResult.isMatch, closureResult.matchIDs)\n state.lastSeen = ++this.clock\n bucket.push(state)\n this.stateCount++\n return state\n }\n\n evictCache() {\n const allStates = []\n for (const bucket of this.stateCache.values()) {\n for (let i = 0; i < bucket.length; i++) {\n allStates.push(bucket[i])\n }\n }\n\n // Sort ascending by lastSeen (oldest first)\n allStates.sort((a, b) => a.lastSeen - b.lastSeen)\n\n // Keep the newest 50%\n const keepCount = Math.max(1, Math.floor(this.stateLimit / 2))\n const startIndex = allStates.length - keepCount\n const survivorsArray = allStates.slice(startIndex)\n const survivors = new Set(survivorsArray)\n\n this.stateCache.clear()\n this.stateCount = 0\n\n for (let i = 0; i < survivorsArray.length; i++) {\n const state = survivorsArray[i]\n\n // Sever ties to all states to prevent memory leaks and dangling pointers\n state.nextLatin1.fill(null)\n state.nextLatin1Anchored.fill(null)\n // zero-allocation cleanup\n state.transKeys.length = 0\n state.transVals.length = 0\n\n const hash = hashPCs(state.nfaStates)\n let bucket = this.stateCache.get(hash)\n if (!bucket) {\n bucket = []\n this.stateCache.set(hash, bucket)\n }\n bucket.push(state)\n this.stateCount++\n }\n\n // Start state must either be preserved or nullified so it gets re-created\n if (this.startState && !survivors.has(this.startState)) {\n this.startState = null\n }\n }\n\n // Compute the next DFA state given a current state and a character\n step(state, charCode, anchor) {\n // OPTIMIZATION: Latin-1 Array Fast-Path\n if (charCode <= Unicode.MAX_LATIN1) {\n if (anchor === RE2Flags.UNANCHORED) {\n const next = state.nextLatin1[charCode]\n if (next !== null) return next\n } else {\n const next = state.nextLatin1Anchored[charCode]\n if (next !== null) return next\n }\n } else {\n // Dense Array Linear Search fallback for Runes > 255\n const key = charCode + (anchor === RE2Flags.UNANCHORED ? 0 : Unicode.MAX_RUNE + 1)\n // get [key] -> nextState\n const keys = state.transKeys\n const len = keys.length\n for (let i = 0; i < len; i++) {\n if (keys[i] === key) return state.transVals[i]\n }\n }\n\n const nextPCs = []\n for (let i = 0; i < state.nfaStates.length; i++) {\n const pc = state.nfaStates[i]\n const inst = this.prog.getInst(pc)\n if (Inst.isRuneOp(inst.op) && inst.matchRune(charCode)) {\n nextPCs.push(inst.out)\n }\n }\n\n if (anchor === RE2Flags.UNANCHORED) {\n nextPCs.push(this.prog.start)\n }\n\n const nextState = this.getState(nextPCs)\n\n // Cache the result\n if (charCode <= Unicode.MAX_LATIN1) {\n if (anchor === RE2Flags.UNANCHORED) {\n state.nextLatin1[charCode] = nextState\n } else {\n state.nextLatin1Anchored[charCode] = nextState\n }\n } else {\n const key = charCode + (anchor === RE2Flags.UNANCHORED ? 0 : Unicode.MAX_RUNE + 1)\n // store key -> nextState\n state.transKeys.push(key)\n state.transVals.push(nextState)\n }\n\n return nextState\n }\n\n // The hot loop: Execute the Lazy DFA\n match(input, pos, anchor) {\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false\n }\n\n if (!this.startState) {\n this.startState = this.getState([this.prog.start])\n if (!this.startState) return null // Fallback to NFA\n }\n\n let endPos = input.endPos()\n let currentState = this.startState\n if (currentState.isMatch) {\n if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (pos === endPos) return true\n } else {\n return true\n }\n }\n\n let i = pos\n\n while (i < endPos) {\n const r = input.step(i)\n const rune = r >> 3\n const width = r & 7\n\n // prevent infinite loop on EOF\n if (width === 0) {\n break\n }\n\n currentState =\n (anchor === RE2Flags.UNANCHORED &&\n rune <= Unicode.MAX_LATIN1 &&\n currentState.nextLatin1[rune]) ||\n this.step(currentState, rune, anchor)\n\n // If we hit an unrecoverable DFA error or bailout, signal fallback\n if (currentState === null) return null\n\n currentState.lastSeen = ++this.clock\n\n if (currentState.isMatch) {\n if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (i + width === endPos) return true\n } else {\n return true\n }\n }\n\n // If we hit a dead end, and anchored, fail early\n if (currentState.nfaStates.length === 0) {\n if (anchor !== RE2Flags.UNANCHORED) return false\n }\n i += width\n }\n\n return false\n }\n\n // The hot loop for evaluating Multi-Pattern Sets\n matchSet(input, pos, anchor) {\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return []\n }\n\n if (!this.startState) {\n this.startState = this.getState([this.prog.start])\n if (!this.startState) return null // Fallback to NFA\n }\n\n let endPos = input.endPos()\n let currentState = this.startState\n const matches = new Set()\n\n const checkMatch = (state, currentPos) => {\n if (state.isMatch) {\n if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (currentPos === endPos) {\n state.matchIDs.forEach((id) => matches.add(id))\n }\n } else {\n state.matchIDs.forEach((id) => matches.add(id))\n }\n }\n }\n\n checkMatch(currentState, pos)\n\n let i = pos\n while (i < endPos) {\n const r = input.step(i)\n const rune = r >> 3\n const width = r & 7\n\n if (width === 0) break\n\n currentState =\n (anchor === RE2Flags.UNANCHORED &&\n rune <= Unicode.MAX_LATIN1 &&\n currentState.nextLatin1[rune]) ||\n this.step(currentState, rune, anchor)\n\n if (currentState === null) return null // Bailout to NFA\n\n currentState.lastSeen = ++this.clock\n\n i += width\n checkMatch(currentState, i)\n\n if (currentState.nfaStates.length === 0) {\n if (anchor !== RE2Flags.UNANCHORED) break\n }\n }\n\n return Array.from(matches).sort((a, b) => a - b)\n }\n}\n\nexport { DFA }\n","import { Inst } from './Inst'\nimport { MachineInputBase } from './MachineInput'\nimport { Utils } from './Utils'\nimport { RE2Flags } from './RE2Flags'\nimport { RE2JSInternalException } from './exceptions'\n\nconst VISITED_BITS = 32\nconst MAX_BACKTRACK_PROG = 500\nconst INITIAL_JOB_CAPACITY = 256 // Starting size for the job stack arrays\nconst MAX_BACKTRACK_VECTOR = 256 * 1024 // 32 KB limit for the visited bit-mask\n\nclass BitState {\n constructor() {\n this.end = 0\n this.cap = new Int32Array(0)\n this.matchcap = new Int32Array(0)\n this.ncap = 0\n\n // Parallel arrays acting as the backtrack job stack\n this.jobPc = new Int32Array(INITIAL_JOB_CAPACITY)\n this.jobArg = new Uint8Array(INITIAL_JOB_CAPACITY)\n this.jobPos = new Int32Array(INITIAL_JOB_CAPACITY)\n this.jobLen = 0\n\n this.visited = new Uint32Array(0)\n }\n\n reset(prog, end, ncap) {\n this.end = end\n this.jobLen = 0\n this.ncap = ncap\n\n // Bitwise shift (>>> 5) instead of Math.floor( / 32)\n const visitedSize = (prog.numInst() * (end + 1) + VISITED_BITS - 1) >>> 5\n if (this.visited.length < visitedSize) {\n this.visited = new Uint32Array(visitedSize)\n } else {\n this.visited.fill(0, 0, visitedSize)\n }\n\n if (this.cap.length < ncap) {\n // Must explicitly fill with -1 as Int32Array defaults to 0\n this.cap = new Int32Array(ncap).fill(-1)\n } else {\n this.cap.fill(-1, 0, ncap)\n }\n\n if (this.matchcap.length < ncap) {\n this.matchcap = new Int32Array(ncap).fill(-1)\n } else {\n this.matchcap.fill(-1, 0, ncap)\n }\n }\n\n shouldVisit(pc, pos) {\n const n = pc * (this.end + 1) + pos\n const idx = n >>> 5 // Equivalent to Math.floor(n / 32)\n const mask = 1 << (n & 31) // Equivalent to n % 32\n\n if ((this.visited[idx] & mask) !== 0) {\n return false\n }\n this.visited[idx] |= mask\n return true\n }\n\n push(re2, pc, pos, arg) {\n if (re2.prog.getInst(pc).op !== Inst.FAIL && (arg || this.shouldVisit(pc, pos))) {\n if (this.jobLen >= this.jobPc.length) {\n const newSize = this.jobPc.length * 2\n\n const newPc = new Int32Array(newSize)\n newPc.set(this.jobPc)\n this.jobPc = newPc\n\n const newArg = new Uint8Array(newSize)\n newArg.set(this.jobArg)\n this.jobArg = newArg\n\n const newPos = new Int32Array(newSize)\n newPos.set(this.jobPos)\n this.jobPos = newPos\n }\n this.jobPc[this.jobLen] = pc\n this.jobArg[this.jobLen] = arg ? 1 : 0\n this.jobPos[this.jobLen] = pos\n this.jobLen++\n }\n }\n\n tryBacktrack(re2, input, pc, pos, anchor) {\n const longest = re2.longest\n this.push(re2, pc, pos, false)\n\n while (this.jobLen > 0) {\n this.jobLen--\n let currentPc = this.jobPc[this.jobLen]\n let arg = this.jobArg[this.jobLen] === 1\n let currentPos = this.jobPos[this.jobLen]\n\n let skipShouldVisit = true\n\n while (true) {\n if (!skipShouldVisit) {\n if (!this.shouldVisit(currentPc, currentPos)) {\n break\n }\n }\n skipShouldVisit = false\n\n const inst = re2.prog.getInst(currentPc)\n\n switch (inst.op) {\n case Inst.FAIL: {\n throw new RE2JSInternalException('unexpected InstFail')\n }\n case Inst.ALT: {\n if (arg) {\n arg = false\n currentPc = inst.arg\n continue\n } else {\n this.push(re2, currentPc, currentPos, true)\n currentPc = inst.out\n continue\n }\n }\n case Inst.ALT_MATCH: {\n const outInst = re2.prog.getInst(inst.out)\n if (Inst.isRuneOp(outInst.op)) {\n this.push(re2, inst.arg, currentPos, false)\n currentPc = inst.arg\n currentPos = this.end\n continue\n }\n this.push(re2, inst.out, this.end, false)\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n if (!inst.matchRune(r >> 3)) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE1: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n if (r >> 3 !== inst.runes[0]) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE_ANY_NOT_NL: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n if (r >> 3 === 10) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE_ANY: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.CAPTURE: {\n if (arg) {\n this.cap[inst.arg] = currentPos\n break\n } else {\n if (inst.arg < this.ncap) {\n this.push(re2, currentPc, this.cap[inst.arg], true)\n this.cap[inst.arg] = currentPos\n }\n currentPc = inst.out\n continue\n }\n }\n case Inst.EMPTY_WIDTH: {\n const flag = input.context(currentPos)\n if ((inst.arg & ~flag) !== 0) break\n currentPc = inst.out\n continue\n }\n\n case Inst.NOP: {\n currentPc = inst.out\n continue\n }\n\n case Inst.MATCH: {\n if (anchor === RE2Flags.ANCHOR_BOTH && currentPos !== this.end) {\n break\n }\n if (this.ncap === 0) return true\n\n if (this.ncap > 1) {\n this.cap[1] = currentPos\n }\n\n const old = this.matchcap[1]\n if (old === -1 || (longest && currentPos > 0 && currentPos > old)) {\n this.matchcap.set(this.cap)\n }\n\n if (!longest) return true\n if (currentPos === this.end) return true\n break\n }\n case Inst.LB_WRITE:\n case Inst.LB_CHECK: {\n throw new RE2JSInternalException('Backtracker cannot evaluate Lookbehind instructions')\n }\n default: {\n throw new RE2JSInternalException('bad inst')\n }\n }\n break\n }\n }\n return longest && this.matchcap.length > 1 && this.matchcap[1] >= 0\n }\n}\n\nconst bitStatePool = []\n\nexport class Backtracker {\n static shouldBacktrack(prog) {\n return prog.numInst() <= MAX_BACKTRACK_PROG\n }\n\n static maxBitStateLen(prog) {\n if (!Backtracker.shouldBacktrack(prog)) {\n return 0\n }\n return Math.floor(MAX_BACKTRACK_VECTOR / prog.numInst())\n }\n\n static execute(re2, input, pos, anchor, ncap) {\n const startCond = re2.cond\n if (startCond === Utils.EMPTY_ALL) {\n return null\n }\n\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return null\n }\n\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n return null\n }\n\n const b = bitStatePool.length > 0 ? bitStatePool.pop() : new BitState()\n const end = input.endPos()\n b.reset(re2.prog, end, ncap)\n\n let matched = false\n\n if (\n (startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 ||\n anchor === RE2Flags.ANCHOR_START ||\n anchor === RE2Flags.ANCHOR_BOTH\n ) {\n if (b.ncap > 0) {\n b.cap[0] = pos\n }\n if (b.tryBacktrack(re2, input, re2.prog.start, pos, anchor)) {\n matched = true\n }\n } else {\n let width = -1\n for (; pos <= end && width !== 0; pos += width) {\n if (re2.prefix.length > 0) {\n const advance = input.index(re2, pos)\n if (advance < 0) {\n break\n }\n pos += advance\n }\n\n if (b.ncap > 0) {\n b.cap[0] = pos\n }\n if (b.tryBacktrack(re2, input, re2.prog.start, pos, anchor)) {\n matched = true\n break\n }\n const r = input.step(pos)\n width = r === MachineInputBase.EOF() ? 0 : r & 7\n }\n }\n\n if (!matched) {\n bitStatePool.push(b)\n return null\n }\n\n // Must slice so we don't accidentally leak trailing arrays from previously recycled typed arrays\n const result = ncap === 0 ? [] : Array.from(b.matchcap.subarray(0, ncap))\n bitStatePool.push(b)\n return result\n }\n}\n","import { Inst } from './Inst'\nimport { Unicode } from './Unicode'\nimport { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { MachineInputBase } from './MachineInput'\nimport { RE2JSInternalException } from './exceptions'\n\nclass QueueOnePass {\n constructor(size) {\n this.sparse = new Uint32Array(size)\n this.dense = new Uint32Array(size)\n this.size = 0\n this.nextIndex = 0\n }\n empty() {\n return this.nextIndex >= this.size\n }\n next() {\n return this.dense[this.nextIndex++]\n }\n clear() {\n this.size = 0\n this.nextIndex = 0\n }\n contains(u) {\n return u < this.sparse.length && this.sparse[u] < this.size && this.dense[this.sparse[u]] === u\n }\n insert(u) {\n if (!this.contains(u)) this.insertNew(u)\n }\n insertNew(u) {\n if (u >= this.sparse.length) return\n this.sparse[u] = this.size\n this.dense[this.size] = u\n this.size++\n }\n}\n\nconst mergeRuneSets = (leftRunes, rightRunes, leftPC, rightPC) => {\n const leftLen = leftRunes.length\n const rightLen = rightRunes.length\n let lx = 0,\n rx = 0\n const merged = []\n const next = []\n let ok = true\n\n let ix = -1\n const extend = (isLeft) => {\n const newArray = isLeft ? leftRunes : rightRunes\n const low = isLeft ? lx : rx\n const pc = isLeft ? leftPC : rightPC\n\n if (ix > 0 && newArray[low] <= merged[ix]) return false\n\n merged.push(newArray[low], newArray[low + 1])\n if (isLeft) lx += 2\n else rx += 2\n ix += 2\n next.push(pc)\n return true\n }\n\n while (lx < leftLen || rx < rightLen) {\n if (rx >= rightLen) {\n ok = extend(true)\n } else if (lx >= leftLen) {\n ok = extend(false)\n } else if (rightRunes[rx] < leftRunes[lx]) {\n ok = extend(false)\n } else {\n ok = extend(true)\n }\n if (!ok) return null\n }\n return { merged, next }\n}\n\nclass OnePassProg {\n constructor(prog) {\n this.start = prog.start\n this.numCap = prog.numCap\n this.inst = new Array(prog.inst.length)\n for (let i = 0; i < prog.inst.length; i++) {\n const orig = prog.inst[i]\n const inst = new Inst(orig.op)\n inst.out = orig.out\n inst.arg = orig.arg\n inst.runes = orig.runes ? orig.runes.slice() : []\n inst.next = null\n this.inst[i] = inst\n }\n }\n}\n\nconst onePassCopy = (prog) => {\n const p = new OnePassProg(prog)\n\n // Rewrites one or more common Prog constructs that enable some otherwise\n // non-onepass Progs to be onepass.\n for (let pc = 0; pc < p.inst.length; pc++) {\n const inst = p.inst[pc]\n if (inst.op !== Inst.ALT && inst.op !== Inst.ALT_MATCH) continue\n\n let pAOther = 'out'\n let pAAlt = 'arg'\n\n let instAlt = p.inst[inst[pAAlt]]\n if (instAlt.op !== Inst.ALT && instAlt.op !== Inst.ALT_MATCH) {\n pAOther = 'arg'\n pAAlt = 'out'\n instAlt = p.inst[inst[pAAlt]]\n if (instAlt.op !== Inst.ALT && instAlt.op !== Inst.ALT_MATCH) continue\n }\n\n const instOther = p.inst[inst[pAOther]]\n if (instOther.op === Inst.ALT || instOther.op === Inst.ALT_MATCH) continue\n\n let pBAlt = 'out'\n let pBOther = 'arg'\n let patch = false\n\n if (instAlt.out === pc) {\n patch = true\n } else if (instAlt.arg === pc) {\n patch = true\n pBAlt = 'arg'\n pBOther = 'out'\n }\n\n if (patch) instAlt[pBAlt] = inst[pAOther]\n if (inst[pAOther] === instAlt[pBAlt]) inst[pAAlt] = instAlt[pBOther]\n }\n return p\n}\n\nconst makeOnePass = (p) => {\n if (p.inst.length >= 1000) return null\n\n const instQueue = new QueueOnePass(p.inst.length)\n const visitQueue = new QueueOnePass(p.inst.length)\n const onePassRunes = new Array(p.inst.length)\n const m = new Array(p.inst.length).fill(false)\n\n const check = (pc) => {\n let ok = true\n const inst = p.inst[pc]\n if (visitQueue.contains(pc)) return true\n visitQueue.insert(pc)\n\n switch (inst.op) {\n case Inst.ALT:\n case Inst.ALT_MATCH: {\n ok = check(inst.out) && check(inst.arg)\n let matchOut = m[inst.out]\n let matchArg = m[inst.arg]\n if (matchOut && matchArg) return false\n\n if (matchArg) {\n const tempOut = inst.out\n inst.out = inst.arg\n inst.arg = tempOut\n const tempMatch = matchOut\n matchOut = matchArg\n matchArg = tempMatch\n }\n if (matchOut) {\n m[pc] = true\n inst.op = Inst.ALT_MATCH\n }\n\n const leftRunes = onePassRunes[inst.out] || []\n const rightRunes = onePassRunes[inst.arg] || []\n const mergeRes = mergeRuneSets(leftRunes, rightRunes, inst.out, inst.arg)\n\n if (!mergeRes) return false\n\n onePassRunes[pc] = mergeRes.merged\n inst.next = new Uint32Array(mergeRes.next)\n break\n }\n case Inst.CAPTURE:\n case Inst.EMPTY_WIDTH:\n case Inst.NOP: {\n ok = check(inst.out)\n m[pc] = m[inst.out]\n\n onePassRunes[pc] = onePassRunes[inst.out] ? onePassRunes[inst.out].slice() : []\n\n inst.next = new Uint32Array(Math.floor(onePassRunes[pc].length / 2) + 1).fill(inst.out)\n break\n }\n case Inst.MATCH:\n case Inst.FAIL: {\n m[pc] = inst.op === Inst.MATCH\n break\n }\n case Inst.RUNE: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n if (!inst.runes || inst.runes.length === 0) {\n onePassRunes[pc] = []\n inst.next = new Uint32Array([inst.out])\n break\n }\n let runes = []\n if (inst.runes.length === 1 && (inst.arg & RE2Flags.FOLD_CASE) !== 0) {\n const r0 = inst.runes[0]\n runes.push(r0, r0)\n for (let r1 = Unicode.simpleFold(r0); r1 !== r0; r1 = Unicode.simpleFold(r1)) {\n runes.push(r1, r1)\n }\n runes.sort((a, b) => a - b)\n } else {\n runes.push(...inst.runes)\n }\n onePassRunes[pc] = runes\n inst.next = new Uint32Array(Math.floor(runes.length / 2) + 1).fill(inst.out)\n inst.op = Inst.RUNE\n break\n }\n case Inst.RUNE1: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n let runes = []\n if ((inst.arg & RE2Flags.FOLD_CASE) !== 0) {\n const r0 = inst.runes[0]\n runes.push(r0, r0)\n for (let r1 = Unicode.simpleFold(r0); r1 !== r0; r1 = Unicode.simpleFold(r1)) {\n runes.push(r1, r1)\n }\n runes.sort((a, b) => a - b)\n } else {\n runes.push(inst.runes[0], inst.runes[0])\n }\n onePassRunes[pc] = runes\n inst.next = new Uint32Array(Math.floor(runes.length / 2) + 1).fill(inst.out)\n inst.op = Inst.RUNE\n break\n }\n case Inst.RUNE_ANY: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n onePassRunes[pc] = [0, Unicode.MAX_RUNE]\n inst.next = new Uint32Array([inst.out])\n break\n }\n case Inst.RUNE_ANY_NOT_NL: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n onePassRunes[pc] = [0, 9, 11, Unicode.MAX_RUNE] // \\n is 10\n inst.next = new Uint32Array(Math.floor(onePassRunes[pc].length / 2) + 1).fill(inst.out)\n break\n }\n }\n return ok\n }\n\n instQueue.clear()\n instQueue.insert(p.start)\n\n while (!instQueue.empty()) {\n visitQueue.clear()\n const pc = instQueue.next()\n if (!check(pc)) return null\n }\n\n for (let i = 0; i < p.inst.length; i++) {\n if (onePassRunes[i]) p.inst[i].runes = onePassRunes[i]\n }\n return p\n}\n\nconst cleanupOnePass = (p, original) => {\n for (let ix = 0; ix < original.inst.length; ix++) {\n const instOriginal = original.inst[ix]\n switch (instOriginal.op) {\n case Inst.ALT:\n case Inst.ALT_MATCH:\n case Inst.RUNE:\n break\n case Inst.CAPTURE:\n case Inst.EMPTY_WIDTH:\n case Inst.NOP:\n case Inst.MATCH:\n case Inst.FAIL:\n p.inst[ix].next = null\n break\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n p.inst[ix].next = null\n p.inst[ix].op = instOriginal.op\n p.inst[ix].runes = instOriginal.runes ? instOriginal.runes.slice() : []\n break\n }\n }\n}\n\nexport class OnePass {\n static compile(prog) {\n if (prog.start === 0) return null\n // OnePass cannot evaluate Lookbehinds\n if (prog.numLb > 0) return null\n\n const startInst = prog.inst[prog.start]\n // onepass regexps must be strictly anchored\n if (startInst.op !== Inst.EMPTY_WIDTH || (startInst.arg & Utils.EMPTY_BEGIN_TEXT) === 0) {\n return null\n }\n\n let hasAlt = false\n for (let i = 0; i < prog.inst.length; i++) {\n if (prog.inst[i].op === Inst.ALT || prog.inst[i].op === Inst.ALT_MATCH) {\n hasAlt = true\n break\n }\n }\n\n for (let i = 0; i < prog.inst.length; i++) {\n const inst = prog.inst[i]\n const opOut = prog.inst[inst.out].op\n switch (inst.op) {\n case Inst.ALT:\n case Inst.ALT_MATCH:\n if (opOut === Inst.MATCH || prog.inst[inst.arg].op === Inst.MATCH) {\n return null\n }\n break\n case Inst.EMPTY_WIDTH:\n if (opOut === Inst.MATCH) {\n if ((inst.arg & Utils.EMPTY_END_TEXT) === Utils.EMPTY_END_TEXT) {\n continue\n }\n return null\n }\n break\n default:\n if (opOut === Inst.MATCH && hasAlt) {\n return null\n }\n break\n }\n }\n\n let p = onePassCopy(prog)\n p = makeOnePass(p)\n if (p !== null) {\n cleanupOnePass(p, prog)\n }\n return p\n }\n\n static next(inst, r) {\n const nextIdx = inst.matchRunePos(r)\n if (nextIdx >= 0) return inst.next[nextIdx]\n if (inst.op === Inst.ALT_MATCH) return inst.out\n return 0 // fail\n }\n\n static execute(re2, input, pos, anchor, ncap) {\n const onepass = re2.onepass\n if (!onepass) return null\n\n const matchcap = new Int32Array(ncap).fill(-1)\n let matched = false\n\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let r1 = MachineInputBase.EOF()\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r1 = input.step(pos + width)\n if (r1 !== MachineInputBase.EOF()) {\n rune1 = r1 >> 3\n width1 = r1 & 7\n }\n }\n\n let flag = pos === 0 ? Utils.emptyOpContext(-1, rune) : input.context(pos)\n let pc = onepass.start\n let inst\n\n while (true) {\n inst = onepass.inst[pc]\n pc = inst.out\n\n switch (inst.op) {\n case Inst.MATCH: {\n // Verify ANCHOR_BOTH constraint before accepting the match\n if (anchor === RE2Flags.ANCHOR_BOTH && pos !== input.endPos()) {\n return null\n }\n\n matched = true\n if (matchcap.length > 0) {\n matchcap[0] = 0\n matchcap[1] = pos\n }\n return ncap === 0 ? [] : Array.from(matchcap)\n }\n case Inst.RUNE:\n if (!inst.matchRune(rune)) return null\n break\n case Inst.RUNE1:\n if (rune !== inst.runes[0]) return null\n break\n case Inst.RUNE_ANY:\n break\n case Inst.RUNE_ANY_NOT_NL:\n if (rune === 10) return null\n break\n case Inst.ALT:\n case Inst.ALT_MATCH:\n pc = OnePass.next(inst, rune)\n continue\n case Inst.FAIL:\n return null\n case Inst.NOP:\n continue\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~flag) !== 0) return null\n continue\n case Inst.CAPTURE:\n if (inst.arg < matchcap.length) {\n matchcap[inst.arg] = pos\n }\n continue\n default:\n throw new RE2JSInternalException('bad inst')\n }\n\n if (width === 0) break\n\n flag = Utils.emptyOpContext(rune, rune1)\n pos += width\n rune = rune1\n width = width1\n\n if (rune !== -1) {\n r1 = input.step(pos + width)\n if (r1 !== MachineInputBase.EOF()) {\n rune1 = r1 >> 3\n width1 = r1 & 7\n } else {\n rune1 = -1\n width1 = 0\n }\n }\n }\n\n if (!matched) return null\n return ncap === 0 ? [] : Array.from(matchcap)\n }\n}\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Regular expression abstract syntax tree. Produced by parser, used by compiler. NB, this\n * corresponds to {@code syntax.regexp} in the Go implementation; Go's {@code regexp} is called\n * {@code RE2} in Java.\n */\nexport class Regexp {\n static Op = createEnum([\n 'NO_MATCH', // Matches no strings.\n 'EMPTY_MATCH', // Matches empty string.\n 'LITERAL', // Matches runes[] sequence\n 'CHAR_CLASS', // Matches Runes interpreted as range pair list\n 'ANY_CHAR_NOT_NL', // Matches any character except '\\n'\n 'ANY_CHAR', // Matches any character\n 'BEGIN_LINE', // Matches empty string at end of line\n 'END_LINE', // Matches empty string at end of line\n 'BEGIN_TEXT', // Matches empty string at beginning of text\n 'END_TEXT', // Matches empty string at end of text\n 'WORD_BOUNDARY', // Matches word boundary `\\b`\n 'NO_WORD_BOUNDARY', // Matches word non-boundary `\\B`\n 'CAPTURE', // Capturing subexpr with index cap, optional name name\n 'STAR', // Matches subs[0] zero or more times.\n 'PLUS', // Matches subs[0] one or more times.\n 'QUEST', // Matches subs[0] zero or one times.\n 'REPEAT', // Matches subs[0] [min, max] times; max=-1 => no limit.\n 'CONCAT', // Matches concatenation of subs[]\n 'ALTERNATE', // Matches union of subs[]\n 'PLB', // Positive LookBehind\n 'NLB', // Negative LookBehind\n // Pseudo ops, used internally by Parser for parsing stack:\n 'LEFT_PAREN',\n 'VERTICAL_BAR'\n ])\n\n static isPseudoOp(op) {\n return op >= Regexp.Op.LEFT_PAREN\n }\n\n static emptySubs() {\n return []\n }\n\n static quoteIfHyphen(rune) {\n if (rune === Codepoint.CODES.get('-')) {\n return '\\\\'\n }\n return ''\n }\n\n static fromRegexp(re) {\n const regex = new Regexp(re.op)\n regex.flags = re.flags\n regex.subs = re.subs\n regex.runes = re.runes\n regex.cap = re.cap\n regex.min = re.min\n regex.max = re.max\n regex.name = re.name\n regex.namedGroups = re.namedGroups\n regex.lb = re.lb // Track lookbehind index\n return regex\n }\n\n constructor(op) {\n this.op = op // operator\n this.flags = 0 // bitmap of parse flags\n // subexpressions, if any. Never null.\n // subs[0] is used as the freelist.\n this.subs = Regexp.emptySubs()\n this.runes = [] // matched runes, for LITERAL, CHAR_CLASS\n this.min = 0 // min for REPEAT\n this.max = 0 // max for REPEAT\n this.cap = 0 // capturing index, for CAPTURE\n this.name = null // capturing name, for CAPTURE\n this.namedGroups = Object.create(null) // map of group name -> capturing index\n this.lb = 0 // Lookbehind index tracking\n }\n\n reinit() {\n this.flags = 0\n this.subs = Regexp.emptySubs()\n this.runes = []\n this.cap = 0\n this.min = 0\n this.max = 0\n this.name = null\n this.namedGroups = Object.create(null)\n this.lb = 0\n }\n\n toString() {\n return this.appendTo()\n }\n\n // appendTo() appends the Perl syntax for |this| regular expression to out\n appendTo() {\n let out = ''\n switch (this.op) {\n case Regexp.Op.NO_MATCH:\n out += '[^\\\\x00-\\\\x{10FFFF}]'\n break\n case Regexp.Op.EMPTY_MATCH:\n out += '(?:)'\n break\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n case Regexp.Op.REPEAT: {\n const sub = this.subs[0]\n if (sub.op > Regexp.Op.CAPTURE || (sub.op === Regexp.Op.LITERAL && sub.runes.length > 1)) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n switch (this.op) {\n case Regexp.Op.STAR:\n out += '*'\n break\n case Regexp.Op.PLUS:\n out += '+'\n break\n case Regexp.Op.QUEST:\n out += '?'\n break\n case Regexp.Op.REPEAT:\n out += `{${this.min}`\n if (this.min !== this.max) {\n out += ','\n if (this.max >= 0) {\n out += this.max\n }\n }\n out += '}'\n break\n }\n if ((this.flags & RE2Flags.NON_GREEDY) !== 0) {\n out += '?'\n }\n break\n }\n\n case Regexp.Op.CONCAT: {\n for (let sub of this.subs) {\n if (sub.op === Regexp.Op.ALTERNATE) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n }\n break\n }\n\n case Regexp.Op.ALTERNATE: {\n let sep = ''\n for (let sub of this.subs) {\n out += sep\n sep = '|'\n out += sub.appendTo()\n }\n break\n }\n\n case Regexp.Op.LITERAL:\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += '(?i:'\n }\n for (let rune of this.runes) {\n out += Utils.escapeRune(rune)\n }\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += ')'\n }\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n out += '(?-s:.)'\n break\n case Regexp.Op.ANY_CHAR:\n out += '(?s:.)'\n break\n case Regexp.Op.PLB:\n out += `(?<=${this.subs[0].appendTo()})`\n break\n case Regexp.Op.NLB:\n out += `(?<!${this.subs[0].appendTo()})`\n break\n case Regexp.Op.CAPTURE:\n if (this.name === null || this.name.length === 0) {\n out += '('\n } else {\n out += `(?P<${this.name}>`\n }\n if (this.subs[0].op !== Regexp.Op.EMPTY_MATCH) {\n out += this.subs[0].appendTo()\n }\n out += ')'\n break\n case Regexp.Op.BEGIN_TEXT:\n out += '\\\\A'\n break\n case Regexp.Op.END_TEXT:\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== 0) {\n out += '(?-m:$)'\n } else {\n out += '\\\\z'\n }\n break\n case Regexp.Op.BEGIN_LINE:\n out += '^'\n break\n case Regexp.Op.END_LINE:\n out += '$'\n break\n case Regexp.Op.WORD_BOUNDARY:\n out += '\\\\b'\n break\n case Regexp.Op.NO_WORD_BOUNDARY:\n out += '\\\\B'\n break\n case Regexp.Op.CHAR_CLASS:\n if (this.runes.length % 2 !== 0) {\n out += '[invalid char class]'\n break\n }\n\n out += '['\n if (this.runes.length === 0) {\n out += '^\\\\x00-\\\\x{10FFFF}'\n } else if (this.runes[0] === 0 && this.runes[this.runes.length - 1] === Unicode.MAX_RUNE) {\n out += '^'\n\n for (let i = 1; i < this.runes.length - 1; i += 2) {\n const lo = this.runes[i] + 1\n const hi = this.runes[i + 1] - 1\n\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n } else {\n for (let i = 0; i < this.runes.length; i += 2) {\n const lo = this.runes[i]\n const hi = this.runes[i + 1]\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n }\n out += ']'\n break\n default:\n out += this.op\n break\n }\n return out\n }\n\n // maxCap() walks the regexp to find the maximum capture index.\n maxCap() {\n let m = 0\n if (this.op === Regexp.Op.CAPTURE) {\n m = this.cap\n }\n if (this.subs !== null) {\n for (let sub of this.subs) {\n const n = sub.maxCap()\n if (m < n) {\n m = n\n }\n }\n }\n return m\n }\n\n // equals() returns true if this and that have identical structure.\n equals(that) {\n if (!(that !== null && that instanceof Regexp)) {\n return false\n }\n if (this.op !== that.op) {\n return false\n }\n switch (this.op) {\n case Regexp.Op.END_TEXT: {\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== (that.flags & RE2Flags.WAS_DOLLAR)) {\n return false\n }\n break\n }\n case Regexp.Op.LITERAL:\n case Regexp.Op.CHAR_CLASS: {\n if (this.runes === null && that.runes === null) {\n break\n }\n if (this.runes === null || that.runes === null) {\n return false\n }\n if (this.runes.length !== that.runes.length) {\n return false\n }\n for (let i = 0; i < this.runes.length; i++) {\n if (this.runes[i] !== that.runes[i]) {\n return false\n }\n }\n break\n }\n case Regexp.Op.ALTERNATE:\n case Regexp.Op.CONCAT: {\n if (this.subs.length !== that.subs.length) {\n return false\n }\n for (let i = 0; i < this.subs.length; ++i) {\n if (!this.subs[i].equals(that.subs[i])) {\n return false\n }\n }\n break\n }\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.REPEAT: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n this.min !== that.min ||\n this.max !== that.max ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.CAPTURE: {\n if (\n this.cap !== that.cap ||\n (this.name === null ? that.name !== null : this.name !== that.name) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.PLB:\n case Regexp.Op.NLB: {\n if (this.lb !== that.lb || !this.subs[0].equals(that.subs[0])) {\n return false\n }\n break\n }\n }\n return true\n }\n}\n","import { Regexp } from './Regexp'\nimport { Utils } from './Utils'\nimport { RE2Flags } from './RE2Flags'\n\n// High-speed, single-pass Aho-Corasick string matcher optimized for V8.\n// Builds a trie with failure links to search for multiple prefixes simultaneously.\nclass AhoCorasick {\n constructor(wordArrays) {\n this.next = [Object.create(null)]\n this.fail = [0]\n this.match = [false]\n\n // Build Trie\n for (const word of wordArrays) {\n let node = 0\n for (let i = 0; i < word.length; i++) {\n const val = word[i]\n if (!(val in this.next[node])) {\n this.next.push(Object.create(null))\n this.fail.push(0)\n this.match.push(false)\n this.next[node][val] = this.next.length - 1\n }\n node = this.next[node][val]\n }\n this.match[node] = true\n }\n\n // Build Failure Links (BFS)\n const queue = []\n for (const val in this.next[0]) {\n if (Object.prototype.hasOwnProperty.call(this.next[0], val)) {\n const child = this.next[0][val]\n this.fail[child] = 0\n queue.push(child)\n }\n }\n\n while (queue.length > 0) {\n const curr = queue.shift()\n for (const val in this.next[curr]) {\n if (Object.prototype.hasOwnProperty.call(this.next[curr], val)) {\n const child = this.next[curr][val]\n let failNode = this.fail[curr]\n\n while (failNode !== 0 && !(val in this.next[failNode])) {\n failNode = this.fail[failNode]\n }\n\n if (val in this.next[failNode]) {\n this.fail[child] = this.next[failNode][val]\n } else {\n this.fail[child] = 0\n }\n\n this.match[child] = this.match[child] || this.match[this.fail[child]]\n queue.push(child)\n }\n }\n }\n }\n\n searchUTF16(charSeq, start, end) {\n let node = 0\n for (let i = start; i < end; i++) {\n const val = charSeq.charCodeAt(i)\n while (node !== 0 && !(val in this.next[node])) {\n node = this.fail[node]\n }\n if (val in this.next[node]) {\n node = this.next[node][val]\n }\n if (this.match[node]) return true\n }\n return false\n }\n\n searchUTF8(bytes, start, end) {\n let node = 0\n for (let i = start; i < end; i++) {\n const val = bytes[i]\n while (node !== 0 && !(val in this.next[node])) {\n node = this.fail[node]\n }\n if (val in this.next[node]) {\n node = this.next[node][val]\n }\n if (this.match[node]) return true\n }\n return false\n }\n}\n\nclass Prefilter {\n static Type = { NONE: 0, EXACT: 1, AND: 2, OR: 3 }\n\n constructor(type) {\n this.type = type\n this.subs = []\n this.str = ''\n this.bytes = null\n this.ac16 = null\n this.ac8 = null\n }\n\n eval(input, pos) {\n switch (this.type) {\n case Prefilter.Type.NONE:\n return true\n case Prefilter.Type.EXACT:\n return input.hasString(this, pos)\n case Prefilter.Type.AND:\n for (let i = 0; i < this.subs.length; i++) {\n if (!this.subs[i].eval(input, pos)) return false\n }\n return true\n case Prefilter.Type.OR:\n // Exploit Aho-Corasick if it was successfully built\n if (this.ac16 && this.ac8) {\n return input.hasAnyString(this, pos)\n }\n for (let i = 0; i < this.subs.length; i++) {\n if (this.subs[i].eval(input, pos)) return true\n }\n return false\n default:\n return true\n }\n }\n}\n\nclass PrefilterTree {\n static build(re) {\n const pf = PrefilterTree.fromRegexp(re)\n return PrefilterTree.simplify(pf)\n }\n\n static fromRegexp(re) {\n if (!re) return new Prefilter(Prefilter.Type.NONE)\n\n switch (re.op) {\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n case Regexp.Op.NO_MATCH:\n case Regexp.Op.EMPTY_MATCH:\n case Regexp.Op.BEGIN_LINE:\n case Regexp.Op.END_LINE:\n case Regexp.Op.BEGIN_TEXT:\n case Regexp.Op.END_TEXT:\n case Regexp.Op.WORD_BOUNDARY:\n case Regexp.Op.NO_WORD_BOUNDARY:\n case Regexp.Op.CHAR_CLASS:\n case Regexp.Op.ANY_CHAR_NOT_NL:\n case Regexp.Op.ANY_CHAR: {\n return new Prefilter(Prefilter.Type.NONE)\n }\n\n case Regexp.Op.LITERAL: {\n if (re.runes.length === 0 || (re.flags & RE2Flags.FOLD_CASE) !== 0) {\n // Skip case-folded literals for simplicity\n return new Prefilter(Prefilter.Type.NONE)\n }\n const pf = new Prefilter(Prefilter.Type.EXACT)\n let str = ''\n for (let i = 0; i < re.runes.length; i++) {\n str += String.fromCodePoint(re.runes[i])\n }\n pf.str = str\n pf.bytes = Utils.stringToUtf8ByteArray(pf.str)\n return pf\n }\n\n case Regexp.Op.CAPTURE:\n case Regexp.Op.PLUS: {\n return PrefilterTree.fromRegexp(re.subs[0])\n }\n\n case Regexp.Op.REPEAT: {\n if (re.min >= 1) {\n return PrefilterTree.fromRegexp(re.subs[0])\n }\n return new Prefilter(Prefilter.Type.NONE)\n }\n\n case Regexp.Op.CONCAT: {\n const pf = new Prefilter(Prefilter.Type.AND)\n for (const sub of re.subs) {\n pf.subs.push(PrefilterTree.fromRegexp(sub))\n }\n return pf\n }\n\n case Regexp.Op.ALTERNATE: {\n const pf = new Prefilter(Prefilter.Type.OR)\n for (const sub of re.subs) {\n pf.subs.push(PrefilterTree.fromRegexp(sub))\n }\n return pf\n }\n\n default:\n return new Prefilter(Prefilter.Type.NONE)\n }\n }\n\n static simplify(pf) {\n if (pf.type === Prefilter.Type.EXACT || pf.type === Prefilter.Type.NONE) {\n return pf\n }\n\n if (pf.type === Prefilter.Type.AND) {\n const newSubs = []\n for (const sub of pf.subs) {\n const s = PrefilterTree.simplify(sub)\n if (s.type !== Prefilter.Type.NONE) {\n if (s.type === Prefilter.Type.AND) {\n for (let j = 0; j < s.subs.length; j++) {\n newSubs.push(s.subs[j])\n }\n } else {\n newSubs.push(s)\n }\n }\n }\n\n if (newSubs.length === 0) return new Prefilter(Prefilter.Type.NONE)\n if (newSubs.length === 1) return newSubs[0]\n pf.subs = newSubs\n return pf\n }\n\n if (pf.type === Prefilter.Type.OR) {\n const newSubs = []\n for (const sub of pf.subs) {\n const s = PrefilterTree.simplify(sub)\n if (s.type === Prefilter.Type.NONE) {\n // If any branch of an OR has no requirements, the whole OR has no requirements\n return new Prefilter(Prefilter.Type.NONE)\n }\n if (s.type === Prefilter.Type.OR) {\n newSubs.push(...s.subs)\n } else {\n newSubs.push(s)\n }\n }\n if (newSubs.length === 0) return new Prefilter(Prefilter.Type.NONE)\n if (newSubs.length === 1) return newSubs[0]\n\n // De-duplicate EXACT branches\n const seen = new Set()\n const uniqueSubs = []\n for (const sub of newSubs) {\n if (sub.type === Prefilter.Type.EXACT) {\n if (!seen.has(sub.str)) {\n seen.add(sub.str)\n uniqueSubs.push(sub)\n }\n } else {\n uniqueSubs.push(sub)\n }\n }\n pf.subs = uniqueSubs\n\n // Build an Aho-Corasick automaton if all children are exact matches\n let allExact = true\n for (const sub of uniqueSubs) {\n if (sub.type !== Prefilter.Type.EXACT) {\n allExact = false\n break\n }\n }\n\n if (allExact && uniqueSubs.length > 1) {\n const words16 = uniqueSubs.map((s) => {\n const arr = []\n for (let i = 0; i < s.str.length; i++) {\n arr.push(s.str.charCodeAt(i))\n }\n return arr\n })\n pf.ac16 = new AhoCorasick(words16)\n\n const words8 = uniqueSubs.map((s) => s.bytes)\n pf.ac8 = new AhoCorasick(words8)\n }\n\n return pf\n }\n\n return pf\n }\n}\n\nexport { Prefilter, PrefilterTree }\n","import { RE2Flags } from './RE2Flags'\nimport { Inst } from './Inst'\n\n/**\n * A list of instruction pointers waiting to be patched.\n * Tracks both `head` and `tail` to allow O(1) appending during compilation.\n * * Values are encoded integers, not standard memory pointers:\n * - Program instruction index: `l >> 1`\n * - Patch `.out` field if: `(l & 1) === 0`\n * - Patch `.arg` field if: `(l & 1) === 1`\n * - `0` denotes an empty list.\n * * @see https://swtch.com/~rsc/regexp/regexp1.html\n */\nclass PatchList {\n /**\n * @param {number} head - Encoded pointer to the start of the patch list.\n * @param {number} tail - Encoded pointer to the end of the patch list.\n */\n constructor(head = 0, tail = 0) {\n this.head = head\n this.tail = tail\n }\n}\n\n/**\n * A Prog is a compiled regular expression program.\n */\nclass Prog {\n constructor() {\n this.inst = []\n this.start = 0 // index of start instruction\n // number of CAPTURE insts in re\n // 2 => implicit ( and ) for whole match $0\n this.numCap = 2\n this.lbStarts = [] // Track starting PCs of lookbehind automata\n this.numLb = 0 // Total number of lookbehinds\n }\n\n // Returns the instruction at the specified pc.\n // Precondition: pc > 0 && pc < numInst().\n getInst(pc) {\n return this.inst[pc]\n }\n\n // Returns the number of instructions in this program.\n numInst() {\n return this.inst.length\n }\n\n // Adds a new instruction to this program, with operator |op| and |pc| equal\n // to |numInst()|.\n addInst(op) {\n this.inst.push(new Inst(op))\n }\n\n // skipNop() follows any no-op or capturing instructions and returns the\n // resulting instruction.\n skipNop(pc) {\n let i = this.inst[pc]\n\n while (i.op === Inst.NOP || i.op === Inst.CAPTURE) {\n i = this.inst[pc]\n pc = i.out\n }\n\n return i\n }\n\n // prefix() returns a pair of a literal string that all matches for the\n // regexp must start with, and a boolean which is true if the prefix is the\n // entire match. The string is returned by appending to |prefix|.\n prefix() {\n let prefix = ''\n let i = this.skipNop(this.start)\n\n if (!Inst.isRuneOp(i.op) || i.runes.length !== 1) {\n return [i.op === Inst.MATCH, prefix]\n }\n\n while (Inst.isRuneOp(i.op) && i.runes.length === 1 && (i.arg & RE2Flags.FOLD_CASE) === 0) {\n prefix += String.fromCodePoint(i.runes[0])\n i = this.skipNop(i.out)\n }\n\n return [i.op === Inst.MATCH, prefix]\n }\n\n // startCond() returns the leading empty-width conditions that must be true\n // in any match. It returns -1 (all bits set) if no matches are possible.\n startCond() {\n let flag = 0\n let pc = this.start\n loop: for (;;) {\n const i = this.inst[pc]\n switch (i.op) {\n case Inst.EMPTY_WIDTH:\n flag |= i.arg\n break\n case Inst.FAIL:\n return -1\n case Inst.CAPTURE:\n case Inst.NOP:\n break\n default:\n break loop\n }\n pc = i.out\n }\n return flag\n }\n\n // --- Patch list ---\n\n // A patchlist is a list of instruction pointers that need to be filled in\n // (patched). Because the pointers haven't been filled in yet, we can reuse\n // their storage to hold the list. It's kind of sleazy, but works well in\n // practice. See http://swtch.com/~rsc/regexp/regexp1.html for inspiration.\n\n // These aren't really pointers: they're integers, so we can reinterpret them\n // this way without using package unsafe. A value l denotes p.inst[l>>1].out\n // (l&1==0) or .arg (l&1==1). l == 0 denotes the empty list, okay because we\n // start every program with a fail instruction, so we'll never want to point\n // at its output link.\n\n next(l) {\n const i = this.inst[l >> 1]\n if ((l & 1) === 0) {\n return i.out\n }\n return i.arg\n }\n\n patch(l, val) {\n let head = l.head\n while (head !== 0) {\n const i = this.inst[head >> 1]\n if ((head & 1) === 0) {\n head = i.out\n i.out = val\n } else {\n head = i.arg\n i.arg = val\n }\n }\n }\n\n append(l1, l2) {\n if (l1.head === 0) return l2\n if (l2.head === 0) return l1\n\n // We know exactly where the tail is\n const i = this.inst[l1.tail >> 1]\n if ((l1.tail & 1) === 0) {\n i.out = l2.head\n } else {\n i.arg = l2.head\n }\n\n return new PatchList(l1.head, l2.tail)\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n let out = ''\n for (let pc = 0; pc < this.inst.length; pc++) {\n const len = out.length\n out += pc\n if (pc === this.start) {\n out += '*'\n }\n out += ' '.substring(out.length - len)\n out += this.inst[pc]\n out += '\\n'\n }\n return out\n }\n}\n\nexport { Prog, PatchList }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { Regexp } from './Regexp'\nimport { Inst } from './Inst'\nimport { Prog, PatchList } from './Prog'\nimport { RE2JSCompileException } from './exceptions'\n\n/**\n * A fragment of a compiled regular expression program.\n *\n * @see http://swtch.com/~rsc/regexp/regexp1.html\n * @class\n */\nclass Frag {\n constructor(i = 0, out = new PatchList(), nullable = false) {\n this.i = i // an instruction address (pc).\n this.out = out // a patch list; see explanation in Prog.js\n this.nullable = nullable // whether the fragment can match the empty string\n }\n}\n/**\n * Compiler from {@code Regexp} (RE2 abstract syntax) to {@code RE2} (compiled regular expression).\n *\n * The only entry point is {@link #compileRegexp}.\n */\nclass Compiler {\n static ANY_RUNE_NOT_NL() {\n return [0, Codepoint.CODES.get('\\n') - 1, Codepoint.CODES.get('\\n') + 1, Unicode.MAX_RUNE]\n }\n\n static ANY_RUNE() {\n return [0, Unicode.MAX_RUNE]\n }\n\n static compileRegexp(re) {\n const c = new Compiler()\n const f = c.compile(re)\n c.prog.patch(f.out, c.newInst(Inst.MATCH).i)\n c.prog.start = f.i\n return c.prog\n }\n\n static compileSet(regexps) {\n const c = new Compiler()\n\n if (regexps.length === 0) {\n c.prog.start = c.newInst(Inst.FAIL).i\n return c.prog\n }\n\n let starts = []\n for (let i = 0; i < regexps.length; i++) {\n const f = c.compile(regexps[i])\n const m = c.newInst(Inst.MATCH)\n c.prog.getInst(m.i).arg = i // Store the regex index\n c.prog.patch(f.out, m.i)\n starts.push(f.i)\n }\n\n // Link starts together via ALT\n let start = starts[0]\n for (let i = 1; i < starts.length; i++) {\n const f = c.newInst(Inst.ALT)\n const inst = c.prog.getInst(f.i)\n inst.out = start\n inst.arg = starts[i]\n start = f.i\n }\n c.prog.start = start\n return c.prog\n }\n\n constructor() {\n this.prog = new Prog()\n this.newInst(Inst.FAIL)\n }\n\n newInst(op) {\n this.prog.addInst(op)\n return new Frag(this.prog.numInst() - 1, 0, true)\n }\n\n // Returns a no-op fragment. Sometimes unavoidable.\n nop() {\n const f = this.newInst(Inst.NOP)\n f.out = new PatchList(f.i << 1, f.i << 1)\n return f\n }\n\n fail() {\n return new Frag()\n }\n\n // Given fragment a, returns (a) capturing as \\n.\n // Given a fragment a, returns a fragment with capturing parens around a.\n cap(arg) {\n const f = this.newInst(Inst.CAPTURE)\n f.out = new PatchList(f.i << 1, f.i << 1)\n this.prog.getInst(f.i).arg = arg\n if (this.prog.numCap < arg + 1) {\n this.prog.numCap = arg + 1\n }\n return f\n }\n\n // Given fragments a and b, returns ab; a|b\n cat(f1, f2) {\n // concat of failure is failure\n if (f1.i === 0 || f2.i === 0) {\n return this.fail()\n }\n // eslint-disable-next-line no-warning-comments\n // TODO(rsc): elide nop\n this.prog.patch(f1.out, f2.i)\n return new Frag(f1.i, f2.out, f1.nullable && f2.nullable)\n }\n\n // Given fragments for a and b, returns fragment for a|b.\n alt(f1, f2) {\n // alt of failure is other\n if (f1.i === 0) {\n return f2\n }\n if (f2.i === 0) {\n return f1\n }\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n i.out = f1.i\n i.arg = f2.i\n f.out = this.prog.append(f1.out, f2.out)\n f.nullable = f1.nullable || f2.nullable\n return f\n }\n\n // loop returns the fragment for the main loop of a plus or star.\n // For plus, it can be used directly. with f1.i as the entry.\n // For star, it can be used directly when f1 can't match an empty string.\n // (When f1 can match an empty string, f1* must be implemented as (f1+)?\n // to get the priority match order correct.)\n loop(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = new PatchList(f.i << 1, f.i << 1)\n } else {\n i.out = f1.i\n f.out = new PatchList((f.i << 1) | 1, (f.i << 1) | 1)\n }\n this.prog.patch(f1.out, f.i)\n return f\n }\n\n // Given a fragment for a, returns a fragment for a? or a?? (if nongreedy)\n quest(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = new PatchList(f.i << 1, f.i << 1)\n } else {\n i.out = f1.i\n f.out = new PatchList((f.i << 1) | 1, (f.i << 1) | 1)\n }\n f.out = this.prog.append(f.out, f1.out)\n return f\n }\n\n // Given a fragment a, returns a fragment for a* or a*? (if nongreedy)\n star(f1, nongreedy) {\n if (f1.nullable) {\n return this.quest(this.plus(f1, nongreedy), nongreedy)\n }\n return this.loop(f1, nongreedy)\n }\n\n // Given a fragment for a, returns a fragment for a+ or a+? (if nongreedy)\n plus(f1, nongreedy) {\n return new Frag(f1.i, this.loop(f1, nongreedy).out, f1.nullable)\n }\n\n // op is a bitmask of EMPTY_* flags.\n empty(op) {\n const f = this.newInst(Inst.EMPTY_WIDTH)\n this.prog.getInst(f.i).arg = op\n f.out = new PatchList(f.i << 1, f.i << 1)\n return f\n }\n\n // flags : parser flags\n rune(runes, flags) {\n const f = this.newInst(Inst.RUNE)\n f.nullable = false\n const i = this.prog.getInst(f.i)\n i.runes = runes\n flags &= RE2Flags.FOLD_CASE\n if (runes.length !== 1 || Unicode.simpleFold(runes[0]) === runes[0]) {\n flags &= ~RE2Flags.FOLD_CASE\n }\n i.arg = flags\n f.out = new PatchList(f.i << 1, f.i << 1)\n if (\n ((flags & RE2Flags.FOLD_CASE) === 0 && runes.length === 1) ||\n (runes.length === 2 && runes[0] === runes[1])\n ) {\n i.op = Inst.RUNE1\n } else if (runes.length === 2 && runes[0] === 0 && runes[1] === Unicode.MAX_RUNE) {\n i.op = Inst.RUNE_ANY\n } else if (\n runes.length === 4 &&\n runes[0] === 0 &&\n runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n runes[3] === Unicode.MAX_RUNE\n ) {\n i.op = Inst.RUNE_ANY_NOT_NL\n }\n return f\n }\n\n lookBehind(a, lb) {\n const id = this.newInst(Inst.LB_WRITE)\n this.prog.getInst(id.i).lb = lb\n\n // Create the prefix wildcard `.*` for the lookbehind automaton\n const any = this.rune(Compiler.ANY_RUNE(), 0)\n const dotStar = this.star(any, true) // nongreedy = true\n const lbAutomaton = this.cat(dotStar, a)\n\n this.prog.patch(lbAutomaton.out, id.i)\n\n const checkId = this.newInst(Inst.LB_CHECK)\n this.prog.getInst(checkId.i).lb = lb\n\n // Save the starting point of this lookbehind automaton\n this.prog.lbStarts.push(lbAutomaton.i)\n if (Math.abs(lb) > this.prog.numLb) {\n this.prog.numLb = Math.abs(lb)\n }\n\n checkId.out = new PatchList(checkId.i << 1, checkId.i << 1)\n return checkId\n }\n\n compile(re) {\n switch (re.op) {\n case Regexp.Op.NO_MATCH:\n return this.fail()\n case Regexp.Op.EMPTY_MATCH:\n return this.nop()\n case Regexp.Op.LITERAL:\n if (re.runes.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let r of re.runes) {\n const f1 = this.rune([r], re.flags)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n case Regexp.Op.CHAR_CLASS:\n return this.rune(re.runes, re.flags)\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return this.rune(Compiler.ANY_RUNE_NOT_NL(), 0)\n case Regexp.Op.ANY_CHAR:\n return this.rune(Compiler.ANY_RUNE(), 0)\n case Regexp.Op.BEGIN_LINE:\n return this.empty(Utils.EMPTY_BEGIN_LINE)\n case Regexp.Op.END_LINE:\n return this.empty(Utils.EMPTY_END_LINE)\n case Regexp.Op.BEGIN_TEXT:\n return this.empty(Utils.EMPTY_BEGIN_TEXT)\n case Regexp.Op.END_TEXT:\n return this.empty(Utils.EMPTY_END_TEXT)\n case Regexp.Op.WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_WORD_BOUNDARY)\n case Regexp.Op.NO_WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_NO_WORD_BOUNDARY)\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n return this.lookBehind(this.compile(re.subs[0]), re.lb)\n case Regexp.Op.CAPTURE: {\n const bra = this.cap(re.cap << 1)\n const sub = this.compile(re.subs[0])\n const ket = this.cap((re.cap << 1) | 1)\n return this.cat(this.cat(bra, sub), ket)\n }\n case Regexp.Op.STAR:\n return this.star(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.PLUS:\n return this.plus(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.QUEST:\n return this.quest(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.CONCAT: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n }\n case Regexp.Op.ALTERNATE: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.alt(f, f1)\n }\n return f\n }\n }\n default:\n throw new RE2JSCompileException('regexp: unhandled case in compile')\n }\n }\n}\n\nexport { Compiler }\n","import { RE2Flags } from './RE2Flags'\nimport { Regexp } from './Regexp'\nimport { Unicode } from './Unicode'\nimport { Codepoint } from './Codepoint'\n\nclass Simplify {\n // Simplify returns a regexp equivalent to re but without counted\n // repetitions and with various other simplifications, such as\n // rewriting /(?:a+)+/ to /a+/. The resulting regexp will execute\n // correctly but its string representation will not produce the same\n // parse tree, because capturing parentheses may have been duplicated\n // or removed. For example, the simplified form for /(x){1,2}/ is\n // /(x)(x)?/ but both parentheses capture as $1. The returned regexp\n // may share structure with or be the original.\n static simplify(re) {\n if (re === null) {\n return null\n }\n\n switch (re.op) {\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n case Regexp.Op.CAPTURE: {\n const sub = Simplify.simplify(re.subs[0])\n if (sub !== re.subs[0]) {\n const nre = Regexp.fromRegexp(re)\n nre.runes = []\n nre.subs = [sub]\n return nre\n }\n return re\n }\n\n case Regexp.Op.CONCAT:\n case Regexp.Op.ALTERNATE: {\n const newSubs = []\n let changed = false\n\n for (let i = 0; i < re.subs.length; i++) {\n const sub = re.subs[i]\n const nsub = Simplify.simplify(sub)\n if (nsub !== sub) {\n changed = true\n }\n\n if (re.op === Regexp.Op.CONCAT) {\n // If any part of a CONCAT is mathematically impossible,\n // the entire CONCAT sequence becomes impossible.\n if (nsub.op === Regexp.Op.NO_MATCH) {\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n // Drop empty 0-width match nodes entirely from sequences\n if (nsub.op === Regexp.Op.EMPTY_MATCH) {\n changed = true\n continue\n }\n // Flatten nested concatenations\n if (nsub.op === Regexp.Op.CONCAT) {\n changed = true\n for (let j = 0; j < nsub.subs.length; j++) {\n newSubs.push(nsub.subs[j])\n }\n continue\n }\n } else if (re.op === Regexp.Op.ALTERNATE) {\n // Drop impossible branches from alternations\n if (nsub.op === Regexp.Op.NO_MATCH) {\n changed = true\n continue\n }\n // Flatten nested alternations\n if (nsub.op === Regexp.Op.ALTERNATE) {\n changed = true\n for (let j = 0; j < nsub.subs.length; j++) {\n newSubs.push(nsub.subs[j])\n }\n continue\n }\n }\n\n newSubs.push(nsub)\n }\n\n if (changed) {\n // If we filtered out all nodes, return the mathematically correct fallback\n if (newSubs.length === 0) {\n return new Regexp(\n re.op === Regexp.Op.CONCAT ? Regexp.Op.EMPTY_MATCH : Regexp.Op.NO_MATCH\n )\n }\n // If only 1 node remains, we don't need a CONCAT/ALT container at all\n if (newSubs.length === 1) {\n return newSubs[0]\n }\n\n const nre = Regexp.fromRegexp(re)\n nre.runes = []\n nre.subs = newSubs\n return nre\n }\n\n return re\n }\n\n case Regexp.Op.CHAR_CLASS: {\n if (re.runes === null) return re\n\n // Empty character classes match nothing.\n if (re.runes.length === 0) {\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n // Full character classes match everything.\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n return new Regexp(Regexp.Op.ANY_CHAR)\n }\n // Standard catch-all except newline\n if (\n re.runes.length === 4 &&\n re.runes[0] === 0 &&\n re.runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n re.runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n re.runes[3] === Unicode.MAX_RUNE\n ) {\n return new Regexp(Regexp.Op.ANY_CHAR_NOT_NL)\n }\n return re\n }\n\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n const sub = Simplify.simplify(re.subs[0])\n return Simplify.simplify1(re.op, re.flags, sub, re)\n }\n\n case Regexp.Op.REPEAT: {\n // Special special case: x{0} matches the empty string\n // and doesn't even need to consider x.\n if (re.min === 0 && re.max === 0) {\n return new Regexp(Regexp.Op.EMPTY_MATCH)\n }\n // The fun begins.\n const sub = Simplify.simplify(re.subs[0])\n\n // x{n,} means at least n matches of x.\n if (re.max === -1) {\n // Special case: x{0,} is x*.\n if (re.min === 0) {\n return Simplify.simplify1(Regexp.Op.STAR, re.flags, sub, null)\n }\n // Special case: x{1,} is x+.\n if (re.min === 1) {\n return Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null)\n }\n // General case: x{4,} is xxxx+.\n const nre = new Regexp(Regexp.Op.CONCAT)\n const subs = []\n for (let i = 0; i < re.min - 1; i++) {\n subs.push(sub)\n }\n subs.push(Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null))\n nre.subs = subs.slice(0)\n\n // Ensure newly created CONCAT is properly flattened\n return Simplify.simplify(nre)\n }\n // Special case x{0} handled above.\n\n // Special case: x{1} is just x.\n if (re.min === 1 && re.max === 1) {\n return sub\n }\n\n // General case: x{n,m} means n copies of x and m copies of x?\n // The machine will do less work if we nest the final m copies,\n // so that x{2,5} = xx(x(x(x)?)?)?\n\n // Build leading prefix: xx.\n let prefixSubs = null\n if (re.min > 0) {\n prefixSubs = []\n for (let i = 0; i < re.min; i++) {\n prefixSubs.push(sub)\n }\n }\n\n // Build and attach suffix: (x(x(x)?)?)?\n if (re.max > re.min) {\n let suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, sub, null)\n for (let i = re.min + 1; i < re.max; i++) {\n const nre2 = new Regexp(Regexp.Op.CONCAT)\n nre2.subs = [sub, suffix]\n suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, nre2, null)\n }\n\n if (prefixSubs === null) {\n return suffix\n }\n prefixSubs.push(suffix)\n }\n\n if (prefixSubs !== null) {\n const prefix = new Regexp(Regexp.Op.CONCAT)\n prefix.subs = prefixSubs.slice(0)\n // Ensure newly created CONCAT is properly flattened\n return Simplify.simplify(prefix)\n }\n\n // Some degenerate case like min > max or min < max < 0.\n // Handle as impossible match.\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n }\n return re\n }\n\n // simplify1 implements Simplify for the unary OpStar,\n // OpPlus, and OpQuest operators. It returns the simple regexp\n // equivalent to\n //\n // Regexp{Op: op, Flags: flags, Sub: {sub}}\n //\n // under the assumption that sub is already simple, and\n // without first allocating that structure. If the regexp\n // to be returned turns out to be equivalent to re, simplify1\n // returns re instead.\n //\n // simplify1 is factored out of Simplify because the implementation\n // for other operators generates these unary expressions.\n // Letting them call simplify1 makes sure the expressions they\n // generate are simple.\n static simplify1(op, flags, sub, re) {\n // Special case: repeat the empty string as much as\n // you want, but it's still the empty string.\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return sub\n }\n\n // Handle impossible targets gracefully.\n // e.g. Trying to match \"NO_MATCH\" 0 or 1 times (QUEST/STAR) evaluates to EMPTY_MATCH.\n if (sub.op === Regexp.Op.NO_MATCH) {\n if (op === Regexp.Op.PLUS) return sub // 1+ times is impossible\n return new Regexp(Regexp.Op.EMPTY_MATCH)\n }\n\n // The operators are idempotent if the flags match.\n if (op === sub.op && (flags & RE2Flags.NON_GREEDY) === (sub.flags & RE2Flags.NON_GREEDY)) {\n return sub\n }\n\n if (\n re !== null &&\n re.op === op &&\n (re.flags & RE2Flags.NON_GREEDY) === (flags & RE2Flags.NON_GREEDY) &&\n sub === re.subs[0]\n ) {\n return re\n }\n\n const nre = new Regexp(op)\n nre.flags = flags\n nre.subs = [sub]\n return nre\n }\n}\n\nexport { Simplify }\n","// GENERATED BY tools/scripts/make_perl_groups.pl; DO NOT EDIT.\n// ./tools/scripts/make_perl_groups.pl > src/CharGroup.js\n\nclass CharGroup {\n constructor(sign, cls) {\n this.sign = sign\n this.cls = cls\n }\n}\n\nconst code1 = [0x30, 0x39]\n\nconst code2 = [0x9, 0xa, 0xc, 0xd, 0x20, 0x20]\n\nconst code3 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst PERL_GROUPS = new Map([\n ['\\\\d', new CharGroup(+1, code1)],\n ['\\\\D', new CharGroup(-1, code1)],\n ['\\\\s', new CharGroup(+1, code2)],\n ['\\\\S', new CharGroup(-1, code2)],\n ['\\\\w', new CharGroup(+1, code3)],\n ['\\\\W', new CharGroup(-1, code3)]\n])\nconst code4 = [0x30, 0x39, 0x41, 0x5a, 0x61, 0x7a]\n\nconst code5 = [0x41, 0x5a, 0x61, 0x7a]\n\nconst code6 = [0x0, 0x7f]\n\nconst code7 = [0x9, 0x9, 0x20, 0x20]\n\nconst code8 = [0x0, 0x1f, 0x7f, 0x7f]\n\nconst code9 = [0x30, 0x39]\n\nconst code10 = [0x21, 0x7e]\n\nconst code11 = [0x61, 0x7a]\n\nconst code12 = [0x20, 0x7e]\n\nconst code13 = [0x21, 0x2f, 0x3a, 0x40, 0x5b, 0x60, 0x7b, 0x7e]\n\nconst code14 = [0x9, 0xd, 0x20, 0x20]\n\nconst code15 = [0x41, 0x5a]\n\nconst code16 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst code17 = [0x30, 0x39, 0x41, 0x46, 0x61, 0x66]\n\nconst POSIX_GROUPS = new Map([\n ['[:alnum:]', new CharGroup(+1, code4)],\n ['[:^alnum:]', new CharGroup(-1, code4)],\n ['[:alpha:]', new CharGroup(+1, code5)],\n ['[:^alpha:]', new CharGroup(-1, code5)],\n ['[:ascii:]', new CharGroup(+1, code6)],\n ['[:^ascii:]', new CharGroup(-1, code6)],\n ['[:blank:]', new CharGroup(+1, code7)],\n ['[:^blank:]', new CharGroup(-1, code7)],\n ['[:cntrl:]', new CharGroup(+1, code8)],\n ['[:^cntrl:]', new CharGroup(-1, code8)],\n ['[:digit:]', new CharGroup(+1, code9)],\n ['[:^digit:]', new CharGroup(-1, code9)],\n ['[:graph:]', new CharGroup(+1, code10)],\n ['[:^graph:]', new CharGroup(-1, code10)],\n ['[:lower:]', new CharGroup(+1, code11)],\n ['[:^lower:]', new CharGroup(-1, code11)],\n ['[:print:]', new CharGroup(+1, code12)],\n ['[:^print:]', new CharGroup(-1, code12)],\n ['[:punct:]', new CharGroup(+1, code13)],\n ['[:^punct:]', new CharGroup(-1, code13)],\n ['[:space:]', new CharGroup(+1, code14)],\n ['[:^space:]', new CharGroup(-1, code14)],\n ['[:upper:]', new CharGroup(+1, code15)],\n ['[:^upper:]', new CharGroup(-1, code15)],\n ['[:word:]', new CharGroup(+1, code16)],\n ['[:^word:]', new CharGroup(-1, code16)],\n ['[:xdigit:]', new CharGroup(+1, code17)],\n ['[:^xdigit:]', new CharGroup(-1, code17)]\n])\n\nexport { PERL_GROUPS, POSIX_GROUPS }\n","import { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\n/**\n * A \"builder\"-style helper class for manipulating character classes represented as an array of\n * pairs of runes [lo, hi], each denoting an inclusive interval.\n *\n * All methods mutate the internal state and return {@code this}, allowing operations to be chained.\n */\nclass CharClass {\n // Exposed, since useful for debugging CharGroups too.\n static charClassToString(r, len) {\n let result = '['\n for (let i = 0; i < len; i += 2) {\n if (i > 0) {\n result += ' '\n }\n const lo = r[i]\n const hi = r[i + 1]\n if (lo === hi) {\n result += `0x${lo.toString(16)}`\n } else {\n result += `0x${lo.toString(16)}-0x${hi.toString(16)}`\n }\n }\n result += ']'\n return result\n }\n\n // cmp() returns the ordering of the pair (a[i], a[i+1]) relative to\n // (pivotFrom, pivotTo), where the first component of the pair (lo) is\n // ordered naturally and the second component (hi) is in reverse order.\n static cmp(array, i, pivotFrom, pivotTo) {\n const cmp = array[i] - pivotFrom\n return cmp !== 0 ? cmp : pivotTo - array[i + 1]\n }\n\n // qsortIntPair() quicksorts pairs of ints in |array| according to lt().\n // Precondition: |left|, |right|, |this.len| must all be even; |this.len > 1|.\n static qsortIntPair(array, left, right) {\n const pivotIndex = (((left + right) / 2) | 0) & ~1\n const pivotFrom = array[pivotIndex]\n const pivotTo = array[pivotIndex + 1]\n let i = left\n let j = right\n while (i <= j) {\n while (i < right && CharClass.cmp(array, i, pivotFrom, pivotTo) < 0) {\n i += 2\n }\n\n while (j > left && CharClass.cmp(array, j, pivotFrom, pivotTo) > 0) {\n j -= 2\n }\n\n if (i <= j) {\n if (i !== j) {\n let temp = array[i]\n array[i] = array[j]\n array[j] = temp\n temp = array[i + 1]\n array[i + 1] = array[j + 1]\n array[j + 1] = temp\n }\n i += 2\n j -= 2\n }\n }\n\n if (left < j) {\n CharClass.qsortIntPair(array, left, j)\n }\n if (i < right) {\n CharClass.qsortIntPair(array, i, right)\n }\n }\n\n constructor(r = Utils.emptyInts()) {\n this.r = r // inclusive ranges, pairs of [lo,hi]. r.length is even.\n this.len = r.length // prefix of |r| that is defined. Even.\n }\n\n // Returns the character class as an int array. Subsequent CharClass\n // operations may mutate this array, so typically this is the last operation\n // performed on a given CharClass instance.\n toArray() {\n if (this.len === this.r.length) {\n return this.r\n } else {\n return this.r.slice(0, this.len)\n }\n }\n\n // cleanClass() sorts the ranges (pairs of elements) of this CharClass,\n // merges them, and eliminates duplicates.\n cleanClass() {\n if (this.len < 4) {\n return this\n }\n // Sort by lo increasing, hi decreasing to break ties.\n CharClass.qsortIntPair(this.r, 0, this.len - 2)\n // Merge abutting, overlapping.\n let w = 2 // write index\n for (let i = 2; i < this.len; i += 2) {\n {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (lo <= this.r[w - 1] + 1) {\n // merge with previous range\n if (hi > this.r[w - 1]) {\n this.r[w - 1] = hi\n }\n continue\n }\n // new disjoint range\n this.r[w] = lo\n this.r[w + 1] = hi\n w += 2\n }\n }\n this.len = w\n return this\n }\n\n // appendLiteral() appends the literal |x| to this CharClass.\n appendLiteral(x, flags) {\n return (flags & RE2Flags.FOLD_CASE) !== 0\n ? this.appendFoldedRange(x, x)\n : this.appendRange(x, x)\n }\n\n // appendRange() appends the range [lo-hi] (inclusive) to this CharClass.\n appendRange(lo, hi) {\n // Expand last range or next to last range if it overlaps or abuts.\n // Checking two ranges helps when appending case-folded\n // alphabets, so that one range can be expanding A-Z and the\n // other expanding a-z.\n if (this.len > 0) {\n for (let i = 2; i <= 4; i += 2) {\n // twice, using i=2, i=4\n if (this.len >= i) {\n const rlo = this.r[this.len - i]\n const rhi = this.r[this.len - i + 1]\n if (lo <= rhi + 1 && rlo <= hi + 1) {\n if (lo < rlo) {\n this.r[this.len - i] = lo\n }\n if (hi > rhi) {\n this.r[this.len - i + 1] = hi\n }\n return this\n }\n }\n }\n }\n\n this.r[this.len++] = lo\n this.r[this.len++] = hi\n return this\n }\n\n // appendFoldedRange() appends the range [lo-hi] and its case\n // folding-equivalent runes to this CharClass.\n appendFoldedRange(lo, hi) {\n // Optimizations.\n if (lo <= Unicode.MIN_FOLD && hi >= Unicode.MAX_FOLD) {\n // Range is full: folding can't add more.\n return this.appendRange(lo, hi)\n }\n if (hi < Unicode.MIN_FOLD || lo > Unicode.MAX_FOLD) {\n // Range is outside folding possibilities.\n return this.appendRange(lo, hi)\n }\n if (lo < Unicode.MIN_FOLD) {\n // [lo, minFold-1] needs no folding.\n this.appendRange(lo, Unicode.MIN_FOLD - 1)\n lo = Unicode.MIN_FOLD\n }\n if (hi > Unicode.MAX_FOLD) {\n // [maxFold+1, hi] needs no folding.\n this.appendRange(Unicode.MAX_FOLD + 1, hi)\n hi = Unicode.MAX_FOLD\n }\n\n // Brute force. Depend on appendRange to coalesce ranges on the fly.\n for (let c = lo; c <= hi; c++) {\n this.appendRange(c, c)\n\n for (let f = Unicode.simpleFold(c); f !== c; f = Unicode.simpleFold(f)) {\n this.appendRange(f, f)\n }\n }\n return this\n }\n\n // appendClass() appends the class |x| to this CharClass.\n // It assumes |x| is clean. Does not mutate |x|.\n appendClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendFoldedClass() appends the case folding of the class |x| to this\n // CharClass. Does not mutate |x|.\n appendFoldedClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendFoldedRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendNegatedClass() append the negation of the class |x| to this\n // CharClass. It assumes |x| is clean. Does not mutate |x|.\n appendNegatedClass(x) {\n let nextLo = 0\n for (let i = 0; i < x.length; i += 2) {\n const lo = x[i]\n const hi = x[i + 1]\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTable() appends the Unicode range table |table| to this CharClass.\n // Does not mutate |table|.\n appendTable(table) {\n for (let i = 0; i < table.length; ++i) {\n const lo = table.getLo(i)\n const hi = table.getHi(i)\n const stride = table.getStride(i)\n if (stride === 1) {\n this.appendRange(lo, hi)\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n this.appendRange(c, c)\n }\n }\n return this\n }\n\n // appendNegatedTable() returns the result of appending the negation of range\n // table |table| to this CharClass. Does not mutate |table|.\n appendNegatedTable(table) {\n let nextLo = 0\n for (let i = 0; i < table.length; ++i) {\n const lo = table.getLo(i)\n const hi = table.getHi(i)\n const stride = table.getStride(i)\n if (stride === 1) {\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n if (nextLo <= c - 1) {\n this.appendRange(nextLo, c - 1)\n }\n nextLo = c + 1\n }\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTableWithSign() calls append{,Negated}Table depending on sign.\n // Does not mutate |table|.\n appendTableWithSign(table, sign) {\n return sign < 0 ? this.appendNegatedTable(table) : this.appendTable(table)\n }\n\n // negateClass() negates this CharClass, which must already be clean.\n negateClass() {\n let nextLo = 0 // lo end of next class to add\n let w = 0 // write index\n for (let i = 0; i < this.len; i += 2) {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (nextLo <= lo - 1) {\n this.r[w] = nextLo\n this.r[w + 1] = lo - 1\n w += 2\n }\n nextLo = hi + 1\n }\n this.len = w\n if (nextLo <= Unicode.MAX_RUNE) {\n this.r[this.len++] = nextLo\n this.r[this.len++] = Unicode.MAX_RUNE\n }\n return this\n }\n\n // appendClassWithSign() calls appendClass() if sign is +1 or\n // appendNegatedClass if sign is -1. Does not mutate |x|.\n appendClassWithSign(x, sign) {\n return sign < 0 ? this.appendNegatedClass(x) : this.appendClass(x)\n }\n\n // appendGroup() appends CharGroup |g| to this CharClass, folding iff\n // |foldCase|. Does not mutate |g|.\n appendGroup(g, foldCase) {\n let cls = g.cls\n if (foldCase) {\n cls = new CharClass().appendFoldedClass(cls).cleanClass().toArray()\n }\n return this.appendClassWithSign(cls, g.sign)\n }\n\n toString() {\n return CharClass.charClassToString(this.r, this.len)\n }\n}\n\nexport { CharClass }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { UnicodeTables } from './UnicodeTables'\nimport { UnicodeRangeTable } from './UnicodeRangeTable'\nimport { PERL_GROUPS, POSIX_GROUPS } from './CharGroup'\nimport { Utils } from './Utils'\nimport { CharClass } from './CharClass'\nimport { RE2JSSyntaxException } from './exceptions'\nimport { Regexp } from './Regexp'\n\n// StringIterator: a stream of runes with an opaque cursor, permitting\n// rewinding. The units of the cursor are not specified beyond the\n// fact that ASCII characters are single width. (Cursor positions\n// could be UTF-8 byte indices, UTF-16 code indices or rune indices.)\n//\n// In particular, be careful with:\n// - skip: only use this to advance over ASCII characters\n// since these always have a width of 1.\n// - skipString: only use this to advance over strings which are\n// known to be at the current position, e.g. due to prior call to\n// lookingAt().\n// Only use pop() to advance over possibly non-ASCII runes.\nclass StringIterator {\n constructor(str) {\n this.str = str\n this.position = 0\n }\n\n // Returns the cursor position. Do not interpret the result!\n pos() {\n return this.position\n }\n\n // Resets the cursor position to a previous value returned by pos().\n rewindTo(pos) {\n this.position = pos\n }\n\n // Returns true unless the stream is exhausted.\n more() {\n return this.position < this.str.length\n }\n\n // Returns the rune at the cursor position.\n // Precondition: |more()|.\n peek() {\n return this.str.codePointAt(this.position)\n }\n\n // Advances the cursor by |n| positions, which must be ASCII runes.\n //\n // (In practise, this is only ever used to skip over regexp\n // metacharacters that are ASCII, so there is no numeric difference\n // between indices into UTF-8 bytes, UTF-16 codes and runes.)\n skip(n) {\n this.position += n\n }\n\n // Advances the cursor by the number of cursor positions in |s|.\n skipString(s) {\n this.position += s.length\n }\n\n // Returns the rune at the cursor position, and advances the cursor\n // past it. Precondition: |more()|.\n pop() {\n const r = this.str.codePointAt(this.position)\n this.position += Utils.charCount(r)\n return r\n }\n\n lookingAt(s) {\n return this.rest().startsWith(s)\n }\n\n // Returns the rest of the pattern as a Java UTF-16 string.\n rest() {\n return this.str.substring(this.position)\n }\n\n // Returns the substring from |beforePos| to the current position.\n // |beforePos| must have been previously returned by |pos()|.\n from(beforePos) {\n return this.str.substring(beforePos, this.position)\n }\n\n toString() {\n return this.rest()\n }\n}\n/**\n * A parser of regular expression patterns.\n *\n * The only public entry point is {@link #parse(String pattern, int flags)}.\n */\nclass Parser {\n // Unexpected error\n static ERR_INTERNAL_ERROR = 'regexp/syntax: internal error'\n\n // Parse errors\n static ERR_INVALID_CHAR_RANGE = 'invalid character class range'\n static ERR_INVALID_ESCAPE = 'invalid escape sequence'\n static ERR_INVALID_NAMED_CAPTURE = 'invalid named capture'\n static ERR_INVALID_PERL_OP = 'invalid or unsupported Perl syntax'\n static ERR_INVALID_REPEAT_OP = 'invalid nested repetition operator'\n static ERR_INVALID_REPEAT_SIZE = 'invalid repeat count'\n static ERR_MISSING_BRACKET = 'missing closing ]'\n static ERR_MISSING_PAREN = 'missing closing )'\n static ERR_MISSING_REPEAT_ARGUMENT = 'missing argument to repetition operator'\n static ERR_TRAILING_BACKSLASH = 'trailing backslash at end of expression'\n static ERR_DUPLICATE_NAMED_CAPTURE = 'duplicate capture group name'\n static ERR_UNEXPECTED_PAREN = 'unexpected )'\n static ERR_NESTING_DEPTH = 'expression nests too deeply'\n static ERR_LARGE = 'expression too large'\n\n // maxHeight is the maximum height of a regexp parse tree.\n // It is somewhat arbitrarily chosen, but the idea is to be large enough\n // that no one will actually hit in real use but at the same time small enough\n // that recursion on the Regexp tree will not hit the 1GB Go stack limit.\n // The maximum amount of stack for a single recursive frame is probably\n // closer to 1kB, so this could potentially be raised, but it seems unlikely\n // that people have regexps nested even this deeply.\n // We ran a test on Google's C++ code base and turned up only\n // a single use case with depth > 100; it had depth 128.\n // Using depth 1000 should be plenty of margin.\n // As an optimization, we don't even bother calculating heights\n // until we've allocated at least maxHeight Regexp structures.\n static MAX_HEIGHT = 1000\n\n // maxSize is the maximum size of a compiled regexp in Insts.\n // It too is somewhat arbitrarily chosen, but the idea is to be large enough\n // to allow significant regexps while at the same time small enough that\n // the compiled form will not take up too much memory.\n // 128 MB is enough for a 3.3 million Inst structures, which roughly\n // corresponds to a 3.3 MB regexp.\n static MAX_SIZE = 3355443 // 128 << 20 / (5 * 8) (instSize = byte, 2 uint32, slice is 5 64-bit words)\n\n // maxRunes is the maximum number of runes allowed in a regexp tree\n // counting the runes in all the nodes.\n // Ignoring character classes p.numRunes is always less than the length of the regexp.\n // Character classes can make it much larger: each \\pL adds 1292 runes.\n // 128 MB is enough for 32M runes, which is over 26k \\pL instances.\n // Note that repetitions do not make copies of the rune slices,\n // so \\pL{1000} is only one rune slice, not 1000.\n // We could keep a cache of character classes we've seen,\n // so that all the \\pL we see use the same rune list,\n // but that doesn't remove the problem entirely:\n // consider something like [\\pL01234][\\pL01235][\\pL01236]...[\\pL^&*()].\n // And because the Rune slice is exposed directly in the Regexp,\n // there is not an opportunity to change the representation to allow\n // partial sharing between different character classes.\n // So the limit is the best we can do.\n static MAX_RUNES = 33554432 // 128 << 20 / 4 (runeSize, int32 is 4 bytes)\n\n // RangeTables are represented as int[][], a list of triples (start, end,\n // stride).\n static ANY_TABLE = new UnicodeRangeTable(new Uint32Array([0, Unicode.MAX_RUNE, 1]))\n\n // Ascii tables\n static ASCII_TABLE = new UnicodeRangeTable(new Uint32Array([0, 0x7f, 1]))\n static ASCII_FOLD_TABLE = new UnicodeRangeTable(\n new Uint32Array([\n 0,\n 0x7f,\n 1,\n 0x017f,\n 0x017f,\n 1, // Old English long s (ſ), folds to S/s.\n 0x212a,\n 0x212a,\n 1 // Kelvin K, folds to K/k.\n ])\n )\n\n // unicodeTable() returns the Unicode RangeTable identified by name\n // and the table of additional fold-equivalent code points.\n // Returns null if |name| does not identify a Unicode character range.\n static unicodeTable(name) {\n if (name === 'Any') {\n return { tab: Parser.ANY_TABLE, fold: Parser.ANY_TABLE, sign: +1 }\n }\n if (name === 'Ascii') {\n return { tab: Parser.ASCII_TABLE, fold: Parser.ASCII_FOLD_TABLE, sign: +1 }\n }\n if (name === 'Assigned') {\n // Assigned is the mathematical inversion of Cn (Unassigned)\n return {\n tab: UnicodeTables.CATEGORIES.get('Cn'),\n fold: UnicodeTables.CATEGORIES.get('Cn'),\n sign: -1\n }\n }\n if (name === 'Lc') {\n return {\n tab: UnicodeTables.CATEGORIES.get('LC'),\n fold: UnicodeTables.FOLD_CATEGORIES.get('LC'),\n sign: +1\n }\n }\n if (UnicodeTables.CATEGORIES.has(name)) {\n return {\n tab: UnicodeTables.CATEGORIES.get(name),\n fold: UnicodeTables.FOLD_CATEGORIES.get(name),\n sign: +1\n }\n }\n if (UnicodeTables.SCRIPTS.has(name)) {\n return {\n tab: UnicodeTables.SCRIPTS.get(name),\n fold: UnicodeTables.FOLD_SCRIPT.get(name),\n sign: +1\n }\n }\n return null\n }\n\n // minFoldRune returns the minimum rune fold-equivalent to r.\n static minFoldRune(r) {\n if (r < Unicode.MIN_FOLD || r > Unicode.MAX_FOLD) {\n return r\n }\n\n let min = r\n const r0 = r\n for (r = Unicode.simpleFold(r); r !== r0; r = Unicode.simpleFold(r)) {\n if (min > r) {\n min = r\n }\n }\n return min\n }\n\n // leadingRegexp returns the leading regexp that re begins with.\n // The regexp refers to storage in re or its children.\n static leadingRegexp(re) {\n if (re.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n const sub = re.subs[0]\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n return sub\n }\n return re\n }\n\n static literalRegexp(s, flags) {\n const re = new Regexp(Regexp.Op.LITERAL)\n re.flags = flags\n re.runes = Utils.stringToRunes(s)\n return re\n }\n /**\n * Parse regular expression pattern {@code pattern} with mode flags {@code flags}.\n * @param {string} pattern\n * @param {number} flags\n */\n static parse(pattern, flags) {\n return new Parser(pattern, flags).parseInternal()\n }\n\n // parseRepeat parses {min} (max=min) or {min,} (max=-1) or {min,max}.\n // If |t| is not of that form, it returns -1.\n // If |t| has the right form but the values are negative or too big,\n // it returns -2.\n // On success, returns a nonnegative number encoding min/max in the\n // high/low signed halfwords of the result. (Note: min >= 0; max may\n // be -1.)\n //\n // On success, advances |t| beyond the repeat; otherwise |t.pos()| is\n // undefined.\n static parseRepeat(t) {\n const start = t.pos()\n if (!t.more() || !t.lookingAt('{')) {\n return -1\n }\n t.skip(1)\n\n const min = Parser.parseInt(t)\n if (min === -1) {\n return -1\n }\n if (!t.more()) {\n return -1\n }\n\n let max\n if (!t.lookingAt(',')) {\n max = min\n } else {\n t.skip(1)\n if (!t.more()) {\n return -1\n }\n if (t.lookingAt('}')) {\n max = -1\n } else if ((max = Parser.parseInt(t)) === -1) {\n return -1\n }\n }\n\n if (!t.more() || !t.lookingAt('}')) {\n return -1\n }\n t.skip(1)\n if (min < 0 || min > 1000 || max === -2 || max > 1000 || (max >= 0 && min > max)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(start))\n }\n\n return (min << 16) | (max & Unicode.MAX_BMP)\n }\n\n // isValidCaptureName reports whether name\n // is a valid capture name: [A-Za-z0-9_]+.\n // PCRE limits names to 32 bytes.\n // Python rejects names starting with digits.\n // We don't enforce either of those.\n static isValidCaptureName(name) {\n if (name.length === 0) {\n return false\n }\n\n for (let i = 0; i < name.length; i++) {\n const c = name.codePointAt(i)\n if (c !== Codepoint.CODES.get('_') && !Utils.isalnum(c)) {\n return false\n }\n }\n\n return true\n }\n\n // parseInt parses a nonnegative decimal integer.\n // -1 => bad format. -2 => format ok, but integer overflow.\n static parseInt(t) {\n const start = t.pos()\n while (\n t.more() &&\n t.peek() >= Codepoint.CODES.get('0') &&\n t.peek() <= Codepoint.CODES.get('9')\n ) {\n t.skip(1)\n }\n\n const n = t.from(start)\n if (n.length === 0 || (n.length > 1 && n.codePointAt(0) === Codepoint.CODES.get('0'))) {\n return -1\n }\n if (n.length > 8) {\n return -2\n }\n return parseFloat(n, 10)\n }\n\n // can this be represented as a character class?\n // single-rune literal string, char class, ., and .|\\n.\n static isCharClass(re) {\n return (\n (re.op === Regexp.Op.LITERAL && re.runes.length === 1) ||\n re.op === Regexp.Op.CHAR_CLASS ||\n re.op === Regexp.Op.ANY_CHAR_NOT_NL ||\n re.op === Regexp.Op.ANY_CHAR\n )\n }\n\n // does re match r?\n static matchRune(re, r) {\n switch (re.op) {\n case Regexp.Op.LITERAL:\n return re.runes.length === 1 && re.runes[0] === r\n case Regexp.Op.CHAR_CLASS:\n for (let i = 0; i < re.runes.length; i += 2) {\n if (re.runes[i] <= r && r <= re.runes[i + 1]) {\n return true\n }\n }\n return false\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return r !== Codepoint.CODES.get('\\n')\n case Regexp.Op.ANY_CHAR:\n return true\n }\n return false\n }\n\n // mergeCharClass makes dst = dst|src.\n // The caller must ensure that dst.Op >= src.Op,\n // to reduce the amount of copying.\n static mergeCharClass(dst, src) {\n switch (dst.op) {\n case Regexp.Op.ANY_CHAR:\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n if (Parser.matchRune(src, Codepoint.CODES.get('\\n'))) {\n dst.op = Regexp.Op.ANY_CHAR\n }\n break\n case Regexp.Op.CHAR_CLASS:\n if (src.op === Regexp.Op.LITERAL) {\n dst.runes = new CharClass(dst.runes).appendLiteral(src.runes[0], src.flags).toArray()\n } else {\n dst.runes = new CharClass(dst.runes).appendClass(src.runes).toArray()\n }\n break\n case Regexp.Op.LITERAL:\n if (src.runes[0] === dst.runes[0] && src.flags === dst.flags) {\n break\n }\n dst.op = Regexp.Op.CHAR_CLASS\n dst.runes = new CharClass()\n .appendLiteral(dst.runes[0], dst.flags)\n .appendLiteral(src.runes[0], src.flags)\n .toArray()\n break\n }\n }\n\n // parseEscape parses an escape sequence at the beginning of s\n // and returns the rune.\n // Pre: t at '\\\\'. Post: after escape.\n static parseEscape(t) {\n const startPos = t.pos()\n t.skip(1) // '\\\\'\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_TRAILING_BACKSLASH)\n }\n let c = t.pop()\n bigswitch: switch (c) {\n case Codepoint.CODES.get('1'):\n case Codepoint.CODES.get('2'):\n case Codepoint.CODES.get('3'):\n case Codepoint.CODES.get('4'):\n case Codepoint.CODES.get('5'):\n case Codepoint.CODES.get('6'):\n case Codepoint.CODES.get('7'): {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n }\n // eslint-disable-next-line no-fallthrough\n case Codepoint.CODES.get('0'): {\n let r = c - Codepoint.CODES.get('0')\n for (let i = 1; i < 3; i++) {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n r = r * 8 + t.peek() - Codepoint.CODES.get('0')\n t.skip(1)\n }\n return r\n }\n case Codepoint.CODES.get('x'): {\n if (!t.more()) {\n break\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('{')) {\n let nhex = 0\n let r = 0\n\n while (true) {\n if (!t.more()) {\n break bigswitch\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('}')) {\n break\n }\n const v = Utils.unhex(c)\n if (v < 0) {\n break bigswitch\n }\n r = r * 16 + v\n if (r > Unicode.MAX_RUNE) {\n break bigswitch\n }\n nhex++\n }\n if (nhex === 0) {\n break bigswitch\n }\n return r\n }\n const x = Utils.unhex(c)\n if (!t.more()) {\n break\n }\n c = t.pop()\n const y = Utils.unhex(c)\n if (x < 0 || y < 0) {\n break\n }\n return x * 16 + y\n }\n case Codepoint.CODES.get('a'):\n return Codepoint.CODES.get('\\x07')\n case Codepoint.CODES.get('f'):\n return Codepoint.CODES.get('\\f')\n case Codepoint.CODES.get('n'):\n return Codepoint.CODES.get('\\n')\n case Codepoint.CODES.get('r'):\n return Codepoint.CODES.get('\\r')\n case Codepoint.CODES.get('t'):\n return Codepoint.CODES.get('\\t')\n case Codepoint.CODES.get('v'):\n return Codepoint.CODES.get('\\v')\n default:\n if (c <= Unicode.MAX_ASCII && !Utils.isalnum(c)) {\n return c\n }\n break\n }\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, t.from(startPos))\n }\n\n // parseClassChar parses a character class character and returns it.\n // wholeClassPos is the position of the start of the entire class \"[...\".\n // Pre: t at class char; Post: t after it.\n static parseClassChar(t, wholeClassPos) {\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_BRACKET, t.from(wholeClassPos))\n }\n if (t.lookingAt('\\\\')) {\n return Parser.parseEscape(t)\n }\n return t.pop()\n }\n\n static concatRunes(x, y) {\n for (let i = 0; i < y.length; i++) {\n x.push(y[i])\n }\n return x\n }\n\n constructor(wholeRegexp, flags = 0) {\n this.wholeRegexp = wholeRegexp\n // Flags control the behavior of the parser and record information about\n // regexp context.\n this.flags = flags\n // number of capturing groups seen\n this.numCap = 0\n this.namedGroups = Object.create(null)\n // Stack of parsed expressions.\n this.stack = []\n this.free = null\n // checks\n this.numRegexp = 0 // number of regexps allocated\n this.numRunes = 0 // number of runes in char classes\n this.repeats = 0 // product of all repetitions seen\n this.height = null // regexp height, for height limit check\n this.size = null // regexp compiled size, for size limit check\n this.nlb = 0 // Number of lookbehinds seen\n }\n\n // Allocate a Regexp, from the free list if possible.\n newRegexp(op) {\n let re = this.free\n if (re !== null && re.subs !== null && re.subs.length > 0) {\n this.free = re.subs[0]\n re.reinit()\n re.op = op\n } else {\n re = new Regexp(op)\n this.numRegexp += 1\n }\n return re\n }\n\n reuse(re) {\n if (this.height !== null && this.height.has(re)) {\n this.height.delete(re)\n }\n if (re.subs !== null && re.subs.length > 0) {\n re.subs[0] = this.free\n }\n this.free = re\n }\n\n checkLimits(re) {\n if (this.numRunes > Parser.MAX_RUNES) {\n throw new RE2JSSyntaxException(Parser.ERR_LARGE)\n }\n this.checkSize(re)\n this.checkHeight(re)\n }\n\n checkSize(re) {\n if (this.size === null) {\n // We haven't started tracking size yet.\n // Do a relatively cheap check to see if we need to start.\n // Maintain the product of all the repeats we've seen\n // and don't track if the total number of regexp nodes\n // we've seen times the repeat product is in budget.\n if (this.repeats === 0) {\n this.repeats = 1\n }\n if (re.op === Regexp.Op.REPEAT) {\n let n = re.max\n if (n === -1) {\n n = re.min\n }\n if (n <= 0) {\n n = 1\n }\n if (n > Math.floor(Parser.MAX_SIZE / this.repeats)) {\n this.repeats = Parser.MAX_SIZE\n } else {\n this.repeats *= n\n }\n }\n if (this.numRegexp < Math.floor(Parser.MAX_SIZE / this.repeats)) {\n return\n }\n\n // We need to start tracking size.\n // Make the map and belatedly populate it\n // with info about everything we've constructed so far.\n this.size = new Map()\n for (let reEx of this.stack) {\n this.checkSize(reEx)\n }\n }\n\n if (this.calcSize(re, true) > Parser.MAX_SIZE) {\n throw new RE2JSSyntaxException(Parser.ERR_LARGE)\n }\n }\n\n calcSize(re, force = false) {\n if (!force && this.size !== null) {\n if (this.size.has(re)) {\n return this.size.get(re)\n }\n }\n\n let size = 0\n switch (re.op) {\n case Regexp.Op.LITERAL: {\n size = re.runes.length\n break\n }\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n case Regexp.Op.CAPTURE:\n case Regexp.Op.STAR: {\n // star can be 1+ or 2+; assume 2 pessimistically\n size = 2 + this.calcSize(re.subs[0])\n break\n }\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n size = 1 + this.calcSize(re.subs[0])\n break\n }\n case Regexp.Op.CONCAT: {\n for (let sub of re.subs) {\n size = size + this.calcSize(sub)\n }\n break\n }\n case Regexp.Op.ALTERNATE: {\n for (let sub of re.subs) {\n size = size + this.calcSize(sub)\n }\n if (re.subs.length > 1) {\n size = size + re.subs.length - 1\n }\n break\n }\n case Regexp.Op.REPEAT: {\n let sub = this.calcSize(re.subs[0])\n if (re.max === -1) {\n if (re.min === 0) {\n size = 2 + sub // x*\n } else {\n size = 1 + re.min * sub // xxx+\n }\n break\n }\n // x{2,5} = xx(x(x(x)?)?)?\n size = re.max * sub + (re.max - re.min)\n break\n }\n }\n\n size = Math.max(1, size)\n if (this.size === null) {\n this.size = new Map()\n }\n this.size.set(re, size)\n return size\n }\n\n checkHeight(re) {\n if (this.numRegexp < Parser.MAX_HEIGHT) {\n return\n }\n if (this.height === null) {\n this.height = new Map()\n for (let reEx of this.stack) {\n this.checkHeight(reEx)\n }\n }\n if (this.calcHeight(re, true) > Parser.MAX_HEIGHT) {\n throw new RE2JSSyntaxException(Parser.ERR_NESTING_DEPTH)\n }\n }\n\n calcHeight(re, force = false) {\n if (!force && this.height !== null) {\n if (this.height.has(re)) {\n return this.height.get(re)\n }\n }\n let h = 1\n for (let sub of re.subs) {\n const hsub = this.calcHeight(sub)\n if (h < 1 + hsub) {\n h = 1 + hsub\n }\n }\n\n if (this.height === null) {\n this.height = new Map()\n }\n this.height.set(re, h)\n return h\n }\n\n // Parse stack manipulation.\n\n pop() {\n return this.stack.pop()\n }\n\n popToPseudo() {\n const n = this.stack.length\n let i = n\n while (i > 0 && !Regexp.isPseudoOp(this.stack[i - 1].op)) {\n i--\n }\n\n const r = this.stack.slice(i, n)\n this.stack = this.stack.slice(0, i)\n return r\n }\n\n // push pushes the regexp re onto the parse stack and returns the regexp.\n // Returns null for a CHAR_CLASS that can be merged with the top-of-stack.\n push(re) {\n this.numRunes += re.runes.length\n if (re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 2 && re.runes[0] === re.runes[1]) {\n if (this.maybeConcat(re.runes[0], this.flags & ~RE2Flags.FOLD_CASE)) {\n return null\n }\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags & ~RE2Flags.FOLD_CASE\n } else if (\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 4 &&\n re.runes[0] === re.runes[1] &&\n re.runes[2] === re.runes[3] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[2] &&\n Unicode.simpleFold(re.runes[2]) === re.runes[0]) ||\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 2 &&\n re.runes[0] + 1 === re.runes[1] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[1] &&\n Unicode.simpleFold(re.runes[1]) === re.runes[0])\n ) {\n // Case-insensitive rune like [Aa] or [Δδ].\n if (this.maybeConcat(re.runes[0], this.flags | RE2Flags.FOLD_CASE)) {\n return null\n }\n // Rewrite as (case-insensitive) literal.\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags | RE2Flags.FOLD_CASE\n } else {\n // Incremental concatenation.\n this.maybeConcat(-1, 0)\n }\n this.stack.push(re)\n this.checkLimits(re)\n return re\n }\n\n // maybeConcat implements incremental concatenation\n // of literal runes into string nodes. The parser calls this\n // before each push, so only the top fragment of the stack\n // might need processing. Since this is called before a push,\n // the topmost literal is no longer subject to operators like *\n // (Otherwise ab* would turn into (ab)*.)\n // If (r >= 0 and there's a node left over, maybeConcat uses it\n // to push r with the given flags.\n // maybeConcat reports whether r was pushed.\n maybeConcat(r, flags) {\n const n = this.stack.length\n if (n < 2) {\n return false\n }\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (\n re1.op !== Regexp.Op.LITERAL ||\n re2.op !== Regexp.Op.LITERAL ||\n (re1.flags & RE2Flags.FOLD_CASE) !== (re2.flags & RE2Flags.FOLD_CASE)\n ) {\n return false\n }\n // Push re1 into re2.\n re2.runes = Parser.concatRunes(re2.runes, re1.runes)\n // Reuse re1 if possible.\n if (r >= 0) {\n re1.runes = [r]\n re1.flags = flags\n return true\n }\n this.pop()\n this.reuse(re1)\n return false // did not push r\n }\n\n // newLiteral returns a new LITERAL Regexp with the given flags\n newLiteral(r, flags) {\n const re = this.newRegexp(Regexp.Op.LITERAL)\n re.flags = flags\n if ((flags & RE2Flags.FOLD_CASE) !== 0) {\n r = Parser.minFoldRune(r)\n }\n re.runes = [r]\n return re\n }\n\n // literal pushes a literal regexp for the rune r on the stack\n // and returns that regexp.\n literal(r) {\n this.push(this.newLiteral(r, this.flags))\n }\n\n // op pushes a regexp with the given op onto the stack\n // and returns that regexp.\n op(op) {\n const re = this.newRegexp(op)\n re.flags = this.flags\n return this.push(re)\n }\n\n // repeat replaces the top stack element with itself repeated according to\n // op, min, max. beforePos is the start position of the repetition operator.\n // Pre: t is positioned after the initial repetition operator.\n // Post: t advances past an optional perl-mode '?', or stays put.\n // Or, it fails with RE2JSSyntaxException.\n repeat(op, min, max, beforePos, t, lastRepeatPos) {\n let flags = this.flags\n if ((flags & RE2Flags.PERL_X) !== 0) {\n if (t.more() && t.lookingAt('?')) {\n t.skip(1)\n flags ^= RE2Flags.NON_GREEDY\n }\n if (lastRepeatPos !== -1) {\n // In Perl it is not allowed to stack repetition operators:\n // a** is a syntax error, not a doubled star, and a++ means\n // something else entirely, which we don't support!\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_OP, t.from(lastRepeatPos))\n }\n }\n\n const n = this.stack.length\n if (n === 0) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const sub = this.stack[n - 1]\n if (Regexp.isPseudoOp(sub.op)) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const re = this.newRegexp(op)\n re.min = min\n re.max = max\n re.flags = flags\n re.subs = [sub]\n this.stack[n - 1] = re\n\n this.checkLimits(re)\n\n if (op === Regexp.Op.REPEAT && (min >= 2 || max >= 2) && !this.repeatIsValid(re, 1000)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(beforePos))\n }\n }\n\n // repeatIsValid reports whether the repetition re is valid.\n // Valid means that the combination of the top-level repetition\n // and any inner repetitions does not exceed n copies of the\n // innermost thing.\n // This function rewalks the regexp tree and is called for every repetition,\n // so we have to worry about inducing quadratic behavior in the parser.\n // We avoid this by only calling repeatIsValid when min or max >= 2.\n // In that case the depth of any >= 2 nesting can only get to 9 without\n // triggering a parse error, so each subtree can only be rewalked 9 times.\n repeatIsValid(re, n) {\n if (re.op === Regexp.Op.REPEAT) {\n let m = re.max\n if (m === 0) {\n return true\n }\n if (m < 0) {\n m = re.min\n }\n if (m > n) {\n return false\n }\n if (m > 0) {\n n = Math.trunc(n / m)\n }\n }\n\n for (let sub of re.subs) {\n if (!this.repeatIsValid(sub, n)) {\n return false\n }\n }\n\n return true\n }\n\n // concat replaces the top of the stack (above the topmost '|' or '(') with\n // its concatenation.\n concat() {\n this.maybeConcat(-1, 0)\n const subs = this.popToPseudo()\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.EMPTY_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.CONCAT))\n }\n\n // alternate replaces the top of the stack (above the topmost '(') with its\n // alternation.\n alternate() {\n // Scan down to find pseudo-operator (.\n // There are no | above (.\n const subs = this.popToPseudo()\n // Make sure top class is clean.\n // All the others already are (see swapVerticalBar).\n if (subs.length > 0) {\n this.cleanAlt(subs[subs.length - 1])\n }\n // Empty alternate is special case\n // (shouldn't happen but easy to handle).\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.NO_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.ALTERNATE))\n }\n\n // cleanAlt cleans re for eventual inclusion in an alternation.\n cleanAlt(re) {\n if (re.op === Regexp.Op.CHAR_CLASS) {\n re.runes = new CharClass(re.runes).cleanClass().toArray()\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n re.runes = []\n re.op = Regexp.Op.ANY_CHAR\n } else if (\n re.runes.length === 4 &&\n re.runes[0] === 0 &&\n re.runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n re.runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n re.runes[3] === Unicode.MAX_RUNE\n ) {\n re.runes = []\n re.op = Regexp.Op.ANY_CHAR_NOT_NL\n }\n }\n }\n\n // collapse returns the result of applying op to subs[start:end].\n // If (sub contains op nodes, they all get hoisted up\n // so that there is never a concat of a concat or an\n // alternate of an alternate.\n collapse(subs, op) {\n if (subs.length === 1) {\n return subs[0]\n }\n // Concatenate subs iff op is same.\n // Compute length in first pass.\n let len = 0\n for (let sub of subs) {\n len += sub.op === op ? sub.subs.length : 1\n }\n let newsubs = new Array(len).fill(null)\n let i = 0\n for (let sub of subs) {\n if (sub.op === op) {\n for (let j = 0; j < sub.subs.length; j++) {\n newsubs[i++] = sub.subs[j]\n }\n this.reuse(sub)\n } else {\n newsubs[i++] = sub\n }\n }\n\n let re = this.newRegexp(op)\n re.subs = newsubs\n if (op === Regexp.Op.ALTERNATE) {\n // re.subs = this.factor(re.subs, re.flags)\n re.subs = this.factor(re.subs)\n if (re.subs.length === 1) {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n }\n }\n return re\n }\n\n // factor factors common prefixes from the alternation list sub. It\n // returns a replacement list that reuses the same storage and frees\n // (passes to p.reuse) any removed *Regexps.\n //\n // For example,\n // ABC|ABD|AEF|BCX|BCY\n // simplifies by literal prefix extraction to\n // A(B(C|D)|EF)|BC(X|Y)\n // which simplifies by character class introduction to\n // A(B[CD]|EF)|BC[XY]\n //\n factor(array) {\n if (array.length < 2) {\n return array\n }\n // The following code is subtle, because it's a literal JS\n // translation of code that makes clever use of Go \"slices\".\n // A slice is a triple (array, offset, length), and the Go\n // implementation uses two slices, |sub| and |out| backed by the\n // same array. In JS, we have to be explicit about all of these\n // variables, so:\n //\n // Go JS\n // sub (array, s, lensub)\n // out (array, 0, lenout) // (always a prefix of |array|)\n //\n // In the comments we'll use the logical notation of go slices, e.g. sub[i]\n // even though the JS code will read array[s + i].\n\n let s = 0 // offset of first |sub| within array.\n let lensub = array.length // = len(sub)\n let lenout = 0 // = len(out)\n // Round 1: Factor out common literal prefixes.\n // Note: (str, strlen) and (istr, istrlen) are like Go slices\n // onto a prefix of some Regexp's runes array (hence offset=0).\n let str = null\n let strlen = 0\n let strflags = 0\n let start = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (len <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin\n // with str as modified by strflags.\n let istr = null\n let istrlen = 0\n let iflags = 0\n if (i < lensub) {\n // NB, we inlined Go's leadingString() since Java has no pair return.\n let re = array[s + i]\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n re = re.subs[0]\n }\n if (re.op === Regexp.Op.LITERAL) {\n istr = re.runes\n istrlen = re.runes.length\n iflags = re.flags & RE2Flags.FOLD_CASE\n }\n // istr is the leading literal string that re begins with.\n // The string refers to storage in re or its children.\n if (iflags === strflags) {\n let same = 0\n while (same < strlen && same < istrlen && str[same] === istr[same]) {\n same++\n }\n\n if (same > 0) {\n // Matches at least one rune in current range.\n // Keep going around.\n strlen = same\n continue\n }\n }\n }\n // Found end of a run with common leading literal string:\n // sub[start:i] all begin with str[0:strlen], but sub[i]\n // does not even begin with str[0].\n //\n // Factor out common string and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = this.newRegexp(Regexp.Op.LITERAL)\n prefix.flags = strflags\n prefix.runes = str.slice(0, strlen)\n for (let j = start; j < i; j++) {\n array[s + j] = this.removeLeadingString(array[s + j], strlen)\n this.checkLimits(array[s + j])\n }\n // Recurse.\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n str = istr\n strlen = istrlen\n strflags = iflags\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 2: Factor out common complex prefixes,\n // just the first piece of each concatenation,\n // whatever it is. This is good enough a lot of the time.\n start = 0\n lenout = 0\n let first = null\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin with\n // ifirst.\n let ifirst = null\n if (i < lensub) {\n ifirst = Parser.leadingRegexp(array[s + i])\n if (\n first !== null &&\n first.equals(ifirst) &&\n (Parser.isCharClass(first) ||\n (first.op === Regexp.Op.REPEAT &&\n first.min === first.max &&\n Parser.isCharClass(first.subs[0])))\n ) {\n continue\n }\n }\n // Found end of a run with common leading regexp:\n // sub[start:i] all begin with first but sub[i] does not.\n //\n // Factor out common regexp and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = first\n for (let j = start; j < i; j++) {\n const reuse = j !== start // prefix came from sub[start]\n array[s + j] = this.removeLeadingRegexp(array[s + j], reuse)\n this.checkLimits(array[s + j])\n }\n // recurse\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n first = ifirst\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 3: Collapse runs of single literals into character classes.\n start = 0\n lenout = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that are either\n // literal runes or character classes.\n if (i < lensub && Parser.isCharClass(array[s + i])) {\n continue\n }\n // sub[i] is not a char or char class;\n // emit char class for sub[start:i]...\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Make new char class.\n // Start with most complex regexp in sub[start].\n let max = start\n for (let j = start + 1; j < i; j++) {\n const subMax = array[s + max]\n const subJ = array[s + j]\n if (\n subMax.op < subJ.op ||\n (subMax.op === subJ.op &&\n (subMax.runes !== null ? subMax.runes.length : 0) <\n (subJ.runes !== null ? subJ.runes.length : 0))\n ) {\n max = j\n }\n }\n // swap sub[start], sub[max].\n const tmp = array[s + start]\n array[s + start] = array[s + max]\n array[s + max] = tmp\n for (let j = start + 1; j < i; j++) {\n Parser.mergeCharClass(array[s + start], array[s + j])\n this.reuse(array[s + j])\n }\n this.cleanAlt(array[s + start])\n array[lenout++] = array[s + start]\n }\n // ... and then emit sub[i].\n if (i < lensub) {\n array[lenout++] = array[s + i]\n }\n start = i + 1\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 4: Collapse runs of empty matches into a single empty match.\n start = 0\n lenout = 0\n for (let i = 0; i < lensub; ++i) {\n if (\n i + 1 < lensub &&\n array[s + i].op === Regexp.Op.EMPTY_MATCH &&\n array[s + i + 1].op === Regexp.Op.EMPTY_MATCH\n ) {\n continue\n }\n array[lenout++] = array[s + i]\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n return array.slice(s, lensub)\n }\n\n // removeLeadingString removes the first n leading runes\n // from the beginning of re. It returns the replacement for re.\n removeLeadingString(re, n) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n // Removing a leading string in a concatenation\n // might simplify the concatenation.\n const sub = this.removeLeadingString(re.subs[0], n)\n re.subs[0] = sub\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n this.reuse(sub)\n switch (re.subs.length) {\n case 0:\n case 1:\n // Impossible but handle.\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = null\n break\n case 2: {\n const old = re\n re = re.subs[1]\n this.reuse(old)\n break\n }\n default:\n re.subs = re.subs.slice(1, re.subs.length)\n break\n }\n }\n return re\n }\n if (re.op === Regexp.Op.LITERAL) {\n re.runes = re.runes.slice(n, re.runes.length)\n if (re.runes.length === 0) {\n re.op = Regexp.Op.EMPTY_MATCH\n }\n }\n return re\n }\n\n // removeLeadingRegexp removes the leading regexp in re.\n // It returns the replacement for re.\n // If reuse is true, it passes the removed regexp (if no longer needed) to\n // reuse.\n removeLeadingRegexp(re, reuse) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n if (reuse) {\n this.reuse(re.subs[0])\n }\n re.subs = re.subs.slice(1, re.subs.length)\n switch (re.subs.length) {\n case 0: {\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = Regexp.emptySubs()\n break\n }\n case 1: {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n break\n }\n }\n return re\n }\n if (reuse) {\n this.reuse(re)\n }\n return this.newRegexp(Regexp.Op.EMPTY_MATCH)\n }\n\n parseInternal() {\n if ((this.flags & RE2Flags.LITERAL) !== 0) {\n // Trivial parser for literal string.\n return Parser.literalRegexp(this.wholeRegexp, this.flags)\n }\n // Otherwise, must do real work.\n let lastRepeatPos = -1\n let min = -1\n let max = -1\n const t = new StringIterator(this.wholeRegexp)\n while (t.more()) {\n {\n let repeatPos = -1\n bigswitch: switch (t.peek()) {\n case Codepoint.CODES.get('('):\n // Intercept Lookbehinds if the flag is enabled\n if ((this.flags & RE2Flags.LOOKBEHIND) !== 0) {\n if (t.lookingAt('(?<=')) {\n this.parsePosLookBehind()\n t.skip(4) // Skip over '(?<='\n break\n }\n if (t.lookingAt('(?<!')) {\n this.parseNegLookBehind()\n t.skip(4) // Skip over '(?<!'\n break\n }\n }\n\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.lookingAt('(?')) {\n // Flag changes and non-capturing groups.\n this.parsePerlFlags(t)\n break\n }\n this.op(Regexp.Op.LEFT_PAREN).cap = ++this.numCap\n t.skip(1) // '('\n break\n case Codepoint.CODES.get('|'):\n this.parseVerticalBar() // '|'\n t.skip(1) // '|'\n break\n case Codepoint.CODES.get(')'):\n this.parseRightParen()\n t.skip(1) // ')'\n break\n case Codepoint.CODES.get('^'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.BEGIN_TEXT)\n } else {\n this.op(Regexp.Op.BEGIN_LINE)\n }\n t.skip(1) // '^'\n break\n case Codepoint.CODES.get('$'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.END_TEXT).flags |= RE2Flags.WAS_DOLLAR\n } else {\n this.op(Regexp.Op.END_LINE)\n }\n t.skip(1) // '$'\n break\n case Codepoint.CODES.get('.'):\n if ((this.flags & RE2Flags.DOT_NL) !== 0) {\n this.op(Regexp.Op.ANY_CHAR)\n } else {\n this.op(Regexp.Op.ANY_CHAR_NOT_NL)\n }\n t.skip(1) // '.'\n break\n case Codepoint.CODES.get('['):\n this.parseClass(t)\n break\n case Codepoint.CODES.get('*'):\n case Codepoint.CODES.get('+'):\n case Codepoint.CODES.get('?'): {\n repeatPos = t.pos()\n let op = null\n switch (t.pop()) {\n case Codepoint.CODES.get('*'):\n op = Regexp.Op.STAR\n break\n case Codepoint.CODES.get('+'):\n op = Regexp.Op.PLUS\n break\n case Codepoint.CODES.get('?'):\n op = Regexp.Op.QUEST\n break\n }\n this.repeat(op, min, max, repeatPos, t, lastRepeatPos)\n // (min and max are now dead.)\n break\n }\n\n case Codepoint.CODES.get('{'): {\n repeatPos = t.pos()\n const minMax = Parser.parseRepeat(t)\n if (minMax < 0) {\n // If the repeat cannot be parsed, { is a literal.\n t.rewindTo(repeatPos)\n this.literal(t.pop()) // '{'\n break\n }\n min = minMax >> 16\n max = ((minMax & Unicode.MAX_BMP) << 16) >> 16\n this.repeat(Regexp.Op.REPEAT, min, max, repeatPos, t, lastRepeatPos)\n break\n }\n\n case Codepoint.CODES.get('\\\\'): {\n const savedPos = t.pos()\n t.skip(1) // '\\\\'\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.more()) {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('A'):\n this.op(Regexp.Op.BEGIN_TEXT)\n break bigswitch\n case Codepoint.CODES.get('b'):\n this.op(Regexp.Op.WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('B'):\n this.op(Regexp.Op.NO_WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('C'):\n // any byte; not supported\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, '\\\\C')\n case Codepoint.CODES.get('Q'): {\n // \\Q ... \\E: the ... is always literals\n let lit = t.rest()\n const i = lit.indexOf('\\\\E')\n if (i >= 0) {\n lit = lit.substring(0, i)\n t.skipString(lit)\n t.skipString('\\\\E')\n } else {\n t.skipString(lit)\n }\n\n let j = 0\n while (j < lit.length) {\n const codepoint = lit.codePointAt(j)\n this.literal(codepoint)\n j += Utils.charCount(codepoint)\n }\n break bigswitch\n }\n\n case Codepoint.CODES.get('z'):\n this.op(Regexp.Op.END_TEXT)\n break bigswitch\n default:\n t.rewindTo(savedPos)\n break\n }\n } else {\n // Unconditionally rewind if PERL_X is off, or if string ended abruptly\n t.rewindTo(savedPos)\n }\n\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n // Look for Unicode character group like \\p{Han}\n if (t.lookingAt('\\\\p') || t.lookingAt('\\\\P')) {\n const cc = new CharClass()\n if (this.parseUnicodeClass(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n }\n // Perl character class escape.\n const cc = new CharClass()\n if (this.parsePerlClassEscape(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n t.rewindTo(savedPos)\n this.reuse(re)\n // Ordinary single-character escape.\n this.literal(Parser.parseEscape(t))\n break\n }\n default:\n this.literal(t.pop())\n break\n }\n lastRepeatPos = repeatPos\n }\n }\n\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n !== 1) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp)\n }\n this.stack[0].namedGroups = this.namedGroups\n return this.stack[0]\n }\n\n // parsePerlFlags parses a Perl flag setting or non-capturing group or both,\n // like (?i) or (?: or (?i:.\n // Pre: t at \"(?\". Post: t after \")\".\n // Sets numCap.\n parsePerlFlags(t) {\n const startPos = t.pos()\n // Check for named captures, first introduced in Python's regexp library.\n // As usual, there are three slightly different syntaxes:\n //\n // (?P<name>expr) the original, introduced by Python\n // (?<name>expr) the .NET alteration, adopted by Perl 5.10\n // (?'name'expr) another .NET alteration, adopted by Perl 5.10\n //\n // Perl 5.10 gave in and implemented the Python version too,\n // but they claim that the last two are the preferred forms.\n // PCRE and languages based on it (specifically, PHP and Ruby)\n // support all three as well. EcmaScript 4 uses only the Python form.\n //\n // In both the open source world (via Code Search) and the\n // Google source tree, (?P<name>expr) and (?<name>expr) are the\n // dominant forms of named captures and both are supported.\n const s = t.rest()\n if (s.startsWith('(?P<') || s.startsWith('(?<')) {\n // Pull out name.\n const begin = s.charAt(2) === 'P' ? 4 : 3\n const end = s.indexOf('>')\n if (end < 0) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s)\n }\n const name = s.substring(begin, end) // \"name\"\n t.skipString(name)\n t.skip(begin + 1) // \"(?P<>\" or \"(?<>\"\n if (!Parser.isValidCaptureName(name)) {\n // \"(?P<name>\"\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s.substring(0, end + 1)) // \"(?P<name>\" or \"(?<name>\"\n }\n // Like ordinary capture, but named.\n const re = this.op(Regexp.Op.LEFT_PAREN)\n re.cap = ++this.numCap\n if (this.namedGroups[name]) {\n throw new RE2JSSyntaxException(Parser.ERR_DUPLICATE_NAMED_CAPTURE, name)\n }\n this.namedGroups[name] = this.numCap\n re.name = name\n return\n }\n // Non-capturing group. Might also twiddle Perl flags.\n t.skip(2) // \"(?\"\n\n let flags = this.flags\n let sign = +1\n let sawFlag = false\n loop: while (t.more()) {\n {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('i'):\n flags |= RE2Flags.FOLD_CASE\n sawFlag = true\n break\n case Codepoint.CODES.get('m'):\n flags &= ~RE2Flags.ONE_LINE\n sawFlag = true\n break\n case Codepoint.CODES.get('s'):\n flags |= RE2Flags.DOT_NL\n sawFlag = true\n break\n case Codepoint.CODES.get('U'):\n flags |= RE2Flags.NON_GREEDY\n sawFlag = true\n break\n // Switch to negation.\n case Codepoint.CODES.get('-'):\n if (sign < 0) {\n break loop\n }\n sign = -1\n // Invert flags so that | above turn into &~ and vice versa.\n // We'll invert flags again before using it below.\n flags = ~flags\n sawFlag = false\n break\n // End of flags, starting group or not.\n case Codepoint.CODES.get(':'):\n case Codepoint.CODES.get(')'):\n if (sign < 0) {\n if (!sawFlag) {\n break loop\n }\n flags = ~flags\n }\n if (c === Codepoint.CODES.get(':')) {\n // Open new group\n this.op(Regexp.Op.LEFT_PAREN)\n }\n this.flags = flags\n return\n default:\n // Flags.\n break loop\n }\n }\n }\n\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_PERL_OP, t.from(startPos))\n }\n\n // Lookbehinds parsing\n parsePosLookBehind() {\n const re = this.newRegexp(Regexp.Op.LEFT_PAREN)\n re.flags = this.flags\n re.lb = ++this.nlb\n return this.push(re)\n }\n\n parseNegLookBehind() {\n const re = this.newRegexp(Regexp.Op.LEFT_PAREN)\n re.flags = this.flags\n re.lb = -++this.nlb\n return this.push(re)\n }\n\n // parseVerticalBar handles a | in the input.\n parseVerticalBar() {\n this.concat()\n // The concatenation we just parsed is on top of the stack.\n // If it sits above an opVerticalBar, swap it below\n // (things below an opVerticalBar become an alternation).\n // Otherwise, push a new vertical bar.\n if (!this.swapVerticalBar()) {\n this.op(Regexp.Op.VERTICAL_BAR)\n }\n }\n\n // If the top of the stack is an element followed by an opVerticalBar\n // swapVerticalBar swaps the two and returns true.\n // Otherwise it returns false.\n swapVerticalBar() {\n const n = this.stack.length\n // If above and below vertical bar are literal or char class,\n // can merge into a single char class.\n if (\n n >= 3 &&\n this.stack[n - 2].op === Regexp.Op.VERTICAL_BAR &&\n Parser.isCharClass(this.stack[n - 1]) &&\n Parser.isCharClass(this.stack[n - 3])\n ) {\n let re1 = this.stack[n - 1]\n let re3 = this.stack[n - 3]\n // Make re3 the more complex of the two.\n if (re1.op > re3.op) {\n const tmp = re3\n re3 = re1\n re1 = tmp\n this.stack[n - 3] = re3\n }\n Parser.mergeCharClass(re3, re1)\n this.reuse(re1)\n this.pop()\n return true\n }\n if (n >= 2) {\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (re2.op === Regexp.Op.VERTICAL_BAR) {\n if (n >= 3) {\n // Now out of reach.\n // Clean opportunistically.\n this.cleanAlt(this.stack[n - 3])\n }\n this.stack[n - 2] = re1\n this.stack[n - 1] = re2\n return true\n }\n }\n return false\n }\n\n // parseRightParen handles a ')' in the input.\n parseRightParen() {\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n < 2) {\n throw new RE2JSSyntaxException(Parser.ERR_UNEXPECTED_PAREN, this.wholeRegexp)\n }\n\n const re1 = this.pop()\n const re2 = this.pop()\n if (re2.op !== Regexp.Op.LEFT_PAREN) {\n throw new RE2JSSyntaxException(Parser.ERR_UNEXPECTED_PAREN, this.wholeRegexp)\n }\n // Restore flags at time of paren.\n this.flags = re2.flags\n\n // Handle lookbehinds\n if (re2.lb !== 0) {\n if (re2.lb > 0) {\n re2.op = Regexp.Op.PLB\n } else {\n re2.op = Regexp.Op.NLB\n }\n re2.subs = [re1]\n this.push(re2)\n return\n }\n\n if (re2.cap === 0) {\n // Just for grouping.\n this.push(re1)\n } else {\n re2.op = Regexp.Op.CAPTURE\n re2.subs = [re1]\n this.push(re2)\n }\n }\n\n // parsePerlClassEscape parses a leading Perl character class escape like \\d\n // from the beginning of |t|. If one is present, it appends the characters\n // to cc and returns true. The iterator is advanced past the escape\n // on success, undefined on failure, in which case false is returned.\n parsePerlClassEscape(t, cc) {\n const beforePos = t.pos()\n if (\n (this.flags & RE2Flags.PERL_X) === 0 ||\n !t.more() ||\n t.pop() !== Codepoint.CODES.get('\\\\') ||\n !t.more()\n ) {\n return false\n }\n t.pop() // e.g. advance past 'd' in \"\\\\d\"\n const p = t.from(beforePos)\n const g = PERL_GROUPS.has(p) ? PERL_GROUPS.get(p) : null\n if (g === null) {\n return false\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseNamedClass parses a leading POSIX named character class like\n // [:alnum:] from the beginning of t. If one is present, it appends the\n // characters to cc, advances the iterator, and returns true.\n // Pre: t at \"[:\". Post: t after \":]\".\n // On failure (no class of than name), throws RE2JSSyntaxException.\n // On misparse, returns false; t.pos() is undefined.\n parseNamedClass(t, cc) {\n // (Go precondition check deleted.)\n const cls = t.rest()\n const i = cls.indexOf(':]')\n if (i < 0) {\n return false\n }\n\n const name = cls.substring(0, i + 2) // \"[:alnum:]\"\n t.skipString(name)\n const g = POSIX_GROUPS.has(name) ? POSIX_GROUPS.get(name) : null\n if (g === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, name)\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseUnicodeClass() parses a leading Unicode character class like \\p{Han}\n // from the beginning of t. If one is present, it appends the characters to\n // to |cc|, advances |t| and returns true.\n //\n // Returns false if such a pattern is not present or UNICODE_GROUPS\n // flag is not enabled; |t.pos()| is not advanced in this case.\n // Indicates error by throwing RE2JSSyntaxException.\n parseUnicodeClass(t, cc) {\n const startPos = t.pos()\n if (\n (this.flags & RE2Flags.UNICODE_GROUPS) === 0 ||\n (!t.lookingAt('\\\\p') && !t.lookingAt('\\\\P'))\n ) {\n return false\n }\n\n t.skip(1) // '\\\\'\n // Committed to parse or throw exception.\n let sign = +1\n let c = t.pop() // 'p' or 'P'\n if (c === Codepoint.CODES.get('P')) {\n sign = -1\n }\n if (!t.more()) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n\n c = t.pop()\n let name\n\n if (c !== Codepoint.CODES.get('{')) {\n // Single-letter name.\n name = Utils.runeToString(c)\n } else {\n // Name is in braces.\n const rest = t.rest()\n const end = rest.indexOf('}')\n if (end < 0) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n name = rest.substring(0, end) // e.g. \"Han\"\n t.skipString(name)\n t.skip(1)\n // Don't use skip(end) because it assumes UTF-16 coding, and\n // StringIterator doesn't guarantee that.\n }\n // Group can have leading negation too.\n // \\p{^Han} == \\P{Han}, \\P{^Han} == \\p{Han}.\n if (!(name.length === 0) && name.codePointAt(0) === Codepoint.CODES.get('^')) {\n sign = 0 - sign // -sign\n name = name.substring(1)\n }\n\n const pair = Parser.unicodeTable(name)\n if (pair === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(startPos))\n }\n if (pair.sign < 0) {\n sign = 0 - sign\n }\n\n const tab = pair.tab\n const fold = pair.fold // fold-equivalent table\n // Variation of CharClass.appendGroup() for tables.\n if ((this.flags & RE2Flags.FOLD_CASE) === 0 || fold === null) {\n cc.appendTableWithSign(tab, sign)\n } else {\n // Merge and clean tab and fold in a temporary buffer.\n // This is necessary for the negative case and just tidy\n // for the positive case.\n const tmp = new CharClass().appendTable(tab).appendTable(fold).cleanClass().toArray()\n cc.appendClassWithSign(tmp, sign)\n }\n return true\n }\n\n // parseClass parses a character class and pushes it onto the parse stack.\n //\n // NOTES:\n // Pre: at '['; Post: after ']'.\n // Mutates stack. Advances iterator. May throw.\n parseClass(t) {\n const startPos = t.pos()\n t.skip(1) // '['\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n const cc = new CharClass()\n let sign = +1\n\n if (t.more() && t.lookingAt('^')) {\n sign = -1\n t.skip(1) // '^'\n // If character class does not match \\n, add it here,\n // so that negation later will do the right thing.\n if ((this.flags & RE2Flags.CLASS_NL) === 0) {\n cc.appendRange(Codepoint.CODES.get('\\n'), Codepoint.CODES.get('\\n'))\n }\n }\n\n let first = true // ']' and '-' are okay as first char in class\n while (!t.more() || t.peek() !== Codepoint.CODES.get(']') || first) {\n // POSIX: - is only okay unescaped as first or last in class.\n // Perl: - is okay anywhere.\n if (t.more() && t.lookingAt('-') && (this.flags & RE2Flags.PERL_X) === 0 && !first) {\n const s = t.rest()\n if (s === '-' || !s.startsWith('-]')) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n }\n\n first = false\n const beforePos = t.pos()\n // Look for POSIX [:alnum:] etc.\n if (t.lookingAt('[:')) {\n if (this.parseNamedClass(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n }\n\n // Look for Unicode character group like \\p{Han}.\n if (this.parseUnicodeClass(t, cc)) {\n continue\n }\n\n // Look for Perl character class symbols (extension).\n if (this.parsePerlClassEscape(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n\n // Single character or simple range.\n const lo = Parser.parseClassChar(t, startPos)\n let hi = lo\n if (t.more() && t.lookingAt('-')) {\n t.skip(1)\n if (t.more() && t.lookingAt(']')) {\n // [a-] means (a|-) so check for final ].\n t.skip(-1)\n } else {\n hi = Parser.parseClassChar(t, startPos)\n if (hi < lo) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(beforePos))\n }\n }\n }\n if ((this.flags & RE2Flags.FOLD_CASE) === 0) {\n cc.appendRange(lo, hi)\n } else {\n cc.appendFoldedRange(lo, hi)\n }\n }\n t.skip(1) // ']'\n\n cc.cleanClass()\n if (sign < 0) {\n cc.negateClass()\n }\n re.runes = cc.toArray()\n this.push(re)\n }\n}\n\nexport { Parser }\n","import { RE2Flags } from './RE2Flags'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { Machine } from './Machine'\nimport { MachineInput } from './MachineInput'\nimport { DFA } from './DFA'\nimport { Backtracker } from './Backtracker'\nimport { OnePass } from './OnePass'\nimport { PrefilterTree, Prefilter } from './Prefilter'\nimport { Compiler } from './Compiler'\nimport { Simplify } from './Simplify'\nimport { Parser } from './Parser'\nimport { Utils } from './Utils'\n\nclass AtomicReference {\n constructor(initialValue) {\n this.value = initialValue\n }\n\n // Returns the current value\n get() {\n return this.value\n }\n\n // Sets to the given value\n set(newValue) {\n this.value = newValue\n }\n\n // Atomically sets to the given value and returns true if the current value == the expected value\n compareAndSet(expect, update) {\n if (this.value === expect) {\n this.value = update\n return true\n }\n return false\n }\n}\n\n/**\n * An RE2 class instance is a compiled representation of an RE2 regular expression, independent of\n * the public Java-like Pattern/Matcher API.\n *\n * This class also contains various implementation helpers for RE2 regular expressions.\n *\n * Use the {@link #quoteMeta(String)} utility function to quote all regular expression\n * metacharacters in an arbitrary string.\n *\n */\nclass RE2 {\n // This is visible for testing.\n static initTest(expr) {\n const re2 = RE2.compile(expr)\n const res = new RE2(re2.expr, re2.prog, re2.numSubexp, re2.longest)\n res.cond = re2.cond\n res.prefix = re2.prefix\n res.prefixUTF8 = re2.prefixUTF8\n res.prefixComplete = re2.prefixComplete\n res.prefixRune = re2.prefixRune\n res.prefilter = re2.prefilter\n return res\n }\n\n /**\n * Parses a regular expression and returns, if successful, an {@code RE2} instance that can be\n * used to match against text.\n *\n * When matching against text, the regexp returns a match that begins as early as possible in the\n * input (leftmost), and among those it chooses the one that a backtracking search would have\n * found first. This so-called leftmost-first matching is the same semantics that Perl, Python,\n * and other implementations use, although this package implements it without the expense of\n * backtracking. For POSIX leftmost-longest matching, see {@link #compilePOSIX}.\n */\n static compile(expr) {\n return RE2.compileImpl(expr, RE2Flags.PERL, false)\n }\n\n /**\n * {@code compilePOSIX} is like {@link #compile} but restricts the regular expression to POSIX ERE\n * (egrep) syntax and changes the match semantics to leftmost-longest.\n *\n * That is, when matching against text, the regexp returns a match that begins as early as\n * possible in the input (leftmost), and among those it chooses a match that is as long as\n * possible. This so-called leftmost-longest matching is the same semantics that early regular\n * expression implementations used and that POSIX specifies.\n *\n * However, there can be multiple leftmost-longest matches, with different submatch choices, and\n * here this package diverges from POSIX. Among the possible leftmost-longest matches, this\n * package chooses the one that a backtracking search would have found first, while POSIX\n * specifies that the match be chosen to maximize the length of the first subexpression, then the\n * second, and so on from left to right. The POSIX rule is computationally prohibitive and not\n * even well-defined. See http://swtch.com/~rsc/regexp/regexp2.html#posix\n */\n static compilePOSIX(expr) {\n return RE2.compileImpl(expr, RE2Flags.POSIX, true)\n }\n\n // Exposed to ExecTests.\n static compileImpl(expr, mode, longest) {\n let re = Parser.parse(expr, mode)\n const maxCap = re.maxCap()\n re = Simplify.simplify(re)\n\n const prefilter = PrefilterTree.build(re)\n\n const prog = Compiler.compileRegexp(re)\n const re2 = new RE2(expr, prog, maxCap, longest)\n\n re2.prefilter = prefilter.type === Prefilter.Type.NONE ? null : prefilter\n\n const [prefixCompl, prefixStr] = prog.prefix()\n re2.prefixComplete = prefixCompl\n re2.prefix = prefixStr\n re2.prefixUTF8 = Utils.stringToUtf8ByteArray(re2.prefix)\n\n if (re2.prefix.length > 0) {\n re2.prefixRune = re2.prefix.codePointAt(0)\n }\n re2.namedGroups = re.namedGroups\n return re2\n }\n\n /**\n * Returns true iff textual regular expression {@code pattern} matches string {@code s}.\n *\n * More complicated queries need to use {@link #compile} and the full {@code RE2} interface.\n */\n // This is visible for testing.\n static match(pattern, s) {\n return RE2.compile(pattern).match(s)\n }\n\n constructor(expr, prog, numSubexp = 0, longest = 0) {\n this.expr = expr // as passed to Compile\n this.prog = prog // compiled program\n this.numSubexp = numSubexp\n this.longest = longest\n this.cond = prog.startCond() // EMPTY_* bitmask: empty-width conditions\n this.prefix = null // required UTF-16 prefix in unanchored matches\n this.prefixUTF8 = null // required UTF-8 prefix in unanchored matches\n this.prefixComplete = false // true if prefix is the entire regexp\n this.prefixRune = 0 // first rune in prefix\n this.pooled = new AtomicReference() // Cache of machines for running regexp. Forms a Treiber stack.\n this.dfa = new DFA(this.prog) // initialize Lazy DFA\n this.onepass = OnePass.compile(this.prog) // compile OnePass\n this.prefilter = null\n }\n\n matchPrefixComplete(input, pos, anchor, ncap) {\n // If strictly anchored, execution must start at 0\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return null\n }\n\n let matchStart = -1\n let matchEnd = -1\n const pLen = input.prefixLength(this)\n\n if (anchor === RE2Flags.UNANCHORED) {\n const idx = input.index(this, pos)\n if (idx < 0) return null\n matchStart = pos + idx\n matchEnd = matchStart + pLen\n } else if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (input.endPos() !== pLen) return null\n const idx = input.index(this, 0)\n if (idx !== 0) return null\n matchStart = 0\n matchEnd = pLen\n } else if (anchor === RE2Flags.ANCHOR_START) {\n const idx = input.index(this, 0)\n if (idx !== 0) return null\n matchStart = 0\n matchEnd = pLen\n }\n\n if (matchStart < 0) return null\n\n // If captures are requested (e.g. findSubmatch instead of test), populate bounds\n if (ncap > 0) {\n const matchcap = new Int32Array(ncap).fill(-1)\n matchcap[0] = matchStart\n matchcap[1] = matchEnd\n return Array.from(matchcap)\n }\n return [] // Matched successfully, but no capture data requested\n }\n\n executeEngine(input, pos, anchor, ncap) {\n // LITERAL FAST PATH\n // If the entire regex is just a literal string (and no nested capture boundaries are requested),\n // bypass all state machines and execute via V8's blistering fast native indexOf\n if (this.prefixComplete && (ncap === 0 || this.numSubexp === 0)) {\n return this.matchPrefixComplete(input, pos, anchor, ncap)\n }\n\n // PREFILTER FAST PATH\n // If the unanchored query requires specific literal strings (e.g. \"a.*b\"),\n // verify those strings exist using high-speed JS string searches before waking up the state engines.\n if (this.prefilter !== null && anchor === RE2Flags.UNANCHORED) {\n if (!this.prefilter.eval(input, pos)) {\n return null\n }\n }\n\n // FAST PATH: OnePass DFA engine.\n // If compiled successfully, it perfectly supports capture groups\n // and is blisteringly fast since it skips thread queues completely.\n if (this.onepass !== null) {\n return OnePass.execute(this, input, pos, anchor, ncap)\n }\n\n // If the user wants capturing groups (ncap > 0), the DFA mathematically CANNOT do it.\n // We must use the NFA.\n if (ncap > 0) {\n // Backtracker bit-state execution bounds check\n if (this.prog.numLb === 0 && input.endPos() <= Backtracker.maxBitStateLen(this.prog)) {\n return Backtracker.execute(this, input, pos, anchor, ncap)\n }\n // NFA execution\n return this.doExecuteNFA(input, pos, anchor, ncap)\n }\n\n // The DFA will safely return null (bailout) if it encounters a lookbehind\n if (this.prog.numLb === 0) {\n const dfaResult = this.dfa.match(input, pos, anchor)\n if (dfaResult !== null) {\n // DFA succeeded (returned true or false)\n return dfaResult ? [] : null // Return empty array to signify \"matched but no captures\"\n }\n\n // Backtracker bit-state execution bounds check\n if (input.endPos() <= Backtracker.maxBitStateLen(this.prog)) {\n return Backtracker.execute(this, input, pos, anchor, ncap)\n }\n }\n\n // Fallback to NFA\n return this.doExecuteNFA(input, pos, anchor, ncap)\n }\n\n /**\n * Returns the number of parenthesized subexpressions in this regular expression.\n */\n numberOfCapturingGroups() {\n return this.numSubexp\n }\n\n /**\n * Returns the number of instructions in this compiled regular expression program.\n */\n numberOfInstructions() {\n return this.prog.numInst()\n }\n\n // get() returns a machine to use for matching |this|. It uses |this|'s\n // machine cache if possible, to avoid unnecessary allocation.\n get() {\n // Pop a machine off the stack if available.\n let head\n\n do {\n head = this.pooled.get()\n } while (head && !this.pooled.compareAndSet(head, head.next))\n\n return head\n }\n\n // Clears the memory associated with this machine.\n reset() {\n this.pooled.set(null)\n }\n\n // put() returns a machine to |this|'s machine cache. There is no attempt to\n // limit the size of the cache, so it will grow to the maximum number of\n // simultaneous matches run using |this|. (The cache empties when |this|\n // gets garbage collected or reset is called.)\n put(m, isNew) {\n // To avoid allocation in the single-thread or uncontended case, reuse a node only if\n // it was the only element in the stack when it was popped, and it's the only element\n // in the stack when it's pushed back after use.\n let head = this.pooled.get()\n do {\n head = this.pooled.get()\n if (!isNew && head) {\n // If an element had a null next pointer and it was previously in the stack, another thread\n // might be trying to pop it out right now, and if it sees the same node now in the\n // stack the pop will succeed, but the new top of the stack will be the stale (null) value\n // of next. Allocate a new Machine so that the CAS will not succeed if this node has been\n // popped and re-pushed.\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n // Without this comparison, TSAN will complain about a race condition:\n // Thread A, B, and C all attempt to do a match on the same pattern.\n //\n // A: Allocates Machine 1; executes match; put machine 1. State is now:\n //\n // pooled -> machine 1 -> null\n //\n // B reads pooled, sees machine 1\n //\n // C reads pooled, sees machine 1\n //\n // B successfully CASes pooled to null\n //\n // B executes match; put machine 1, which involves setting machine1.next to\n // null (even though it's already null); preempted before CAS\n //\n // C resumes, and reads machine1.next in order to execute cas(head, head.next)\n //\n // There is no happens-before relationship between B's redundant null write\n // and C's read, thus triggering TSAN.\n //\n // Not needed for JS code\n if (m.next !== head) {\n m.next = head\n }\n } while (!this.pooled.compareAndSet(head, m))\n }\n\n toString() {\n return this.expr\n }\n\n // doExecuteNFA() finds the leftmost match in the input and returns\n // the position of its subexpressions.\n // Derived from exec.go.\n doExecuteNFA(input, pos, anchor, ncap) {\n let m = this.get()\n // The Treiber stack cannot reuse nodes, unless the node to be reused has only ever been at\n // the bottom of the stack (i.e., next == null).\n let isNew = false\n if (!m) {\n m = Machine.fromRE2(this)\n isNew = true\n } else if (m.next !== null) {\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n m.init(ncap)\n const cap = m.match(input, pos, anchor) ? m.submatches() : null\n this.put(m, isNew)\n return cap\n }\n\n match(s) {\n return this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Matches the regular expression against input starting at position start and ending at position\n * end, with the given anchoring. Records the submatch boundaries in group, which is [start, end)\n * pairs of byte offsets. The number of boundaries needed is inferred from the size of the group\n * array. It is most efficient not to ask for submatch boundaries.\n *\n * @param input the input byte array\n * @param start the beginning position in the input\n * @param end the end position in the input\n * @param anchor the anchoring flag (UNANCHORED, ANCHOR_START, ANCHOR_BOTH)\n * @param group the array to fill with submatch positions\n * @param ngroup the number of array pairs to fill in\n * @returns true if a match was found\n */\n matchWithGroup(input, start, end, anchor, ngroup) {\n if (!(input instanceof MatcherInputBase)) {\n input = MatcherInput.utf16(input)\n }\n\n return this.matchMachineInput(input, start, end, anchor, ngroup)\n }\n\n matchMachineInput(input, start, end, anchor, ngroup) {\n if (start > end) {\n return [false, null]\n }\n const machineInput = input.isUTF16Encoding()\n ? MachineInput.fromUTF16(input.asCharSequence(), 0, end)\n : MachineInput.fromUTF8(input.asBytes(), 0, end)\n\n const groupMatch = this.executeEngine(machineInput, start, anchor, 2 * ngroup)\n\n if (groupMatch === null) {\n return [false, null]\n }\n return [true, groupMatch]\n }\n\n /**\n * Returns true iff this regexp matches the UTF-8 byte array {@code b}.\n */\n // This is visible for testing.\n matchUTF8(b) {\n return this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Returns a copy of {@code src} in which all matches for this regexp have been replaced by\n * {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAll(src, repl) {\n return this.replaceAllFunc(src, () => repl, 2 * src.length + 1)\n }\n\n /**\n * Returns a copy of {@code src} in which only the first match for this regexp has been replaced\n * by {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceFirst(src, repl) {\n return this.replaceAllFunc(src, () => repl, 1)\n }\n\n /**\n * Returns a copy of {@code src} in which at most {@code maxReplaces} matches for this regexp have\n * been replaced by the return value of of function {@code repl} (whose first argument is the\n * matched string). No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAllFunc(src, replFunc, maxReplaces) {\n let lastMatchEnd = 0\n let searchPos = 0\n let out = ''\n\n const input = MachineInput.fromUTF16(src)\n let numReplaces = 0\n while (searchPos <= src.length) {\n const a = this.executeEngine(input, searchPos, RE2Flags.UNANCHORED, 2)\n if (a === null || a.length === 0) {\n break\n }\n out += src.substring(lastMatchEnd, a[0])\n\n if (a[1] > lastMatchEnd || a[0] === 0) {\n out += replFunc(src.substring(a[0], a[1]))\n numReplaces++\n }\n\n lastMatchEnd = a[1]\n const width = input.step(searchPos) & 7\n if (searchPos + width > a[1]) {\n searchPos += width\n } else if (searchPos + 1 > a[1]) {\n searchPos++\n } else {\n searchPos = a[1]\n }\n if (numReplaces >= maxReplaces) {\n break\n }\n }\n\n out += src.substring(lastMatchEnd)\n return out\n }\n\n // The number of capture values in the program may correspond\n // to fewer capturing expressions than are in the regexp.\n // For example, \"(a){0}\" turns into an empty program, so the\n // maximum capture in the program is 0 but we need to return\n // an expression for \\1. Pad returns a with -1s appended as needed;\n // the result may alias a.\n pad(a) {\n if (a === null) {\n return null\n }\n\n let n = (1 + this.numSubexp) * 2\n\n if (a.length < n) {\n let a2 = new Array(n).fill(-1)\n for (let i = 0; i < a.length; i++) {\n a2[i] = a[i]\n }\n a = a2\n }\n return a\n }\n\n // Find matches in input.\n allMatches(input, n, deliverFun = (v) => v) {\n let result = []\n const end = input.endPos()\n if (n < 0) {\n n = end + 1\n }\n\n let pos = 0\n let i = 0\n let prevMatchEnd = -1\n while (i < n && pos <= end) {\n const matches = this.executeEngine(input, pos, RE2Flags.UNANCHORED, this.prog.numCap)\n if (matches === null || matches.length === 0) {\n break\n }\n\n let accept = true\n if (matches[1] === pos) {\n if (matches[0] === prevMatchEnd) {\n accept = false\n }\n const r = input.step(pos)\n if (r < 0) {\n pos = end + 1\n } else {\n pos += r & 7\n }\n } else {\n pos = matches[1]\n }\n prevMatchEnd = matches[1]\n\n if (accept) {\n result.push(deliverFun(this.pad(matches)))\n i++\n }\n }\n return result\n }\n\n // Legacy Go-style interface; preserved (package-private) for better\n // test coverage.\n //\n // There are 16 methods of RE2 that match a regular expression and\n // identify the matched text. Their names are matched by this regular\n // expression:\n //\n // find(All)?(UTF8)?(Submatch)?(Index)?\n //\n // If 'All' is present, the routine matches successive non-overlapping\n // matches of the entire expression. Empty matches abutting a\n // preceding match are ignored. The return value is an array\n // containing the successive return values of the corresponding\n // non-All routine. These routines take an extra integer argument, n;\n // if n >= 0, the function returns at most n matches/submatches.\n //\n // If 'UTF8' is present, the argument is a UTF-8 encoded byte[] array;\n // otherwise it is a UTF-16 encoded js string; return values\n // are adjusted as appropriate.\n //\n // If 'Submatch' is present, the return value is an list identifying\n // the successive submatches of the expression. Submatches are\n // matches of parenthesized subexpressions within the regular\n // expression, numbered from left to right in order of opening\n // parenthesis. Submatch 0 is the match of the entire expression,\n // submatch 1 the match of the first parenthesized subexpression, and\n // so on.\n //\n // If 'Index' is present, matches and submatches are identified by\n // byte index pairs within the input string: result[2*n:2*n+1]\n // identifies the indexes of the nth submatch. The pair for n==0\n // identifies the match of the entire expression. If 'Index' is not\n // present, the match is identified by the text of the match/submatch.\n // If an index is negative, it means that subexpression did not match\n // any string in the input.\n\n /**\n * Returns an array holding the text of the leftmost match in {@code b} of this regular\n * expression.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8(b) {\n const a = this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return b.slice(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code b} of this regular expression. The match itself is at {@code b[loc[0]...loc[1]]}.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Index(b) {\n const a = this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return a.slice(0, 2)\n }\n\n /**\n * Returns a string holding the text of the leftmost match in {@code s} of this regular\n * expression.\n *\n * If there is no match, the return value is an empty string, but it will also be empty if the\n * regular expression successfully matches an empty string. Use {@link #findIndex} or\n * {@link #findSubmatch} if it is necessary to distinguish these cases.\n */\n // This is visible for testing.\n find(s) {\n const a = this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return ''\n }\n return s.substring(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code s} of this regular expression. The match itself is at\n * {@code s.substring(loc[0], loc[1])}.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findIndex(s) {\n return this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n }\n\n /**\n * Returns an array of arrays the text of the leftmost match of the regular expression in\n * {@code b} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Submatch(b) {\n const a = this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = b.slice(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code b} and the matches, if any, of its subexpressions, as defined by the the\n * <a href='#submatch'>Submatch</a> and <a href='#index'>Index</a> descriptions above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8SubmatchIndex(b) {\n return this.pad(\n this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * Returns an array of strings holding the text of the leftmost match of the regular expression in\n * {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatch(s) {\n const a = this.executeEngine(\n MachineInput.fromUTF16(s),\n 0,\n RE2Flags.UNANCHORED,\n this.prog.numCap\n )\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = s.substring(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatchIndex(s) {\n return this.pad(\n this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * {@code findAllUTF8()} is the <a href='#all'>All</a> version of {@link #findUTF8}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n *\n * TODO(adonovan): think about defining a byte slice view class, like a read-only Go slice backed\n * by |b|.\n */\n // This is visible for testing.\n findAllUTF8(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) =>\n b.slice(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Index} is the <a href='#all'>All</a> version of {@link #findUTF8Index}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Index(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAll} is the <a href='#all'>All</a> version of {@link #find}; it returns a list of up\n * to {@code n} successive matches of the expression, as defined by the <a href='#all'>All</a>\n * description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAll(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) =>\n s.substring(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllIndex} is the <a href='#all'>All</a> version of {@link #findIndex}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Submatch} is the <a href='#all'>All</a> version of {@link #findUTF8Submatch};\n * it returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Submatch(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = b.slice(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8SubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findUTF8SubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8SubmatchIndex(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatch} is the <a href='#all'>All</a> version of {@link #findSubmatch}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatch(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = s.substring(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findSubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatchIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n}\n\nexport { RE2 }\n","import { Compiler } from './Compiler'\nimport { Parser } from './Parser'\nimport { Simplify } from './Simplify'\nimport { DFA } from './DFA'\nimport { Machine } from './Machine'\nimport { MachineInput } from './MachineInput'\nimport { RE2Flags } from './RE2Flags'\nimport { PublicFlags } from './PublicFlags'\nimport { RE2JSCompileException } from './exceptions'\n\nclass RE2Set {\n static UNANCHORED = RE2Flags.UNANCHORED\n static ANCHOR_START = RE2Flags.ANCHOR_START\n static ANCHOR_BOTH = RE2Flags.ANCHOR_BOTH\n\n constructor(anchor = RE2Set.UNANCHORED, flags = 0) {\n this.anchor = anchor\n this.jsFlags = flags\n\n let re2Flags = RE2Flags.PERL\n if ((flags & PublicFlags.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= ~RE2Flags.UNICODE_GROUPS\n }\n if ((flags & PublicFlags.LOOKBEHINDS) !== 0) {\n re2Flags |= RE2Flags.LOOKBEHIND\n }\n this.re2Flags = re2Flags\n\n this.regexps = []\n this.prog = null\n this.dfa = null\n this.dummyRe2 = null\n }\n\n add(pattern) {\n if (this.prog) {\n throw new RE2JSCompileException('Cannot add patterns after compile')\n }\n\n let fregex = pattern\n if ((this.jsFlags & PublicFlags.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`\n }\n if ((this.jsFlags & PublicFlags.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`\n }\n if ((this.jsFlags & PublicFlags.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`\n }\n\n const re = Parser.parse(fregex, this.re2Flags)\n this.regexps.push(Simplify.simplify(re))\n return this.regexps.length - 1\n }\n\n compile() {\n if (this.prog) return\n this.prog = Compiler.compileSet(this.regexps)\n this.dfa = new DFA(this.prog)\n this.dummyRe2 = {\n prog: this.prog,\n cond: this.prog.startCond(),\n prefix: '',\n prefixRune: 0,\n longest: false\n }\n }\n\n match(input) {\n if (!this.prog) this.compile()\n\n const machineInput = Array.isArray(input)\n ? MachineInput.fromUTF8(input)\n : MachineInput.fromUTF16(input)\n\n let internalAnchor = RE2Flags.UNANCHORED\n if (this.anchor === RE2Set.ANCHOR_START) {\n internalAnchor = RE2Flags.ANCHOR_START\n } else if (this.anchor === RE2Set.ANCHOR_BOTH) {\n internalAnchor = RE2Flags.ANCHOR_BOTH\n }\n\n // Fast path: Try the blistering fast DFA\n const dfaResult = this.dfa.matchSet(machineInput, 0, internalAnchor)\n if (dfaResult !== null) return dfaResult\n\n // Safe Fallback: Handle boundaries (\\b) or massive state explosions via NFA\n const machine = Machine.fromRE2(this.dummyRe2)\n machine.init(0)\n return machine.matchSet(machineInput, 0, internalAnchor)\n }\n}\n\nexport { RE2Set }\n","import { Utils } from './Utils'\n\n/**\n * Transform JS regex string to RE2 regex string\n */\nclass TranslateRegExpString {\n static isUpperCaseAlpha(ch) {\n return 'A' <= ch && ch <= 'Z'\n }\n\n static isHexadecimal(ch) {\n return ('0' <= ch && ch <= '9') || ('A' <= ch && ch <= 'F') || ('a' <= ch && ch <= 'f')\n }\n\n static translate(data) {\n if (typeof data !== 'string') {\n return data\n }\n\n let result = ''\n let changed = false\n let size = data.length\n\n if (size === 0) {\n result = '(?:)'\n changed = true\n }\n\n let i = 0\n while (i < size) {\n let ch = data[i]\n\n if (ch === '\\\\') {\n if (i + 1 < size) {\n ch = data[i + 1]\n switch (ch) {\n case '\\\\': {\n result += '\\\\\\\\'\n i += 2\n continue\n }\n case 'c': {\n if (i + 2 < size) {\n let nextCh = data[i + 2]\n if (TranslateRegExpString.isUpperCaseAlpha(nextCh)) {\n result += '\\\\x'\n result += ((nextCh.charCodeAt(0) - 64) >> 4).toString(16).toUpperCase()\n result += ((nextCh.charCodeAt(0) - 64) & 15).toString(16).toUpperCase()\n i += 3\n changed = true\n continue\n }\n }\n result += '\\\\c'\n i += 2\n continue\n }\n case 'u': {\n if (i + 2 < size) {\n let nextCh = data[i + 2]\n if (TranslateRegExpString.isHexadecimal(nextCh)) {\n result += '\\\\x{' + nextCh\n i += 3\n for (let j = 0; j < 3 && i < size; ++i, ++j) {\n nextCh = data[i]\n if (!TranslateRegExpString.isHexadecimal(nextCh)) {\n break\n }\n result += nextCh\n }\n result += '}'\n changed = true\n continue\n } else if (nextCh === '{') {\n result += '\\\\x'\n i += 2\n changed = true\n continue\n }\n }\n result += '\\\\u'\n i += 2\n continue\n }\n default: {\n result += '\\\\'\n let cp = data.codePointAt(i + 1)\n let symSize = Utils.charCount(cp)\n result += data.substring(i + 1, i + 1 + symSize)\n i += symSize + 1\n continue\n }\n }\n }\n } else if (ch === '/') {\n result += '\\\\/'\n i += 1\n changed = true\n continue\n } else if (ch === '(' && i + 2 < size && data[i + 1] === '?' && data[i + 2] === '<') {\n if (i + 3 < size && !'=!>)'.includes(data[i + 3])) {\n result += '(?P<'\n i += 3\n changed = true\n continue\n }\n }\n\n let cp = data.codePointAt(i)\n let symSize = Utils.charCount(cp)\n result += data.substring(i, i + symSize)\n i += symSize\n }\n\n return changed ? result : data\n }\n}\n\nexport { TranslateRegExpString }\n","import { RE2Flags } from './RE2Flags'\nimport { PublicFlags } from './PublicFlags'\nimport { MatcherInput } from './MatcherInput'\nimport { MachineInput } from './MachineInput'\nimport { Matcher } from './Matcher'\nimport { RE2 } from './RE2'\nimport { RE2Set } from './Set'\nimport { Utils } from './Utils'\nimport { TranslateRegExpString } from './TranslateRegExpString'\nimport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException,\n RE2JSInternalException\n} from './exceptions'\n\n/**\n * A compiled representation of an RE2 regular expression\n *\n * The matching functions take {@code String} arguments instead of the more general Java\n * {@code CharSequence} since the latter doesn't provide UTF-16 decoding.\n *\n *\n * @author rsc@google.com (Russ Cox)\n * @class\n */\nclass RE2JS {\n /**\n * Flag: case insensitive matching.\n */\n static CASE_INSENSITIVE = PublicFlags.CASE_INSENSITIVE\n /**\n * Flag: dot ({@code .}) matches all characters, including newline.\n */\n static DOTALL = PublicFlags.DOTALL\n /**\n * Flag: multiline matching: {@code ^} and {@code $} match at beginning and end of line, not just\n * beginning and end of input.\n */\n static MULTILINE = PublicFlags.MULTILINE\n /**\n * Flag: Unicode groups (e.g. {@code \\p\\ Greek\\} ) will be syntax errors.\n */\n static DISABLE_UNICODE_GROUPS = PublicFlags.DISABLE_UNICODE_GROUPS\n /**\n * Flag: matches longest possible string.\n */\n static LONGEST_MATCH = PublicFlags.LONGEST_MATCH\n /**\n * Flag: enable linear-time captureless lookbehinds.\n */\n static LOOKBEHINDS = PublicFlags.LOOKBEHINDS\n\n /**\n * Returns a literal pattern string for the specified string.\n *\n * This method produces a string that can be used to create a <code>RE2JS</code> that would\n * match the string <code>s</code> as if it were a literal pattern.\n *\n * Metacharacters or escape sequences in the input sequence will be given no special meaning.\n *\n * @param {string} str The string to be literalized\n * @returns {string} A literal string replacement\n */\n static quote(str) {\n return Utils.quoteMeta(str)\n }\n\n /**\n * Quotes '\\' and '$' in {@code str}, so that the returned string could be used in\n * replacement methods as a literal replacement of {@code str}.\n *\n * This is a convenience delegation to {@link Matcher.quoteReplacement}.\n *\n * @param {string} str the string to be quoted\n * @param {boolean} [javaMode=false] whether the replacement will be used in javaMode\n * @returns {string} the quoted string\n */\n static quoteReplacement(str, javaMode = false) {\n return Matcher.quoteReplacement(str, javaMode)\n }\n\n /**\n * Translates a given regular expression string to ensure compatibility with RE2JS.\n *\n * This function preprocesses the input regex string by applying necessary transformations,\n * such as escaping special characters (e.g., `/`), converting named capture groups to\n * RE2JS-compatible syntax, and handling Unicode sequences properly. It ensures that the\n * resulting regex is safe and properly formatted before compilation.\n *\n * @param {string} expr - The regular expression string to be translated.\n * @returns {string} - The transformed regular expression string, ready for compilation.\n */\n static translateRegExp(expr) {\n return TranslateRegExpString.translate(expr)\n }\n\n /**\n * Helper: create new RE2JS with given regex and flags. Flregex is the regex with flags applied.\n * @param {string} regex\n * @param {number} [flags=0]\n * @returns {RE2JS}\n */\n static compile(regex, flags = 0) {\n let fregex = regex\n if ((flags & RE2JS.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`\n }\n if ((flags & RE2JS.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`\n }\n if ((flags & RE2JS.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`\n }\n if (\n (flags &\n ~(\n RE2JS.MULTILINE |\n RE2JS.DOTALL |\n RE2JS.CASE_INSENSITIVE |\n RE2JS.DISABLE_UNICODE_GROUPS |\n RE2JS.LONGEST_MATCH |\n RE2JS.LOOKBEHINDS\n )) !==\n 0\n ) {\n throw new RE2JSFlagsException(\n 'Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH, LOOKBEHINDS'\n )\n }\n\n let re2Flags = RE2Flags.PERL\n if ((flags & RE2JS.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= ~RE2Flags.UNICODE_GROUPS\n }\n if ((flags & RE2JS.LOOKBEHINDS) !== 0) {\n re2Flags |= RE2Flags.LOOKBEHIND\n }\n\n const p = new RE2JS(regex, flags)\n // The compiled RE2 regexp.\n p.re2Input = RE2.compileImpl(fregex, re2Flags, (flags & RE2JS.LONGEST_MATCH) !== 0)\n return p\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string} regex the regular expression\n * @param {string|number[]} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n * @throws RE2JSSyntaxException if the regular expression is malformed\n */\n static matches(regex, input) {\n return RE2JS.compile(regex).testExact(input)\n }\n\n /**\n * This is visible for testing.\n * @private\n */\n static initTest(pattern, flags, re2) {\n if (pattern == null) {\n throw new Error('pattern is null')\n }\n if (re2 == null) {\n throw new Error('re2 is null')\n }\n const p = new RE2JS(pattern, flags)\n // The compiled RE2 regexp.\n p.re2Input = re2\n return p\n }\n\n /**\n *\n * @param {string} pattern\n * @param {number} flags\n */\n constructor(pattern, flags) {\n // The pattern string at construction time.\n this.patternInput = pattern\n // The flags at construction time.\n this.flagsInput = flags\n }\n\n /**\n * Releases memory used by internal caches associated with this pattern. Does not change the\n * observable behaviour. Useful for tests that detect memory leaks via allocation tracking.\n */\n reset() {\n this.re2Input.reset()\n }\n\n /**\n * Returns the flags used in the constructor.\n * @returns {number}\n */\n flags() {\n return this.flagsInput\n }\n\n /**\n * Returns the pattern used in the constructor.\n * @returns {string}\n */\n pattern() {\n return this.patternInput\n }\n\n re2() {\n return this.re2Input\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string|number[]} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n */\n matches(input) {\n return this.testExact(input)\n }\n\n /**\n * Creates a new {@code Matcher} matching the pattern against the input.\n *\n * @param {string|number[]} input the input string\n * @returns {Matcher}\n */\n matcher(input) {\n if (Array.isArray(input)) {\n input = MatcherInput.utf8(input)\n }\n\n return new Matcher(this, input)\n }\n\n /**\n * Tests whether the regular expression matches any part of the input string.\n * Performance Note: This method is highly optimized. Because it only returns\n * a boolean and does not extract capture groups, it bypasses the `Matcher` overhead\n * and guarantees execution on the high-speed DFA engine whenever possible.\n *\n * @param {string|number[]} input - The input string or UTF-8 byte array to test against.\n * @returns {boolean} `true` if the pattern is found anywhere in the input, `false` otherwise.\n */\n test(input) {\n if (Array.isArray(input)) {\n // Reuse the existing UTF-8 fast-path method\n return this.re2Input.matchUTF8(input)\n }\n\n // Reuse the existing UTF-16 fast-path method\n return this.re2Input.match(input)\n }\n\n /**\n * Tests whether the regular expression matches the ENTIRE input string.\n * * **Performance Note:** This operates identically to `.matches()`, but is significantly\n * faster because it does not request capture group data. By requesting 0 capture groups,\n * it securely routes execution through the DFA fast-path.\n *\n * @param {string|number[]} input - The input string or UTF-8 byte array to test against.\n * @returns {boolean} `true` if the exact input string fully matches the pattern, `false` otherwise.\n */\n testExact(input) {\n const machineInput = Array.isArray(input)\n ? MachineInput.fromUTF8(input)\n : MachineInput.fromUTF16(input)\n\n return this.re2Input.executeEngine(machineInput, 0, RE2Flags.ANCHOR_BOTH, 0) !== null\n }\n\n /**\n * Splits input around instances of the regular expression. It returns an array giving the strings\n * that occur before, between, and after instances of the regular expression.\n *\n * If {@code limit <= 0}, there is no limit on the size of the returned array. If\n * {@code limit == 0}, empty strings that would occur at the end of the array are omitted. If\n * {@code limit > 0}, at most limit strings are returned. The final string contains the remainder\n * of the input, possibly including additional matches of the pattern.\n *\n * @param {string} input the input string to be split\n * @param {number} [limit=0] the limit\n * @returns {string[]} the split strings\n */\n split(input, limit = 0) {\n const m = this.matcher(input)\n\n const result = []\n let emptiesSkipped = 0\n let last = 0\n\n while (m.find()) {\n if (last === 0 && m.end() === 0) {\n // Zero-width match at the beginning, skip\n last = m.end()\n continue\n }\n\n if (limit > 0 && result.length === limit - 1) {\n // no more room for matches\n break\n }\n\n if (last === m.start()) {\n // Empty match, may or may not be trailing.\n if (limit === 0) {\n emptiesSkipped += 1\n last = m.end()\n continue\n }\n } else {\n // If emptiesSkipped > 0 then limit == 0 and we have non-trailing empty matches to add before\n // this non-empty match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n }\n\n result.push(m.substring(last, m.start()))\n last = m.end()\n }\n\n if (limit === 0 && last !== m.inputLength()) {\n // Unlimited match, no more delimiters but we have a non-empty input at the end. Catch up any skipped empty\n // matches, then emit the final match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n\n result.push(m.substring(last, m.inputLength()))\n }\n\n if (limit !== 0 || result.length === 0) {\n result.push(m.substring(last, m.inputLength()))\n }\n\n return result\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.patternInput\n }\n\n /**\n * Returns the program size of this pattern.\n *\n * <p>\n * Similar to the C++ implementation, the program size is a very approximate measure of a regexp's\n * \"cost\". Larger numbers are more expensive than smaller numbers.\n * </p>\n *\n * @returns {number} the program size of this pattern\n */\n programSize() {\n return this.re2Input.numberOfInstructions()\n }\n\n /**\n * Returns the number of capturing groups in this matcher's pattern. Group zero denotes the entire\n * pattern and is excluded from this count.\n *\n * @returns {number} the number of capturing groups in this pattern\n */\n groupCount() {\n return this.re2Input.numberOfCapturingGroups()\n }\n\n /**\n * Return a map of the capturing groups in this matcher's pattern, where key is the name and value\n * is the index of the group in the pattern.\n * @returns {Record<string, number>}\n */\n namedGroups() {\n return this.re2Input.namedGroups\n }\n\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other) {\n return true\n }\n if (other === null || this.constructor !== other.constructor) {\n return false\n }\n\n return this.flagsInput === other.flagsInput && this.patternInput === other.patternInput\n }\n}\n\nexport {\n RE2JS,\n RE2Set,\n Matcher,\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException,\n RE2JSInternalException\n}\n"],"names":["RE2Flags","FOLD_CASE","LITERAL","CLASS_NL","DOT_NL","ONE_LINE","NON_GREEDY","PERL_X","UNICODE_GROUPS","WAS_DOLLAR","LOOKBEHIND","MATCH_NL","PERL","POSIX","UNANCHORED","ANCHOR_START","ANCHOR_BOTH","PublicFlags","CASE_INSENSITIVE","DOTALL","MULTILINE","DISABLE_UNICODE_GROUPS","LONGEST_MATCH","LOOKBEHINDS","ASCII_SIZE","ASCII_TO_UPPER","Int32Array","ASCII_TO_LOWER","MAX_BMP","i","Codepoint","CODES","Map","toUpperCase","codepoint","s","String","fromCodePoint","expectedLen","codePointAt","length","sOrigin","toLowerCase","originExpectedLen","UnicodeRangeTable","constructor","data","isStride1","SIZE","getLo","index","getHi","getStride","get","B64_MAP","Uint8Array","b","charCodeAt","decodeVLQ","str","res","value","shift","digit","push","decodeRanges","numRanges","out","Uint32Array","current","resIdx","decodeOrbit","map","currentKey","set","LazyMap","initializer","cache","has","key","fn","val","UnicodeTables","_CASE_ORBIT","CASE_ORBIT","_Print","Print","CATEGORIES","C","Cc","Cf","Cn","Co","Cs","L","LC","Ll","Lm","Lo","Lt","Lu","M","Mc","Me","Mn","N","Nd","Nl","No","P","Pc","Pd","Pe","Pf","Pi","Po","Ps","S","Sc","Sk","Sm","So","Z","Zl","Zp","Zs","Upper","SCRIPTS","Adlam","Ahom","Anatolian_Hieroglyphs","Arabic","Armenian","Avestan","Balinese","Bamum","Bassa_Vah","Batak","Bengali","Beria_Erfe","Bhaiksuki","Bopomofo","Brahmi","Braille","Buginese","Buhid","Canadian_Aboriginal","Carian","Caucasian_Albanian","Chakma","Cham","Cherokee","Chorasmian","Common","Coptic","Cuneiform","Cypriot","Cypro_Minoan","Cyrillic","Deseret","Devanagari","Dives_Akuru","Dogra","Duployan","Egyptian_Hieroglyphs","Elbasan","Elymaic","Ethiopic","Garay","Georgian","Glagolitic","Gothic","Grantha","Greek","Gujarati","Gunjala_Gondi","Gurmukhi","Gurung_Khema","Han","Hangul","Hanifi_Rohingya","Hanunoo","Hatran","Hebrew","Hiragana","Imperial_Aramaic","Inherited","Inscriptional_Pahlavi","Inscriptional_Parthian","Javanese","Kaithi","Kannada","Katakana","Kawi","Kayah_Li","Kharoshthi","Khitan_Small_Script","Khmer","Khojki","Khudawadi","Kirat_Rai","Lao","Latin","Lepcha","Limbu","Linear_A","Linear_B","Lisu","Lycian","Lydian","Mahajani","Makasar","Malayalam","Mandaic","Manichaean","Marchen","Masaram_Gondi","Medefaidrin","Meetei_Mayek","Mende_Kikakui","Meroitic_Cursive","Meroitic_Hieroglyphs","Miao","Modi","Mongolian","Mro","Multani","Myanmar","Nabataean","Nag_Mundari","Nandinagari","New_Tai_Lue","Newa","Nko","Nushu","Nyiakeng_Puachue_Hmong","Ogham","Ol_Chiki","Ol_Onal","Old_Hungarian","Old_Italic","Old_North_Arabian","Old_Permic","Old_Persian","Old_Sogdian","Old_South_Arabian","Old_Turkic","Old_Uyghur","Oriya","Osage","Osmanya","Pahawh_Hmong","Palmyrene","Pau_Cin_Hau","Phags_Pa","Phoenician","Psalter_Pahlavi","Rejang","Runic","Samaritan","Saurashtra","Sharada","Shavian","Siddham","Sidetic","SignWriting","Sinhala","Sogdian","Sora_Sompeng","Soyombo","Sundanese","Sunuwar","Syloti_Nagri","Syriac","Tagalog","Tagbanwa","Tai_Le","Tai_Tham","Tai_Viet","Tai_Yo","Takri","Tamil","Tangsa","Tangut","Telugu","Thaana","Thai","Tibetan","Tifinagh","Tirhuta","Todhri","Tolong_Siki","Toto","Tulu_Tigalari","Ugaritic","Unknown","Vai","Vithkuqi","Wancho","Warang_Citi","Yezidi","Yi","Zanabazar_Square","FOLD_CATEGORIES","FOLD_SCRIPT","Unicode","MAX_RUNE","MAX_ASCII","MAX_LATIN1","MIN_FOLD","MAX_FOLD","MIN_HIGH_SURROGATE","MAX_HIGH_SURROGATE","MIN_LOW_SURROGATE","MAX_LOW_SURROGATE","MIN_SUPPLEMENTARY_CODE_POINT","is32","ranges","r","lo","hi","m","Math","floor","rlo","rhi","stride","is","isUpper","isPrint","simpleFold","l","equalsIgnoreCase","r1","r2","Utils","METACHARACTERS","EMPTY_BEGIN_LINE","EMPTY_END_LINE","EMPTY_BEGIN_TEXT","EMPTY_END_TEXT","EMPTY_WORD_BOUNDARY","EMPTY_NO_WORD_BOUNDARY","EMPTY_ALL","emptyInts","isalnum","c","unhex","escapeRune","rune","indexOf","toString","stringToRunes","Array","from","runeToString","isWordRune","emptyOpContext","op","quoteMeta","split","join","charCount","codePoint","stringToUtf8ByteArray","globalThis","TextEncoder","encode","p","utf8ByteArrayToString","bytes","TextDecoder","decode","pos","c1","fromCharCode","c2","c3","c4","u","createEnum","values","initNum","enumObject","Object","create","keyVal","freeze","MatcherInputBase","Encoding","getEncoding","Error","isUTF8Encoding","UTF_8","isUTF16Encoding","UTF_16","Utf8MatcherInput","asCharSequence","asBytes","Utf16MatcherInput","charSequence","MatcherInput","utf16","utf8","input","isArray","MachineInputBase","EOF","canCheckPrefix","endPos","end","hasString","hasAnyString","prefixLength","MachineUTF8Input","start","prefilter","target","idx","ac8","searchUTF8","step","re2","prefixUTF8","context","lim","source","fromIndex","targetLength","limit","j","MachineUTF16Input","ac16","searchUTF16","prefix","MachineInput","fromUTF8","fromUTF16","RE2JSException","message","name","RE2JSSyntaxException","error","getDescription","getPattern","RE2JSCompileException","RE2JSGroupException","RE2JSFlagsException","RE2JSInternalException","Matcher","quoteReplacement","javaMode","pattern","patternInput","patternGroupCount","numberOfCapturingGroups","groups","namedGroups","numberOfInstructions","resetMatcherInput","reset","matcherInputLength","matcherInput","appendPos","hasMatch","hasGroups","anchorFlag","group","groupInt","Number","isFinite","loadGroup","programSize","substring","getNamedGroups","result","keys","groupCount","matchMachineInput","ok","matches","genMatch","lookingAt","find","machineInput","startByte","anchor","hasLookbehinds","prog","numLb","ngroup","slice","inputLength","appendReplacement","replacement","e","appendReplacementInternalJava","appendReplacementInternalJs","last","n","groupName","prototype","hasOwnProperty","call","appendTail","replaceAll","replace","replaceFirst","all","Inst","ALT","ALT_MATCH","CAPTURE","EMPTY_WIDTH","FAIL","MATCH","NOP","RUNE","RUNE1","RUNE_ANY","RUNE_ANY_NOT_NL","LB_WRITE","LB_CHECK","isRuneOp","escapeRunes","runes","arg","matchRune","r0","len","base","half","matchRunePos","lb","Thread","inst","cap","Queue","numInst","sparse","densePcs","denseThreads","size","contains","pc","isEmpty","add","clear","Machine","THREADS_CHUNK_SIZE","fromRE2","q0","q1","pool","poolSize","matched","matchcap","numCap","ncap","fromMachine","machine","init","initNewCap","resetCap","lbTable","fill","t","submatches","subarray","alloc","capLen","freeQueue","queue","freeThread","match","startCond","cond","runq","nextq","width","rune1","width1","flag","prefixRune","advance","lbStarts","nextPos","tmpq","matchSet","Set","sort","a","nextCond","atEnd","longest","q","d","opos","abs","hashPCs","pcs","h","imul","arraysEqual","DFAState","nfaStates","isMatch","matchIDs","nextLatin1","nextLatin1Anchored","transKeys","transVals","lastSeen","DFA","MAX_CACHE_CLEARS","stateCache","stateCount","startState","stateLimit","cacheClears","failed","clock","computeClosure","closure","stack","pop","getInst","includes","sortedPCs","getState","closureResult","hash","bucket","state","evictCache","allStates","keepCount","max","startIndex","survivorsArray","survivors","charCode","next","nextPCs","nextState","currentState","checkMatch","currentPos","forEach","id","VISITED_BITS","MAX_BACKTRACK_PROG","INITIAL_JOB_CAPACITY","MAX_BACKTRACK_VECTOR","BitState","jobPc","jobArg","jobPos","jobLen","visited","visitedSize","shouldVisit","mask","newSize","newPc","newArg","newPos","tryBacktrack","currentPc","skipShouldVisit","outInst","old","bitStatePool","Backtracker","shouldBacktrack","maxBitStateLen","execute","QueueOnePass","dense","nextIndex","empty","insert","insertNew","mergeRuneSets","leftRunes","rightRunes","leftPC","rightPC","leftLen","rightLen","lx","rx","merged","ix","extend","isLeft","newArray","low","OnePassProg","orig","onePassCopy","pAOther","pAAlt","instAlt","instOther","pBAlt","pBOther","patch","makeOnePass","instQueue","visitQueue","onePassRunes","check","matchOut","matchArg","tempOut","tempMatch","mergeRes","cleanupOnePass","original","instOriginal","OnePass","compile","startInst","hasAlt","opOut","nextIdx","onepass","Regexp","Op","isPseudoOp","LEFT_PAREN","emptySubs","quoteIfHyphen","fromRegexp","re","regex","flags","subs","min","reinit","appendTo","NO_MATCH","EMPTY_MATCH","STAR","PLUS","QUEST","REPEAT","sub","CONCAT","ALTERNATE","sep","ANY_CHAR_NOT_NL","ANY_CHAR","PLB","NLB","BEGIN_TEXT","END_TEXT","BEGIN_LINE","END_LINE","WORD_BOUNDARY","NO_WORD_BOUNDARY","CHAR_CLASS","maxCap","equals","that","AhoCorasick","wordArrays","fail","word","node","child","curr","failNode","charSeq","Prefilter","Type","NONE","EXACT","AND","OR","type","eval","PrefilterTree","build","pf","simplify","newSubs","seen","uniqueSubs","allExact","words16","arr","words8","PatchList","head","tail","Prog","addInst","skipNop","loop","append","l1","l2","Frag","nullable","Compiler","ANY_RUNE_NOT_NL","ANY_RUNE","compileRegexp","f","newInst","compileSet","regexps","starts","nop","cat","f1","f2","alt","nongreedy","quest","star","plus","lookBehind","any","dotStar","lbAutomaton","checkId","bra","ket","Simplify","nre","changed","nsub","simplify1","prefixSubs","suffix","nre2","CharGroup","sign","cls","code1","code2","code3","PERL_GROUPS","code4","code5","code6","code7","code8","code9","code10","code11","code12","code13","code14","code15","code16","code17","POSIX_GROUPS","CharClass","charClassToString","cmp","array","pivotFrom","pivotTo","qsortIntPair","left","right","pivotIndex","temp","toArray","cleanClass","w","appendLiteral","x","appendFoldedRange","appendRange","appendClass","appendFoldedClass","appendNegatedClass","nextLo","appendTable","table","appendNegatedTable","appendTableWithSign","negateClass","appendClassWithSign","appendGroup","g","foldCase","StringIterator","position","rewindTo","more","peek","skip","skipString","rest","startsWith","beforePos","Parser","ERR_INTERNAL_ERROR","ERR_INVALID_CHAR_RANGE","ERR_INVALID_ESCAPE","ERR_INVALID_NAMED_CAPTURE","ERR_INVALID_PERL_OP","ERR_INVALID_REPEAT_OP","ERR_INVALID_REPEAT_SIZE","ERR_MISSING_BRACKET","ERR_MISSING_PAREN","ERR_MISSING_REPEAT_ARGUMENT","ERR_TRAILING_BACKSLASH","ERR_DUPLICATE_NAMED_CAPTURE","ERR_UNEXPECTED_PAREN","ERR_NESTING_DEPTH","ERR_LARGE","MAX_HEIGHT","MAX_SIZE","MAX_RUNES","ANY_TABLE","ASCII_TABLE","ASCII_FOLD_TABLE","unicodeTable","tab","fold","minFoldRune","leadingRegexp","literalRegexp","parse","parseInternal","parseRepeat","parseInt","isValidCaptureName","parseFloat","isCharClass","mergeCharClass","dst","src","parseEscape","startPos","bigswitch","nhex","v","y","parseClassChar","wholeClassPos","concatRunes","wholeRegexp","free","numRegexp","numRunes","repeats","height","nlb","newRegexp","reuse","delete","checkLimits","checkSize","checkHeight","reEx","calcSize","force","calcHeight","hsub","popToPseudo","maybeConcat","re1","newLiteral","literal","repeat","lastRepeatPos","repeatIsValid","trunc","concat","collapse","alternate","cleanAlt","newsubs","factor","lensub","lenout","strlen","strflags","istr","istrlen","iflags","same","removeLeadingString","first","ifirst","removeLeadingRegexp","subMax","subJ","tmp","repeatPos","parsePosLookBehind","parseNegLookBehind","parsePerlFlags","parseVerticalBar","parseRightParen","parseClass","minMax","savedPos","lit","cc","parseUnicodeClass","parsePerlClassEscape","swapVerticalBar","begin","charAt","sawFlag","VERTICAL_BAR","re3","parseNamedClass","pair","AtomicReference","initialValue","newValue","compareAndSet","expect","update","RE2","initTest","expr","numSubexp","prefixComplete","compileImpl","compilePOSIX","mode","prefixCompl","prefixStr","pooled","dfa","matchPrefixComplete","matchStart","matchEnd","pLen","executeEngine","doExecuteNFA","dfaResult","put","isNew","matchWithGroup","groupMatch","matchUTF8","repl","replaceAllFunc","replFunc","maxReplaces","lastMatchEnd","searchPos","numReplaces","pad","a2","allMatches","deliverFun","prevMatchEnd","accept","findUTF8","findUTF8Index","findIndex","findUTF8Submatch","ret","findUTF8SubmatchIndex","findSubmatch","findSubmatchIndex","findAllUTF8","findAllUTF8Index","findAll","findAllIndex","findAllUTF8Submatch","findAllUTF8SubmatchIndex","findAllSubmatch","findAllSubmatchIndex","RE2Set","jsFlags","re2Flags","dummyRe2","fregex","internalAnchor","TranslateRegExpString","isUpperCaseAlpha","ch","isHexadecimal","translate","nextCh","cp","symSize","RE2JS","quote","translateRegExp","re2Input","testExact","flagsInput","matcher","test","emptiesSkipped","other"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/RE2Flags.js","../src/PublicFlags.js","../src/Codepoint.js","../src/UnicodeRangeTable.js","../src/UnicodeTables.js","../src/Unicode.js","../src/Utils.js","../src/helpers.js","../src/MatcherInput.js","../src/MachineInput.js","../src/exceptions.js","../src/Matcher.js","../src/Inst.js","../src/Machine.js","../src/DFA.js","../src/Backtracker.js","../src/OnePass.js","../src/Regexp.js","../src/Prefilter.js","../src/Prog.js","../src/Compiler.js","../src/Simplify.js","../src/CharGroup.js","../src/CharClass.js","../src/Parser.js","../src/RE2.js","../src/Set.js","../src/TranslateRegExpString.js","../src/index.js"],"sourcesContent":["//// Parser flags.\nclass RE2Flags {\n // Fold case during matching (case-insensitive).\n static FOLD_CASE = 0x01\n // Treat pattern as a literal string instead of a regexp.\n static LITERAL = 0x02\n // Allow character classes like [^a-z] and [[:space:]] to match newline.\n static CLASS_NL = 0x04\n // Allow '.' to match newline.\n static DOT_NL = 0x08\n // Treat ^ and $ as only matching at beginning and end of text, not\n // around embedded newlines. (Perl's default).\n static ONE_LINE = 0x10\n // Make repetition operators default to non-greedy.\n static NON_GREEDY = 0x20\n // allow Perl extensions:\n // non-capturing parens - (?: )\n // non-greedy operators - *? +? ?? {}?\n // flag edits - (?i) (?-i) (?i: )\n // i - FoldCase\n // m - !OneLine\n // s - DotNL\n // U - NonGreedy\n // line ends: \\A \\z\n // \\Q and \\E to disable/enable metacharacters\n // (?P<name>expr) for named captures\n // \\C (any byte) is not supported.\n static PERL_X = 0x40\n // Allow \\p{Han}, \\P{Han} for Unicode group and negation.\n static UNICODE_GROUPS = 0x80\n // Regexp END_TEXT was $, not \\z. Internal use only.\n static WAS_DOLLAR = 0x100\n // Allow captureless Lookbehinds (?<=) and (?<!)\n static LOOKBEHIND = 0x200\n\n static MATCH_NL = RE2Flags.CLASS_NL | RE2Flags.DOT_NL\n // As close to Perl as possible.\n static PERL = RE2Flags.CLASS_NL | RE2Flags.ONE_LINE | RE2Flags.PERL_X | RE2Flags.UNICODE_GROUPS\n // POSIX syntax.\n static POSIX = 0\n //// Anchors\n static UNANCHORED = 0\n static ANCHOR_START = 1\n static ANCHOR_BOTH = 2\n}\n\nexport { RE2Flags }\n","/**\n * Public flags for RE2JS and RE2Set compilation.\n */\nconst PublicFlags = {\n CASE_INSENSITIVE: 1, // case insensitive matching\n DOTALL: 2, // dot matches all characters, including newline\n MULTILINE: 4, // multiline matching\n DISABLE_UNICODE_GROUPS: 8, // unicode groups will be syntax errors\n LONGEST_MATCH: 16, // matches longest possible string\n LOOKBEHINDS: 512 // enable linear-time captureless lookbehinds\n}\n\nexport { PublicFlags }\n","/**\n * Various constants and helper for unicode codepoints.\n */\nconst ASCII_SIZE = 128\nconst ASCII_TO_UPPER = new Int32Array(ASCII_SIZE)\nconst ASCII_TO_LOWER = new Int32Array(ASCII_SIZE)\n// The highest legal Basic Multilingual Plane (BMP) value.\nconst MAX_BMP = 0xffff\n\nfor (let i = 0; i < ASCII_SIZE; i++) {\n if (i >= 97 && i <= 122) {\n // a-z\n ASCII_TO_UPPER[i] = i - 32\n } else {\n ASCII_TO_UPPER[i] = i\n }\n if (i >= 65 && i <= 90) {\n // A-Z\n ASCII_TO_LOWER[i] = i + 32\n } else {\n ASCII_TO_LOWER[i] = i\n }\n}\n\nclass Codepoint {\n // codePointAt(0)\n static CODES = new Map([\n ['\\x07', 7],\n ['\\b', 8],\n ['\\t', 9],\n ['\\n', 10],\n ['\\v', 11],\n ['\\f', 12],\n ['\\r', 13],\n [' ', 32],\n ['\"', 34],\n ['$', 36],\n ['&', 38],\n [\"'\", 39],\n ['(', 40],\n [')', 41],\n ['*', 42],\n ['+', 43],\n ['-', 45],\n ['.', 46],\n ['0', 48],\n ['1', 49],\n ['2', 50],\n ['3', 51],\n ['4', 52],\n ['5', 53],\n ['6', 54],\n ['7', 55],\n ['8', 56],\n ['9', 57],\n [':', 58],\n ['<', 60],\n ['>', 62],\n ['?', 63],\n ['A', 65],\n ['B', 66],\n ['C', 67],\n ['F', 70],\n ['P', 80],\n ['Q', 81],\n ['U', 85],\n ['Z', 90],\n ['[', 91],\n ['\\\\', 92],\n [']', 93],\n ['^', 94],\n ['_', 95],\n ['`', 96],\n ['a', 97],\n ['b', 98],\n ['f', 102],\n ['i', 105],\n ['m', 109],\n ['n', 110],\n ['r', 114],\n ['s', 115],\n ['t', 116],\n ['v', 118],\n ['x', 120],\n ['z', 122],\n ['{', 123],\n ['|', 124],\n ['}', 125]\n ])\n\n // convert unicode codepoint to upper case codepoint\n // return same codepoint, if cannot do it (or codepoint not have upper variation)\n static toUpperCase(codepoint) {\n if (codepoint < ASCII_SIZE) return ASCII_TO_UPPER[codepoint]\n\n const s = String.fromCodePoint(codepoint).toUpperCase()\n const expectedLen = s.codePointAt(0) > MAX_BMP ? 2 : 1\n if (s.length > expectedLen) {\n return codepoint\n }\n\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toLowerCase()\n const originExpectedLen = sOrigin.codePointAt(0) > MAX_BMP ? 2 : 1\n if (sOrigin.length > originExpectedLen || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n\n return s.codePointAt(0)\n }\n\n // convert unicode codepoint to lower case codepoint\n // return same codepoint, if cannot do it (or codepoint not have lower variation)\n static toLowerCase(codepoint) {\n if (codepoint < ASCII_SIZE) return ASCII_TO_LOWER[codepoint]\n\n const s = String.fromCodePoint(codepoint).toLowerCase()\n const expectedLen = s.codePointAt(0) > MAX_BMP ? 2 : 1\n if (s.length > expectedLen) {\n return codepoint\n }\n\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toUpperCase()\n const originExpectedLen = sOrigin.codePointAt(0) > MAX_BMP ? 2 : 1\n if (sOrigin.length > originExpectedLen || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n\n return s.codePointAt(0)\n }\n}\n\nexport { Codepoint }\n","class UnicodeRangeTable {\n constructor(data, isStride1 = false) {\n this.data = data // A Uint32Array\n this.isStride1 = isStride1\n this.SIZE = isStride1 ? 2 : 3\n }\n\n // High-performance getters that do NOT allocate memory\n getLo(index) {\n return this.data[index * this.SIZE]\n }\n\n getHi(index) {\n return this.data[index * this.SIZE + 1]\n }\n\n getStride(index) {\n return this.isStride1 ? 1 : this.data[index * this.SIZE + 2]\n }\n\n get length() {\n return this.data.length / this.SIZE\n }\n}\n\nexport { UnicodeRangeTable }\n","// GENERATED BY tools/scripts/genUnicodeTable.js; DO NOT EDIT.\n// yarn node ./tools/scripts/genUnicodeTable.js > src/UnicodeTables.js\n\nimport { UnicodeRangeTable } from './UnicodeRangeTable'\n\nconst B64_MAP = new Uint8Array(256)\nfor (\n let i = 0, b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-';\n i < 64;\n i++\n) {\n B64_MAP[b.charCodeAt(i)] = i\n}\n\nconst decodeVLQ = (str) => {\n const res = []\n let value = 0,\n shift = 0\n for (let i = 0; i < str.length; i++) {\n let digit = B64_MAP[str.charCodeAt(i)]\n value |= (digit & 0x1f) << shift\n if ((digit & 0x20) === 0) {\n res.push(value)\n value = 0\n shift = 0\n } else {\n shift += 5\n }\n }\n return res\n}\n\nconst decodeRanges = (str, isStride1) => {\n const res = decodeVLQ(str)\n const numRanges = isStride1 ? res.length / 2 : res.length / 3\n const out = new Uint32Array(numRanges * 3)\n let current = 0,\n resIdx = 0\n for (let i = 0; i < numRanges; i++) {\n current += res[resIdx++]\n out[i * 3] = current\n current += res[resIdx++]\n out[i * 3 + 1] = current\n out[i * 3 + 2] = isStride1 ? 1 : res[resIdx++]\n }\n return out\n}\n\nconst decodeOrbit = (str) => {\n const res = decodeVLQ(str)\n const map = new Map()\n let currentKey = 0\n for (let i = 0; i < res.length; i += 2) {\n currentKey += res[i]\n map.set(currentKey, res[i + 1])\n }\n return map\n}\n\nclass LazyMap {\n constructor(initializer) {\n this.initializer = initializer\n this.cache = new Map()\n }\n has(key) {\n return key in this.initializer\n }\n get(key) {\n if (this.cache.has(key)) return this.cache.get(key)\n const fn = this.initializer[key]\n const val = fn ? fn() : null\n this.cache.set(key, val)\n return val\n }\n}\n\nclass UnicodeTables {\n static _CASE_ORBIT = null\n static get CASE_ORBIT() {\n if (!this._CASE_ORBIT) {\n this._CASE_ORBIT = decodeOrbit(\n 'rCrDIzDYqpII-LiC8cQlHa+0HGrpI6EzClClOBmOBkOBoOBpOBnOBrOBsOBqOlByPBzPBxPyK5crCz+HCydD1dD4dB5dB6dC8dEgeBheCieDmeDpeHj-HCweD1fDxeB+9HBwfC1FE2eBxfBjeBjdD1eDmpIHycB0fEmdBgda6cBhdD4cB1cdyhBC0hBK+hBDhiBBiiBIqiBIgkHChkHKikHDjkHBkkHImkHYjjBBnkH9gGygBB0gBB+gBBhhBBlkHBihBBqhBBijBBqypB4OhzHB70H6BgzHD-GiHo8HBp8HBq8HBr8HBs8HBt8HBu8HBv8HBg8HBh8HBi8HBj8HBk8HBl8HBm8HBn8HB48HB58HB68HB78HB88HB98HB+8HB-8HBw8HBx8HBy8HBz8HB08HB18HB28HB38HBo9HBp9HBq9HBr9HBs9HBt9HBu9HBv9HBg9HBh9HBi9HBj9HBk9HBl9HBm9HBn9HE89HJz9HClaFs+HJj+HHwcQwdQ8-HJz-HqJpdErCBlG-ohBrypBBokH6lVm4+BBl4+B'\n )\n }\n return this._CASE_ORBIT\n }\n\n static _Print = null\n static get Print() {\n if (!this._Print) {\n this._Print = new UnicodeRangeTable(\n decodeRanges(\n 'hB9CBjBLBCpWBDFBFGBCCCBSBCsMBClBBDxBBDCBC2BBJaBFFBSVBC-FBCvBBD6BBDkDBP6BBDwBBDOBCbBDCCBJBGfBIqCBCgFBCHBDBBDVBCGBCEEBCBDIBDBBDDBJFFBCCBDBDYBDCBCFBFBBDVBCGBCBBCBBCBBDCCBDBFBBDCBEIIBCBCIIBPBLCBCIBCCBCVBCGBCBBCEBDJBCCBCCBDQQBCBDLBIGBCCBCHBDBBDVBCGBCBBCEBDIBDBBDCBICBFBBCEBDRBLBBCFBECBCDBEBBCCCBEEBEEBBBELBFEBECBCDBDHHPUBGMBCCBCWBCPBDIBCCBCDBIBBCCBCBBDDBDJBIVBCCBCWBCJBCEBDIBCCBCDBIBBGCBCDBDJBCCBNMBCCBCyBBCCBCFBFPBDZBCCBCRBEXBCIBCDDBFBEFFBEBCCCBGBHJBDCBN5BBFcBmBBBCCCBDBCXBCCCBVBDEBCCCBFBCJBDDBhBnCBCjBBFmBBCjBBCOBCMBmBlGBCGGD4LBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBDfBEZBH1CBDFBD-TBCbBE4CBIVBKXBKTBNMBCCBCBBN9CBDJBHJBHNBCKBH4CBIqBBGlCBLeBCLBFLBFEEBoBBDEBMrBBFZBHKBE9BBDgCBCcBDKBHJBHNBDtBBDLBVsCBClFBJ7BBEOBE9BBGqBBDKBJqBBG1QBDFBDlBBDFBDHBCGCBdBD0BBCOBCNBDFBCSBDCBCIBSXBJuBBSBBDaBCMBEhBBPgBBQrEBF5UBXKBWz4BBD9LBGsBBCGGD3BBIBBPXBKGBCGBCGBCGBCGBCGBCGBCGBC9DBjBZBC4CBN1GBbPBC+BBC1CBDmDBGqBBC9CBC1CBKvBBCszcBE2BBK7KBV3FBJ8GBV7BBEJBH3BBJlCBJLBHzDBMdBEtCBCKBFgBBC2BBKNBDJBDmDBZbBLFBDFBDFBKGBCGBC7BBF9DBDJBHj9KBNWBFwBBloItLBDpDBnBGBNEBGZBCEBCCCBCCBCCBoUBhBpBBHyBBCSBCDBFEBCmEBF9FBEFBDFBDFBDCBEGBCGBOBBDLBCZBCSBCBBCOBDNBjB6DBGCBFsBBE3CBCMBEwBwBBsBBjEcBEwBBQbBFjBBKdBGqBBGdBCkBBFNBrB9EBDJBHjBBFjBBFnBBJzBBMLBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBCnCBJIBxBSBCBBGgBBEaBGaBnB3BBFTBDxBBCBBGHBCCBCcBDCBFJBIIBI-BBhBmBBFLBK1BBEcBDaBGZBIDBNGBxCoCB4ByBBOyBBItBBJJBHlBBEcBJBBxGeBCpBBCCBDBBRFBJIBiBtBBJpBBXZBnBbBVWBKtCBFjBBK9BBCEBOYBIJBH0BBCRBJmBBK-CBCTBMRBCuBB-BGBCCCBCBCOBCKBH6BBGJBHDBCHBDBBDVBCGBCBBCEBCJBDBBDCBDHHGGBDGBEEBMJBCDDClBBCJBCDDCDBCJBCBBJBBe7CBCEBfnCBJJBnF1BBDlBBjBkCBMJBHMBU5BBHJBHTBdaBDOBFWB6F7BBlDyCBNHBDDDBGBCBBCdBCBBDLBKJBnCHBDtBBDKBcnCBJyCBOoCBIJB3CHB5ChBBPJBHIBCsBBCNBLcBEfBDVBCNBqCGBCBBCrBBECCBCCBHBJJBHFBCBBCkBBCBBCFBIJBHrBBFJB3HYBIQBCoBBEcB2CQQBwBBO6cBnDuDBCEBMjGBtyCiDBOvhBBRVBL68DBGmSB61G5BBn2B4RBIeBCJBFwCBCJBHdBDFBLlCBLJBCGBCUBGSBxN5BBnG6CBGYBDYBtBqCBF4BBIQBhCEBMGBK1mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBDDBh7D8HBEzNBHWBQQBQtBBDWBKzDB9B1HBLmBBDpCBJvDBWlCB7DTBNTBN2CBKYBoE0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBD9VBQEBCOBxiBeBHFB2GGBCQBDGBCBBCEBG9BBiBxDxDBrBBENBDJBFBBhKeBS5BBGxOxOBoBB3GqBBFhGhGBdBCVBJBBhHGBCDBCBBCOBCkGBDPBqBrCBFJBFBByYjCBtC8BBjGDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBBvIrBBFjDBNOBDOBCOBCkBBLtFB5BcBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBCmDBmgB-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIBnkzVvHB',\n false\n )\n )\n }\n return this._Print\n }\n\n static CATEGORIES = new LazyMap({\n C: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'AfBgDgBBOrWrWBHHBCBICCVuMuMnBBBzBBBE4B4BBGBcDBHQBXhGhGxBBB8BBBmDNB8BBByBBBQddBCCMEBhBGBsCiFiFJBBDBBXIICCBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBPMMBEB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKMMBDBbEByBPBDBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBjoIBvLBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCB-FCBHBBHBBHBBECBIIIBLBDBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIB-BGGBLBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMBxhBPBXJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBF-6DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBrCHBxDUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIlkzVBxHvw-FB',\n false\n )\n ),\n Cc: () => new UnicodeRangeTable(decodeRanges('AfgDgB', true)),\n Cf: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'tFzqBzqBBEBXhGhGyBhMhMBxCxCs5D9-B9-BBDBbEByBEBCJBw03B6H6HBBBimEQQj7IPBhjiBDBwmFHBn0rYffB+CB',\n false\n )\n ),\n Cn: () =>\n new UnicodeRangeTable(\n decodeRanges(\n '4bBBHDBICCVuMuMnBBBzBBBE4B4BBGBcDBHKBvI9B9BBmDmDBMB8BBByBBBQddBCCMEBjBEBuHJJBDDBXXICCBBBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBbFB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKmDmDNBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBDBvzIBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCC-FCBHBBHBBHBBECBIIIBIBGBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIBlCJBCBBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMB3iBJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBJ76DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBjGUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIm8yVBCdBhD-DBxHvw-BB---BBB---BBB',\n false\n )\n ),\n Co: () => new UnicodeRangeTable(decodeRanges('gg4B-nGh4hc9--BD9--B', true)),\n Cs: () => new UnicodeRangeTable(decodeRanges('gg2B--B', true)),\n L: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBHZBwBLLFGGBVBCeBCpOBFLBPEBICCiEEBCBBDDBCHHCCBCCCBSBCyCBCqEBJlFBClBBDHHBnBBoCaBFDBuBqBBkBBBCiDBCQQBIIBLLBBBDRRCdBe4CBMZZBfBKBBFGGBUBFKKEYYBXBIKBGXBCGBRpBB7B1BBETTIJBQPBFHBDBBDVBCGBCEEBCBERROBBCCBPBBLJJBEBFBBDVBCGBCBBCBBCBBgBDBCUUBBBRIBCCBCVBCGBCBBCEBETTQBBYMMBGBDBBDVBCGBCBBCEBEffBCCBBBQSSCFBECBCDBEBBCCCBEEBEEBBBELBX1B1BBGBCCBCWBCPBEbbBBBCBBDBBfFFBGBCCBCWBCJBCEBEffBBBCBBQBBSIBCCBCoBBDRRGCBJCBZFBGRBEXBCIBCDDBFB7BvBBCBBNGB7BBBCCCBDBCXBCCCBIBCBBKDDBDBCWWBCBhBgCgCBGBCjBBcEB0DqBBVRRBEBFDBEEEBIIBBBFMBNSSBkBBCGGDqBBCsKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPBR1CBDFBErTBDQBCZBGqCBHHBIRBOSBPRBPMBCCBQzBBkBFFkC4CBIEBDhBBCGGBkCBLeByBdBDEBMrBBFZB3BWBK0BBzC+C+CBtBBSHB3BdBOBBLrBBbjBBqBCBLjBBDKBGqBBDCBqBDBCFBCBBEGGB+FBhC1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGB1DOORMBmDFFDJBCEEBDBHGCBCBCKBDDBGEBF1B1BB8zC8zCBjHBHDBEBBNlBBCGGD3BBIRRBVBKGBCGBCGBCGBCGBCGBCGBCGBxC2O2OBrBrBBDBGBBF1CBHCBC5CBCDBGqBBC9CBSfBxBPBhQ-tGBhCs0VBkCtBBDsIBEPBLBBVuBBReBDlCByBIBDmDBDxCBVQBCCBCDBCWBezBBPxBB-BFBECCBMMBaBLWBacBIuBBdRRBDBCJBLEBCoBBYCBCHBVWBEEEBwBBCEEBDDBDBDCCZCBDKBICBNFBDFBDFBKGBCGBCqBBCNBHyDBej9KBNWBFwBBloItLBDpDBnBGBNEBGCCBIBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBlBZBHZBM4CBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmMcBEwBBwBfBOTBCHBHlBBLdBDjBBFHBxB9EBTjBBFjBBFnBBJzBBNKBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCQQBCBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4ByBBOyBBOjBBnBbBKWB7HpBBHBBRFB5BcBLJJBUBrBRBvBUBcWBN0BB6BBBDOOBrBBhBYBbjBBeDDJiBBENNBuBBPDBWCCkBRBCYBUBBgCGBCCCBCBCOBCJBIuBBnBHBDBBDVBCGBCBBCEBETTNEBfJBCDDClBBCaaCtBtBBzBBTDBVCBfvBBVBBC5F5FBtBBqBDBlBvBBV8B8BBpBBOoCoCBZBmBGB6FrBB1D-BBgBHBDDDBGBCBBCXBQCC-CHBDmBBRCCdLLBmBBIWWMtBBUTTBnCBoGgBBgBIBCkBBSyByBBcBxDGBCBBClBBWaaBEBCBBCfBPYYBqBBlISBQCCBLBChBB9DwCwCB4cBnHjGBtyCgDBQvhBBSFBa68DBGmSB61GdBj3B4RBIeBSuCBSdBTvBBRDBgBUBGSBxNsBB0G-BBhBYBDYBtBqCBGjCjCBLBhCBBCPPBNNB0mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBn7F0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BeBHFBmI9BBzEsBBLGBRiKiKBcBTrBBlPbBlHdBDwGwGBdBCCBCBBCGBDEBKBBhHGBCDBCBBCOBCkGB8BjCBI1lB1lBBCBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQBlqE-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB',\n false\n )\n ),\n LC: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBHZB7BLLBVBCeBCiGBCDBFvGBDZBhGDBDBBECBCHHCCBCCCBSBCyCBCqEBJlFBClBBKoBB44ClBBCGGDqBBDCBhV1CBDFBjkCKBGqBBDCBhCrBBgCMBChBBmD1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGBmIFFDJBCEEBDBHGCBCBCFBFDDBCBGEBF1B1BB8zC8zCB6DBDmDBHDBEBBNlBBCGGzoetBBTbBnEtCBCWBEDBCsCBZBBE2Z2ZBpBBGIBIvCBh6TGBNEBqgBZBHZBmlBvCBhDjBBFjBB1DKBCOBCGBCBBCKBCOBCGBCBBk2ByBBOyBB+CVBLVB74C-BBhrV-BBhBYBDYBtpZ0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BJBCTBHFB2uCjCB',\n false\n )\n ),\n Ll: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hDZB7BqBqBBWBCHBC2BCBQCBuBCDECBBBDCCDEEBFFDEEBBBDDDCCCDCCBCCDEECDDBDDBBBHGDCOCBSCBDDCEEC4BCBFBDDDBCCFICBjCBDZBiGCCEEEBBBTccBhBBCBBECBCWCBDBCGDB0B0BBuBBCgBCK0BCDMCBgDCxBoBBo6CqBBDCB5XFBjkCIBC2D2DBqBBgCMBChBBnD0ECBHBCgDCBHBJFBLHBJHBJFBLHBJHBJNBDHBJHBJHBJEBCBBHEEBBBCBBJDBDBBJHBLCBCBBzIEEBEEcKFDBBJDBF2B2Bs1CvBBCEEBGCFCCBCCBEBGiDCBIICFFNlBBCGG0oesBCUaCoEMCBBBC+BCBGBCCCDICFCCDCCBBBCSCGGGCMCFCCDOCbEE2ZqBBGIBIvCBh6TGBNEBqhBZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBnqZZBbGBCRBbZBbDBCCCBFBCKBbZBbZBbZBbZBbZBbZBbZBbZBbbBdYBCFBbYBCFBbYBCFBbYBCFBbYBCFBC15B15BBIBCTBHFB4vChBB',\n false\n )\n ),\n Lm: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wVRBFLBPEBICCmEGG-OnHnHlFBBuIBBFgBgBKEEhFoFoF1mBgEgE2R72B72BsDkTkTxOFBvF+BBOjBjBBjBByVOORMBg-CBByHgGgG2OsBsBBDBGiDiDB+C+CBBB34bjnBjnBBEBvIzDzDdBB6DIBxCYYpDDBEBB2OXXqEtDtDWBBoDDBKngVngVuBBBh-BFBCpBBCIB0sBhBhB2K04D04DnrTDB9PCBpBBBnRMBhCBBCPPB9-P9-PBCBCGBCBByhM9BBqGGBud0Q0QsSAB',\n false\n )\n ),\n Lo: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'qFQQhIFFBCBxGBB7ZaBFDBuBfBCJBkBBBCiDBCZZBLLBBBDRRCdBe4CBMZZBfBWVBrBYBIKBGXBCGBRoBB8B1BBETTIJBROBFHBDBBDVBCGBCEEBCBERROBBCCBPBBLJJBEBFBBDVBCGBCBBCBBCBBgBDBCUUBBBRIBCCBCVBCGBCBBCEBETTQBBYMMBGBDBBDVBCGBCBBCEBEffBCCBBBQSSCFBECBCDBEBBCCCBEEBEEBBBELBX1B1BBGBCCBCWBCPBEbbBBBCBBDBBfFFBGBCCBCWBCJBCEBEffBBBCBBQBBSIBCCBCoBBDRRGCBJCBZFBGRBEXBCIBCDDBFB7BvBBCBBNFB8BBBCCCBDBCXBCCCBIBCBBKDDBDBYDBhBgCgCBGBCjBBcEB0DqBBVRRBEBFDBEEEBIIBBBFMBNyDyDBnKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPByDrTBDQBCZBGqCBHHBIRBOSBPRBPMBCCBQzBBpBkCkCBhBBC0BBIEBDhBBCGGBkCBLeByBdBDEBMrBBFZB3BWBK0BBxFuBBSHB3BdBOBBLrBBbjBBqBCBLdByDDBCFBCBBE7hB7hBBCB4-C3BBZWBKGBCGBCGBCGBCGBCGBCGBCGBoR2B2BF1CBJCCB4CBFGGBpBBC9CBSfBxBPBhQ-tGBhC0wUBC2jBBkCnBBJrIBFPBLBBjCyByBBkCBqFoDoDEGBCCBCDBCWBezBBPxBB-BFBECCBMMBaBLWBacBIuBBuBEBDIBLEBCoBBYCBCHBVPBCFBEEEBwBBCEEBDDBDBDCCZBBEKBIPPBEBDFBDFBKGBCGByEiBBej9KBNWBFwBBloItLBDpDBkCCCBIBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBqDJBCsBBDeBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmMcBEwBBwBfBOTBCHBHlBBLdBDjBBFHBhEtCBjDnBBJzBB9CzBBN2JBKVBLHB5EFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCQQBCBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4FjBBnBDBCxJxJBoBBHBBRCBCBB5BcBLJJBUBrBRBvBUBcWBN0BB6BBBDOOBrBBhBYBbjBBeDDJiBBENNBuBBPDBWCCkBRBCYBUBBgCGBCCCBCBCOBCJBIuBBnBHBDBBDVBCGBCBBCEBETTNEBfJBCDDClBBCaaCtBtBBzBBTDBVCBfvBBVBBC5F5FBtBBqBDBlBvBBV8B8BBpBBOoCoCBZBmBGB6FrBB0GHBDDDBGBCBBCXBQCC-CHBDmBBRCCdLLBmBBIWWMtBBUTTBnCBoGgBBgBIBCkBBSyByBBcBxDGBCBBClBBWaaBEBCBBCfBPYYBnBBCBBlISBQCCBLBChBB9DwCwCB4cBnHjGBtyCgDBQvhBBSFBa68DBGmSB61GdBj3B4RBIeBSuCBSdBTvBB0BUBGSB0NnBB2MqCBGwFwFB0mHBqBfBiDyDBuwIiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBxzI2P2PBrBBiBiKiKBcBTrBBlPaBmHdBDwGwGBdBCCBCBBCGBDEBKiHiHBFBCDBCBBCOBCkGB8pBDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQBlqE-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB',\n false\n )\n ),\n Lt: () => new UnicodeRangeTable(decodeRanges('lOGDnB2sH2sHBGBJHBJHBNQQwBAB', false)),\n Lu: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBmDWBCGBiB2BCDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIJDCMCDQCDDDCCBC4BCIBBCBBDCCBCBCGCiJCCEJJHCCBBBCCCBCCBPBCIBkBDDBBBEWCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBpCDBNDBNDBNEBMDBnIFFECBDCBDEEBDBHGCBCBDDBLBBG+B+B9zCvBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoqZZBbZBbZBbCCBGDBDDBCBCHBbZBbBBCDBDHBCGBcBBCDBCEBCEEBFBcZBbZBbZBbZBbZBbZBfYBiBYBiBYBiBYBiBYBiB2pE2pEBgBB',\n false\n )\n ),\n M: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gYvDB0IGBoIsBBCCCBCCBCCpCKBxBUBRmDmDBFBDFBDBBCDBkBffBZB8CKB7BIBKZZBCBCIBCCBCEBsBCB8BIBrBXBCgBB3BCBCRBCGBLBBeCB5BCCBFBDBBDCBKLLBbbDCB5BCCBDBFBBDCBEffBEEMCB5BCCBGBCCBCCBVBBXFBCCB5BCCBFBDBBDCBICBLBBf8B8BBDBECBCDBKpBpBBDB4BCCBFBCCBCDBIBBMBBeCB5BCCBFBCCBCDBIBBMBBQNNBCB4BBBCGBCCBCDBKLLBeeBBBnCFFBEBCCCBGBTBB+BDDBFBNHBjDDDBHBMGBqCBBcECFBByBTBCBBGKBCjBBKlDlDBSBYDBFCBCCBDGBEDBOLBCLLBCBgWCBzdDBdCBeBBfBBhCfBKuBuBBBBC2D2DBjBjB3DLBFLB8GEB6BJBCcBDxBxBBsBBDLBVEBwBQBnBIBNCBfMB5BNBxBTB5ECBCUBFHHDCBnG-BBxWgBB--CCBuEhDhDBeBrRFBqDBB1udDBCJBhBBBxCBBxIEEFYYBDBF0C0CBzBzBBQBbRBOnBnBBGBaMBtBDBwBNBlBkCkCBMBNJJBuBuBBBBzBCCBBBDBBGBBCqBqBBDBGBBtHHBCBBx5TiXiXBOBRPBuejHjH2EEBn0BCBCBBGDBpBCBFmFmFB+R+RBCBiCEB+JBBuCFBnCKByBDB7DCB2BOBqBDDBLLBCBuBKBI+B+BBBBlBNBRBBtBNNBBBxBNBJDBCBB9CLBHDD+ELBWDB4BBBCGBDBBDCBKLLBDDBFBEEBkCIBCDDCDBCEBCPPBzCzCBQBYyCyCBSBsHGBDIBcBBzCQBrDMBmDOBhIOB2HFBCBBDDBCCCBuEuEBFBDGBEddBIBpBGBCDBJKKBJBvBPBnGHBoGHBCHBzCVBCNB7DFBECCBCCBFBCjCjCBDBCBBCEB8KDBKBBCxBxBBFBEEBYmnFmnFHOBpmLRBhuCEB8BGB5gBCCB1BBIDByCMMBslTslTBizEizEBsBBDWB-QEBEFBJHBDGBfDB1ECB89B2BBFxBBJPPXEBCOBxqBGBCQBDGBCBBCEBlDhFhFBFB4L+B+BBCB9PDB-HBB0HDDIBBG7O7OBFBuDGB29lYvHB',\n false\n )\n ),\n Mc: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'joC4B4BDCBJDBCBBzBBB7BCBHBBDBBLsBsB7BCBjC7B7BBBBJCCB2B2BB7B7BCHHBDDBLLnDBBCBBECBCCBLqBqBBBB+BDB+BBB7BCCBDBDBBCBBKBBdPPB7B7BBBBGCBCCBLrBrBBsCsCBBBHHBTBBrKBBgCsFsFBFFHDDBaaBLLBBBDGBWBBDFBDLLBBB5zBffiEIIBGBCBB7KDBDCBFBBCFBhHBB7BCCKCCBJJBEByExBxBGCCBDBCBB+BffFBBD9B9BDCBCEEBxBxBBGBJBBsFWW35EBB0-dBBD5C5CBzBzBBOBvEBBwBxBxBBFFBDDBBBvDBBDBBZuBuBCuDuDDBBGuHuHBCCBCCBCC0gZCCgEuBuBBBBFBB0DZZB8B8BxBCBKBBO+C+CBBBEBBCrFrFBBBgBBB7BBBCDBDBBDCBKLLB1C1CBBBIDDCDBCBBCmDmDBBBJBBErDrDBBBHCCBCBDuHuHBBBHDBDyDyDBBBJBBCuDuDCBBHoDoDCBBFmImIBBBK4H4HBEBCBBFDDCvEvEBBBJDBF1C1CeBB-BqGqGECCoGPPrDIID2G2GBDBFBBC-K-KBNNxBBBJBBCpvQpvQBBBlxD2BBpDBB0rYBBHFB',\n false\n )\n ),\n Me: () => new UnicodeRangeTable(decodeRanges('okBBB1xF-wB-wBBCBCCBsshBCB', false)),\n Mn: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gYvDB0IEBqIsBBCCCBCCBCCpCKBxBUBRmDmDBFBDFBDBBCDBkBffBZB8CKB7BIBKZZBCBCIBCCBCEBsBCB8BIBrBXBCfB4BCCFHBFEEBFBLBBe7B7BFDBJVVBbbDBB6BFFBFFBDDBBBEffBEEMBB6BFFBDBCBBFVVBXXBEBC7B7BDCCBCBJIIBMMBff+BNNzBEE4BCCBBBGCBCDBIBBMBBe7B7BDHHGBBVBBdBB6BBBFDBJVVBeepCIIBBBC7C7CDGBNHBjDDDBHBMGBqCBBcEC4BNBCEBCBBGKBCjBBKnDnDBCBCFBCBBDBBaBBFCBRDBODDBHHQgWgWBBBzdCBeBBfBBfBBhCBBCGBJDDBJBKuBuBBBBC2D2DBjBjB3DCBFBBKHHBBB8GBBD7B7BCGBCCCDHBHJBDxBxBBMBCeBDLBVDBxBCCBDBCGGpBIBNBBhBDBDBBCCB5BCCBEECCB7BHBDBB5ECBCMBCGBFHHEBBnG-BBxWMBFEEBKB--CCBuEhDhDBeBrRDBsDBB1udFFBIBhBBBxCBBxIEEFaaBGG4EBBbRBOnBnBBGBaKBvBCBxBDDBCBDBBoBkCkCBEBDBBDBBNJJwB0B0BCCBDBBGBBCrBrBBJJvHDDFx5Tx5TiXPBRPBuejHjH2EEBn0BCBCBBGDBpBCBFmFmFB+R+RBCBiCEB+JBBuCFBnCKByBDB8D3B3BBNBqBDDBLLBBByBDBDBBI+B+BBBBlBEBCHB-BNNB1B1BBHBLDBDgDgDBBBDCCBHHD+E+EEHBWBB6BBBEmBmBBFBEEBnCFBOECPBB2CHBDCBCYY1CFBCFFBCCBvHvHBCBHBBCBBcBB2CHBDCCBrDrDCDDBEBCmDmDCDDBCBCEBkIIBCBBhIBBCFFxEDBDBBFhBhBBIBpBFBDDBJKKBEBDCBvBMBCBBnGCCBBBCqGqGBFBCFBCzCzCBUBDGBCBBCBB7DFBECCBCCBFBCpCpCBEEC8K8KBMMB1B1BBDBGCCYmnFmnFHOBpmLLBECBhuCEB8BGB5gBgCgCBCByC5lT5lTBizEizEBsBBDWBhRCBSHBDGBfDB1ECB89B2BBFxBBJPPXEBCOBxqBGBCQBDGBCBBCEBlDhFhFBFB4L+B+BBCB9PDB-HBB0HDDIBBG7O7OBFBuDGB29lYvHB',\n false\n )\n ),\n N: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wBJB5DBBGDDBBBitBJBnEJBnGJB9MJB3DJBFFBtDJB3DJB3DJBDFBvDMB0DJBJGBoDJBpDGBISBuDJBhDJB3DJBnCTBtIJBnCJBwWTBybCBwHJBHJBXJBtJJBhEKBmFJBHJB3FJB3CJBnEJBHJB3gBEEBEBHJBnGyBBDEB3W7BBvCVB3TdBqrBqYqYaIBPCB4KDBrEJBfHBCOBhBJBoBOBh7cJB9FJBhKFB7EJBnBJBnGJBXJB3CJB3MJB34UJBuPsBBN4BBSBB2KaBlBDBeJJnEEBrGJBvdHBaGBoBIBsCEBXFBhFBBDPBDtBBhCIB1BBBfCBsCEBpDHBZHBqBGBrKFBxBJBHJB3IeB-EJBrBDBxDGBnEdBhEJB9BJBxEJBITB8HJB3KJB3DJB3LJBnDJBHTBtCLBlNSB+CJB3UJB3CcBkHJBnCJB3BJBnLJBnDUBshBuDBimPJBnpCJB3CJBnEJBCGBvQJBnIWB+KCB6nXJBnuBTBNTBtDYB2iBxBBhqCJBnNJB3PJB4HJBtWIBhEJB4Y6BBCCBCDBtCsBBCOBjeMBk3CJB',\n false\n )\n ),\n Nd: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wBJnxBJnEJnGJ9MJ3DJ3DJ3DJ3DJ3DJ3DJ3DJ3DJ3DJhDJ3DJnCJ3IJnCJn6BJnBJtJJhEJnFJHJ3FJ3CJnEJHJnuiBJnVJnBJnGJXJ3CJ3MJ34UJnsBJnkCJHJ9YJhEJ9BJxEJ3IJ3KJ3DJ3LJnDJHTtCJnNJnDJ3UJ3CJ3HJnCJ3BJnLJ3uQJnpCJ3CJnEJ3QJ37XJ12CxBhqCJnNJ3PJ4HJ2aJ30EJ',\n true\n )\n ),\n Nl: () =>\n new UnicodeRangeTable(\n decodeRanges('u3FCBwzCiBBDDB-zDaaBHBPCBs1dJBxyW0BBtOJJnEEBrhIuDBm8SCB', false)\n ),\n No: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'yFBBGDDBBB2pCFB5LFB5DCBmEGB6GGBSIByNJB2hBTB0jBJBhP20B20BEFBHJBnGPBqB3W3WB6BBvCVB3TdBqrB1kB1kBBCBrEJBfHBCOBhBJBoBOBxrdFBymWsBBiCDBSBB2KaBlBDB1pBHBaGBoBIBsCEBXFBhFBBDPBDtBBhCIB1BBBfCBsCEBpDHBZHBqBGBrKFBhLeB-EJBrBDBxDGBnETB8LTBmqBBBvNIBobSB0aUBn8SGB-YWBqhZTBNTBtDYBvqFIBid6BBCCBCDBtCsBBCOBjeMB',\n false\n )\n ),\n P: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hBCBCFBCDBLBBEBBbCBCccCkBkBGEELBBEEE-VJJzOFBqBBB0BCCDDDtBBBVBBCBBOCCBBBrCDBnDsBsBBMBqHCB3BOBgBmImIBLLtE5D5D6DnMnMNwLwL7CLLBpFpFBNBCmBmBBCBoCrCrCBDBFBBwDFBsFlTlTBHB4EuTuTtBBBvCCBoCBB+ECBCCBmBKB6JBB5GBBhEGBCFBhFBBLGBdCB9DDB8BEB-BBBhCHBM9Z9ZBWBJTBCMBCLBfBBPBB6TDBeBB+hBNBwCBBgBJB0MVBgCDBhBBB8XDBCBBxDwEwEBtBBCfBDLBkNCBFJBDLBRNNjD7C7CjgdBBuICBkDLL0DFB9LDB3CBBpBCBCyByBBwBwBiDMBRBB9DDB-DBBRBB6HzqUzqUBxGxGBIBXiBBCNBCFFCBB2ECBCFBCDBLBBEBBbCBCccCCCBFB7MCB9UxBxB-MoXoXoGgBgBxIIBnBxDxDBFBjCGB6CDByO-J-JjBlElEBDBtBDB+FGBuDBBCDB-DDBxBBBwCDBFOOCCB5CFBsDrJrJBCCBzDzDBDBLBBCpDpD7HWBqDCBdMBtCjEjEBBB9HpIpIBBB8E9C9CBGB0CCBCEB+CJB4GgDgDBDBrBBBmUBBrCMBwFxjBxjBBDB97CBB8zOBBmEiCiCBDBJpRpRBBBoJDBoK9lT9lTovHEB07C-a-aBAB',\n false\n )\n ),\n Pc: () => new UnicodeRangeTable(decodeRanges('-Cg-Hg-HBUU-u3BBBZCBwHAB', false)),\n Pd: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'tB9qB9qB0BiyDiyDmgBqgCqgCBEBiwDDDgBBBFdd-NUUwDxszBxszBBmBmBLqFqFhzD-J-J',\n false\n )\n ),\n Pe: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'pB0B0BgB+1D+1DC-6B-6BqtC4B4BQ7T7TCff-hBMCxChBhBCGC1MUChCCCiBmhBmhBCECtBGCtNICEGCDBB-ozB6G6GeOCESSCCCrF0B0BgBGD',\n false\n )\n ),\n Pf: () => new UnicodeRangeTable(decodeRanges('7F+6H+6HEddpuDCCFDDQEE', false)),\n Pi: () => new UnicodeRangeTable(decodeRanges('rFt7Ht7HDBBDaapuDCCFDDQEE', false)),\n Po: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hBCBCCBDECBLLBEEBcclCGGPBBI-V-VJzOzOBEBqB3B3BDDDtBBBVBBCBBOCCBBBrCDBnDsBsBBMBqHCB3BOBgBmImIBLLtE5D5D6DnMnMNwLwL7CLLBpFpFBNBCxDxDrCEBFBBwDFBsFlTlTBHBmY9D9DBBBoCBB+ECBCCBmBFBCDB6JBB5GBBhEGBCFBhFBBLGBdCB9DDB8BEB-BBBhCHBMjajaBJJBGBJIBDDBDCBEKBCCCBIB7kDDBCBBxDwEwEBFFBBBDDDBHBCBBCDDBLLBDBCJBDDBCCCBLBDCBtNCB6B+F+FjgdBBuICBkDLL0DFB9LDB3CBBpBCBCyByBBwBwBiDMBRBB9DDB-DBBRBB6HlxUlxUBFBDXXVBBDDBECBCDBICBHCCB2E2EBBBCCBDECBLLBEEBcclBDDB7M7MBBB9UxBxB-MoXoXoGgBgBxIIBnBxDxDBFBjCGB6CDB0ZlElEBDBtBDB+FGBuDBBCDB-DDBxBBBwCDBFOOCCB5CFBsDrJrJBCCBzDzDBDBLBBCpDpD7HWBqDCBdMBtCjEjEBBB9HpIpIBBB8E9C9CBGB0CCBCEB+CJB4GgDgDBDBrBBBmUBBrCMBwFxjBxjBBDB97CBB8zOBBmEiCiCBDBJpRpRBBBoJDBoK9lT9lTovHEB07C-a-aBAB',\n false\n )\n ),\n Ps: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'oBzBzBgB-1D-1DC-6B-6B-rCEEnB4B4BQ7T7TCff-hBMCxChBhBCGC1MUChCCCiBmhBmhBCECaTTCECtNICEGCDipzBipzB4GeeCMCESSCCCrFzBzBgBEEDAB',\n false\n )\n ),\n S: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'kBHHRCBgBCCcCCkBEBCBBDCCBCBDEEfgBgBrODBNNBGGBCCCBPB2DPPBxDxDsErIrIBBB3DCBDDDBvGvGLUUB4H4HIBBpEqLqLBHHB2H2H-DjEjEBGBlEwGwGqBmGmGiGCBQCCBBBDFBVECmEHBCFBCBBGDBmGBBxXJB0WuLuLlL+E+EBgBBiLJBKIBhiBCCBBBMCBOCBOCBOBBmCOOoBCBOCBUhBB-BBBCDBCBBLCCBBBGFBCECFMMBFFBDBGDBC7B7BBFFB2LBFcBD+HBXKByCtCBXnTBtBwBBDeBLyMBX+BBFfBD1LBDpEBmHFBmLBBvBZBC4CBN1GBbPBFOOBNNWBBHBB8CBB0HBBFJBhBlBBKRRBdBMdBJQQBeBLmBBQ-JBhuG-BBx0V2BB6RWBKBBoDBB+EDBLDB+RCBiHPPB+9T+9TpEgBBuLPBhCBB3BHBtBDBjDCCBBBD7E7EHRRBBBgBCCcCCiEGBCGBOBB6JIB6BQBDCBCMBEwBwBBrBB7zBBBwSmWmWBiKiKBGBnjC2kC2kCBbBr6SDBG3qU3qUk7DvHBLCBEzNBHWBQQBgDzDB9B1HBLmBBD7BBGCBXBBIdBF8BBWhCBE7F7FB1CBrbaagBaagBaagBaagBaa9B-PB4BDBzBHBCNBCBBp2BwNwNttCEE+DiOiOBvIvIBqBBFjDBNOBDOBCOBCkBBYgFB5BcBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBC7CBLAB',\n false\n )\n ),\n Sc: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'kB+D+DBCBqnB8D8DzPBBzPBBI2H2HoImSmS8sClmClmCBgBB37hBkuVkuVtD7E7E8GBBEBB3-HDB-4wBxtCxtC',\n false\n )\n ),\n Sk: () =>\n new UnicodeRangeTable(\n decodeRanges(\n '+CCCoCHHFEEqQDBNNBGGBCCCBPB2DPPBjoBjoB15FCCBBBMCBOCBOCBOBB9kEBBkzdWBKBBoDBBxePPBniUniUBPB8bCCjF4g9B4g9BBDB',\n false\n )\n ),\n Sm: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'rBRRBBB+BCCuBFFmBgBgB-XwQwQBBB8xGOOoBCBOCBsEoBoBBDBHlClCBDBGBBFGDIgBgBBDDCgBgBBqIBhBBB7CffBXBpBFB2OKK3BHBwDxKxKBDBDeBLPBhIiEBX+BBFfBDhIBxBUBDFB9+zB5Z5ZCCBlFRRBBB+BCCkEHHBCBitDBBhrwBx+Bx+BagBgBagBgBagBgBagBgBat5Ft5FB-uC-uCBHB',\n false\n )\n ),\n So: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'mFDDFCCyerIrIBgEgEBvGvGLUUB4H4HkQ2L2LjEFBClElEwGqBqBoMCBQCCBBBDFBVECmEHBCFBCBBGDBmGBBxXJB0WzWzW+EhBBiLJBKIBksBBBCDBCBBLCCBHHBEBCECFMMBPPCBBC7B7BBKKBDBDDBCBBCBBCGBCeBDBBCCCBdBtIHBFTBDGBDwCBCdBanBBHnCBXKByCtCBX2FBCIBC1BBJuDBC3HBtBrBBhC-HBhQvBBWBBHmBBDpEBmHFBmLBBvBZBC4CBN1GBbPBFOOBNNWBBHBBxKBBFJBhBlBBKRRBdBMdBJQQBeBLmBBQ-JBhuG-BBx0V2BBibDBLBBC+R+RBBBqqUPBuLPBhCBB3BHBuBCBlPEEFBBOBB6JIB6BQBDCBCMBEwBwBBrBB7zBBBwSpgBpgBBGBnjC2kC2kCBGBFQBr6SDBG3qU3qUk7DvHBLCBEzNBHWBQPBhDzDB9B1HBLmBBD7BBGCBXBBIdBF8BBWhCBE7F7FB1CBqlB-PB4BDBzBHBCNBCBBp2B96C96CiEyWyWBqBBFjDBNOBDOBCOBCkBBYgFB5BcBOrBBFIBIBBPFB7E6HBG4WBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBB-B3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBC7CBLAB',\n false\n )\n ),\n Z: () => new UnicodeRangeTable(decodeRanges('gBgEgEgvFgsCgsCBJBeBBGwBwBh9DAB', false)),\n Zl: () => new UnicodeRangeTable(decodeRanges('ohIA', true)),\n Zp: () => new UnicodeRangeTable(decodeRanges('phIA', true)),\n Zs: () => new UnicodeRangeTable(decodeRanges('gBgEgEgvFgsCgsCBJBlBwBwBh9DAB', false))\n })\n\n static get Upper() {\n return this.CATEGORIES.get('Lu')\n }\n\n static SCRIPTS = new LazyMap({\n Adlam: () => new UnicodeRangeTable(decodeRanges('go6DrCFJFB', true)),\n Ahom: () => new UnicodeRangeTable(decodeRanges('g4lCaDOFW', true)),\n Anatolian_Hieroglyphs: () => new UnicodeRangeTable(decodeRanges('ggxCmS', true)),\n Arabic: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gwBEBCFBCNBCCBCfBCJBMZBCrDBChBBxCvBBxHhBBGqCBCcBxy8BtPBDvEBhBPBxDEBCmEBk7DeBkCFBJIBiBFBh43BDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBB',\n false\n )\n ),\n Armenian: () => new UnicodeRangeTable(decodeRanges('xpBlBDxBDCks9BE', true)),\n Avestan: () => new UnicodeRangeTable(decodeRanges('g4iC1BEG', true)),\n Balinese: () => new UnicodeRangeTable(decodeRanges('g4GsCCxB', true)),\n Bamum: () => new UnicodeRangeTable(decodeRanges('g1pB3CpowB4R', true)),\n Bassa_Vah: () => new UnicodeRangeTable(decodeRanges('w26CdDF', true)),\n Batak: () => new UnicodeRangeTable(decodeRanges('g+GzBJD', true)),\n Bengali: () =>\n new UnicodeRangeTable(decodeRanges('gsCDBCHBDBBDVBCGBCEEBCBDIBDBBDDBJFFBCCBDBDYB', false)),\n Beria_Erfe: () => new UnicodeRangeTable(decodeRanges('g17CYDY', true)),\n Bhaiksuki: () => new UnicodeRangeTable(decodeRanges('ggnCICsBCNLc', true)),\n Bopomofo: () => new UnicodeRangeTable(decodeRanges('qXB6wLqBxDf', true)),\n Brahmi: () => new UnicodeRangeTable(decodeRanges('ggkCtCFjBKA', true)),\n Braille: () => new UnicodeRangeTable(decodeRanges('ggK-H', true)),\n Buginese: () => new UnicodeRangeTable(decodeRanges('gwGbDB', true)),\n Buhid: () => new UnicodeRangeTable(decodeRanges('g6FT', true)),\n Canadian_Aboriginal: () => new UnicodeRangeTable(decodeRanges('ggF-TxRlC7tgCP', true)),\n Carian: () => new UnicodeRangeTable(decodeRanges('g1gCwB', true)),\n Caucasian_Albanian: () => new UnicodeRangeTable(decodeRanges('wphCzBMA', true)),\n Chakma: () => new UnicodeRangeTable(decodeRanges('gokC0BCR', true)),\n Cham: () => new UnicodeRangeTable(decodeRanges('gwqB2BKNDJDD', true)),\n Cherokee: () => new UnicodeRangeTable(decodeRanges('g9E1CDFz7lBvC', true)),\n Chorasmian: () => new UnicodeRangeTable(decodeRanges('w9jCb', true)),\n Common: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'AgCBbFBbuBBCOBCEBYgBgBiOmBBGEBDTB1DKKHCC+THHPEEhB9E9ElQiEiEB6mB6mB2MDBjJwvBwvBBBBoCBBsGBBCumBumBOIIBCBCFBCCBDmYmYBKBD2CBCKBEKBCOBShBB-BlBBCCBDFBCaBCQBqBCBF5UBXKBW-cBhIzTBDpEBhQ9CBzMUBCCCBXBQHBFDB8CBBE7C7CB0E0EBOBhBlBBKxBxBB+BBgBwCBwB5C5CBmFBhuG-BBhoWhBBnDCBmFJB1HhFhFsMPPBzuUzuUBxGxGBIBXiBBCSBCDB0ECCBeBbFBbKBLuBuBBhChCBFBCGBLEBjICBFsBBEIBxCMB0BsBBlHaBltuBDB96D8HBEzNBHWBQQBgDzDB9B1HBLmBBD9BBEQBJBBIdBF8BB2GTBNTBN2CBKYBoE0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBDxBByjFjCBtC8BBjWrBBFjDBNOBDOBCOBCkBBLtFB5BZBCBBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBCmDBnghYffB+CB',\n false\n )\n ),\n Coptic: () => new UnicodeRangeTable(decodeRanges('ifNxkKzDGG', true)),\n Cuneiform: () => new UnicodeRangeTable(decodeRanges('ggoC5cnDuDCEMjG', true)),\n Cypriot: () => new UnicodeRangeTable(decodeRanges('ggiCFBDCCBqBBCBBEDD', false)),\n Cypro_Minoan: () => new UnicodeRangeTable(decodeRanges('w8rCiD', true)),\n Cyrillic: () =>\n new UnicodeRangeTable(\n decodeRanges('ggBkEBDoFBx6FKBhFtCtCojEfBhie-CBv8VBBhw4B9BBiBAB', false)\n ),\n Deseret: () => new UnicodeRangeTable(decodeRanges('gghCvC', true)),\n Devanagari: () => new UnicodeRangeTable(decodeRanges('goCwCFODZh7nBfhwcJ', true)),\n Dives_Akuru: () => new UnicodeRangeTable(decodeRanges('gomCGBDDDBGBCBBCdBCBBDLBKJB', false)),\n Dogra: () => new UnicodeRangeTable(decodeRanges('ggmC7B', true)),\n Duployan: () => new UnicodeRangeTable(decodeRanges('ggvDqDGMEIIJDD', true)),\n Egyptian_Hieroglyphs: () => new UnicodeRangeTable(decodeRanges('ggsC1iBL68D', true)),\n Elbasan: () => new UnicodeRangeTable(decodeRanges('gohCnB', true)),\n Elymaic: () => new UnicodeRangeTable(decodeRanges('g-jCW', true)),\n Ethiopic: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gwEoCBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBDfBEZBnvGWBKGBCGBCGBCGBCGBCGBCGBCGBjpfFBDFBDFBKGBCGBylvCGBCDBCBBCOB',\n false\n )\n ),\n Garay: () => new UnicodeRangeTable(decodeRanges('gqjClBEcJB', true)),\n Georgian: () =>\n new UnicodeRangeTable(decodeRanges('glElBBCGGDqBBCDBx8CqBBDCBhiElBBCGG', false)),\n Glagolitic: () => new UnicodeRangeTable(decodeRanges('ggL-Ch9sDGCQDGCBCE', true)),\n Gothic: () => new UnicodeRangeTable(decodeRanges('w5gCa', true)),\n Grantha: () =>\n new UnicodeRangeTable(decodeRanges('g4kCDBCHBDBBDVBCGBCBBCEBDIBDBBDCBDHHGGBDGBEEB', false)),\n Greek: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'wbDBCCBDDBCFFCCCBBBCCCBSBC+BBPPBnpGEBzBEBFEB1ChKhKBUBDFBDlBBDFBDHBCGCBdBD0BBCOBCNBDFBCSBDCBCIBoJ-xiB-xiB7uVuCBSgj0Bgj0BBkCB',\n false\n )\n ),\n Gujarati: () =>\n new UnicodeRangeTable(decodeRanges('h0CCBCIBCCBCVBCGBCBBCEBDJBCCBCCBDQQBCBDLBIGB', false)),\n Gunjala_Gondi: () => new UnicodeRangeTable(decodeRanges('grnCFCBCkBCBCFIJ', true)),\n Gurmukhi: () =>\n new UnicodeRangeTable(\n decodeRanges('hwCCBCFBFBBDVBCGBCBBCBBCBBDCCBDBFBBDCBEIIBCBCIIBPB', false)\n ),\n Gurung_Khema: () => new UnicodeRangeTable(decodeRanges('go4C5B', true)),\n Han: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'g0LZBC4CBN1GBwBCCaIBPDBle-tGBhC-vUBhoWtLBDpDBpodBBNGBqgkB-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB',\n false\n )\n ),\n Hangul: () =>\n new UnicodeRangeTable(decodeRanges('goE-HvxHBiI9CyDeiCei3dckUj9KNWFwBl9JeEFDFDFDC', true)),\n Hanifi_Rohingya: () => new UnicodeRangeTable(decodeRanges('gojCnBJJ', true)),\n Hanunoo: () => new UnicodeRangeTable(decodeRanges('g5FU', true)),\n Hatran: () => new UnicodeRangeTable(decodeRanges('gniCSCBGE', true)),\n Hebrew: () => new UnicodeRangeTable(decodeRanges('xsB2BBJaBFFBpp9BZBCEBCCCBCCBCCBIB', false)),\n Hiragana: () => new UnicodeRangeTable(decodeRanges('hiM1CBHCBi7-C+IBTeeBBBulQAB', false)),\n Imperial_Aramaic: () => new UnicodeRangeTable(decodeRanges('giiCVCI', true)),\n Inherited: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'gYvDB2IBBlOKBbhXhXBCB8qEtBBDLBlPCBCMBCGBFHHEBBnG-BBtQBBjGgBB65DDBsDBBmrzBPBRNBwejHjH7iEl+uBl+uBBsBBDWBhRCBSHBDGBfDBz6rYvHB',\n false\n )\n ),\n Inscriptional_Pahlavi: () => new UnicodeRangeTable(decodeRanges('g7iCSGH', true)),\n Inscriptional_Parthian: () => new UnicodeRangeTable(decodeRanges('g6iCVDH', true)),\n Javanese: () => new UnicodeRangeTable(decodeRanges('gsqBtCDJFB', true)),\n Kaithi: () => new UnicodeRangeTable(decodeRanges('gkkCiCLA', true)),\n Kannada: () => new UnicodeRangeTable(decodeRanges('gkDMCCCWCJCEDICCCDIBGCCDDJCC', true)),\n Katakana: () =>\n new UnicodeRangeTable(\n decodeRanges('hlM5CBDCBxHPBxGuBBC3CBvgzBJBCsBBzisBDBCGBCBBCgJgJBBBzBPPBCB', false)\n ),\n Kawi: () => new UnicodeRangeTable(decodeRanges('g4nCQCoBEc', true)),\n Kayah_Li: () => new UnicodeRangeTable(decodeRanges('goqBtBCA', true)),\n Kharoshthi: () => new UnicodeRangeTable(decodeRanges('gwiCDCBGHCCCcDCFJII', true)),\n Khitan_Small_Script: () => new UnicodeRangeTable(decodeRanges('k-7C84G84GB0OBqBAB', false)),\n Khmer: () => new UnicodeRangeTable(decodeRanges('g8F9CDJHJnPf', true)),\n Khojki: () => new UnicodeRangeTable(decodeRanges('gwkCRCuB', true)),\n Khudawadi: () => new UnicodeRangeTable(decodeRanges('w1kC6BGJ', true)),\n Kirat_Rai: () => new UnicodeRangeTable(decodeRanges('gq7C5B', true)),\n Lao: () => new UnicodeRangeTable(decodeRanges('h0DBBCCCBDBCXBCCCBVBDEBCCCBFBCJBDDB', false)),\n Latin: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBHZBwBQQGWBCeBCgOBoBEB8wGlBBHwBBGDBGMBClCBiC-HByLOORMBuEBBHccSoBB42CfBj1elDBExCBVOBxZqBBCIBCDB38TGB7gBZBHZBmhCFBCpBBCIBm61BeBHFB',\n false\n )\n ),\n Lepcha: () => new UnicodeRangeTable(decodeRanges('ggH3BEOEC', true)),\n Limbu: () => new UnicodeRangeTable(decodeRanges('goGeBCLBFLBFEEBKB', false)),\n Linear_A: () => new UnicodeRangeTable(decodeRanges('gwhC2JKVLH', true)),\n Linear_B: () => new UnicodeRangeTable(decodeRanges('gggCLCZCSCBCODNjB6D', true)),\n Lisu: () => new UnicodeRangeTable(decodeRanges('wmpBvBx1eA', true)),\n Lycian: () => new UnicodeRangeTable(decodeRanges('g0gCc', true)),\n Lydian: () => new UnicodeRangeTable(decodeRanges('gpiCZGA', true)),\n Mahajani: () => new UnicodeRangeTable(decodeRanges('wqkCmB', true)),\n Makasar: () => new UnicodeRangeTable(decodeRanges('g3nCY', true)),\n Malayalam: () => new UnicodeRangeTable(decodeRanges('goDMCCCyBCCCFFPDZ', true)),\n Mandaic: () => new UnicodeRangeTable(decodeRanges('giCbDA', true)),\n Manichaean: () => new UnicodeRangeTable(decodeRanges('g2iCmBFL', true)),\n Marchen: () => new UnicodeRangeTable(decodeRanges('wjnCfDVCN', true)),\n Masaram_Gondi: () => new UnicodeRangeTable(decodeRanges('gonCGBCBBCrBBECCBCCBHBJJB', false)),\n Medefaidrin: () => new UnicodeRangeTable(decodeRanges('gy7C6C', true)),\n Meetei_Mayek: () => new UnicodeRangeTable(decodeRanges('g3qBWqGtBDJ', true)),\n Mende_Kikakui: () => new UnicodeRangeTable(decodeRanges('gg6DkGDP', true)),\n Meroitic_Cursive: () => new UnicodeRangeTable(decodeRanges('gtiCXFTDtB', true)),\n Meroitic_Hieroglyphs: () => new UnicodeRangeTable(decodeRanges('gsiCf', true)),\n Miao: () => new UnicodeRangeTable(decodeRanges('g47CqCF4BIQ', true)),\n Modi: () => new UnicodeRangeTable(decodeRanges('gwlCkCMJ', true)),\n Mongolian: () => new UnicodeRangeTable(decodeRanges('ggGBBDCCBSBH4CBIqBB2t-BMB', false)),\n Mro: () => new UnicodeRangeTable(decodeRanges('gy6CeCJFB', true)),\n Multani: () => new UnicodeRangeTable(decodeRanges('g0kCGBCCCBCBCOBCKB', false)),\n Myanmar: () => new UnicodeRangeTable(decodeRanges('ggE-EhqmBeiDfxibT', true)),\n Nabataean: () => new UnicodeRangeTable(decodeRanges('gkiCeJI', true)),\n Nag_Mundari: () => new UnicodeRangeTable(decodeRanges('wm5DpB', true)),\n Nandinagari: () => new UnicodeRangeTable(decodeRanges('gtmCHDtBDK', true)),\n New_Tai_Lue: () => new UnicodeRangeTable(decodeRanges('gsGrBFZHKEB', true)),\n Newa: () => new UnicodeRangeTable(decodeRanges('gglC7CCE', true)),\n Nko: () => new UnicodeRangeTable(decodeRanges('g+B6BDC', true)),\n Nushu: () => new UnicodeRangeTable(decodeRanges('h-7CvsQvsQBqMB', false)),\n Nyiakeng_Puachue_Hmong: () => new UnicodeRangeTable(decodeRanges('go4DsBENDJFB', true)),\n Ogham: () => new UnicodeRangeTable(decodeRanges('g0Fc', true)),\n Ol_Chiki: () => new UnicodeRangeTable(decodeRanges('wiHvB', true)),\n Ol_Onal: () => new UnicodeRangeTable(decodeRanges('wu5DqBFA', true)),\n Old_Hungarian: () => new UnicodeRangeTable(decodeRanges('gkjCyBOyBIF', true)),\n Old_Italic: () => new UnicodeRangeTable(decodeRanges('g4gCjBKC', true)),\n Old_North_Arabian: () => new UnicodeRangeTable(decodeRanges('g0iCf', true)),\n Old_Permic: () => new UnicodeRangeTable(decodeRanges('w6gCqB', true)),\n Old_Persian: () => new UnicodeRangeTable(decodeRanges('g9gCjBFN', true)),\n Old_Sogdian: () => new UnicodeRangeTable(decodeRanges('g4jCnB', true)),\n Old_South_Arabian: () => new UnicodeRangeTable(decodeRanges('gziCf', true)),\n Old_Turkic: () => new UnicodeRangeTable(decodeRanges('ggjCoC', true)),\n Old_Uyghur: () => new UnicodeRangeTable(decodeRanges('w7jCZ', true)),\n Oriya: () => new UnicodeRangeTable(decodeRanges('h4CCCHDBDVCGCBCEDIDBDCICFBCEDR', true)),\n Osage: () => new UnicodeRangeTable(decodeRanges('wlhCjBFjB', true)),\n Osmanya: () => new UnicodeRangeTable(decodeRanges('gkhCdDJ', true)),\n Pahawh_Hmong: () => new UnicodeRangeTable(decodeRanges('g46ClCLJCGCUGS', true)),\n Palmyrene: () => new UnicodeRangeTable(decodeRanges('gjiCf', true)),\n Pau_Cin_Hau: () => new UnicodeRangeTable(decodeRanges('g2mC4B', true)),\n Phags_Pa: () => new UnicodeRangeTable(decodeRanges('giqB3B', true)),\n Phoenician: () => new UnicodeRangeTable(decodeRanges('goiCbEA', true)),\n Psalter_Pahlavi: () => new UnicodeRangeTable(decodeRanges('g8iCRIDNG', true)),\n Rejang: () => new UnicodeRangeTable(decodeRanges('wpqBjBMA', true)),\n Runic: () => new UnicodeRangeTable(decodeRanges('g1FqCEK', true)),\n Samaritan: () => new UnicodeRangeTable(decodeRanges('ggCtBDO', true)),\n Saurashtra: () => new UnicodeRangeTable(decodeRanges('gkqBlCJL', true)),\n Sharada: () => new UnicodeRangeTable(decodeRanges('gskC-ChsCH', true)),\n Shavian: () => new UnicodeRangeTable(decodeRanges('wihCvB', true)),\n Siddham: () => new UnicodeRangeTable(decodeRanges('gslC1BDlB', true)),\n Sidetic: () => new UnicodeRangeTable(decodeRanges('gqiCZ', true)),\n SignWriting: () => new UnicodeRangeTable(decodeRanges('gg2DrUQECO', true)),\n Sinhala: () =>\n new UnicodeRangeTable(decodeRanges('hsDCBCRBEXBCIBCDDBFBEFFBEBCCCBGBHJBDCBt-gCTB', false)),\n Sogdian: () => new UnicodeRangeTable(decodeRanges('w5jCpB', true)),\n Sora_Sompeng: () => new UnicodeRangeTable(decodeRanges('wmkCYIJ', true)),\n Soyombo: () => new UnicodeRangeTable(decodeRanges('wymCyC', true)),\n Sundanese: () => new UnicodeRangeTable(decodeRanges('g8G-BhIH', true)),\n Sunuwar: () => new UnicodeRangeTable(decodeRanges('g+mChBPJ', true)),\n Syloti_Nagri: () => new UnicodeRangeTable(decodeRanges('ggqBsB', true)),\n Syriac: () => new UnicodeRangeTable(decodeRanges('g4BNC7BDCxIK', true)),\n Tagalog: () => new UnicodeRangeTable(decodeRanges('g4FVKA', true)),\n Tagbanwa: () => new UnicodeRangeTable(decodeRanges('g7FMCCCB', true)),\n Tai_Le: () => new UnicodeRangeTable(decodeRanges('wqGdDE', true)),\n Tai_Tham: () => new UnicodeRangeTable(decodeRanges('gxG+BCcDKHJHN', true)),\n Tai_Viet: () => new UnicodeRangeTable(decodeRanges('g0qBiCZE', true)),\n Tai_Yo: () => new UnicodeRangeTable(decodeRanges('g25DeCVJB', true)),\n Takri: () => new UnicodeRangeTable(decodeRanges('g0lC5BHJ', true)),\n Tamil: () =>\n new UnicodeRangeTable(\n decodeRanges('i8CBBCFBECBCDBEBBCCCBEEBEEBBBELBFEBECBCDBDHHPUBm+kCxBBOAB', false)\n ),\n Tangsa: () => new UnicodeRangeTable(decodeRanges('wz6CuCCJ', true)),\n Tangut: () => new UnicodeRangeTable(decodeRanges('g-7CgBgBB+3GBhQeBiDyDB', false)),\n Telugu: () => new UnicodeRangeTable(decodeRanges('ggDMCCCWCPDICCCDIBCCCBDDDJII', true)),\n Thaana: () => new UnicodeRangeTable(decodeRanges('g8BxB', true)),\n Thai: () => new UnicodeRangeTable(decodeRanges('hwD5BGb', true)),\n Tibetan: () => new UnicodeRangeTable(decodeRanges('g4DnCCjBFmBCjBCOCGFB', true)),\n Tifinagh: () => new UnicodeRangeTable(decodeRanges('wpL3BIBPA', true)),\n Tirhuta: () => new UnicodeRangeTable(decodeRanges('gklCnCJJ', true)),\n Todhri: () => new UnicodeRangeTable(decodeRanges('guhCzB', true)),\n Tolong_Siki: () => new UnicodeRangeTable(decodeRanges('wtnCrBFJ', true)),\n Toto: () => new UnicodeRangeTable(decodeRanges('w04De', true)),\n Tulu_Tigalari: () =>\n new UnicodeRangeTable(decodeRanges('g8kCJBCDDClBBCJBCDDCDBCJBCBBJBB', false)),\n Ugaritic: () => new UnicodeRangeTable(decodeRanges('g8gCdCA', true)),\n Unknown: () =>\n new UnicodeRangeTable(\n decodeRanges(\n '4bBBHDBICCVuMuMnBBBzBBBE4B4BBGBcDBHKBvI9B9BBmDmDBMB8BBByBBBQddBCCMEBjBEBuHJJBDDBXXICCBBBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBbFB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKmDmDNBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBjoIBvLBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCC-FCBHBBHBBHBBECBIIIBIBGBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIBlCJBCBBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMB3iBJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBJ76DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBjGUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIm8yVBCdBhD-DBxHvw-FB',\n false\n )\n ),\n Vai: () => new UnicodeRangeTable(decodeRanges('gopBrJ', true)),\n Vithkuqi: () => new UnicodeRangeTable(decodeRanges('wrhCKCOCGCBCKCOCGCB', true)),\n Wancho: () => new UnicodeRangeTable(decodeRanges('g24D5BGA', true)),\n Warang_Citi: () => new UnicodeRangeTable(decodeRanges('glmCyCNA', true)),\n Yezidi: () => new UnicodeRangeTable(decodeRanges('g0jCpBCCDB', true)),\n Yi: () => new UnicodeRangeTable(decodeRanges('ggoBskBE2B', true)),\n Zanabazar_Square: () => new UnicodeRangeTable(decodeRanges('gwmCnC', true))\n })\n\n static FOLD_CATEGORIES = new LazyMap({\n L: () => new UnicodeRangeTable(decodeRanges('laA', true)),\n LC: () => new UnicodeRangeTable(decodeRanges('laA', true)),\n Ll: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hCZBmDWBCGBiBuBCEECDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIBBCBBCBBCOCDQCDBBCCCBBBC4BCIBBCBBDCCBCBCGC3HrBrBCEEJHHCCBCCCBCCBPBCIBkBJJCUCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBZHBJHBJHBJEBMEBMDBNEBMEBqJEEBHHxC9zC9zCBuBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoyehBB',\n false\n )\n ),\n Lt: () => new UnicodeRangeTable(decodeRanges('kOCCBCCBCClBCCtsHHBJHBJHBMQQwBAB', false)),\n Lu: () =>\n new UnicodeRangeTable(\n decodeRanges(\n 'hDZB7BqBqBBWBCHBCuBCEECDOCDsBCDECBBBDCCDEEGDDECBDDDCCCDFFDEECDDECCGBBCBBCBBCOCBSCDBBCEECkBCEQCJDDBCCFICBEBCBBCCCBEEBCCBCBCEBDCCBDDIDDCBBEFBGLLBnFnFsBCCEEEBBBvBDBCdBCBBECBCWCBDBCGD1BvBBCgBCK0BCDMCBgDCyBlBBq6CqBBDCB5XFBjkCIBCvHvHERRzD0ECGGGC8CCBHBJFBLHBJHBJFBMGCJHBJNBzBBBNSSBPPBEEpL2B2Bs1CvBBCEEBGCHDDLiDCJCCFNNBkBBCGG0oesBCUaCoEMCE8BCLCCDICFFFCBBDSCMOCFCCDOCb9a9advCBi8UZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBvyehBB',\n false\n )\n ),\n M: () => new UnicodeRangeTable(decodeRanges('5cgBgBlgHAB', false)),\n Mn: () => new UnicodeRangeTable(decodeRanges('5cgBgBlgHAB', false))\n })\n\n static FOLD_SCRIPT = new LazyMap({\n Common: () => new UnicodeRangeTable(decodeRanges('8cgBgB', false)),\n Greek: () => new UnicodeRangeTable(decodeRanges('1FwUwU', false)),\n Inherited: () => new UnicodeRangeTable(decodeRanges('5cgBgBlgHAB', false))\n })\n}\n\nexport { UnicodeTables }\n","import { Codepoint } from './Codepoint'\nimport { UnicodeTables } from './UnicodeTables'\n/**\n * Utilities for dealing with Unicode better than JS does.\n */\nclass Unicode {\n // The highest legal rune value.\n static MAX_RUNE = 0x10ffff\n // The highest legal ASCII value.\n static MAX_ASCII = 0x7f\n // The highest legal Latin-1 value.\n static MAX_LATIN1 = 0xff\n // The highest legal Basic Multilingual Plane (BMP) value.\n static MAX_BMP = 0xffff\n // Minimum and maximum runes involved in folding.\n // Checked during test.\n static MIN_FOLD = 0x0041\n static MAX_FOLD = 0x1e943\n\n static MIN_HIGH_SURROGATE = 0xd800\n static MAX_HIGH_SURROGATE = 0xdbff\n static MIN_LOW_SURROGATE = 0xdc00\n static MAX_LOW_SURROGATE = 0xdfff\n static MIN_SUPPLEMENTARY_CODE_POINT = 0x10000\n\n // is32 uses binary search to test whether rune is in the specified\n // slice of 32-bit ranges.\n static is32(ranges, r) {\n // binary search over ranges\n let lo = 0\n let hi = ranges.length\n while (lo < hi) {\n const m = lo + Math.floor((hi - lo) / 2)\n\n const rlo = ranges.getLo(m)\n const rhi = ranges.getHi(m)\n if (rlo <= r && r <= rhi) {\n const stride = ranges.getStride(m)\n return (r - rlo) % stride === 0\n }\n if (r < rlo) {\n hi = m\n } else {\n lo = m + 1\n }\n }\n return false\n }\n\n // is tests whether rune is in the specified table of ranges.\n static is(ranges, r) {\n // Fast path for Latin-1 characters using linear search.\n if (r <= this.MAX_LATIN1) {\n for (let i = 0; i < ranges.length; i++) {\n const rhi = ranges.getHi(i)\n if (r > rhi) {\n continue\n }\n\n const rlo = ranges.getLo(i)\n if (r < rlo) {\n return false\n }\n\n const stride = ranges.getStride(i)\n return (r - rlo) % stride === 0\n }\n return false\n }\n\n // Fallback to binary search for runes outside Latin-1\n return ranges.length > 0 && r >= ranges.getLo(0) && this.is32(ranges, r)\n }\n\n // isUpper reports whether the rune is an upper case letter.\n static isUpper(r) {\n if (r <= this.MAX_LATIN1) {\n const s = String.fromCodePoint(r)\n return s.toUpperCase() === s && s.toLowerCase() !== s\n }\n return this.is(UnicodeTables.Upper, r)\n }\n\n // isPrint reports whether the rune is printable (Unicode L/M/N/P/S or ' ').\n static isPrint(r) {\n if (r <= this.MAX_LATIN1) {\n return (r >= 0x20 && r < this.MAX_ASCII) || (r >= 0xa1 && r !== 0xad)\n }\n return this.is(UnicodeTables.Print, r)\n }\n\n // simpleFold iterates over Unicode code points equivalent under\n // the Unicode-defined simple case folding. Among the code points\n // equivalent to rune (including rune itself), SimpleFold returns the\n // smallest r >= rune if one exists, or else the smallest r >= 0.\n //\n // For example:\n // SimpleFold('A') = 'a'\n // SimpleFold('a') = 'A'\n //\n // SimpleFold('K') = 'k'\n // SimpleFold('k') = '\\u212A' (Kelvin symbol, K)\n // SimpleFold('\\u212A') = 'K'\n //\n // SimpleFold('1') = '1'\n //\n // Derived from Go's unicode.SimpleFold.\n //\n static simpleFold(r) {\n // Consult caseOrbit table for special cases.\n if (UnicodeTables.CASE_ORBIT.has(r)) {\n return UnicodeTables.CASE_ORBIT.get(r)\n }\n\n // No folding specified. This is a one- or two-element\n // equivalence class containing rune and toLower(rune)\n // and toUpper(rune) if they are different from rune.\n const l = Codepoint.toLowerCase(r)\n if (l !== r) {\n return l\n }\n return Codepoint.toUpperCase(r)\n }\n\n // equalsIgnoreCase performs case-insensitive equality comparison\n // on the given runes |r1| and |r2|, with special consideration\n // for the likely scenario where both runes are ASCII characters.\n // If non-ASCII, Unicode case folding will be performed on |r1|\n // to compare it to |r2|.\n // -1 is interpreted as the end-of-file mark.\n static equalsIgnoreCase(r1, r2) {\n // Runes already match\n if (r1 === r2) {\n return true\n }\n\n // Safely fail if either is EOF (and they didn't explicitly match above)\n if (r1 < 0 || r2 < 0) {\n return false\n }\n\n // Fast path for the common case where both runes are ASCII characters.\n // Coerces both runes to lowercase if applicable.\n if (r1 <= this.MAX_ASCII && r2 <= this.MAX_ASCII) {\n if (Codepoint.CODES.get('A') <= r1 && r1 <= Codepoint.CODES.get('Z')) {\n r1 |= 0x20\n }\n\n if (Codepoint.CODES.get('A') <= r2 && r2 <= Codepoint.CODES.get('Z')) {\n r2 |= 0x20\n }\n\n return r1 === r2\n }\n\n // Fall back to full Unicode case folding otherwise.\n // Invariant: r1 must be non-negative\n for (let r = this.simpleFold(r1); r !== r1; r = this.simpleFold(r)) {\n if (r === r2) {\n return true\n }\n }\n\n return false\n }\n}\n\nexport { Unicode }\n","import { Codepoint } from './Codepoint'\nimport { Unicode } from './Unicode'\n/**\n * Various constants and helper utilities.\n */\nclass Utils {\n static METACHARACTERS = '\\\\.+*?()|[]{}^$'\n\n //// EMPTY_* flags\n static EMPTY_BEGIN_LINE = 0x01\n static EMPTY_END_LINE = 0x02\n static EMPTY_BEGIN_TEXT = 0x04\n static EMPTY_END_TEXT = 0x08\n static EMPTY_WORD_BOUNDARY = 0x10\n static EMPTY_NO_WORD_BOUNDARY = 0x20\n static EMPTY_ALL = -1\n\n static emptyInts() {\n return []\n }\n\n static isByteArray(input) {\n return Array.isArray(input) || input instanceof Uint8Array\n }\n\n // Returns true iff |c| is an ASCII letter or decimal digit.\n static isalnum(c) {\n return (\n (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) ||\n (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('Z'))\n )\n }\n\n // If |c| is an ASCII hex digit, returns its value, otherwise -1.\n static unhex(c) {\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n return c - Codepoint.CODES.get('0')\n }\n if (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('f')) {\n return c - Codepoint.CODES.get('a') + 10\n }\n if (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('F')) {\n return c - Codepoint.CODES.get('A') + 10\n }\n return -1\n }\n\n // Appends a RE2 literal to |out| for rune |rune|,\n // with regexp metacharacters escaped.\n static escapeRune(rune) {\n let out = ''\n if (Unicode.isPrint(rune)) {\n if (this.METACHARACTERS.indexOf(String.fromCodePoint(rune)) >= 0) {\n out += '\\\\'\n }\n out += String.fromCodePoint(rune)\n } else {\n switch (rune) {\n case Codepoint.CODES.get('\"'): // '\"'\n out += '\\\\\"'\n break\n case Codepoint.CODES.get('\\\\'): // '\\\\'\n out += '\\\\\\\\'\n break\n case Codepoint.CODES.get('\\t'): // '\\t'\n out += '\\\\t'\n break\n case Codepoint.CODES.get('\\n'): // '\\n'\n out += '\\\\n'\n break\n case Codepoint.CODES.get('\\r'): // '\\r'\n out += '\\\\r'\n break\n case Codepoint.CODES.get('\\b'): // '\\b'\n out += '\\\\b'\n break\n case Codepoint.CODES.get('\\f'): // '\\f'\n out += '\\\\f'\n break\n default: {\n let s = rune.toString(16)\n if (rune < 0x100) {\n out += '\\\\x'\n if (s.length === 1) {\n out += '0'\n }\n out += s\n } else {\n out += `\\\\x{${s}}`\n }\n break\n }\n }\n }\n return out\n }\n\n // Returns the array of runes in the specified Java UTF-16 string.\n static stringToRunes(str) {\n return Array.from(String(str)).map((s) => s.codePointAt(0))\n }\n\n // Returns the Java UTF-16 string containing the single rune |r|.\n static runeToString(r) {\n return String.fromCodePoint(r)\n }\n\n // isWordRune reports whether r is consider a ``word character''\n // during the evaluation of the \\b and \\B zero-width assertions.\n // These assertions are ASCII-only: the word characters are [A-Za-z0-9_].\n static isWordRune(r) {\n return (\n (Codepoint.CODES.get('a') <= r && r <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= r && r <= Codepoint.CODES.get('Z')) ||\n (Codepoint.CODES.get('0') <= r && r <= Codepoint.CODES.get('9')) ||\n r === Codepoint.CODES.get('_')\n )\n }\n\n // emptyOpContext returns the zero-width assertions satisfied at the position\n // between the runes r1 and r2, a bitmask of EMPTY_* flags.\n // Passing r1 == -1 indicates that the position is at the beginning of the\n // text.\n // Passing r2 == -1 indicates that the position is at the end of the text.\n // eslint-disable-next-line no-warning-comments\n // TODO(adonovan): move to Machine.\n static emptyOpContext(r1, r2) {\n let op = 0\n if (r1 < 0) {\n op |= this.EMPTY_BEGIN_TEXT | this.EMPTY_BEGIN_LINE\n }\n if (r1 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_BEGIN_LINE\n }\n if (r2 < 0) {\n op |= this.EMPTY_END_TEXT | this.EMPTY_END_LINE\n }\n if (r2 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_END_LINE\n }\n if (this.isWordRune(r1) !== this.isWordRune(r2)) {\n op |= this.EMPTY_WORD_BOUNDARY\n } else {\n op |= this.EMPTY_NO_WORD_BOUNDARY\n }\n return op\n }\n\n /**\n * Returns a string that quotes all regular expression metacharacters inside the argument text;\n * the returned string is a regular expression matching the literal text. For example,\n * {@code quoteMeta(\"[foo]\").equals(\"\\\\[foo\\\\]\")}.\n * @param {string} s\n * @returns {string}\n */\n static quoteMeta(str) {\n return str\n .split('') // A char loop is correct because all metacharacters fit in one UTF-16 code.\n .map((s) => {\n if (this.METACHARACTERS.indexOf(s) >= 0) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n static charCount(codePoint) {\n return codePoint > Unicode.MAX_BMP ? 2 : 1\n }\n\n static stringToUtf8ByteArray(str) {\n if (globalThis.TextEncoder) {\n return Array.from(new TextEncoder().encode(str))\n } else {\n // fallback, if no TextEncoder\n let out = [],\n p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n (c & 0xfc00) === Unicode.MIN_HIGH_SURROGATE &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === Unicode.MIN_LOW_SURROGATE\n ) {\n // Surrogate Pair\n c =\n Unicode.MIN_SUPPLEMENTARY_CODE_POINT +\n ((c & 0x03ff) << 10) +\n (str.charCodeAt(++i) & 0x03ff)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n }\n }\n\n static utf8ByteArrayToString(bytes) {\n if (globalThis.TextDecoder) {\n return new TextDecoder('utf-8').decode(new Uint8Array(bytes))\n } else {\n // fallback, if no TextDecoder\n let out = [],\n pos = 0,\n c = 0\n while (pos < bytes.length) {\n let c1 = bytes[pos++]\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1)\n } else if (c1 > 191 && c1 < 224) {\n let c2 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63))\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n let c4 = bytes[pos++]\n let u =\n (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n Unicode.MIN_SUPPLEMENTARY_CODE_POINT\n out[c++] = String.fromCharCode(Unicode.MIN_HIGH_SURROGATE + (u >> 10))\n out[c++] = String.fromCharCode(Unicode.MIN_LOW_SURROGATE + (u & 1023))\n } else {\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))\n }\n }\n return out.join('')\n }\n }\n}\n\nexport { Utils }\n","// helper to create enums\n// example\n// Encoding[(Encoding['UTF_16'] = 0)] = 'UTF_16'\n// Encoding[(Encoding['UTF_8'] = 1)] = 'UTF_8'\nconst createEnum = (values = [], initNum = 0) => {\n const enumObject = Object.create(null)\n for (let i = 0; i < values.length; i++) {\n const val = values[i]\n const keyVal = initNum + i\n enumObject[val] = keyVal\n enumObject[keyVal] = val\n }\n return Object.freeze(enumObject)\n}\n\nexport { createEnum }\n","import { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Abstract the representations of input text supplied to Matcher.\n */\nclass MatcherInputBase {\n static Encoding = createEnum(['UTF_16', 'UTF_8'])\n\n getEncoding() {\n throw Error('not implemented')\n }\n\n /**\n *\n * @returns {boolean}\n */\n isUTF8Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_8\n }\n\n /**\n *\n * @returns {boolean}\n */\n isUTF16Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_16\n }\n}\n\nclass Utf8MatcherInput extends MatcherInputBase {\n constructor(bytes = null) {\n super()\n this.bytes = bytes\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_8\n }\n /**\n *\n * @returns {string}\n */\n asCharSequence() {\n return Utils.utf8ByteArrayToString(this.bytes)\n }\n\n /**\n *\n * @returns {number[]}\n */\n asBytes() {\n return this.bytes\n }\n\n /**\n *\n * @returns {number}\n */\n length() {\n return this.bytes.length\n }\n}\n\nclass Utf16MatcherInput extends MatcherInputBase {\n constructor(charSequence = null) {\n super()\n this.charSequence = charSequence\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_16\n }\n\n /**\n *\n * @returns {string}\n */\n asCharSequence() {\n return this.charSequence\n }\n\n /**\n *\n * @returns {number[]}\n */\n asBytes() {\n return Utils.stringToUtf8ByteArray(this.charSequence.toString())\n }\n\n /**\n *\n * @returns {number}\n */\n length() {\n return this.charSequence.length\n }\n}\n\nclass MatcherInput {\n /**\n * Return the MatcherInput for UTF_16 encoding.\n * @returns {Utf16MatcherInput}\n */\n static utf16(charSequence) {\n return new Utf16MatcherInput(charSequence)\n }\n\n /**\n * Return the MatcherInput for UTF_8 encoding.\n * @returns {Utf8MatcherInput}\n */\n static utf8(input) {\n if (Utils.isByteArray(input)) {\n return new Utf8MatcherInput(input)\n }\n\n return new Utf8MatcherInput(Utils.stringToUtf8ByteArray(input))\n }\n}\n\nexport { MatcherInput, MatcherInputBase }\n","import { Utils } from './Utils'\nimport { Unicode } from './Unicode'\n\n/**\n * MachineInput abstracts different representations of the input text supplied to the Machine. It\n * provides one-character lookahead.\n */\nclass MachineInputBase {\n static EOF() {\n return -1 << 3\n }\n\n // can we look ahead without losing info?\n canCheckPrefix() {\n return true\n }\n\n // Returns the end position in the same units as step().\n endPos() {\n return this.end\n }\n\n hasString() {\n return false\n }\n\n hasAnyString() {\n return false\n }\n\n // Helper for the exact-literal fast-path execution router\n prefixLength() {\n return 0\n }\n}\n\n// An implementation of MachineInput for UTF-8 byte arrays.\n// |pos| and |width| are byte indices.\nclass MachineUTF8Input extends MachineInputBase {\n constructor(bytes, start = 0, end = bytes.length) {\n super()\n this.bytes = bytes\n this.start = start\n this.end = end\n }\n\n hasString(prefilter, pos) {\n const target = prefilter.bytes\n if (target.length === 0) return true\n\n // Reuse the high-speed indexOf method already implemented below\n const idx = this.indexOf(this.bytes, target, this.start + pos)\n return idx !== -1 && idx <= this.end - target.length\n }\n\n // Executes a high-speed, single - pass search for multiple literal strings\n // simultaneously using an Aho-Corasick automaton.\n hasAnyString(prefilter, pos) {\n if (!prefilter.ac8) return false\n\n return prefilter.ac8.searchUTF8(this.bytes, this.start + pos, this.end)\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start\n if (pos >= this.end) {\n return MachineInputBase.EOF()\n }\n\n // Read UTF-8 bytes to extract the Rune and its width\n const c = this.bytes[pos] & 0xff\n if (c < 0x80) {\n return (c << 3) | 1\n } else if (c >= 0xc2 && c <= 0xdf && pos + 1 < this.end) {\n const c1 = this.bytes[pos + 1] & 0xff\n if ((c1 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const rune = ((c & 0x1f) << 6) | (c1 & 0x3f)\n return (rune << 3) | 2\n } else if (c >= 0xe0 && c <= 0xef && pos + 2 < this.end) {\n const c1 = this.bytes[pos + 1] & 0xff\n if ((c1 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const c2 = this.bytes[pos + 2] & 0xff\n if ((c2 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const rune = ((c & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f)\n return (rune << 3) | 3\n } else if (c >= 0xf0 && c <= 0xf4 && pos + 3 < this.end) {\n const c1 = this.bytes[pos + 1] & 0xff\n if ((c1 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const c2 = this.bytes[pos + 2] & 0xff\n if ((c2 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const c3 = this.bytes[pos + 3] & 0xff\n if ((c3 & 0xc0) !== 0x80) return (c << 3) | 1\n\n const rune = ((c & 0x07) << 18) | ((c1 & 0x3f) << 12) | ((c2 & 0x3f) << 6) | (c3 & 0x3f)\n return (rune << 3) | 4\n } else {\n // Invalid sequence fallback\n return (c << 3) | 1\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.indexOf(this.bytes, re2.prefixUTF8, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n let r1 = -1\n if (pos > this.start && pos <= this.end) {\n let start = pos - 1\n r1 = this.bytes[start--]\n if (r1 >= 128) {\n let lim = pos - 4\n if (lim < this.start) {\n lim = this.start\n }\n while (start >= lim && (this.bytes[start] & 192) === 128) {\n start--\n }\n\n if (start < this.start) {\n start = this.start\n }\n r1 = this.step(start - this.start) >> 3\n }\n }\n const r2 = pos < this.end ? this.step(pos - this.start) >> 3 : -1\n return Utils.emptyOpContext(r1, r2)\n }\n\n // Returns the index of the first occurrence of array |target| within\n // array |source| after |fromIndex|, or -1 if not found.\n indexOf(source, target, fromIndex = 0) {\n let targetLength = target.length\n if (targetLength === 0) {\n return fromIndex <= this.end ? fromIndex : -1\n }\n\n let limit = this.end - targetLength\n for (let i = fromIndex; i <= limit; i++) {\n for (let j = 0; j < targetLength; j++) {\n if (source[i + j] !== target[j]) {\n break\n } else if (j === targetLength - 1) {\n return i\n }\n }\n }\n\n return -1\n }\n\n prefixLength(re2) {\n return re2.prefixUTF8.length\n }\n}\n\n// |pos| and |width| are in JS \"char\" units.\nclass MachineUTF16Input extends MachineInputBase {\n constructor(charSequence, start = 0, end = charSequence.length) {\n super()\n this.charSequence = charSequence\n this.start = start\n this.end = end\n }\n\n hasString(prefilter, pos) {\n const idx = this.charSequence.indexOf(prefilter.str, this.start + pos)\n return idx !== -1 && idx <= this.end - prefilter.str.length\n }\n\n // Executes a high-speed, single - pass search for multiple literal strings\n // simultaneously using an Aho-Corasick automaton.\n hasAnyString(prefilter, pos) {\n if (!prefilter.ac16) return false\n\n return prefilter.ac16.searchUTF16(this.charSequence, this.start + pos, this.end)\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start\n if (pos >= this.end) {\n return MachineInputBase.EOF()\n }\n\n const c1 = this.charSequence.charCodeAt(pos)\n\n // Fast path: standard BMP character (not a high surrogate)\n if (c1 < Unicode.MIN_HIGH_SURROGATE || c1 > Unicode.MAX_HIGH_SURROGATE || pos + 1 >= this.end) {\n return (c1 << 3) | 1\n }\n\n // Slow path: Calculate surrogate pair manually\n const c2 = this.charSequence.charCodeAt(pos + 1)\n if (c2 >= Unicode.MIN_LOW_SURROGATE && c2 <= Unicode.MAX_LOW_SURROGATE) {\n const rune =\n (c1 - Unicode.MIN_HIGH_SURROGATE) * 0x400 +\n (c2 - Unicode.MIN_LOW_SURROGATE) +\n Unicode.MIN_SUPPLEMENTARY_CODE_POINT\n return (rune << 3) | 2\n }\n\n // Invalid surrogate pair fallback\n return (c1 << 3) | 1\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.charSequence.indexOf(re2.prefix, pos)\n\n if (i < 0 || i > this.end - re2.prefix.length) {\n return -1\n }\n\n return i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n\n const r1 = pos > this.start && pos <= this.end ? this.charSequence.codePointAt(pos - 1) : -1\n const r2 = pos < this.end ? this.charSequence.codePointAt(pos) : -1\n\n return Utils.emptyOpContext(r1, r2)\n }\n\n prefixLength(re2) {\n return re2.prefix.length\n }\n}\n\nclass MachineInput {\n static fromUTF8(bytes, start = 0, end = bytes.length) {\n return new MachineUTF8Input(bytes, start, end)\n }\n\n static fromUTF16(charSequence, start = 0, end = charSequence.length) {\n return new MachineUTF16Input(charSequence, start, end)\n }\n}\n\nexport { MachineInputBase, MachineInput }\n","class RE2JSException extends Error {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSException'\n }\n}\n\n/**\n * An exception thrown by the parser if the pattern was invalid.\n */\nclass RE2JSSyntaxException extends RE2JSException {\n /**\n * @param {string} error\n * @param {string|null} [input=null]\n */\n constructor(error, input = null) {\n let message = `error parsing regexp: ${error}`\n if (input) {\n message += `: \\`${input}\\``\n }\n\n super(message)\n this.name = 'RE2JSSyntaxException'\n this.message = message\n /** @type {string} */\n this.error = error\n /** @type {string|null} */\n this.input = input\n }\n\n /**\n * Retrieves the description of the error.\n * @returns {string}\n */\n getDescription() {\n return this.error\n }\n\n /**\n * Retrieves the erroneous regular-expression pattern.\n * @returns {string|null}\n */\n getPattern() {\n return this.input\n }\n}\n\n/**\n * An exception thrown by the compiler\n */\nclass RE2JSCompileException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSCompileException'\n }\n}\n\n/**\n * An exception thrown by using groups\n */\nclass RE2JSGroupException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSGroupException'\n }\n}\n\n/**\n * An exception thrown by flags\n */\nclass RE2JSFlagsException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSFlagsException'\n }\n}\n\n/**\n * An exception thrown for internal engine errors, such as corrupted bytecodes.\n */\nclass RE2JSInternalException extends RE2JSException {\n /** @param {string} message */\n constructor(message) {\n super(message)\n this.name = 'RE2JSInternalException'\n }\n}\n\nexport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException,\n RE2JSInternalException\n}\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MachineInput } from './MachineInput'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { Utils } from './Utils'\nimport { RE2JSGroupException } from './exceptions'\n\n/**\n * A stateful iterator that interprets a regex {@code RE2JS} on a specific input.\n *\n * Conceptually, a Matcher consists of four parts:\n * <ol>\n * <li>A compiled regular expression {@code RE2JS}, set at construction and fixed for the lifetime\n * of the matcher.</li>\n *\n * <li>The remainder of the input string, set at construction or {@link #reset()} and advanced by\n * each match operation such as {@link #find}, {@link #matches} or {@link #lookingAt}.</li>\n *\n * <li>The current match information, accessible via {@link #start}, {@link #end}, and\n * {@link #group}, and updated by each match operation.</li>\n *\n * <li>The append position, used and advanced by {@link #appendReplacement} and {@link #appendTail}\n * if performing a search and replace from the input to an external {@code StringBuffer}.\n *\n * </ol>\n *\n *\n * @author rsc@google.com (Russ Cox)\n */\nclass Matcher {\n /**\n * Quotes '\\' and '$' in {@code s}, so that the returned string could be used in\n * {@link #appendReplacement} as a literal replacement of {@code s}.\n *\n * @param {string} str the string to be quoted\n * @param {boolean} [javaMode=false] whether the replacement will be used in javaMode\n * @returns {string} the quoted string\n */\n static quoteReplacement(str, javaMode = false) {\n if (javaMode) {\n // Java mode escape '\\' and '$' with a backslash\n if (str.indexOf('\\\\') < 0 && str.indexOf('$') < 0) {\n return str\n }\n\n return str\n .split('')\n .map((s) => {\n const c = s.codePointAt(0)\n if (c === Codepoint.CODES.get('\\\\') || c === Codepoint.CODES.get('$')) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n // In JS mode, '\\' is not a special character, but '$' must be escaped as '$$'\n if (str.indexOf('$') < 0) {\n return str\n }\n return str\n .split('')\n .map((s) => {\n if (s.codePointAt(0) === Codepoint.CODES.get('$')) {\n return '$$'\n }\n return s\n })\n .join('')\n }\n /**\n *\n * @param {RE2JS} pattern\n * @param {Utf8MatcherInput|Utf16MatcherInput|number[]|string} input\n */\n constructor(pattern, input) {\n if (pattern === null) {\n throw new Error('pattern is null')\n }\n // The pattern being matched.\n this.patternInput = pattern\n const re2 = this.patternInput.re2()\n // The number of submatches (groups) in the pattern.\n /** @type {number} */\n this.patternGroupCount = re2.numberOfCapturingGroups()\n // The group indexes, in [start, end) pairs. Zeroth pair is overall match.\n /** @type {number[]} */\n this.groups = []\n /** @type {Record<string, number>} */\n this.namedGroups = re2.namedGroups\n /** @type {number} */\n this.numberOfInstructions = re2.numberOfInstructions()\n\n if (input instanceof MatcherInputBase) {\n this.resetMatcherInput(input)\n } else if (Utils.isByteArray(input)) {\n this.resetMatcherInput(MatcherInput.utf8(input))\n } else {\n this.resetMatcherInput(MatcherInput.utf16(input))\n }\n }\n\n /**\n * Returns the {@code RE2JS} associated with this {@code Matcher}.\n * @returns {RE2JS}\n */\n pattern() {\n return this.patternInput\n }\n\n /**\n * Resets the {@code Matcher}, rewinding input and discarding any match information.\n *\n * @returns {Matcher} the {@code Matcher} itself, for chained method calls\n */\n reset() {\n // The input length in UTF16 codes.\n /** @type {number} */\n this.matcherInputLength = this.matcherInput.length()\n // The append position: where the next append should start.\n /** @type {number} */\n this.appendPos = 0\n // Is there a current match?\n this.hasMatch = false\n // Have we found the submatches (groups) of the current match?\n // group[0], group[1] are set regardless.\n this.hasGroups = false\n // The anchor flag to use when repeating the match to find subgroups.\n this.anchorFlag = 0\n return this\n }\n\n /**\n * Resets the {@code Matcher} and changes the input.\n * @param {Utf8MatcherInput|Utf16MatcherInput} input\n * @returns {Matcher} the {@code Matcher} itself, for chained method calls\n */\n resetMatcherInput(input) {\n if (input === null) {\n throw new Error('input is null')\n }\n this.matcherInput = input\n this.reset()\n return this\n }\n\n /**\n * Returns the start of the named group of the most recent match, or -1 if the group was not\n * matched.\n * @param {string|number} [group=0]\n * @returns {number}\n */\n start(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group]\n }\n\n /**\n * Returns the end of the named group of the most recent match, or -1 if the group was not\n * matched.\n * @param {string|number} [group=0]\n * @returns {number}\n */\n end(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group + 1]\n }\n\n /**\n * Returns the program size of this pattern.\n *\n * <p>\n * Similar to the C++ implementation, the program size is a very approximate measure of a regexp's\n * \"cost\". Larger numbers are more expensive than smaller numbers.\n * </p>\n *\n * @returns {number} the program size of this pattern\n */\n programSize() {\n return this.numberOfInstructions\n }\n\n /**\n * Returns the named group of the most recent match, or {@code null} if the group was not matched.\n * @param {string|number} [group=0]\n * @returns {?string}\n */\n group(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n const start = this.start(group)\n const end = this.end(group)\n if (start < 0 && end < 0) {\n return null\n }\n return this.substring(start, end)\n }\n\n /**\n * Returns a dictionary map of all named capturing groups and their matched values.\n * If a group was not matched, its value will be `null`.\n * @returns {Record<string, string|null>}\n */\n getNamedGroups() {\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted')\n }\n\n const result = Object.create(null)\n for (const name of Object.keys(this.namedGroups)) {\n result[name] = this.group(name)\n }\n return result\n }\n\n /**\n * Returns the number of subgroups in this pattern.\n *\n * @returns {number} the number of subgroups; the overall match (group 0) does not count\n */\n groupCount() {\n return this.patternGroupCount\n }\n\n /**\n * Helper: finds subgroup information if needed for group.\n * @param {number} group\n * @private\n */\n loadGroup(group) {\n if (group < 0 || group > this.patternGroupCount) {\n throw new RE2JSGroupException(`Group index out of bounds: ${group}`)\n }\n\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted')\n }\n\n if (group === 0 || this.hasGroups) {\n return\n }\n\n const end = this.matcherInputLength\n\n const res = this.patternInput\n .re2()\n .matchMachineInput(\n this.matcherInput,\n this.groups[0],\n end,\n this.anchorFlag,\n 1 + this.patternGroupCount\n )\n\n const ok = res[0]\n if (!ok) {\n throw new RE2JSGroupException('inconsistency in matching group data')\n }\n this.groups = res[1]\n this.hasGroups = true\n }\n\n /**\n * Matches the entire input against the pattern (anchored start and end). If there is a match,\n * {@code matches} sets the match state to describe it.\n *\n * @returns {boolean} true if the entire input matches the pattern\n */\n matches() {\n return this.genMatch(0, RE2Flags.ANCHOR_BOTH)\n }\n\n /**\n * Matches the beginning of input against the pattern (anchored start). If there is a match,\n * {@code lookingAt} sets the match state to describe it.\n *\n * @returns {boolean} true if the beginning of the input matches the pattern\n */\n lookingAt() {\n return this.genMatch(0, RE2Flags.ANCHOR_START)\n }\n\n /**\n * Matches the input against the pattern (unanchored), starting at a specified position. If there\n * is a match, {@code find} sets the match state to describe it.\n *\n * @param {number} [start=null] the input position where the search begins\n * @returns {boolean} if it finds a match\n * @throws IndexOutOfBoundsException if start is not a valid input position\n */\n find(start = null) {\n if (start !== null) {\n if (start < 0 || start > this.matcherInputLength) {\n throw new RE2JSGroupException(`start index out of bounds: ${start}`)\n }\n this.reset()\n return this.genMatch(start, 0)\n }\n // no start\n start = 0\n if (this.hasMatch) {\n start = this.groups[1]\n if (this.groups[0] === this.groups[1]) {\n // Safely calculate structural encoding width to avoid sequence corruption\n const machineInput = this.matcherInput.isUTF16Encoding()\n ? MachineInput.fromUTF16(this.matcherInput.asCharSequence(), 0, this.matcherInputLength)\n : MachineInput.fromUTF8(this.matcherInput.asBytes(), 0, this.matcherInputLength)\n\n const r = machineInput.step(start)\n if (r < 0) {\n // EOF\n start++ // Advance past length to force loop exit\n } else {\n start += r & 7 // Advance by safely decoded width\n }\n }\n }\n\n return this.genMatch(start, RE2Flags.UNANCHORED)\n }\n\n /**\n * Helper: does match starting at start, with RE2 anchor flag.\n * @param {number} startByte\n * @param {number} anchor\n * @returns {boolean}\n * @private\n */\n genMatch(startByte, anchor) {\n const hasLookbehinds = this.patternInput.re2().prog.numLb > 0\n const ngroup = hasLookbehinds ? 1 + this.patternGroupCount : 1\n\n const res = this.patternInput\n .re2()\n .matchMachineInput(this.matcherInput, startByte, this.matcherInputLength, anchor, ngroup)\n\n const ok = res[0]\n if (!ok) {\n return false\n }\n this.groups = res[1]\n this.hasMatch = true\n this.hasGroups = hasLookbehinds || this.patternGroupCount === 0\n this.anchorFlag = anchor\n return true\n }\n\n /**\n * Helper: return substring for [start, end).\n * @param {number} start\n * @param {number} end\n * @returns {string}\n */\n substring(start, end) {\n if (this.matcherInput.isUTF8Encoding()) {\n return Utils.utf8ByteArrayToString(this.matcherInput.asBytes().slice(start, end))\n }\n return this.matcherInput.asCharSequence().substring(start, end).toString()\n }\n\n /**\n * Helper for Pattern: return input length.\n * @returns {number}\n */\n inputLength() {\n return this.matcherInputLength\n }\n\n /**\n * Appends to result two strings: the text from the append position up to the beginning of the\n * most recent match, and then the replacement with submatch groups substituted for references of\n * the form {@code $n}, where {@code n} is the group number in decimal. It advances the append\n * position to where the most recent match ended.\n *\n * To embed a literal {@code $}, use \\$ (actually {@code \"\\\\$\"} with string escapes). The escape\n * is only necessary when {@code $} is followed by a digit, but it is always allowed. Only\n * {@code $} and {@code \\} need escaping, but any character can be escaped.\n *\n * The group number {@code n} in {@code $n} is always at least one digit and expands to use more\n * digits as long as the resulting number is a valid group number for this pattern. To cut it off\n * earlier, escape the first digit that should not be used.\n *\n * @param {string} replacement the replacement string\n * @param {boolean} [javaMode=false] activate java mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @throws IllegalStateException if there was no most recent match\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group\n * @private\n */\n appendReplacement(replacement, javaMode = false) {\n let res = ''\n const s = this.start()\n const e = this.end()\n if (this.appendPos < s) {\n res += this.substring(this.appendPos, s)\n }\n this.appendPos = e\n res += javaMode\n ? this.appendReplacementInternalJava(replacement)\n : this.appendReplacementInternalJs(replacement)\n return res\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n * @private\n */\n appendReplacementInternalJava(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('\\\\')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n last = i\n continue\n }\n\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n throw new RE2JSGroupException(`n > number of groups: ${n}`)\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('{')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('}') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('}')) {\n throw new RE2JSGroupException(\"named capture group is missing trailing '}'\")\n }\n\n const groupName = replacement.substring(i + 1, j)\n const groupVal = this.group(groupName)\n if (groupVal !== null) {\n res += groupVal\n }\n last = j + 1\n i = j\n continue\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n * @private\n */\n appendReplacementInternalJs(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('$') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n res += '$'\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('&') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n const group = this.group(0)\n if (group !== null) {\n res += group\n } else {\n res += '$&'\n }\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('`') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n res += this.substring(0, this.start(0))\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get(\"'\") === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n res += this.substring(this.end(0), this.matcherInputLength)\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('1') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n res += `$${n}`\n last = i\n i--\n continue\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('<')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('>') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('>')) {\n res += replacement.substring(i - 1, j + 1)\n last = j + 1\n i = j\n continue\n }\n\n const groupName = replacement.substring(i + 1, j)\n if (Object.prototype.hasOwnProperty.call(this.namedGroups, groupName)) {\n const groupVal = this.group(groupName)\n if (groupVal !== null) {\n res += groupVal\n }\n } else {\n res += `$<${groupName}>`\n }\n\n last = j + 1\n i = j\n continue\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * Return the substring of the input from the append position to the end of the\n * input.\n * @returns {string}\n */\n appendTail() {\n return this.substring(this.appendPos, this.matcherInputLength)\n }\n\n /**\n * Returns the input with all matches replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [javaMode=false] - activate java mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the matches replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and javaMode is true\n */\n replaceAll(replacement, javaMode = false) {\n return this.replace(replacement, true, javaMode)\n }\n\n /**\n * Returns the input with the first match replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [javaMode=false] - activate java mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the first match replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and javaMode is true\n */\n replaceFirst(replacement, javaMode = false) {\n return this.replace(replacement, false, javaMode)\n }\n\n /**\n * Helper: replaceAll/replaceFirst hybrid.\n * @param {string} replacement - the replacement string\n * @param {boolean} [all=true] - replace all matches\n * @param {boolean} [javaMode=false] - activate java mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @private\n */\n replace(replacement, all = true, javaMode = false) {\n let res = ''\n\n this.reset()\n while (this.find()) {\n res += this.appendReplacement(replacement, javaMode)\n if (!all) {\n break\n }\n }\n\n res += this.appendTail()\n return res\n }\n}\n\nexport { Matcher }\n","import { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { Unicode } from './Unicode'\n/**\n * A single instruction in the regular expression virtual machine.\n *\n * @see http://swtch.com/~rsc/regexp/regexp2.html\n */\nclass Inst {\n static ALT = 1\n static ALT_MATCH = 2\n static CAPTURE = 3\n static EMPTY_WIDTH = 4\n static FAIL = 5\n static MATCH = 6\n static NOP = 7\n static RUNE = 8\n static RUNE1 = 9\n static RUNE_ANY = 10\n static RUNE_ANY_NOT_NL = 11\n static LB_WRITE = 12\n static LB_CHECK = 13\n\n static isRuneOp(op) {\n return Inst.RUNE <= op && op <= Inst.RUNE_ANY_NOT_NL\n }\n\n // Returns an RE2 expression matching exactly |runes|.\n static escapeRunes(runes) {\n let out = '\"'\n for (let rune of runes) {\n out += Utils.escapeRune(rune)\n }\n out += '\"'\n return out\n }\n\n constructor(op) {\n this.op = op\n this.out = 0 // all but MATCH, FAIL\n this.arg = 0 // ALT, ALT_MATCH, CAPTURE, EMPTY_WIDTH\n // length==1 => exact match\n // otherwise a list of [lo,hi] pairs. hi is *inclusive*.\n this.runes = []\n }\n\n // MatchRune returns true if the instruction matches (and consumes) r.\n // It should only be called when op == InstRune.\n matchRune(r) {\n // Special case: single-rune slice is from literal string, not char\n // class.\n if (this.runes.length === 1) {\n const r0 = this.runes[0]\n // If this pattern is case-insensitive, apply Unicode case folding to compare the two runes.\n // Note that this may result in a case-folding loop when executed,\n // so attempt to reduce the chance of that occurring\n // by performing case folding on |r0| from the pattern rather than |r| from the input.\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r)\n }\n return r === r0\n }\n\n const len = this.runes.length\n if (len === 0) return false\n\n // If the array is exactly 2, 4, 6, or 8 items, DO NOT fall through to binary search\n if (len === 2 || len === 4 || len === 6 || len === 8) {\n for (let j = 0; j < len; j += 2) {\n if (r < this.runes[j]) {\n return false\n }\n if (r <= this.runes[j + 1]) {\n return true\n }\n }\n return false // Stop here\n }\n\n // Branchless Binary Search (Lower Bound)\n // Compiles to optimal conditional move (cmov) machine code, preventing\n // branch mispredictions on large, chaotic Unicode arrays\n let base = 0\n let n = len >> 1\n while (n > 1) {\n const half = n >> 1\n base += this.runes[(base + half) << 1] <= r ? half : 0\n n -= half\n }\n base += this.runes[base << 1] <= r ? 1 : 0\n\n const m = base - 1\n return m >= 0 && r <= this.runes[(m << 1) | 1]\n }\n\n // matchRunePos checks whether the instruction matches (and consumes) r.\n // If so, it returns the index of the matching rune pair.\n // If not, it returns -1.\n matchRunePos(r) {\n if (this.runes.length === 1) {\n const r0 = this.runes[0]\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r) ? 0 : -1\n }\n return r === r0 ? 0 : -1\n }\n\n const len = this.runes.length\n if (len === 0) return -1\n\n if (len === 2 || len === 4 || len === 6 || len === 8) {\n for (let j = 0; j < len; j += 2) {\n if (r < this.runes[j]) return -1\n if (r <= this.runes[j + 1]) return Math.floor(j / 2)\n }\n return -1\n }\n\n // Branchless Binary Search (Lower Bound)\n let base = 0\n let n = len >> 1\n while (n > 1) {\n const half = n >> 1\n base += this.runes[(base + half) << 1] <= r ? half : 0\n n -= half\n }\n base += this.runes[base << 1] <= r ? 1 : 0\n\n const m = base - 1\n return m >= 0 && r <= this.runes[(m << 1) | 1] ? m : -1\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n switch (this.op) {\n case Inst.ALT:\n return `alt -> ${this.out}, ${this.arg}`\n case Inst.ALT_MATCH:\n return `altmatch -> ${this.out}, ${this.arg}`\n case Inst.CAPTURE:\n return `cap ${this.arg} -> ${this.out}`\n case Inst.EMPTY_WIDTH:\n return `empty ${this.arg} -> ${this.out}`\n case Inst.MATCH:\n return `match${this.arg !== 0 ? ` ${this.arg}` : ''}`\n case Inst.FAIL:\n return 'fail'\n case Inst.NOP:\n return `nop -> ${this.out}`\n case Inst.LB_WRITE:\n return `lbwrite ${this.lb} -> ${this.out}`\n case Inst.LB_CHECK:\n return `lbcheck ${this.lb} -> ${this.out}, ${this.arg}`\n case Inst.RUNE:\n if (this.runes === null) {\n return 'rune <null>'\n }\n return [\n 'rune ',\n Inst.escapeRunes(this.runes),\n (this.arg & RE2Flags.FOLD_CASE) !== 0 ? '/i' : '',\n ' -> ',\n this.out\n ].join('')\n case Inst.RUNE1:\n return `rune1 ${Inst.escapeRunes(this.runes)} -> ${this.out}`\n case Inst.RUNE_ANY:\n return `any -> ${this.out}`\n case Inst.RUNE_ANY_NOT_NL:\n return `anynotnl -> ${this.out}`\n default:\n throw new Error('unhandled case in Inst.toString')\n }\n }\n}\n\nexport { Inst }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MachineInputBase } from './MachineInput'\nimport { RE2JSInternalException } from './exceptions'\nimport { Utils } from './Utils'\nimport { Inst } from './Inst'\n\n// A logical thread in the NFA.\nclass Thread {\n constructor() {\n this.inst = null\n this.cap = null // Initialized to Int32Array later\n }\n}\n\n// A queue is a 'sparse array' holding pending threads of execution. See:\n// research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html\nclass Queue {\n constructor(numInst) {\n this.sparse = new Int32Array(numInst) // may contain stale but in-bounds values.\n this.densePcs = new Int32Array(numInst) // may contain stale pc in slots >= size\n this.denseThreads = new Array(numInst) // may contain stale Thread in slots >= size\n this.size = 0\n }\n\n contains(pc) {\n const j = this.sparse[pc]\n return j < this.size && this.densePcs[j] === pc\n }\n\n isEmpty() {\n return this.size === 0\n }\n\n add(pc) {\n const j = this.size++\n this.sparse[pc] = j\n this.denseThreads[j] = null\n this.densePcs[j] = pc\n return j\n }\n\n clear() {\n // Prevent memory leaks by nulling out used object references\n for (let i = 0; i < this.size; i++) {\n this.denseThreads[i] = null\n }\n // The sparse set logic safely ignores stale integers in Typed Arrays.\n this.size = 0\n }\n\n toString() {\n let out = '{'\n for (let i = 0; i < this.size; i++) {\n if (i !== 0) {\n out += ', '\n }\n out += this.densePcs[i]\n }\n out += '}'\n return out\n }\n}\n// A Machine matches an input string of Unicode characters against an\n// RE2 instance using a simple NFA.\n//\n// Called by RE2.doExecute.\nclass Machine {\n static THREADS_CHUNK_SIZE = 128\n\n static fromRE2(re2) {\n const m = new Machine()\n m.prog = re2.prog\n m.re2 = re2\n m.q0 = new Queue(m.prog.numInst())\n m.q1 = new Queue(m.prog.numInst())\n m.pool = []\n m.poolSize = 0\n m.matched = false\n // Use Int32Array instead of standard JS array\n m.matchcap = new Int32Array(m.prog.numCap < 2 ? 2 : m.prog.numCap)\n m.ncap = 0\n return m\n }\n\n static fromMachine(machine) {\n return Machine.fromRE2(machine.re2)\n }\n\n // init() reinitializes an existing Machine for re-use on a new input.\n init(ncap) {\n this.ncap = ncap\n if (ncap > this.matchcap.length) {\n this.initNewCap(ncap)\n } else {\n this.resetCap()\n }\n\n // Initialize the Lookbehind tracking table\n if (this.prog.numLb > 0) {\n if (!this.lbTable || this.lbTable.length < this.prog.numLb + 1) {\n this.lbTable = new Int32Array(this.prog.numLb + 1)\n }\n this.lbTable.fill(-1)\n }\n }\n\n // Wipes existing typed array memory without reallocating\n resetCap() {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap.fill(-1)\n }\n }\n\n initNewCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap = new Int32Array(ncap).fill(-1)\n }\n this.matchcap = new Int32Array(ncap).fill(-1)\n }\n\n submatches() {\n if (this.ncap === 0) {\n return Utils.emptyInts()\n }\n // Use subarray() to create a zero-allocation view before converting\n return Array.from(this.matchcap.subarray(0, this.ncap))\n }\n\n // alloc() allocates a new thread with the given instruction.\n // It uses the free pool if possible.\n alloc(inst) {\n if (this.poolSize === 0) {\n const capLen = this.matchcap.length\n\n // Bulk allocate threads in a tight loop so the V8 engine\n // places them adjacently in the young generation heap\n for (let i = 0; i < Machine.THREADS_CHUNK_SIZE; i++) {\n const t = new Thread()\n t.cap = new Int32Array(capLen)\n this.pool[this.poolSize++] = t\n }\n }\n\n // Pop a thread from the top of the pool stack\n this.poolSize--\n const t = this.pool[this.poolSize]\n t.inst = inst\n return t\n }\n\n // Frees all threads on the thread queue, returning them to the free pool.\n freeQueue(queue, from = 0) {\n for (let i = from; i < queue.size; i++) {\n const t = queue.denseThreads[i]\n if (t !== null) {\n this.pool[this.poolSize++] = t\n }\n }\n queue.clear()\n }\n\n // freeThread() returns t to the free pool.\n freeThread(t) {\n this.pool[this.poolSize++] = t\n }\n\n match(input, pos, anchor) {\n const startCond = this.re2.cond\n if (startCond === Utils.EMPTY_ALL) {\n return false\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false\n }\n this.matched = false\n this.matchcap.fill(-1)\n\n let runq = this.q0\n let nextq = this.q1\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n\n let flag\n if (pos === 0) {\n flag = Utils.emptyOpContext(-1, rune)\n } else {\n flag = input.context(pos)\n }\n\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n break\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n break\n }\n if (this.matched) {\n break\n }\n // Disable Prefix Acceleration if the regex contains lookbehinds\n // Fast-forwarding the string pointer will skip over the positions where\n // the parallel lookbehind automata need to be spawned.\n if (\n this.prog.numLb === 0 &&\n !(this.re2.prefix.length === 0) &&\n rune1 !== this.re2.prefixRune &&\n input.canCheckPrefix()\n ) {\n const advance = input.index(this.re2, pos)\n if (advance < 0) {\n break\n }\n pos += advance\n r = input.step(pos)\n rune = r >> 3\n width = r & 7\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n }\n if (!this.matched && (pos === 0 || anchor === RE2Flags.UNANCHORED)) {\n if (this.ncap > 0) {\n this.matchcap[0] = pos\n }\n // Spawn Lookbehind threads BEFORE the main pattern\n for (let i = 0; i < this.prog.lbStarts.length; i++) {\n this.add(runq, this.prog.lbStarts[i], pos, this.matchcap, flag, null)\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null)\n }\n\n const nextPos = pos + width\n flag = input.context(nextPos)\n this.step(runq, nextq, pos, nextPos, rune, flag, anchor, pos === input.endPos())\n\n if (width === 0) {\n break\n }\n if (this.ncap === 0 && this.matched) {\n break\n }\n\n pos += width\n rune = rune1\n width = width1\n if (rune !== -1) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n const tmpq = runq\n runq = nextq\n nextq = tmpq\n }\n this.freeQueue(nextq)\n return this.matched\n }\n\n matchSet(input, pos, anchor) {\n const startCond = this.re2.cond\n if (startCond === Utils.EMPTY_ALL) return []\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return []\n }\n\n let runq = this.q0\n let nextq = this.q1\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n\n let flag = pos === 0 ? Utils.emptyOpContext(-1, rune) : input.context(pos)\n const matches = new Set()\n\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) break\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n break\n }\n }\n if (pos === 0 || anchor === RE2Flags.UNANCHORED) {\n // Spawn Lookbehind threads BEFORE the main pattern\n for (let i = 0; i < this.prog.lbStarts.length; i++) {\n this.add(runq, this.prog.lbStarts[i], pos, this.matchcap, flag, null)\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null)\n }\n\n const nextPos = pos + width\n flag = input.context(nextPos)\n\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j]\n if (t === null) continue\n\n const i = t.inst\n let add = false\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && pos !== input.endPos()) break\n matches.add(i.arg) // Record the matched Set ID\n break\n case Inst.RUNE:\n add = i.matchRune(rune)\n break\n case Inst.RUNE1:\n add = rune === i.runes[0]\n break\n case Inst.RUNE_ANY:\n add = true\n break\n case Inst.RUNE_ANY_NOT_NL:\n add = rune !== Codepoint.CODES.get('\\n')\n break\n default:\n throw new RE2JSInternalException('bad inst')\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, flag, t)\n }\n if (t !== null) {\n this.freeThread(t)\n runq.denseThreads[j] = null\n }\n }\n runq.clear()\n\n if (width === 0) break\n\n pos += width\n rune = rune1\n width = width1\n if (rune !== -1) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n const tmpq = runq\n runq = nextq\n nextq = tmpq\n }\n this.freeQueue(nextq)\n return Array.from(matches).sort((a, b) => a - b)\n }\n\n step(runq, nextq, pos, nextPos, c, nextCond, anchor, atEnd) {\n const longest = this.re2.longest\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j]\n if (t === null) {\n continue\n }\n if (longest && this.matched && this.ncap > 0 && this.matchcap[0] < t.cap[0]) {\n this.freeThread(t)\n continue\n }\n\n const i = t.inst\n let add = false\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && !atEnd) {\n break\n }\n if (this.ncap > 0 && (!longest || !this.matched || this.matchcap[1] < pos)) {\n t.cap[1] = pos\n // Using subarray creates a fast view, avoiding a full array copy\n // until the submatches are finalized at the very end.\n this.matchcap.set(t.cap.subarray(0, this.ncap))\n }\n if (!longest) {\n this.freeQueue(runq, j + 1)\n }\n this.matched = true\n break\n case Inst.RUNE:\n add = i.matchRune(c)\n break\n case Inst.RUNE1:\n add = c === i.runes[0]\n break\n case Inst.RUNE_ANY:\n add = true\n break\n case Inst.RUNE_ANY_NOT_NL:\n add = c !== Codepoint.CODES.get('\\n')\n break\n default:\n throw new RE2JSInternalException('bad inst')\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, nextCond, t)\n }\n if (t !== null) {\n this.freeThread(t)\n runq.denseThreads[j] = null\n }\n }\n runq.clear()\n }\n\n add(q, pc, pos, cap, cond, t) {\n while (true) {\n if (pc === 0) {\n return t\n }\n if (q.contains(pc)) {\n return t\n }\n\n const d = q.add(pc)\n const inst = this.prog.inst[pc]\n switch (inst.op) {\n case Inst.FAIL:\n return t\n case Inst.ALT:\n case Inst.ALT_MATCH:\n t = this.add(q, inst.out, pos, cap, cond, t)\n pc = inst.arg // Flattened tail recursion\n continue\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~cond) === 0) {\n pc = inst.out // Flattened tail recursion\n continue\n }\n return t\n case Inst.NOP:\n pc = inst.out // Flattened tail recursion\n continue\n case Inst.CAPTURE:\n if (inst.arg < this.ncap) {\n const opos = cap[inst.arg]\n cap[inst.arg] = pos\n this.add(q, inst.out, pos, cap, cond, null)\n cap[inst.arg] = opos\n return t\n } else {\n pc = inst.out // Flattened tail recursion\n continue\n }\n case Inst.LB_WRITE:\n this.lbTable[Math.abs(inst.lb)] = pos\n pc = inst.out\n continue\n case Inst.LB_CHECK:\n if (inst.lb > 0) {\n // Positive Lookbehind\n if (this.lbTable[inst.lb] === pos) {\n pc = inst.out // Flattened tail recursion\n continue\n }\n } else if (this.lbTable[-inst.lb] !== pos) {\n // Negative Lookbehind\n pc = inst.out // Flattened tail recursion\n continue\n }\n return t\n case Inst.MATCH:\n case Inst.RUNE:\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n if (t === null) {\n t = this.alloc(inst)\n } else {\n t.inst = inst\n }\n if (this.ncap > 0 && t.cap !== cap) {\n // Direct assignment utilizing Typed Array performance\n for (let c = 0; c < this.ncap; c++) {\n t.cap[c] = cap[c]\n }\n }\n q.denseThreads[d] = t\n t = null\n return t\n default:\n throw new Error('unhandled')\n }\n }\n }\n}\n\nexport { Machine }\n","import { Inst } from './Inst'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\n\n// FNV-1a 32-bit hash for an array of integers.\n// Extremely fast, allocates no memory, and produces good distribution.\nconst hashPCs = (pcs) => {\n let h = -2128831035 // 0x811c9dc5 (32-bit signed offset basis)\n for (let i = 0; i < pcs.length; i++) {\n h ^= pcs[i]\n h = Math.imul(h, 16777619) // 0x01000193 (FNV prime)\n }\n return h\n}\n\n// Zero-allocation array comparison for hash collision resolution\nconst arraysEqual = (a, b) => {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n return true\n}\n\nclass DFAState {\n constructor(nfaStates, isMatch, matchIDs = []) {\n this.nfaStates = nfaStates // Int32Array of Instruction PCs\n this.isMatch = isMatch // Boolean\n this.matchIDs = matchIDs // Array of integers indicating which Set patterns matched\n\n // Latin-1 (Unicode.MAX_LATIN1 + 1) flat arrays for blisteringly fast O(1) lookups\n // completely covering standard English, European languages, and 1-byte encodings.\n this.nextLatin1 = new Array(Unicode.MAX_LATIN1 + 1).fill(null) // Flat array for blisteringly fast ASCII lookups\n this.nextLatin1Anchored = new Array(Unicode.MAX_LATIN1 + 1).fill(null) // Flat array for blisteringly fast ASCII lookups\n // 2 arrays used as hash map for V8 optimization (N is small number, so O(n) faster than Map O(1))\n this.transKeys = []\n this.transVals = []\n\n this.lastSeen = 0 // Track when this state was last used for LRU eviction\n }\n}\n\nclass DFA {\n static MAX_CACHE_CLEARS = 5\n\n constructor(prog) {\n this.prog = prog\n this.stateCache = new Map() // hash(number) -> DFAState[]\n this.stateCount = 0 // Tracks total states for memory limits\n this.startState = null\n this.stateLimit = 10000 // Prevent memory explosion (ReDoS protection)\n this.cacheClears = 0 // Track thrashing\n this.failed = false // mark if DFA cannot work with provided prog\n this.clock = 0 // Global clock for LRU eviction\n }\n\n // Follows epsilon (empty) transitions to find all reachable states without consuming a char\n computeClosure(pcs) {\n const closure = new Set()\n const stack = [...pcs]\n let isMatch = false\n const matchIDs = []\n\n while (stack.length > 0) {\n const pc = stack.pop()\n if (closure.has(pc)) continue\n closure.add(pc)\n\n const inst = this.prog.getInst(pc)\n switch (inst.op) {\n case Inst.MATCH:\n isMatch = true\n if (!matchIDs.includes(inst.arg)) matchIDs.push(inst.arg)\n break\n case Inst.ALT:\n case Inst.ALT_MATCH:\n stack.push(inst.out)\n stack.push(inst.arg)\n break\n case Inst.NOP:\n case Inst.CAPTURE:\n stack.push(inst.out)\n break\n // Bailing out on complex empty-width assertions to keep DFA fast.\n // Engine will seamlessly fall back to the NFA.\n case Inst.EMPTY_WIDTH:\n case Inst.LB_WRITE:\n case Inst.LB_CHECK:\n return null\n }\n }\n\n const sortedPCs = Int32Array.from(closure).sort()\n matchIDs.sort((a, b) => a - b)\n return { pcs: sortedPCs, isMatch, matchIDs }\n }\n\n // Get or create a DFA state from a list of NFA PCs\n getState(pcs) {\n const closureResult = this.computeClosure(pcs)\n if (!closureResult) return null // Bailout to NFA required\n\n const sortedPCs = closureResult.pcs\n const hash = hashPCs(sortedPCs)\n\n // Lookup hash bucket\n let bucket = this.stateCache.get(hash)\n if (bucket) {\n // Resolve potential hash collisions\n for (let i = 0; i < bucket.length; i++) {\n const state = bucket[i]\n if (arraysEqual(state.nfaStates, sortedPCs)) {\n state.lastSeen = ++this.clock\n return state\n }\n }\n } else {\n bucket = []\n this.stateCache.set(hash, bucket)\n }\n\n // DFA already failed once - exit\n if (this.failed) return null\n\n // Safety: prevent memory exhaustion from state explosion\n // We prune the cache to keep the newest 50%\n if (this.stateCount >= this.stateLimit) {\n this.cacheClears++\n\n // If this regex causes continuous cache thrashing, permanently fall back to NFA\n // to avoid spending CPU cycles constantly rebuilding the DFA tree.\n if (this.cacheClears >= DFA.MAX_CACHE_CLEARS) {\n this.failed = true\n this.stateCache.clear()\n this.stateCount = 0\n this.startState = null\n return null\n }\n\n this.evictCache()\n\n // After eviction, the bucket reference might be stale or empty.\n // We must re-fetch or re-create the bucket.\n bucket = this.stateCache.get(hash)\n if (!bucket) {\n bucket = []\n this.stateCache.set(hash, bucket)\n }\n }\n\n // State not found, create it and add to bucket\n const state = new DFAState(sortedPCs, closureResult.isMatch, closureResult.matchIDs)\n state.lastSeen = ++this.clock\n bucket.push(state)\n this.stateCount++\n return state\n }\n\n evictCache() {\n const allStates = []\n for (const bucket of this.stateCache.values()) {\n for (let i = 0; i < bucket.length; i++) {\n allStates.push(bucket[i])\n }\n }\n\n // Sort ascending by lastSeen (oldest first)\n allStates.sort((a, b) => a.lastSeen - b.lastSeen)\n\n // Keep the newest 50%\n const keepCount = Math.max(1, Math.floor(this.stateLimit / 2))\n const startIndex = allStates.length - keepCount\n const survivorsArray = allStates.slice(startIndex)\n const survivors = new Set(survivorsArray)\n\n this.stateCache.clear()\n this.stateCount = 0\n\n for (let i = 0; i < survivorsArray.length; i++) {\n const state = survivorsArray[i]\n\n // Sever ties to all states to prevent memory leaks and dangling pointers\n state.nextLatin1.fill(null)\n state.nextLatin1Anchored.fill(null)\n // zero-allocation cleanup\n state.transKeys.length = 0\n state.transVals.length = 0\n\n const hash = hashPCs(state.nfaStates)\n let bucket = this.stateCache.get(hash)\n if (!bucket) {\n bucket = []\n this.stateCache.set(hash, bucket)\n }\n bucket.push(state)\n this.stateCount++\n }\n\n // Start state must either be preserved or nullified so it gets re-created\n if (this.startState && !survivors.has(this.startState)) {\n this.startState = null\n }\n }\n\n // Compute the next DFA state given a current state and a character\n step(state, charCode, anchor) {\n // OPTIMIZATION: Latin-1 Array Fast-Path\n if (charCode <= Unicode.MAX_LATIN1) {\n if (anchor === RE2Flags.UNANCHORED) {\n const next = state.nextLatin1[charCode]\n if (next !== null) return next\n } else {\n const next = state.nextLatin1Anchored[charCode]\n if (next !== null) return next\n }\n } else {\n // Dense Array Linear Search fallback for Runes > 255\n const key = charCode + (anchor === RE2Flags.UNANCHORED ? 0 : Unicode.MAX_RUNE + 1)\n // get [key] -> nextState\n const keys = state.transKeys\n const len = keys.length\n for (let i = 0; i < len; i++) {\n if (keys[i] === key) return state.transVals[i]\n }\n }\n\n const nextPCs = []\n for (let i = 0; i < state.nfaStates.length; i++) {\n const pc = state.nfaStates[i]\n const inst = this.prog.getInst(pc)\n if (Inst.isRuneOp(inst.op) && inst.matchRune(charCode)) {\n nextPCs.push(inst.out)\n }\n }\n\n if (anchor === RE2Flags.UNANCHORED) {\n nextPCs.push(this.prog.start)\n }\n\n const nextState = this.getState(nextPCs)\n\n // Cache the result\n if (charCode <= Unicode.MAX_LATIN1) {\n if (anchor === RE2Flags.UNANCHORED) {\n state.nextLatin1[charCode] = nextState\n } else {\n state.nextLatin1Anchored[charCode] = nextState\n }\n } else {\n const key = charCode + (anchor === RE2Flags.UNANCHORED ? 0 : Unicode.MAX_RUNE + 1)\n // store key -> nextState\n state.transKeys.push(key)\n state.transVals.push(nextState)\n }\n\n return nextState\n }\n\n // The hot loop: Execute the Lazy DFA\n match(input, pos, anchor) {\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false\n }\n\n if (!this.startState) {\n this.startState = this.getState([this.prog.start])\n if (!this.startState) return null // Fallback to NFA\n }\n\n let endPos = input.endPos()\n let currentState = this.startState\n if (currentState.isMatch) {\n if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (pos === endPos) return true\n } else {\n return true\n }\n }\n\n let i = pos\n\n while (i < endPos) {\n const r = input.step(i)\n const rune = r >> 3\n const width = r & 7\n\n // prevent infinite loop on EOF\n if (width === 0) {\n break\n }\n\n currentState =\n (anchor === RE2Flags.UNANCHORED &&\n rune <= Unicode.MAX_LATIN1 &&\n currentState.nextLatin1[rune]) ||\n this.step(currentState, rune, anchor)\n\n // If we hit an unrecoverable DFA error or bailout, signal fallback\n if (currentState === null) return null\n\n currentState.lastSeen = ++this.clock\n\n if (currentState.isMatch) {\n if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (i + width === endPos) return true\n } else {\n return true\n }\n }\n\n // If we hit a dead end, and anchored, fail early\n if (currentState.nfaStates.length === 0) {\n if (anchor !== RE2Flags.UNANCHORED) return false\n }\n i += width\n }\n\n return false\n }\n\n // The hot loop for evaluating Multi-Pattern Sets\n matchSet(input, pos, anchor) {\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return []\n }\n\n if (!this.startState) {\n this.startState = this.getState([this.prog.start])\n if (!this.startState) return null // Fallback to NFA\n }\n\n let endPos = input.endPos()\n let currentState = this.startState\n const matches = new Set()\n\n const checkMatch = (state, currentPos) => {\n if (state.isMatch) {\n if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (currentPos === endPos) {\n state.matchIDs.forEach((id) => matches.add(id))\n }\n } else {\n state.matchIDs.forEach((id) => matches.add(id))\n }\n }\n }\n\n checkMatch(currentState, pos)\n\n let i = pos\n while (i < endPos) {\n const r = input.step(i)\n const rune = r >> 3\n const width = r & 7\n\n if (width === 0) break\n\n currentState =\n (anchor === RE2Flags.UNANCHORED &&\n rune <= Unicode.MAX_LATIN1 &&\n currentState.nextLatin1[rune]) ||\n this.step(currentState, rune, anchor)\n\n if (currentState === null) return null // Bailout to NFA\n\n currentState.lastSeen = ++this.clock\n\n i += width\n checkMatch(currentState, i)\n\n if (currentState.nfaStates.length === 0) {\n if (anchor !== RE2Flags.UNANCHORED) break\n }\n }\n\n return Array.from(matches).sort((a, b) => a - b)\n }\n}\n\nexport { DFA }\n","import { Inst } from './Inst'\nimport { MachineInputBase } from './MachineInput'\nimport { Utils } from './Utils'\nimport { RE2Flags } from './RE2Flags'\nimport { RE2JSInternalException } from './exceptions'\n\nconst VISITED_BITS = 32\nconst MAX_BACKTRACK_PROG = 500\nconst INITIAL_JOB_CAPACITY = 256 // Starting size for the job stack arrays\nconst MAX_BACKTRACK_VECTOR = 256 * 1024 // 32 KB limit for the visited bit-mask\n\nclass BitState {\n constructor() {\n this.end = 0\n this.cap = new Int32Array(0)\n this.matchcap = new Int32Array(0)\n this.ncap = 0\n\n // Parallel arrays acting as the backtrack job stack\n this.jobPc = new Int32Array(INITIAL_JOB_CAPACITY)\n this.jobArg = new Uint8Array(INITIAL_JOB_CAPACITY)\n this.jobPos = new Int32Array(INITIAL_JOB_CAPACITY)\n this.jobLen = 0\n\n this.visited = new Uint32Array(0)\n }\n\n reset(prog, end, ncap) {\n this.end = end\n this.jobLen = 0\n this.ncap = ncap\n\n // Bitwise shift (>>> 5) instead of Math.floor( / 32)\n const visitedSize = (prog.numInst() * (end + 1) + VISITED_BITS - 1) >>> 5\n if (this.visited.length < visitedSize) {\n this.visited = new Uint32Array(visitedSize)\n } else {\n this.visited.fill(0, 0, visitedSize)\n }\n\n if (this.cap.length < ncap) {\n // Must explicitly fill with -1 as Int32Array defaults to 0\n this.cap = new Int32Array(ncap).fill(-1)\n } else {\n this.cap.fill(-1, 0, ncap)\n }\n\n if (this.matchcap.length < ncap) {\n this.matchcap = new Int32Array(ncap).fill(-1)\n } else {\n this.matchcap.fill(-1, 0, ncap)\n }\n }\n\n shouldVisit(pc, pos) {\n const n = pc * (this.end + 1) + pos\n const idx = n >>> 5 // Equivalent to Math.floor(n / 32)\n const mask = 1 << (n & 31) // Equivalent to n % 32\n\n if ((this.visited[idx] & mask) !== 0) {\n return false\n }\n this.visited[idx] |= mask\n return true\n }\n\n push(re2, pc, pos, arg) {\n if (re2.prog.getInst(pc).op !== Inst.FAIL && (arg || this.shouldVisit(pc, pos))) {\n if (this.jobLen >= this.jobPc.length) {\n const newSize = this.jobPc.length * 2\n\n const newPc = new Int32Array(newSize)\n newPc.set(this.jobPc)\n this.jobPc = newPc\n\n const newArg = new Uint8Array(newSize)\n newArg.set(this.jobArg)\n this.jobArg = newArg\n\n const newPos = new Int32Array(newSize)\n newPos.set(this.jobPos)\n this.jobPos = newPos\n }\n this.jobPc[this.jobLen] = pc\n this.jobArg[this.jobLen] = arg ? 1 : 0\n this.jobPos[this.jobLen] = pos\n this.jobLen++\n }\n }\n\n tryBacktrack(re2, input, pc, pos, anchor) {\n const longest = re2.longest\n this.push(re2, pc, pos, false)\n\n while (this.jobLen > 0) {\n this.jobLen--\n let currentPc = this.jobPc[this.jobLen]\n let arg = this.jobArg[this.jobLen] === 1\n let currentPos = this.jobPos[this.jobLen]\n\n let skipShouldVisit = true\n\n while (true) {\n if (!skipShouldVisit) {\n if (!this.shouldVisit(currentPc, currentPos)) {\n break\n }\n }\n skipShouldVisit = false\n\n const inst = re2.prog.getInst(currentPc)\n\n switch (inst.op) {\n case Inst.FAIL: {\n throw new RE2JSInternalException('unexpected InstFail')\n }\n case Inst.ALT: {\n if (arg) {\n arg = false\n currentPc = inst.arg\n continue\n } else {\n this.push(re2, currentPc, currentPos, true)\n currentPc = inst.out\n continue\n }\n }\n case Inst.ALT_MATCH: {\n const outInst = re2.prog.getInst(inst.out)\n if (Inst.isRuneOp(outInst.op)) {\n this.push(re2, inst.arg, currentPos, false)\n currentPc = inst.arg\n currentPos = this.end\n continue\n }\n this.push(re2, inst.out, this.end, false)\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n if (!inst.matchRune(r >> 3)) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE1: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n if (r >> 3 !== inst.runes[0]) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE_ANY_NOT_NL: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n if (r >> 3 === 10) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.RUNE_ANY: {\n const r = input.step(currentPos)\n if (r === MachineInputBase.EOF()) break\n currentPos += r & 7\n currentPc = inst.out\n continue\n }\n\n case Inst.CAPTURE: {\n if (arg) {\n this.cap[inst.arg] = currentPos\n break\n } else {\n if (inst.arg < this.ncap) {\n this.push(re2, currentPc, this.cap[inst.arg], true)\n this.cap[inst.arg] = currentPos\n }\n currentPc = inst.out\n continue\n }\n }\n case Inst.EMPTY_WIDTH: {\n const flag = input.context(currentPos)\n if ((inst.arg & ~flag) !== 0) break\n currentPc = inst.out\n continue\n }\n\n case Inst.NOP: {\n currentPc = inst.out\n continue\n }\n\n case Inst.MATCH: {\n if (anchor === RE2Flags.ANCHOR_BOTH && currentPos !== this.end) {\n break\n }\n if (this.ncap === 0) return true\n\n if (this.ncap > 1) {\n this.cap[1] = currentPos\n }\n\n const old = this.matchcap[1]\n if (old === -1 || (longest && currentPos > 0 && currentPos > old)) {\n this.matchcap.set(this.cap)\n }\n\n if (!longest) return true\n if (currentPos === this.end) return true\n break\n }\n case Inst.LB_WRITE:\n case Inst.LB_CHECK: {\n throw new RE2JSInternalException('Backtracker cannot evaluate Lookbehind instructions')\n }\n default: {\n throw new RE2JSInternalException('bad inst')\n }\n }\n break\n }\n }\n return longest && this.matchcap.length > 1 && this.matchcap[1] >= 0\n }\n}\n\nconst bitStatePool = []\n\nexport class Backtracker {\n static shouldBacktrack(prog) {\n return prog.numInst() <= MAX_BACKTRACK_PROG\n }\n\n static maxBitStateLen(prog) {\n if (!Backtracker.shouldBacktrack(prog)) {\n return 0\n }\n return Math.floor(MAX_BACKTRACK_VECTOR / prog.numInst())\n }\n\n static execute(re2, input, pos, anchor, ncap) {\n const startCond = re2.cond\n if (startCond === Utils.EMPTY_ALL) {\n return null\n }\n\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return null\n }\n\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n return null\n }\n\n const b = bitStatePool.length > 0 ? bitStatePool.pop() : new BitState()\n const end = input.endPos()\n b.reset(re2.prog, end, ncap)\n\n let matched = false\n\n if (\n (startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 ||\n anchor === RE2Flags.ANCHOR_START ||\n anchor === RE2Flags.ANCHOR_BOTH\n ) {\n if (b.ncap > 0) {\n b.cap[0] = pos\n }\n if (b.tryBacktrack(re2, input, re2.prog.start, pos, anchor)) {\n matched = true\n }\n } else {\n let width = -1\n for (; pos <= end && width !== 0; pos += width) {\n if (re2.prefix.length > 0) {\n const advance = input.index(re2, pos)\n if (advance < 0) {\n break\n }\n pos += advance\n }\n\n if (b.ncap > 0) {\n b.cap[0] = pos\n }\n if (b.tryBacktrack(re2, input, re2.prog.start, pos, anchor)) {\n matched = true\n break\n }\n const r = input.step(pos)\n width = r === MachineInputBase.EOF() ? 0 : r & 7\n }\n }\n\n if (!matched) {\n bitStatePool.push(b)\n return null\n }\n\n // Must slice so we don't accidentally leak trailing arrays from previously recycled typed arrays\n const result = ncap === 0 ? [] : Array.from(b.matchcap.subarray(0, ncap))\n bitStatePool.push(b)\n return result\n }\n}\n","import { Inst } from './Inst'\nimport { Unicode } from './Unicode'\nimport { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { MachineInputBase } from './MachineInput'\nimport { RE2JSInternalException } from './exceptions'\n\nclass QueueOnePass {\n constructor(size) {\n this.sparse = new Uint32Array(size)\n this.dense = new Uint32Array(size)\n this.size = 0\n this.nextIndex = 0\n }\n empty() {\n return this.nextIndex >= this.size\n }\n next() {\n return this.dense[this.nextIndex++]\n }\n clear() {\n this.size = 0\n this.nextIndex = 0\n }\n contains(u) {\n return u < this.sparse.length && this.sparse[u] < this.size && this.dense[this.sparse[u]] === u\n }\n insert(u) {\n if (!this.contains(u)) this.insertNew(u)\n }\n insertNew(u) {\n if (u >= this.sparse.length) return\n this.sparse[u] = this.size\n this.dense[this.size] = u\n this.size++\n }\n}\n\nconst mergeRuneSets = (leftRunes, rightRunes, leftPC, rightPC) => {\n const leftLen = leftRunes.length\n const rightLen = rightRunes.length\n let lx = 0,\n rx = 0\n const merged = []\n const next = []\n let ok = true\n\n let ix = -1\n const extend = (isLeft) => {\n const newArray = isLeft ? leftRunes : rightRunes\n const low = isLeft ? lx : rx\n const pc = isLeft ? leftPC : rightPC\n\n if (ix > 0 && newArray[low] <= merged[ix]) return false\n\n merged.push(newArray[low], newArray[low + 1])\n if (isLeft) lx += 2\n else rx += 2\n ix += 2\n next.push(pc)\n return true\n }\n\n while (lx < leftLen || rx < rightLen) {\n if (rx >= rightLen) {\n ok = extend(true)\n } else if (lx >= leftLen) {\n ok = extend(false)\n } else if (rightRunes[rx] < leftRunes[lx]) {\n ok = extend(false)\n } else {\n ok = extend(true)\n }\n if (!ok) return null\n }\n return { merged, next }\n}\n\nclass OnePassProg {\n constructor(prog) {\n this.start = prog.start\n this.numCap = prog.numCap\n this.inst = new Array(prog.inst.length)\n for (let i = 0; i < prog.inst.length; i++) {\n const orig = prog.inst[i]\n const inst = new Inst(orig.op)\n inst.out = orig.out\n inst.arg = orig.arg\n inst.runes = orig.runes ? orig.runes.slice() : []\n inst.next = null\n this.inst[i] = inst\n }\n }\n}\n\nconst onePassCopy = (prog) => {\n const p = new OnePassProg(prog)\n\n // Rewrites one or more common Prog constructs that enable some otherwise\n // non-onepass Progs to be onepass.\n for (let pc = 0; pc < p.inst.length; pc++) {\n const inst = p.inst[pc]\n if (inst.op !== Inst.ALT && inst.op !== Inst.ALT_MATCH) continue\n\n let pAOther = 'out'\n let pAAlt = 'arg'\n\n let instAlt = p.inst[inst[pAAlt]]\n if (instAlt.op !== Inst.ALT && instAlt.op !== Inst.ALT_MATCH) {\n pAOther = 'arg'\n pAAlt = 'out'\n instAlt = p.inst[inst[pAAlt]]\n if (instAlt.op !== Inst.ALT && instAlt.op !== Inst.ALT_MATCH) continue\n }\n\n const instOther = p.inst[inst[pAOther]]\n if (instOther.op === Inst.ALT || instOther.op === Inst.ALT_MATCH) continue\n\n let pBAlt = 'out'\n let pBOther = 'arg'\n let patch = false\n\n if (instAlt.out === pc) {\n patch = true\n } else if (instAlt.arg === pc) {\n patch = true\n pBAlt = 'arg'\n pBOther = 'out'\n }\n\n if (patch) instAlt[pBAlt] = inst[pAOther]\n if (inst[pAOther] === instAlt[pBAlt]) inst[pAAlt] = instAlt[pBOther]\n }\n return p\n}\n\nconst makeOnePass = (p) => {\n if (p.inst.length >= 1000) return null\n\n const instQueue = new QueueOnePass(p.inst.length)\n const visitQueue = new QueueOnePass(p.inst.length)\n const onePassRunes = new Array(p.inst.length)\n const m = new Array(p.inst.length).fill(false)\n\n const check = (pc) => {\n let ok = true\n const inst = p.inst[pc]\n if (visitQueue.contains(pc)) return true\n visitQueue.insert(pc)\n\n switch (inst.op) {\n case Inst.ALT:\n case Inst.ALT_MATCH: {\n ok = check(inst.out) && check(inst.arg)\n let matchOut = m[inst.out]\n let matchArg = m[inst.arg]\n if (matchOut && matchArg) return false\n\n if (matchArg) {\n const tempOut = inst.out\n inst.out = inst.arg\n inst.arg = tempOut\n const tempMatch = matchOut\n matchOut = matchArg\n matchArg = tempMatch\n }\n if (matchOut) {\n m[pc] = true\n inst.op = Inst.ALT_MATCH\n }\n\n const leftRunes = onePassRunes[inst.out] || []\n const rightRunes = onePassRunes[inst.arg] || []\n const mergeRes = mergeRuneSets(leftRunes, rightRunes, inst.out, inst.arg)\n\n if (!mergeRes) return false\n\n onePassRunes[pc] = mergeRes.merged\n inst.next = new Uint32Array(mergeRes.next)\n break\n }\n case Inst.CAPTURE:\n case Inst.EMPTY_WIDTH:\n case Inst.NOP: {\n ok = check(inst.out)\n m[pc] = m[inst.out]\n\n onePassRunes[pc] = onePassRunes[inst.out] ? onePassRunes[inst.out].slice() : []\n\n inst.next = new Uint32Array(Math.floor(onePassRunes[pc].length / 2) + 1).fill(inst.out)\n break\n }\n case Inst.MATCH:\n case Inst.FAIL: {\n m[pc] = inst.op === Inst.MATCH\n break\n }\n case Inst.RUNE: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n if (!inst.runes || inst.runes.length === 0) {\n onePassRunes[pc] = []\n inst.next = new Uint32Array([inst.out])\n break\n }\n let runes = []\n if (inst.runes.length === 1 && (inst.arg & RE2Flags.FOLD_CASE) !== 0) {\n const r0 = inst.runes[0]\n runes.push(r0, r0)\n for (let r1 = Unicode.simpleFold(r0); r1 !== r0; r1 = Unicode.simpleFold(r1)) {\n runes.push(r1, r1)\n }\n runes.sort((a, b) => a - b)\n } else {\n for (let j = 0; j < inst.runes.length; j++) {\n runes.push(inst.runes[j])\n }\n }\n onePassRunes[pc] = runes\n inst.next = new Uint32Array(Math.floor(runes.length / 2) + 1).fill(inst.out)\n inst.op = Inst.RUNE\n break\n }\n case Inst.RUNE1: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n let runes = []\n if ((inst.arg & RE2Flags.FOLD_CASE) !== 0) {\n const r0 = inst.runes[0]\n runes.push(r0, r0)\n for (let r1 = Unicode.simpleFold(r0); r1 !== r0; r1 = Unicode.simpleFold(r1)) {\n runes.push(r1, r1)\n }\n runes.sort((a, b) => a - b)\n } else {\n runes.push(inst.runes[0], inst.runes[0])\n }\n onePassRunes[pc] = runes\n inst.next = new Uint32Array(Math.floor(runes.length / 2) + 1).fill(inst.out)\n inst.op = Inst.RUNE\n break\n }\n case Inst.RUNE_ANY: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n onePassRunes[pc] = [0, Unicode.MAX_RUNE]\n inst.next = new Uint32Array([inst.out])\n break\n }\n case Inst.RUNE_ANY_NOT_NL: {\n m[pc] = false\n if (inst.next && inst.next.length > 0) break\n instQueue.insert(inst.out)\n onePassRunes[pc] = [0, 9, 11, Unicode.MAX_RUNE] // \\n is 10\n inst.next = new Uint32Array(Math.floor(onePassRunes[pc].length / 2) + 1).fill(inst.out)\n break\n }\n }\n return ok\n }\n\n instQueue.clear()\n instQueue.insert(p.start)\n\n while (!instQueue.empty()) {\n visitQueue.clear()\n const pc = instQueue.next()\n if (!check(pc)) return null\n }\n\n for (let i = 0; i < p.inst.length; i++) {\n if (onePassRunes[i]) p.inst[i].runes = onePassRunes[i]\n }\n return p\n}\n\nconst cleanupOnePass = (p, original) => {\n for (let ix = 0; ix < original.inst.length; ix++) {\n const instOriginal = original.inst[ix]\n switch (instOriginal.op) {\n case Inst.ALT:\n case Inst.ALT_MATCH:\n case Inst.RUNE:\n break\n case Inst.CAPTURE:\n case Inst.EMPTY_WIDTH:\n case Inst.NOP:\n case Inst.MATCH:\n case Inst.FAIL:\n p.inst[ix].next = null\n break\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n p.inst[ix].next = null\n p.inst[ix].op = instOriginal.op\n p.inst[ix].runes = instOriginal.runes ? instOriginal.runes.slice() : []\n break\n }\n }\n}\n\nexport class OnePass {\n static compile(prog) {\n if (prog.start === 0) return null\n // OnePass cannot evaluate Lookbehinds\n if (prog.numLb > 0) return null\n\n const startInst = prog.inst[prog.start]\n // onepass regexps must be strictly anchored\n if (startInst.op !== Inst.EMPTY_WIDTH || (startInst.arg & Utils.EMPTY_BEGIN_TEXT) === 0) {\n return null\n }\n\n let hasAlt = false\n for (let i = 0; i < prog.inst.length; i++) {\n if (prog.inst[i].op === Inst.ALT || prog.inst[i].op === Inst.ALT_MATCH) {\n hasAlt = true\n break\n }\n }\n\n for (let i = 0; i < prog.inst.length; i++) {\n const inst = prog.inst[i]\n const opOut = prog.inst[inst.out].op\n switch (inst.op) {\n case Inst.ALT:\n case Inst.ALT_MATCH:\n if (opOut === Inst.MATCH || prog.inst[inst.arg].op === Inst.MATCH) {\n return null\n }\n break\n case Inst.EMPTY_WIDTH:\n if (opOut === Inst.MATCH) {\n if ((inst.arg & Utils.EMPTY_END_TEXT) === Utils.EMPTY_END_TEXT) {\n continue\n }\n return null\n }\n break\n default:\n if (opOut === Inst.MATCH && hasAlt) {\n return null\n }\n break\n }\n }\n\n let p = onePassCopy(prog)\n p = makeOnePass(p)\n if (p !== null) {\n cleanupOnePass(p, prog)\n }\n return p\n }\n\n static next(inst, r) {\n const nextIdx = inst.matchRunePos(r)\n if (nextIdx >= 0) return inst.next[nextIdx]\n if (inst.op === Inst.ALT_MATCH) return inst.out\n return 0 // fail\n }\n\n static execute(re2, input, pos, anchor, ncap) {\n const onepass = re2.onepass\n if (!onepass) return null\n\n const matchcap = new Int32Array(ncap).fill(-1)\n let matched = false\n\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let r1 = MachineInputBase.EOF()\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r1 = input.step(pos + width)\n if (r1 !== MachineInputBase.EOF()) {\n rune1 = r1 >> 3\n width1 = r1 & 7\n }\n }\n\n let flag = pos === 0 ? Utils.emptyOpContext(-1, rune) : input.context(pos)\n let pc = onepass.start\n let inst\n\n while (true) {\n inst = onepass.inst[pc]\n pc = inst.out\n\n switch (inst.op) {\n case Inst.MATCH: {\n // Verify ANCHOR_BOTH constraint before accepting the match\n if (anchor === RE2Flags.ANCHOR_BOTH && pos !== input.endPos()) {\n return null\n }\n\n matched = true\n if (matchcap.length > 0) {\n matchcap[0] = 0\n matchcap[1] = pos\n }\n return ncap === 0 ? [] : Array.from(matchcap)\n }\n case Inst.RUNE:\n if (!inst.matchRune(rune)) return null\n break\n case Inst.RUNE1:\n if (rune !== inst.runes[0]) return null\n break\n case Inst.RUNE_ANY:\n break\n case Inst.RUNE_ANY_NOT_NL:\n if (rune === 10) return null\n break\n case Inst.ALT:\n case Inst.ALT_MATCH:\n pc = OnePass.next(inst, rune)\n continue\n case Inst.FAIL:\n return null\n case Inst.NOP:\n continue\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~flag) !== 0) return null\n continue\n case Inst.CAPTURE:\n if (inst.arg < matchcap.length) {\n matchcap[inst.arg] = pos\n }\n continue\n default:\n throw new RE2JSInternalException('bad inst')\n }\n\n if (width === 0) break\n\n flag = Utils.emptyOpContext(rune, rune1)\n pos += width\n rune = rune1\n width = width1\n\n if (rune !== -1) {\n r1 = input.step(pos + width)\n if (r1 !== MachineInputBase.EOF()) {\n rune1 = r1 >> 3\n width1 = r1 & 7\n } else {\n rune1 = -1\n width1 = 0\n }\n }\n }\n\n if (!matched) return null\n return ncap === 0 ? [] : Array.from(matchcap)\n }\n}\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Regular expression abstract syntax tree. Produced by parser, used by compiler. NB, this\n * corresponds to {@code syntax.regexp} in the Go implementation; Go's {@code regexp} is called\n * {@code RE2} in Java.\n */\nexport class Regexp {\n static Op = createEnum([\n 'NO_MATCH', // Matches no strings.\n 'EMPTY_MATCH', // Matches empty string.\n 'LITERAL', // Matches runes[] sequence\n 'CHAR_CLASS', // Matches Runes interpreted as range pair list\n 'ANY_CHAR_NOT_NL', // Matches any character except '\\n'\n 'ANY_CHAR', // Matches any character\n 'BEGIN_LINE', // Matches empty string at end of line\n 'END_LINE', // Matches empty string at end of line\n 'BEGIN_TEXT', // Matches empty string at beginning of text\n 'END_TEXT', // Matches empty string at end of text\n 'WORD_BOUNDARY', // Matches word boundary `\\b`\n 'NO_WORD_BOUNDARY', // Matches word non-boundary `\\B`\n 'CAPTURE', // Capturing subexpr with index cap, optional name name\n 'STAR', // Matches subs[0] zero or more times.\n 'PLUS', // Matches subs[0] one or more times.\n 'QUEST', // Matches subs[0] zero or one times.\n 'REPEAT', // Matches subs[0] [min, max] times; max=-1 => no limit.\n 'CONCAT', // Matches concatenation of subs[]\n 'ALTERNATE', // Matches union of subs[]\n 'PLB', // Positive LookBehind\n 'NLB', // Negative LookBehind\n // Pseudo ops, used internally by Parser for parsing stack:\n 'LEFT_PAREN',\n 'VERTICAL_BAR'\n ])\n\n static isPseudoOp(op) {\n return op >= Regexp.Op.LEFT_PAREN\n }\n\n static emptySubs() {\n return []\n }\n\n static quoteIfHyphen(rune) {\n if (rune === Codepoint.CODES.get('-')) {\n return '\\\\'\n }\n return ''\n }\n\n static fromRegexp(re) {\n const regex = new Regexp(re.op)\n regex.flags = re.flags\n regex.subs = re.subs\n regex.runes = re.runes\n regex.cap = re.cap\n regex.min = re.min\n regex.max = re.max\n regex.name = re.name\n regex.namedGroups = re.namedGroups\n regex.lb = re.lb // Track lookbehind index\n return regex\n }\n\n constructor(op) {\n this.op = op // operator\n this.flags = 0 // bitmap of parse flags\n // subexpressions, if any. Never null.\n // subs[0] is used as the freelist.\n this.subs = Regexp.emptySubs()\n this.runes = [] // matched runes, for LITERAL, CHAR_CLASS\n this.min = 0 // min for REPEAT\n this.max = 0 // max for REPEAT\n this.cap = 0 // capturing index, for CAPTURE\n this.name = null // capturing name, for CAPTURE\n this.namedGroups = Object.create(null) // map of group name -> capturing index\n this.lb = 0 // Lookbehind index tracking\n }\n\n reinit() {\n this.flags = 0\n this.subs = Regexp.emptySubs()\n this.runes = []\n this.cap = 0\n this.min = 0\n this.max = 0\n this.name = null\n this.namedGroups = Object.create(null)\n this.lb = 0\n }\n\n toString() {\n return this.appendTo()\n }\n\n // appendTo() appends the Perl syntax for |this| regular expression to out\n appendTo() {\n let out = ''\n switch (this.op) {\n case Regexp.Op.NO_MATCH:\n out += '[^\\\\x00-\\\\x{10FFFF}]'\n break\n case Regexp.Op.EMPTY_MATCH:\n out += '(?:)'\n break\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n case Regexp.Op.REPEAT: {\n const sub = this.subs[0]\n if (sub.op > Regexp.Op.CAPTURE || (sub.op === Regexp.Op.LITERAL && sub.runes.length > 1)) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n switch (this.op) {\n case Regexp.Op.STAR:\n out += '*'\n break\n case Regexp.Op.PLUS:\n out += '+'\n break\n case Regexp.Op.QUEST:\n out += '?'\n break\n case Regexp.Op.REPEAT:\n out += `{${this.min}`\n if (this.min !== this.max) {\n out += ','\n if (this.max >= 0) {\n out += this.max\n }\n }\n out += '}'\n break\n }\n if ((this.flags & RE2Flags.NON_GREEDY) !== 0) {\n out += '?'\n }\n break\n }\n\n case Regexp.Op.CONCAT: {\n for (let sub of this.subs) {\n if (sub.op === Regexp.Op.ALTERNATE) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n }\n break\n }\n\n case Regexp.Op.ALTERNATE: {\n let sep = ''\n for (let sub of this.subs) {\n out += sep\n sep = '|'\n out += sub.appendTo()\n }\n break\n }\n\n case Regexp.Op.LITERAL:\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += '(?i:'\n }\n for (let rune of this.runes) {\n out += Utils.escapeRune(rune)\n }\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += ')'\n }\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n out += '(?-s:.)'\n break\n case Regexp.Op.ANY_CHAR:\n out += '(?s:.)'\n break\n case Regexp.Op.PLB:\n out += `(?<=${this.subs[0].appendTo()})`\n break\n case Regexp.Op.NLB:\n out += `(?<!${this.subs[0].appendTo()})`\n break\n case Regexp.Op.CAPTURE:\n if (this.name === null || this.name.length === 0) {\n out += '('\n } else {\n out += `(?P<${this.name}>`\n }\n if (this.subs[0].op !== Regexp.Op.EMPTY_MATCH) {\n out += this.subs[0].appendTo()\n }\n out += ')'\n break\n case Regexp.Op.BEGIN_TEXT:\n out += '\\\\A'\n break\n case Regexp.Op.END_TEXT:\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== 0) {\n out += '(?-m:$)'\n } else {\n out += '\\\\z'\n }\n break\n case Regexp.Op.BEGIN_LINE:\n out += '^'\n break\n case Regexp.Op.END_LINE:\n out += '$'\n break\n case Regexp.Op.WORD_BOUNDARY:\n out += '\\\\b'\n break\n case Regexp.Op.NO_WORD_BOUNDARY:\n out += '\\\\B'\n break\n case Regexp.Op.CHAR_CLASS:\n if (this.runes.length % 2 !== 0) {\n out += '[invalid char class]'\n break\n }\n\n out += '['\n if (this.runes.length === 0) {\n out += '^\\\\x00-\\\\x{10FFFF}'\n } else if (this.runes[0] === 0 && this.runes[this.runes.length - 1] === Unicode.MAX_RUNE) {\n out += '^'\n\n for (let i = 1; i < this.runes.length - 1; i += 2) {\n const lo = this.runes[i] + 1\n const hi = this.runes[i + 1] - 1\n\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n } else {\n for (let i = 0; i < this.runes.length; i += 2) {\n const lo = this.runes[i]\n const hi = this.runes[i + 1]\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n }\n out += ']'\n break\n default:\n out += this.op\n break\n }\n return out\n }\n\n // maxCap() walks the regexp to find the maximum capture index.\n maxCap() {\n let m = 0\n if (this.op === Regexp.Op.CAPTURE) {\n m = this.cap\n }\n if (this.subs !== null) {\n for (let sub of this.subs) {\n const n = sub.maxCap()\n if (m < n) {\n m = n\n }\n }\n }\n return m\n }\n\n // equals() returns true if this and that have identical structure.\n equals(that) {\n if (!(that !== null && that instanceof Regexp)) {\n return false\n }\n if (this.op !== that.op) {\n return false\n }\n switch (this.op) {\n case Regexp.Op.END_TEXT: {\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== (that.flags & RE2Flags.WAS_DOLLAR)) {\n return false\n }\n break\n }\n case Regexp.Op.LITERAL:\n case Regexp.Op.CHAR_CLASS: {\n if (this.runes === null && that.runes === null) {\n break\n }\n if (this.runes === null || that.runes === null) {\n return false\n }\n if (this.runes.length !== that.runes.length) {\n return false\n }\n for (let i = 0; i < this.runes.length; i++) {\n if (this.runes[i] !== that.runes[i]) {\n return false\n }\n }\n break\n }\n case Regexp.Op.ALTERNATE:\n case Regexp.Op.CONCAT: {\n if (this.subs.length !== that.subs.length) {\n return false\n }\n for (let i = 0; i < this.subs.length; ++i) {\n if (!this.subs[i].equals(that.subs[i])) {\n return false\n }\n }\n break\n }\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.REPEAT: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n this.min !== that.min ||\n this.max !== that.max ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.CAPTURE: {\n if (\n this.cap !== that.cap ||\n (this.name === null ? that.name !== null : this.name !== that.name) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.PLB:\n case Regexp.Op.NLB: {\n if (this.lb !== that.lb || !this.subs[0].equals(that.subs[0])) {\n return false\n }\n break\n }\n }\n return true\n }\n}\n","import { Regexp } from './Regexp'\nimport { Utils } from './Utils'\nimport { RE2Flags } from './RE2Flags'\n\n// High-speed, single-pass Aho-Corasick string matcher optimized for V8.\n// Builds a trie with failure links to search for multiple prefixes simultaneously.\nclass AhoCorasick {\n constructor(wordArrays) {\n this.next = [Object.create(null)]\n this.fail = [0]\n this.match = [false]\n\n // Build Trie\n for (const word of wordArrays) {\n let node = 0\n for (let i = 0; i < word.length; i++) {\n const val = word[i]\n if (!(val in this.next[node])) {\n this.next.push(Object.create(null))\n this.fail.push(0)\n this.match.push(false)\n this.next[node][val] = this.next.length - 1\n }\n node = this.next[node][val]\n }\n this.match[node] = true\n }\n\n // Build Failure Links (BFS)\n const queue = []\n for (const val in this.next[0]) {\n if (Object.prototype.hasOwnProperty.call(this.next[0], val)) {\n const child = this.next[0][val]\n this.fail[child] = 0\n queue.push(child)\n }\n }\n\n while (queue.length > 0) {\n const curr = queue.shift()\n for (const val in this.next[curr]) {\n if (Object.prototype.hasOwnProperty.call(this.next[curr], val)) {\n const child = this.next[curr][val]\n let failNode = this.fail[curr]\n\n while (failNode !== 0 && !(val in this.next[failNode])) {\n failNode = this.fail[failNode]\n }\n\n if (val in this.next[failNode]) {\n this.fail[child] = this.next[failNode][val]\n } else {\n this.fail[child] = 0\n }\n\n this.match[child] = this.match[child] || this.match[this.fail[child]]\n queue.push(child)\n }\n }\n }\n }\n\n searchUTF16(charSeq, start, end) {\n let node = 0\n for (let i = start; i < end; i++) {\n const val = charSeq.charCodeAt(i)\n while (node !== 0 && !(val in this.next[node])) {\n node = this.fail[node]\n }\n if (val in this.next[node]) {\n node = this.next[node][val]\n }\n if (this.match[node]) return true\n }\n return false\n }\n\n searchUTF8(bytes, start, end) {\n let node = 0\n for (let i = start; i < end; i++) {\n const val = bytes[i]\n while (node !== 0 && !(val in this.next[node])) {\n node = this.fail[node]\n }\n if (val in this.next[node]) {\n node = this.next[node][val]\n }\n if (this.match[node]) return true\n }\n return false\n }\n}\n\nclass Prefilter {\n static Type = { NONE: 0, EXACT: 1, AND: 2, OR: 3 }\n\n constructor(type) {\n this.type = type\n this.subs = []\n this.str = ''\n this.bytes = null\n this.ac16 = null\n this.ac8 = null\n }\n\n eval(input, pos) {\n switch (this.type) {\n case Prefilter.Type.NONE:\n return true\n case Prefilter.Type.EXACT:\n return input.hasString(this, pos)\n case Prefilter.Type.AND:\n for (let i = 0; i < this.subs.length; i++) {\n if (!this.subs[i].eval(input, pos)) return false\n }\n return true\n case Prefilter.Type.OR:\n // Exploit Aho-Corasick if it was successfully built\n if (this.ac16 && this.ac8) {\n return input.hasAnyString(this, pos)\n }\n for (let i = 0; i < this.subs.length; i++) {\n if (this.subs[i].eval(input, pos)) return true\n }\n return false\n default:\n return true\n }\n }\n}\n\nclass PrefilterTree {\n static build(re) {\n const pf = PrefilterTree.fromRegexp(re)\n return PrefilterTree.simplify(pf)\n }\n\n static fromRegexp(re) {\n if (!re) return new Prefilter(Prefilter.Type.NONE)\n\n switch (re.op) {\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n case Regexp.Op.NO_MATCH:\n case Regexp.Op.EMPTY_MATCH:\n case Regexp.Op.BEGIN_LINE:\n case Regexp.Op.END_LINE:\n case Regexp.Op.BEGIN_TEXT:\n case Regexp.Op.END_TEXT:\n case Regexp.Op.WORD_BOUNDARY:\n case Regexp.Op.NO_WORD_BOUNDARY:\n case Regexp.Op.CHAR_CLASS:\n case Regexp.Op.ANY_CHAR_NOT_NL:\n case Regexp.Op.ANY_CHAR: {\n return new Prefilter(Prefilter.Type.NONE)\n }\n\n case Regexp.Op.LITERAL: {\n if (re.runes.length === 0 || (re.flags & RE2Flags.FOLD_CASE) !== 0) {\n // Skip case-folded literals for simplicity\n return new Prefilter(Prefilter.Type.NONE)\n }\n const pf = new Prefilter(Prefilter.Type.EXACT)\n let str = ''\n for (let i = 0; i < re.runes.length; i++) {\n str += String.fromCodePoint(re.runes[i])\n }\n pf.str = str\n pf.bytes = Utils.stringToUtf8ByteArray(pf.str)\n return pf\n }\n\n case Regexp.Op.CAPTURE:\n case Regexp.Op.PLUS: {\n return PrefilterTree.fromRegexp(re.subs[0])\n }\n\n case Regexp.Op.REPEAT: {\n if (re.min >= 1) {\n return PrefilterTree.fromRegexp(re.subs[0])\n }\n return new Prefilter(Prefilter.Type.NONE)\n }\n\n case Regexp.Op.CONCAT: {\n const pf = new Prefilter(Prefilter.Type.AND)\n for (const sub of re.subs) {\n pf.subs.push(PrefilterTree.fromRegexp(sub))\n }\n return pf\n }\n\n case Regexp.Op.ALTERNATE: {\n const pf = new Prefilter(Prefilter.Type.OR)\n for (const sub of re.subs) {\n pf.subs.push(PrefilterTree.fromRegexp(sub))\n }\n return pf\n }\n\n default:\n return new Prefilter(Prefilter.Type.NONE)\n }\n }\n\n static simplify(pf) {\n if (pf.type === Prefilter.Type.EXACT || pf.type === Prefilter.Type.NONE) {\n return pf\n }\n\n if (pf.type === Prefilter.Type.AND) {\n const newSubs = []\n for (const sub of pf.subs) {\n const s = PrefilterTree.simplify(sub)\n if (s.type !== Prefilter.Type.NONE) {\n if (s.type === Prefilter.Type.AND) {\n for (let j = 0; j < s.subs.length; j++) {\n newSubs.push(s.subs[j])\n }\n } else {\n newSubs.push(s)\n }\n }\n }\n\n if (newSubs.length === 0) return new Prefilter(Prefilter.Type.NONE)\n if (newSubs.length === 1) return newSubs[0]\n pf.subs = newSubs\n return pf\n }\n\n if (pf.type === Prefilter.Type.OR) {\n const newSubs = []\n for (const sub of pf.subs) {\n const s = PrefilterTree.simplify(sub)\n if (s.type === Prefilter.Type.NONE) {\n // If any branch of an OR has no requirements, the whole OR has no requirements\n return new Prefilter(Prefilter.Type.NONE)\n }\n if (s.type === Prefilter.Type.OR) {\n for (let j = 0; j < s.subs.length; j++) {\n newSubs.push(s.subs[j])\n }\n } else {\n newSubs.push(s)\n }\n }\n if (newSubs.length === 0) return new Prefilter(Prefilter.Type.NONE)\n if (newSubs.length === 1) return newSubs[0]\n\n // De-duplicate EXACT branches\n const seen = new Set()\n const uniqueSubs = []\n for (const sub of newSubs) {\n if (sub.type === Prefilter.Type.EXACT) {\n if (!seen.has(sub.str)) {\n seen.add(sub.str)\n uniqueSubs.push(sub)\n }\n } else {\n uniqueSubs.push(sub)\n }\n }\n pf.subs = uniqueSubs\n\n // Build an Aho-Corasick automaton if all children are exact matches\n let allExact = true\n for (const sub of uniqueSubs) {\n if (sub.type !== Prefilter.Type.EXACT) {\n allExact = false\n break\n }\n }\n\n if (allExact && uniqueSubs.length > 1) {\n const words16 = uniqueSubs.map((s) => {\n const arr = []\n for (let i = 0; i < s.str.length; i++) {\n arr.push(s.str.charCodeAt(i))\n }\n return arr\n })\n pf.ac16 = new AhoCorasick(words16)\n\n const words8 = uniqueSubs.map((s) => s.bytes)\n pf.ac8 = new AhoCorasick(words8)\n }\n\n return pf\n }\n\n return pf\n }\n}\n\nexport { Prefilter, PrefilterTree }\n","import { RE2Flags } from './RE2Flags'\nimport { Inst } from './Inst'\n\n/**\n * A list of instruction pointers waiting to be patched.\n * Tracks both `head` and `tail` to allow O(1) appending during compilation.\n * * Values are encoded integers, not standard memory pointers:\n * - Program instruction index: `l >> 1`\n * - Patch `.out` field if: `(l & 1) === 0`\n * - Patch `.arg` field if: `(l & 1) === 1`\n * - `0` denotes an empty list.\n * * @see https://swtch.com/~rsc/regexp/regexp1.html\n */\nclass PatchList {\n /**\n * @param {number} head - Encoded pointer to the start of the patch list.\n * @param {number} tail - Encoded pointer to the end of the patch list.\n */\n constructor(head = 0, tail = 0) {\n this.head = head\n this.tail = tail\n }\n}\n\n/**\n * A Prog is a compiled regular expression program.\n */\nclass Prog {\n constructor() {\n this.inst = []\n this.start = 0 // index of start instruction\n // number of CAPTURE insts in re\n // 2 => implicit ( and ) for whole match $0\n this.numCap = 2\n this.lbStarts = [] // Track starting PCs of lookbehind automata\n this.numLb = 0 // Total number of lookbehinds\n }\n\n // Returns the instruction at the specified pc.\n // Precondition: pc > 0 && pc < numInst().\n getInst(pc) {\n return this.inst[pc]\n }\n\n // Returns the number of instructions in this program.\n numInst() {\n return this.inst.length\n }\n\n // Adds a new instruction to this program, with operator |op| and |pc| equal\n // to |numInst()|.\n addInst(op) {\n this.inst.push(new Inst(op))\n }\n\n // skipNop() follows any no-op or capturing instructions and returns the\n // resulting instruction.\n skipNop(pc) {\n let i = this.inst[pc]\n\n while (i.op === Inst.NOP || i.op === Inst.CAPTURE) {\n i = this.inst[pc]\n pc = i.out\n }\n\n return i\n }\n\n // prefix() returns a pair of a literal string that all matches for the\n // regexp must start with, and a boolean which is true if the prefix is the\n // entire match. The string is returned by appending to |prefix|.\n prefix() {\n let prefix = ''\n let i = this.skipNop(this.start)\n\n if (!Inst.isRuneOp(i.op) || i.runes.length !== 1) {\n return [i.op === Inst.MATCH, prefix]\n }\n\n while (Inst.isRuneOp(i.op) && i.runes.length === 1 && (i.arg & RE2Flags.FOLD_CASE) === 0) {\n prefix += String.fromCodePoint(i.runes[0])\n i = this.skipNop(i.out)\n }\n\n return [i.op === Inst.MATCH, prefix]\n }\n\n // startCond() returns the leading empty-width conditions that must be true\n // in any match. It returns -1 (all bits set) if no matches are possible.\n startCond() {\n let flag = 0\n let pc = this.start\n loop: for (;;) {\n const i = this.inst[pc]\n switch (i.op) {\n case Inst.EMPTY_WIDTH:\n flag |= i.arg\n break\n case Inst.FAIL:\n return -1\n case Inst.CAPTURE:\n case Inst.NOP:\n break\n default:\n break loop\n }\n pc = i.out\n }\n return flag\n }\n\n // --- Patch list ---\n\n // A patchlist is a list of instruction pointers that need to be filled in\n // (patched). Because the pointers haven't been filled in yet, we can reuse\n // their storage to hold the list. It's kind of sleazy, but works well in\n // practice. See http://swtch.com/~rsc/regexp/regexp1.html for inspiration.\n\n // These aren't really pointers: they're integers, so we can reinterpret them\n // this way without using package unsafe. A value l denotes p.inst[l>>1].out\n // (l&1==0) or .arg (l&1==1). l == 0 denotes the empty list, okay because we\n // start every program with a fail instruction, so we'll never want to point\n // at its output link.\n\n patch(l, val) {\n let head = l.head\n while (head !== 0) {\n const i = this.inst[head >> 1]\n if ((head & 1) === 0) {\n head = i.out\n i.out = val\n } else {\n head = i.arg\n i.arg = val\n }\n }\n }\n\n append(l1, l2) {\n if (l1.head === 0) return l2\n if (l2.head === 0) return l1\n\n // We know exactly where the tail is\n const i = this.inst[l1.tail >> 1]\n if ((l1.tail & 1) === 0) {\n i.out = l2.head\n } else {\n i.arg = l2.head\n }\n\n return new PatchList(l1.head, l2.tail)\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n let out = ''\n for (let pc = 0; pc < this.inst.length; pc++) {\n const len = out.length\n out += pc\n if (pc === this.start) {\n out += '*'\n }\n out += ' '.substring(out.length - len)\n out += this.inst[pc]\n out += '\\n'\n }\n return out\n }\n}\n\nexport { Prog, PatchList }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { Regexp } from './Regexp'\nimport { Inst } from './Inst'\nimport { Prog, PatchList } from './Prog'\nimport { RE2JSCompileException } from './exceptions'\n\n/**\n * A fragment of a compiled regular expression program.\n *\n * @see http://swtch.com/~rsc/regexp/regexp1.html\n * @class\n */\nclass Frag {\n constructor(i = 0, out = new PatchList(), nullable = false) {\n this.i = i // an instruction address (pc).\n this.out = out // a patch list; see explanation in Prog.js\n this.nullable = nullable // whether the fragment can match the empty string\n }\n}\n/**\n * Compiler from {@code Regexp} (RE2 abstract syntax) to {@code RE2} (compiled regular expression).\n *\n * The only entry point is {@link #compileRegexp}.\n */\nclass Compiler {\n static ANY_RUNE_NOT_NL() {\n return [0, Codepoint.CODES.get('\\n') - 1, Codepoint.CODES.get('\\n') + 1, Unicode.MAX_RUNE]\n }\n\n static ANY_RUNE() {\n return [0, Unicode.MAX_RUNE]\n }\n\n static compileRegexp(re) {\n const c = new Compiler()\n const f = c.compile(re)\n c.prog.patch(f.out, c.newInst(Inst.MATCH).i)\n c.prog.start = f.i\n return c.prog\n }\n\n static compileSet(regexps) {\n const c = new Compiler()\n\n if (regexps.length === 0) {\n c.prog.start = c.newInst(Inst.FAIL).i\n return c.prog\n }\n\n let starts = []\n for (let i = 0; i < regexps.length; i++) {\n const f = c.compile(regexps[i])\n const m = c.newInst(Inst.MATCH)\n c.prog.getInst(m.i).arg = i // Store the regex index\n c.prog.patch(f.out, m.i)\n starts.push(f.i)\n }\n\n // Link starts together via ALT\n let start = starts[0]\n for (let i = 1; i < starts.length; i++) {\n const f = c.newInst(Inst.ALT)\n const inst = c.prog.getInst(f.i)\n inst.out = start\n inst.arg = starts[i]\n start = f.i\n }\n c.prog.start = start\n return c.prog\n }\n\n constructor() {\n this.prog = new Prog()\n this.newInst(Inst.FAIL)\n }\n\n newInst(op) {\n this.prog.addInst(op)\n return new Frag(this.prog.numInst() - 1, 0, true)\n }\n\n // Returns a no-op fragment. Sometimes unavoidable.\n nop() {\n const f = this.newInst(Inst.NOP)\n f.out = new PatchList(f.i << 1, f.i << 1)\n return f\n }\n\n fail() {\n return new Frag()\n }\n\n // Given fragment a, returns (a) capturing as \\n.\n // Given a fragment a, returns a fragment with capturing parens around a.\n cap(arg) {\n const f = this.newInst(Inst.CAPTURE)\n f.out = new PatchList(f.i << 1, f.i << 1)\n this.prog.getInst(f.i).arg = arg\n if (this.prog.numCap < arg + 1) {\n this.prog.numCap = arg + 1\n }\n return f\n }\n\n // Given fragments a and b, returns ab; a|b\n cat(f1, f2) {\n // concat of failure is failure\n if (f1.i === 0 || f2.i === 0) {\n return this.fail()\n }\n // eslint-disable-next-line no-warning-comments\n // TODO(rsc): elide nop\n this.prog.patch(f1.out, f2.i)\n return new Frag(f1.i, f2.out, f1.nullable && f2.nullable)\n }\n\n // Given fragments for a and b, returns fragment for a|b.\n alt(f1, f2) {\n // alt of failure is other\n if (f1.i === 0) {\n return f2\n }\n if (f2.i === 0) {\n return f1\n }\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n i.out = f1.i\n i.arg = f2.i\n f.out = this.prog.append(f1.out, f2.out)\n f.nullable = f1.nullable || f2.nullable\n return f\n }\n\n // loop returns the fragment for the main loop of a plus or star.\n // For plus, it can be used directly. with f1.i as the entry.\n // For star, it can be used directly when f1 can't match an empty string.\n // (When f1 can match an empty string, f1* must be implemented as (f1+)?\n // to get the priority match order correct.)\n loop(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = new PatchList(f.i << 1, f.i << 1)\n } else {\n i.out = f1.i\n f.out = new PatchList((f.i << 1) | 1, (f.i << 1) | 1)\n }\n this.prog.patch(f1.out, f.i)\n return f\n }\n\n // Given a fragment for a, returns a fragment for a? or a?? (if nongreedy)\n quest(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = new PatchList(f.i << 1, f.i << 1)\n } else {\n i.out = f1.i\n f.out = new PatchList((f.i << 1) | 1, (f.i << 1) | 1)\n }\n f.out = this.prog.append(f.out, f1.out)\n return f\n }\n\n // Given a fragment a, returns a fragment for a* or a*? (if nongreedy)\n star(f1, nongreedy) {\n if (f1.nullable) {\n return this.quest(this.plus(f1, nongreedy), nongreedy)\n }\n return this.loop(f1, nongreedy)\n }\n\n // Given a fragment for a, returns a fragment for a+ or a+? (if nongreedy)\n plus(f1, nongreedy) {\n return new Frag(f1.i, this.loop(f1, nongreedy).out, f1.nullable)\n }\n\n // op is a bitmask of EMPTY_* flags.\n empty(op) {\n const f = this.newInst(Inst.EMPTY_WIDTH)\n this.prog.getInst(f.i).arg = op\n f.out = new PatchList(f.i << 1, f.i << 1)\n return f\n }\n\n // flags : parser flags\n rune(runes, flags) {\n const f = this.newInst(Inst.RUNE)\n f.nullable = false\n const i = this.prog.getInst(f.i)\n i.runes = runes\n flags &= RE2Flags.FOLD_CASE\n if (runes.length !== 1 || Unicode.simpleFold(runes[0]) === runes[0]) {\n flags &= ~RE2Flags.FOLD_CASE\n }\n i.arg = flags\n f.out = new PatchList(f.i << 1, f.i << 1)\n if (\n ((flags & RE2Flags.FOLD_CASE) === 0 && runes.length === 1) ||\n (runes.length === 2 && runes[0] === runes[1])\n ) {\n i.op = Inst.RUNE1\n } else if (runes.length === 2 && runes[0] === 0 && runes[1] === Unicode.MAX_RUNE) {\n i.op = Inst.RUNE_ANY\n } else if (\n runes.length === 4 &&\n runes[0] === 0 &&\n runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n runes[3] === Unicode.MAX_RUNE\n ) {\n i.op = Inst.RUNE_ANY_NOT_NL\n }\n return f\n }\n\n lookBehind(a, lb) {\n const id = this.newInst(Inst.LB_WRITE)\n this.prog.getInst(id.i).lb = lb\n\n // Create the prefix wildcard `.*` for the lookbehind automaton\n const any = this.rune(Compiler.ANY_RUNE(), 0)\n const dotStar = this.star(any, true) // nongreedy = true\n const lbAutomaton = this.cat(dotStar, a)\n\n this.prog.patch(lbAutomaton.out, id.i)\n\n const checkId = this.newInst(Inst.LB_CHECK)\n this.prog.getInst(checkId.i).lb = lb\n\n // Save the starting point of this lookbehind automaton\n this.prog.lbStarts.push(lbAutomaton.i)\n if (Math.abs(lb) > this.prog.numLb) {\n this.prog.numLb = Math.abs(lb)\n }\n\n checkId.out = new PatchList(checkId.i << 1, checkId.i << 1)\n return checkId\n }\n\n compile(re) {\n switch (re.op) {\n case Regexp.Op.NO_MATCH:\n return this.fail()\n case Regexp.Op.EMPTY_MATCH:\n return this.nop()\n case Regexp.Op.LITERAL:\n if (re.runes.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let r of re.runes) {\n const f1 = this.rune([r], re.flags)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n case Regexp.Op.CHAR_CLASS:\n return this.rune(re.runes, re.flags)\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return this.rune(Compiler.ANY_RUNE_NOT_NL(), 0)\n case Regexp.Op.ANY_CHAR:\n return this.rune(Compiler.ANY_RUNE(), 0)\n case Regexp.Op.BEGIN_LINE:\n return this.empty(Utils.EMPTY_BEGIN_LINE)\n case Regexp.Op.END_LINE:\n return this.empty(Utils.EMPTY_END_LINE)\n case Regexp.Op.BEGIN_TEXT:\n return this.empty(Utils.EMPTY_BEGIN_TEXT)\n case Regexp.Op.END_TEXT:\n return this.empty(Utils.EMPTY_END_TEXT)\n case Regexp.Op.WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_WORD_BOUNDARY)\n case Regexp.Op.NO_WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_NO_WORD_BOUNDARY)\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n return this.lookBehind(this.compile(re.subs[0]), re.lb)\n case Regexp.Op.CAPTURE: {\n const bra = this.cap(re.cap << 1)\n const sub = this.compile(re.subs[0])\n const ket = this.cap((re.cap << 1) | 1)\n return this.cat(this.cat(bra, sub), ket)\n }\n case Regexp.Op.STAR:\n return this.star(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.PLUS:\n return this.plus(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.QUEST:\n return this.quest(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.CONCAT: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n }\n case Regexp.Op.ALTERNATE: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.alt(f, f1)\n }\n return f\n }\n }\n default:\n throw new RE2JSCompileException('regexp: unhandled case in compile')\n }\n }\n}\n\nexport { Compiler }\n","import { RE2Flags } from './RE2Flags'\nimport { Regexp } from './Regexp'\nimport { Unicode } from './Unicode'\nimport { Codepoint } from './Codepoint'\n\nclass Simplify {\n // Simplify returns a regexp equivalent to re but without counted\n // repetitions and with various other simplifications, such as\n // rewriting /(?:a+)+/ to /a+/. The resulting regexp will execute\n // correctly but its string representation will not produce the same\n // parse tree, because capturing parentheses may have been duplicated\n // or removed. For example, the simplified form for /(x){1,2}/ is\n // /(x)(x)?/ but both parentheses capture as $1. The returned regexp\n // may share structure with or be the original.\n static simplify(re) {\n if (re === null) {\n return null\n }\n\n switch (re.op) {\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n case Regexp.Op.CAPTURE: {\n const sub = Simplify.simplify(re.subs[0])\n if (sub !== re.subs[0]) {\n const nre = Regexp.fromRegexp(re)\n nre.runes = []\n nre.subs = [sub]\n return nre\n }\n return re\n }\n\n case Regexp.Op.CONCAT:\n case Regexp.Op.ALTERNATE: {\n const newSubs = []\n let changed = false\n\n for (let i = 0; i < re.subs.length; i++) {\n const sub = re.subs[i]\n const nsub = Simplify.simplify(sub)\n if (nsub !== sub) {\n changed = true\n }\n\n if (re.op === Regexp.Op.CONCAT) {\n // If any part of a CONCAT is mathematically impossible,\n // the entire CONCAT sequence becomes impossible.\n if (nsub.op === Regexp.Op.NO_MATCH) {\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n // Drop empty 0-width match nodes entirely from sequences\n if (nsub.op === Regexp.Op.EMPTY_MATCH) {\n changed = true\n continue\n }\n // Flatten nested concatenations\n if (nsub.op === Regexp.Op.CONCAT) {\n changed = true\n for (let j = 0; j < nsub.subs.length; j++) {\n newSubs.push(nsub.subs[j])\n }\n continue\n }\n } else if (re.op === Regexp.Op.ALTERNATE) {\n // Drop impossible branches from alternations\n if (nsub.op === Regexp.Op.NO_MATCH) {\n changed = true\n continue\n }\n // Flatten nested alternations\n if (nsub.op === Regexp.Op.ALTERNATE) {\n changed = true\n for (let j = 0; j < nsub.subs.length; j++) {\n newSubs.push(nsub.subs[j])\n }\n continue\n }\n }\n\n newSubs.push(nsub)\n }\n\n if (changed) {\n // If we filtered out all nodes, return the mathematically correct fallback\n if (newSubs.length === 0) {\n return new Regexp(\n re.op === Regexp.Op.CONCAT ? Regexp.Op.EMPTY_MATCH : Regexp.Op.NO_MATCH\n )\n }\n // If only 1 node remains, we don't need a CONCAT/ALT container at all\n if (newSubs.length === 1) {\n return newSubs[0]\n }\n\n const nre = Regexp.fromRegexp(re)\n nre.runes = []\n nre.subs = newSubs\n return nre\n }\n\n return re\n }\n\n case Regexp.Op.CHAR_CLASS: {\n if (re.runes === null) return re\n\n // Empty character classes match nothing.\n if (re.runes.length === 0) {\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n // Full character classes match everything.\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n return new Regexp(Regexp.Op.ANY_CHAR)\n }\n // Standard catch-all except newline\n if (\n re.runes.length === 4 &&\n re.runes[0] === 0 &&\n re.runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n re.runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n re.runes[3] === Unicode.MAX_RUNE\n ) {\n return new Regexp(Regexp.Op.ANY_CHAR_NOT_NL)\n }\n return re\n }\n\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n const sub = Simplify.simplify(re.subs[0])\n return Simplify.simplify1(re.op, re.flags, sub, re)\n }\n\n case Regexp.Op.REPEAT: {\n // Special special case: x{0} matches the empty string\n // and doesn't even need to consider x.\n if (re.min === 0 && re.max === 0) {\n return new Regexp(Regexp.Op.EMPTY_MATCH)\n }\n // The fun begins.\n const sub = Simplify.simplify(re.subs[0])\n\n // x{n,} means at least n matches of x.\n if (re.max === -1) {\n // Special case: x{0,} is x*.\n if (re.min === 0) {\n return Simplify.simplify1(Regexp.Op.STAR, re.flags, sub, null)\n }\n // Special case: x{1,} is x+.\n if (re.min === 1) {\n return Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null)\n }\n // General case: x{4,} is xxxx+.\n const nre = new Regexp(Regexp.Op.CONCAT)\n const subs = []\n for (let i = 0; i < re.min - 1; i++) {\n subs.push(sub)\n }\n subs.push(Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null))\n nre.subs = subs.slice(0)\n\n // Ensure newly created CONCAT is properly flattened\n return Simplify.simplify(nre)\n }\n // Special case x{0} handled above.\n\n // Special case: x{1} is just x.\n if (re.min === 1 && re.max === 1) {\n return sub\n }\n\n // General case: x{n,m} means n copies of x and m copies of x?\n // The machine will do less work if we nest the final m copies,\n // so that x{2,5} = xx(x(x(x)?)?)?\n\n // Build leading prefix: xx.\n let prefixSubs = null\n if (re.min > 0) {\n prefixSubs = []\n for (let i = 0; i < re.min; i++) {\n prefixSubs.push(sub)\n }\n }\n\n // Build and attach suffix: (x(x(x)?)?)?\n if (re.max > re.min) {\n let suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, sub, null)\n for (let i = re.min + 1; i < re.max; i++) {\n const nre2 = new Regexp(Regexp.Op.CONCAT)\n nre2.subs = [sub, suffix]\n suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, nre2, null)\n }\n\n if (prefixSubs === null) {\n return suffix\n }\n prefixSubs.push(suffix)\n }\n\n if (prefixSubs !== null) {\n const prefix = new Regexp(Regexp.Op.CONCAT)\n prefix.subs = prefixSubs.slice(0)\n // Ensure newly created CONCAT is properly flattened\n return Simplify.simplify(prefix)\n }\n\n // Some degenerate case like min > max or min < max < 0.\n // Handle as impossible match.\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n }\n return re\n }\n\n // simplify1 implements Simplify for the unary OpStar,\n // OpPlus, and OpQuest operators. It returns the simple regexp\n // equivalent to\n //\n // Regexp{Op: op, Flags: flags, Sub: {sub}}\n //\n // under the assumption that sub is already simple, and\n // without first allocating that structure. If the regexp\n // to be returned turns out to be equivalent to re, simplify1\n // returns re instead.\n //\n // simplify1 is factored out of Simplify because the implementation\n // for other operators generates these unary expressions.\n // Letting them call simplify1 makes sure the expressions they\n // generate are simple.\n static simplify1(op, flags, sub, re) {\n // Special case: repeat the empty string as much as\n // you want, but it's still the empty string.\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return sub\n }\n\n // Handle impossible targets gracefully.\n // e.g. Trying to match \"NO_MATCH\" 0 or 1 times (QUEST/STAR) evaluates to EMPTY_MATCH.\n if (sub.op === Regexp.Op.NO_MATCH) {\n if (op === Regexp.Op.PLUS) return sub // 1+ times is impossible\n return new Regexp(Regexp.Op.EMPTY_MATCH)\n }\n\n // The operators are idempotent if the flags match.\n if (op === sub.op && (flags & RE2Flags.NON_GREEDY) === (sub.flags & RE2Flags.NON_GREEDY)) {\n return sub\n }\n\n if (\n re !== null &&\n re.op === op &&\n (re.flags & RE2Flags.NON_GREEDY) === (flags & RE2Flags.NON_GREEDY) &&\n sub === re.subs[0]\n ) {\n return re\n }\n\n const nre = new Regexp(op)\n nre.flags = flags\n nre.subs = [sub]\n return nre\n }\n}\n\nexport { Simplify }\n","// GENERATED BY tools/scripts/make_perl_groups.pl; DO NOT EDIT.\n// ./tools/scripts/make_perl_groups.pl > src/CharGroup.js\n\nclass CharGroup {\n constructor(sign, cls) {\n this.sign = sign\n this.cls = cls\n }\n}\n\nconst code1 = [0x30, 0x39]\n\nconst code2 = [0x9, 0xa, 0xc, 0xd, 0x20, 0x20]\n\nconst code3 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst PERL_GROUPS = new Map([\n ['\\\\d', new CharGroup(+1, code1)],\n ['\\\\D', new CharGroup(-1, code1)],\n ['\\\\s', new CharGroup(+1, code2)],\n ['\\\\S', new CharGroup(-1, code2)],\n ['\\\\w', new CharGroup(+1, code3)],\n ['\\\\W', new CharGroup(-1, code3)]\n])\nconst code4 = [0x30, 0x39, 0x41, 0x5a, 0x61, 0x7a]\n\nconst code5 = [0x41, 0x5a, 0x61, 0x7a]\n\nconst code6 = [0x0, 0x7f]\n\nconst code7 = [0x9, 0x9, 0x20, 0x20]\n\nconst code8 = [0x0, 0x1f, 0x7f, 0x7f]\n\nconst code9 = [0x30, 0x39]\n\nconst code10 = [0x21, 0x7e]\n\nconst code11 = [0x61, 0x7a]\n\nconst code12 = [0x20, 0x7e]\n\nconst code13 = [0x21, 0x2f, 0x3a, 0x40, 0x5b, 0x60, 0x7b, 0x7e]\n\nconst code14 = [0x9, 0xd, 0x20, 0x20]\n\nconst code15 = [0x41, 0x5a]\n\nconst code16 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst code17 = [0x30, 0x39, 0x41, 0x46, 0x61, 0x66]\n\nconst POSIX_GROUPS = new Map([\n ['[:alnum:]', new CharGroup(+1, code4)],\n ['[:^alnum:]', new CharGroup(-1, code4)],\n ['[:alpha:]', new CharGroup(+1, code5)],\n ['[:^alpha:]', new CharGroup(-1, code5)],\n ['[:ascii:]', new CharGroup(+1, code6)],\n ['[:^ascii:]', new CharGroup(-1, code6)],\n ['[:blank:]', new CharGroup(+1, code7)],\n ['[:^blank:]', new CharGroup(-1, code7)],\n ['[:cntrl:]', new CharGroup(+1, code8)],\n ['[:^cntrl:]', new CharGroup(-1, code8)],\n ['[:digit:]', new CharGroup(+1, code9)],\n ['[:^digit:]', new CharGroup(-1, code9)],\n ['[:graph:]', new CharGroup(+1, code10)],\n ['[:^graph:]', new CharGroup(-1, code10)],\n ['[:lower:]', new CharGroup(+1, code11)],\n ['[:^lower:]', new CharGroup(-1, code11)],\n ['[:print:]', new CharGroup(+1, code12)],\n ['[:^print:]', new CharGroup(-1, code12)],\n ['[:punct:]', new CharGroup(+1, code13)],\n ['[:^punct:]', new CharGroup(-1, code13)],\n ['[:space:]', new CharGroup(+1, code14)],\n ['[:^space:]', new CharGroup(-1, code14)],\n ['[:upper:]', new CharGroup(+1, code15)],\n ['[:^upper:]', new CharGroup(-1, code15)],\n ['[:word:]', new CharGroup(+1, code16)],\n ['[:^word:]', new CharGroup(-1, code16)],\n ['[:xdigit:]', new CharGroup(+1, code17)],\n ['[:^xdigit:]', new CharGroup(-1, code17)]\n])\n\nexport { PERL_GROUPS, POSIX_GROUPS }\n","import { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\n/**\n * A \"builder\"-style helper class for manipulating character classes represented as an array of\n * pairs of runes [lo, hi], each denoting an inclusive interval.\n *\n * All methods mutate the internal state and return {@code this}, allowing operations to be chained.\n */\nclass CharClass {\n // Exposed, since useful for debugging CharGroups too.\n static charClassToString(r, len) {\n let result = '['\n for (let i = 0; i < len; i += 2) {\n if (i > 0) {\n result += ' '\n }\n const lo = r[i]\n const hi = r[i + 1]\n if (lo === hi) {\n result += `0x${lo.toString(16)}`\n } else {\n result += `0x${lo.toString(16)}-0x${hi.toString(16)}`\n }\n }\n result += ']'\n return result\n }\n\n // cmp() returns the ordering of the pair (a[i], a[i+1]) relative to\n // (pivotFrom, pivotTo), where the first component of the pair (lo) is\n // ordered naturally and the second component (hi) is in reverse order.\n static cmp(array, i, pivotFrom, pivotTo) {\n const cmp = array[i] - pivotFrom\n return cmp !== 0 ? cmp : pivotTo - array[i + 1]\n }\n\n // qsortIntPair() quicksorts pairs of ints in |array| according to lt().\n // Precondition: |left|, |right|, |this.len| must all be even; |this.len > 1|.\n static qsortIntPair(array, left, right) {\n const pivotIndex = (((left + right) / 2) | 0) & ~1\n const pivotFrom = array[pivotIndex]\n const pivotTo = array[pivotIndex + 1]\n let i = left\n let j = right\n while (i <= j) {\n while (i < right && CharClass.cmp(array, i, pivotFrom, pivotTo) < 0) {\n i += 2\n }\n\n while (j > left && CharClass.cmp(array, j, pivotFrom, pivotTo) > 0) {\n j -= 2\n }\n\n if (i <= j) {\n if (i !== j) {\n let temp = array[i]\n array[i] = array[j]\n array[j] = temp\n temp = array[i + 1]\n array[i + 1] = array[j + 1]\n array[j + 1] = temp\n }\n i += 2\n j -= 2\n }\n }\n\n if (left < j) {\n CharClass.qsortIntPair(array, left, j)\n }\n if (i < right) {\n CharClass.qsortIntPair(array, i, right)\n }\n }\n\n constructor(r = Utils.emptyInts()) {\n this.r = r // inclusive ranges, pairs of [lo,hi]. r.length is even.\n this.len = r.length // prefix of |r| that is defined. Even.\n }\n\n // Returns the character class as an int array. Subsequent CharClass\n // operations may mutate this array, so typically this is the last operation\n // performed on a given CharClass instance.\n toArray() {\n if (this.len === this.r.length) {\n return this.r\n } else {\n return this.r.slice(0, this.len)\n }\n }\n\n // cleanClass() sorts the ranges (pairs of elements) of this CharClass,\n // merges them, and eliminates duplicates.\n cleanClass() {\n if (this.len < 4) {\n return this\n }\n // Sort by lo increasing, hi decreasing to break ties.\n CharClass.qsortIntPair(this.r, 0, this.len - 2)\n // Merge abutting, overlapping.\n let w = 2 // write index\n for (let i = 2; i < this.len; i += 2) {\n {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (lo <= this.r[w - 1] + 1) {\n // merge with previous range\n if (hi > this.r[w - 1]) {\n this.r[w - 1] = hi\n }\n continue\n }\n // new disjoint range\n this.r[w] = lo\n this.r[w + 1] = hi\n w += 2\n }\n }\n this.len = w\n return this\n }\n\n // appendLiteral() appends the literal |x| to this CharClass.\n appendLiteral(x, flags) {\n return (flags & RE2Flags.FOLD_CASE) !== 0\n ? this.appendFoldedRange(x, x)\n : this.appendRange(x, x)\n }\n\n // appendRange() appends the range [lo-hi] (inclusive) to this CharClass.\n appendRange(lo, hi) {\n // Expand last range or next to last range if it overlaps or abuts.\n // Checking two ranges helps when appending case-folded\n // alphabets, so that one range can be expanding A-Z and the\n // other expanding a-z.\n if (this.len > 0) {\n for (let i = 2; i <= 4; i += 2) {\n // twice, using i=2, i=4\n if (this.len >= i) {\n const rlo = this.r[this.len - i]\n const rhi = this.r[this.len - i + 1]\n if (lo <= rhi + 1 && rlo <= hi + 1) {\n if (lo < rlo) {\n this.r[this.len - i] = lo\n }\n if (hi > rhi) {\n this.r[this.len - i + 1] = hi\n }\n return this\n }\n }\n }\n }\n\n this.r[this.len++] = lo\n this.r[this.len++] = hi\n return this\n }\n\n // appendFoldedRange() appends the range [lo-hi] and its case\n // folding-equivalent runes to this CharClass.\n appendFoldedRange(lo, hi) {\n // Optimizations.\n if (lo <= Unicode.MIN_FOLD && hi >= Unicode.MAX_FOLD) {\n // Range is full: folding can't add more.\n return this.appendRange(lo, hi)\n }\n if (hi < Unicode.MIN_FOLD || lo > Unicode.MAX_FOLD) {\n // Range is outside folding possibilities.\n return this.appendRange(lo, hi)\n }\n if (lo < Unicode.MIN_FOLD) {\n // [lo, minFold-1] needs no folding.\n this.appendRange(lo, Unicode.MIN_FOLD - 1)\n lo = Unicode.MIN_FOLD\n }\n if (hi > Unicode.MAX_FOLD) {\n // [maxFold+1, hi] needs no folding.\n this.appendRange(Unicode.MAX_FOLD + 1, hi)\n hi = Unicode.MAX_FOLD\n }\n\n // Brute force. Depend on appendRange to coalesce ranges on the fly.\n for (let c = lo; c <= hi; c++) {\n this.appendRange(c, c)\n\n for (let f = Unicode.simpleFold(c); f !== c; f = Unicode.simpleFold(f)) {\n this.appendRange(f, f)\n }\n }\n return this\n }\n\n // appendClass() appends the class |x| to this CharClass.\n // It assumes |x| is clean. Does not mutate |x|.\n appendClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendFoldedClass() appends the case folding of the class |x| to this\n // CharClass. Does not mutate |x|.\n appendFoldedClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendFoldedRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendNegatedClass() append the negation of the class |x| to this\n // CharClass. It assumes |x| is clean. Does not mutate |x|.\n appendNegatedClass(x) {\n let nextLo = 0\n for (let i = 0; i < x.length; i += 2) {\n const lo = x[i]\n const hi = x[i + 1]\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTable() appends the Unicode range table |table| to this CharClass.\n // Does not mutate |table|.\n appendTable(table) {\n for (let i = 0; i < table.length; ++i) {\n const lo = table.getLo(i)\n const hi = table.getHi(i)\n const stride = table.getStride(i)\n if (stride === 1) {\n this.appendRange(lo, hi)\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n this.appendRange(c, c)\n }\n }\n return this\n }\n\n // appendNegatedTable() returns the result of appending the negation of range\n // table |table| to this CharClass. Does not mutate |table|.\n appendNegatedTable(table) {\n let nextLo = 0\n for (let i = 0; i < table.length; ++i) {\n const lo = table.getLo(i)\n const hi = table.getHi(i)\n const stride = table.getStride(i)\n if (stride === 1) {\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n if (nextLo <= c - 1) {\n this.appendRange(nextLo, c - 1)\n }\n nextLo = c + 1\n }\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTableWithSign() calls append{,Negated}Table depending on sign.\n // Does not mutate |table|.\n appendTableWithSign(table, sign) {\n return sign < 0 ? this.appendNegatedTable(table) : this.appendTable(table)\n }\n\n // negateClass() negates this CharClass, which must already be clean.\n negateClass() {\n let nextLo = 0 // lo end of next class to add\n let w = 0 // write index\n for (let i = 0; i < this.len; i += 2) {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (nextLo <= lo - 1) {\n this.r[w] = nextLo\n this.r[w + 1] = lo - 1\n w += 2\n }\n nextLo = hi + 1\n }\n this.len = w\n if (nextLo <= Unicode.MAX_RUNE) {\n this.r[this.len++] = nextLo\n this.r[this.len++] = Unicode.MAX_RUNE\n }\n return this\n }\n\n // appendClassWithSign() calls appendClass() if sign is +1 or\n // appendNegatedClass if sign is -1. Does not mutate |x|.\n appendClassWithSign(x, sign) {\n return sign < 0 ? this.appendNegatedClass(x) : this.appendClass(x)\n }\n\n // appendGroup() appends CharGroup |g| to this CharClass, folding iff\n // |foldCase|. Does not mutate |g|.\n appendGroup(g, foldCase) {\n let cls = g.cls\n if (foldCase) {\n cls = new CharClass().appendFoldedClass(cls).cleanClass().toArray()\n }\n return this.appendClassWithSign(cls, g.sign)\n }\n\n toString() {\n return CharClass.charClassToString(this.r, this.len)\n }\n}\n\nexport { CharClass }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { UnicodeTables } from './UnicodeTables'\nimport { UnicodeRangeTable } from './UnicodeRangeTable'\nimport { PERL_GROUPS, POSIX_GROUPS } from './CharGroup'\nimport { Utils } from './Utils'\nimport { CharClass } from './CharClass'\nimport { RE2JSSyntaxException } from './exceptions'\nimport { Regexp } from './Regexp'\n\n// StringIterator: a stream of runes with an opaque cursor, permitting\n// rewinding. The units of the cursor are not specified beyond the\n// fact that ASCII characters are single width. (Cursor positions\n// could be UTF-8 byte indices, UTF-16 code indices or rune indices.)\n//\n// In particular, be careful with:\n// - skip: only use this to advance over ASCII characters\n// since these always have a width of 1.\n// - skipString: only use this to advance over strings which are\n// known to be at the current position, e.g. due to prior call to\n// lookingAt().\n// Only use pop() to advance over possibly non-ASCII runes.\nclass StringIterator {\n constructor(str) {\n this.str = str\n this.position = 0\n }\n\n // Returns the cursor position. Do not interpret the result!\n pos() {\n return this.position\n }\n\n // Resets the cursor position to a previous value returned by pos().\n rewindTo(pos) {\n this.position = pos\n }\n\n // Returns true unless the stream is exhausted.\n more() {\n return this.position < this.str.length\n }\n\n // Returns the rune at the cursor position.\n // Precondition: |more()|.\n peek() {\n return this.str.codePointAt(this.position)\n }\n\n // Advances the cursor by |n| positions, which must be ASCII runes.\n //\n // (In practise, this is only ever used to skip over regexp\n // metacharacters that are ASCII, so there is no numeric difference\n // between indices into UTF-8 bytes, UTF-16 codes and runes.)\n skip(n) {\n this.position += n\n }\n\n // Advances the cursor by the number of cursor positions in |s|.\n skipString(s) {\n this.position += s.length\n }\n\n // Returns the rune at the cursor position, and advances the cursor\n // past it. Precondition: |more()|.\n pop() {\n const r = this.str.codePointAt(this.position)\n this.position += Utils.charCount(r)\n return r\n }\n\n lookingAt(s) {\n return this.rest().startsWith(s)\n }\n\n // Returns the rest of the pattern as a Java UTF-16 string.\n rest() {\n return this.str.substring(this.position)\n }\n\n // Returns the substring from |beforePos| to the current position.\n // |beforePos| must have been previously returned by |pos()|.\n from(beforePos) {\n return this.str.substring(beforePos, this.position)\n }\n\n toString() {\n return this.rest()\n }\n}\n/**\n * A parser of regular expression patterns.\n *\n * The only public entry point is {@link #parse(String pattern, int flags)}.\n */\nclass Parser {\n // Unexpected error\n static ERR_INTERNAL_ERROR = 'regexp/syntax: internal error'\n\n // Parse errors\n static ERR_INVALID_CHAR_RANGE = 'invalid character class range'\n static ERR_INVALID_ESCAPE = 'invalid escape sequence'\n static ERR_INVALID_NAMED_CAPTURE = 'invalid named capture'\n static ERR_INVALID_PERL_OP = 'invalid or unsupported Perl syntax'\n static ERR_INVALID_REPEAT_OP = 'invalid nested repetition operator'\n static ERR_INVALID_REPEAT_SIZE = 'invalid repeat count'\n static ERR_MISSING_BRACKET = 'missing closing ]'\n static ERR_MISSING_PAREN = 'missing closing )'\n static ERR_MISSING_REPEAT_ARGUMENT = 'missing argument to repetition operator'\n static ERR_TRAILING_BACKSLASH = 'trailing backslash at end of expression'\n static ERR_DUPLICATE_NAMED_CAPTURE = 'duplicate capture group name'\n static ERR_UNEXPECTED_PAREN = 'unexpected )'\n static ERR_NESTING_DEPTH = 'expression nests too deeply'\n static ERR_LARGE = 'expression too large'\n\n // maxHeight is the maximum height of a regexp parse tree.\n // It is somewhat arbitrarily chosen, but the idea is to be large enough\n // that no one will actually hit in real use but at the same time small enough\n // that recursion on the Regexp tree will not hit the 1GB Go stack limit.\n // The maximum amount of stack for a single recursive frame is probably\n // closer to 1kB, so this could potentially be raised, but it seems unlikely\n // that people have regexps nested even this deeply.\n // We ran a test on Google's C++ code base and turned up only\n // a single use case with depth > 100; it had depth 128.\n // Using depth 1000 should be plenty of margin.\n // As an optimization, we don't even bother calculating heights\n // until we've allocated at least maxHeight Regexp structures.\n static MAX_HEIGHT = 1000\n\n // maxSize is the maximum size of a compiled regexp in Insts.\n // It too is somewhat arbitrarily chosen, but the idea is to be large enough\n // to allow significant regexps while at the same time small enough that\n // the compiled form will not take up too much memory.\n // 128 MB is enough for a 3.3 million Inst structures, which roughly\n // corresponds to a 3.3 MB regexp.\n static MAX_SIZE = 3355443 // 128 << 20 / (5 * 8) (instSize = byte, 2 uint32, slice is 5 64-bit words)\n\n // maxRunes is the maximum number of runes allowed in a regexp tree\n // counting the runes in all the nodes.\n // Ignoring character classes p.numRunes is always less than the length of the regexp.\n // Character classes can make it much larger: each \\pL adds 1292 runes.\n // 128 MB is enough for 32M runes, which is over 26k \\pL instances.\n // Note that repetitions do not make copies of the rune slices,\n // so \\pL{1000} is only one rune slice, not 1000.\n // We could keep a cache of character classes we've seen,\n // so that all the \\pL we see use the same rune list,\n // but that doesn't remove the problem entirely:\n // consider something like [\\pL01234][\\pL01235][\\pL01236]...[\\pL^&*()].\n // And because the Rune slice is exposed directly in the Regexp,\n // there is not an opportunity to change the representation to allow\n // partial sharing between different character classes.\n // So the limit is the best we can do.\n static MAX_RUNES = 33554432 // 128 << 20 / 4 (runeSize, int32 is 4 bytes)\n\n // RangeTables are represented as int[][], a list of triples (start, end,\n // stride).\n static ANY_TABLE = new UnicodeRangeTable(new Uint32Array([0, Unicode.MAX_RUNE, 1]))\n\n // Ascii tables\n static ASCII_TABLE = new UnicodeRangeTable(new Uint32Array([0, 0x7f, 1]))\n static ASCII_FOLD_TABLE = new UnicodeRangeTable(\n new Uint32Array([\n 0,\n 0x7f,\n 1,\n 0x017f,\n 0x017f,\n 1, // Old English long s (ſ), folds to S/s.\n 0x212a,\n 0x212a,\n 1 // Kelvin K, folds to K/k.\n ])\n )\n\n // unicodeTable() returns the Unicode RangeTable identified by name\n // and the table of additional fold-equivalent code points.\n // Returns null if |name| does not identify a Unicode character range.\n static unicodeTable(name) {\n if (name === 'Any') {\n return { tab: Parser.ANY_TABLE, fold: Parser.ANY_TABLE, sign: +1 }\n }\n if (name === 'Ascii') {\n return { tab: Parser.ASCII_TABLE, fold: Parser.ASCII_FOLD_TABLE, sign: +1 }\n }\n if (name === 'Assigned') {\n // Assigned is the mathematical inversion of Cn (Unassigned)\n return {\n tab: UnicodeTables.CATEGORIES.get('Cn'),\n fold: UnicodeTables.CATEGORIES.get('Cn'),\n sign: -1\n }\n }\n if (name === 'Lc') {\n return {\n tab: UnicodeTables.CATEGORIES.get('LC'),\n fold: UnicodeTables.FOLD_CATEGORIES.get('LC'),\n sign: +1\n }\n }\n if (UnicodeTables.CATEGORIES.has(name)) {\n return {\n tab: UnicodeTables.CATEGORIES.get(name),\n fold: UnicodeTables.FOLD_CATEGORIES.get(name),\n sign: +1\n }\n }\n if (UnicodeTables.SCRIPTS.has(name)) {\n return {\n tab: UnicodeTables.SCRIPTS.get(name),\n fold: UnicodeTables.FOLD_SCRIPT.get(name),\n sign: +1\n }\n }\n return null\n }\n\n // minFoldRune returns the minimum rune fold-equivalent to r.\n static minFoldRune(r) {\n if (r < Unicode.MIN_FOLD || r > Unicode.MAX_FOLD) {\n return r\n }\n\n let min = r\n const r0 = r\n for (r = Unicode.simpleFold(r); r !== r0; r = Unicode.simpleFold(r)) {\n if (min > r) {\n min = r\n }\n }\n return min\n }\n\n // leadingRegexp returns the leading regexp that re begins with.\n // The regexp refers to storage in re or its children.\n static leadingRegexp(re) {\n if (re.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n const sub = re.subs[0]\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n return sub\n }\n return re\n }\n\n static literalRegexp(s, flags) {\n const re = new Regexp(Regexp.Op.LITERAL)\n re.flags = flags\n re.runes = Utils.stringToRunes(s)\n return re\n }\n /**\n * Parse regular expression pattern {@code pattern} with mode flags {@code flags}.\n * @param {string} pattern\n * @param {number} flags\n */\n static parse(pattern, flags) {\n return new Parser(pattern, flags).parseInternal()\n }\n\n // parseRepeat parses {min} (max=min) or {min,} (max=-1) or {min,max}.\n // If |t| is not of that form, it returns -1.\n // If |t| has the right form but the values are negative or too big,\n // it returns -2.\n // On success, returns a nonnegative number encoding min/max in the\n // high/low signed halfwords of the result. (Note: min >= 0; max may\n // be -1.)\n //\n // On success, advances |t| beyond the repeat; otherwise |t.pos()| is\n // undefined.\n static parseRepeat(t) {\n const start = t.pos()\n if (!t.more() || !t.lookingAt('{')) {\n return -1\n }\n t.skip(1)\n\n const min = Parser.parseInt(t)\n if (min === -1) {\n return -1\n }\n if (!t.more()) {\n return -1\n }\n\n let max\n if (!t.lookingAt(',')) {\n max = min\n } else {\n t.skip(1)\n if (!t.more()) {\n return -1\n }\n if (t.lookingAt('}')) {\n max = -1\n } else if ((max = Parser.parseInt(t)) === -1) {\n return -1\n }\n }\n\n if (!t.more() || !t.lookingAt('}')) {\n return -1\n }\n t.skip(1)\n if (min < 0 || min > 1000 || max === -2 || max > 1000 || (max >= 0 && min > max)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(start))\n }\n\n return (min << 16) | (max & Unicode.MAX_BMP)\n }\n\n // isValidCaptureName reports whether name\n // is a valid capture name: [A-Za-z0-9_]+.\n // PCRE limits names to 32 bytes.\n // Python rejects names starting with digits.\n // We don't enforce either of those.\n static isValidCaptureName(name) {\n if (name.length === 0) {\n return false\n }\n\n for (let i = 0; i < name.length; i++) {\n const c = name.codePointAt(i)\n if (c !== Codepoint.CODES.get('_') && !Utils.isalnum(c)) {\n return false\n }\n }\n\n return true\n }\n\n // parseInt parses a nonnegative decimal integer.\n // -1 => bad format. -2 => format ok, but integer overflow.\n static parseInt(t) {\n const start = t.pos()\n while (\n t.more() &&\n t.peek() >= Codepoint.CODES.get('0') &&\n t.peek() <= Codepoint.CODES.get('9')\n ) {\n t.skip(1)\n }\n\n const n = t.from(start)\n if (n.length === 0 || (n.length > 1 && n.codePointAt(0) === Codepoint.CODES.get('0'))) {\n return -1\n }\n if (n.length > 8) {\n return -2\n }\n return parseFloat(n, 10)\n }\n\n // can this be represented as a character class?\n // single-rune literal string, char class, ., and .|\\n.\n static isCharClass(re) {\n return (\n (re.op === Regexp.Op.LITERAL && re.runes.length === 1) ||\n re.op === Regexp.Op.CHAR_CLASS ||\n re.op === Regexp.Op.ANY_CHAR_NOT_NL ||\n re.op === Regexp.Op.ANY_CHAR\n )\n }\n\n // does re match r?\n static matchRune(re, r) {\n switch (re.op) {\n case Regexp.Op.LITERAL:\n return re.runes.length === 1 && re.runes[0] === r\n case Regexp.Op.CHAR_CLASS:\n for (let i = 0; i < re.runes.length; i += 2) {\n if (re.runes[i] <= r && r <= re.runes[i + 1]) {\n return true\n }\n }\n return false\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return r !== Codepoint.CODES.get('\\n')\n case Regexp.Op.ANY_CHAR:\n return true\n }\n return false\n }\n\n // mergeCharClass makes dst = dst|src.\n // The caller must ensure that dst.Op >= src.Op,\n // to reduce the amount of copying.\n static mergeCharClass(dst, src) {\n switch (dst.op) {\n case Regexp.Op.ANY_CHAR:\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n if (Parser.matchRune(src, Codepoint.CODES.get('\\n'))) {\n dst.op = Regexp.Op.ANY_CHAR\n }\n break\n case Regexp.Op.CHAR_CLASS:\n if (src.op === Regexp.Op.LITERAL) {\n dst.runes = new CharClass(dst.runes).appendLiteral(src.runes[0], src.flags).toArray()\n } else {\n dst.runes = new CharClass(dst.runes).appendClass(src.runes).toArray()\n }\n break\n case Regexp.Op.LITERAL:\n if (src.runes[0] === dst.runes[0] && src.flags === dst.flags) {\n break\n }\n dst.op = Regexp.Op.CHAR_CLASS\n dst.runes = new CharClass()\n .appendLiteral(dst.runes[0], dst.flags)\n .appendLiteral(src.runes[0], src.flags)\n .toArray()\n break\n }\n }\n\n // parseEscape parses an escape sequence at the beginning of s\n // and returns the rune.\n // Pre: t at '\\\\'. Post: after escape.\n static parseEscape(t) {\n const startPos = t.pos()\n t.skip(1) // '\\\\'\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_TRAILING_BACKSLASH)\n }\n let c = t.pop()\n bigswitch: switch (c) {\n case Codepoint.CODES.get('1'):\n case Codepoint.CODES.get('2'):\n case Codepoint.CODES.get('3'):\n case Codepoint.CODES.get('4'):\n case Codepoint.CODES.get('5'):\n case Codepoint.CODES.get('6'):\n case Codepoint.CODES.get('7'): {\n // Single non-zero digit is a backreference; not supported\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n }\n // eslint-disable-next-line no-fallthrough\n case Codepoint.CODES.get('0'): {\n // Consume up to three octal digits; already have one.\n let r = c - Codepoint.CODES.get('0')\n for (let i = 1; i < 3; i++) {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n r = r * 8 + t.peek() - Codepoint.CODES.get('0')\n t.skip(1)\n }\n return r\n }\n case Codepoint.CODES.get('x'): {\n if (!t.more()) {\n break\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('{')) {\n let nhex = 0\n let r = 0\n\n while (true) {\n if (!t.more()) {\n break bigswitch\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('}')) {\n break\n }\n const v = Utils.unhex(c)\n if (v < 0) {\n break bigswitch\n }\n r = r * 16 + v\n if (r > Unicode.MAX_RUNE) {\n break bigswitch\n }\n nhex++\n }\n if (nhex === 0) {\n break bigswitch\n }\n return r\n }\n const x = Utils.unhex(c)\n if (!t.more()) {\n break\n }\n c = t.pop()\n const y = Utils.unhex(c)\n if (x < 0 || y < 0) {\n break\n }\n return x * 16 + y\n }\n case Codepoint.CODES.get('a'):\n return Codepoint.CODES.get('\\x07')\n case Codepoint.CODES.get('f'):\n return Codepoint.CODES.get('\\f')\n case Codepoint.CODES.get('n'):\n return Codepoint.CODES.get('\\n')\n case Codepoint.CODES.get('r'):\n return Codepoint.CODES.get('\\r')\n case Codepoint.CODES.get('t'):\n return Codepoint.CODES.get('\\t')\n case Codepoint.CODES.get('v'):\n return Codepoint.CODES.get('\\v')\n default:\n if (c <= Unicode.MAX_ASCII && !Utils.isalnum(c)) {\n return c\n }\n break\n }\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, t.from(startPos))\n }\n\n // parseClassChar parses a character class character and returns it.\n // wholeClassPos is the position of the start of the entire class \"[...\".\n // Pre: t at class char; Post: t after it.\n static parseClassChar(t, wholeClassPos) {\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_BRACKET, t.from(wholeClassPos))\n }\n if (t.lookingAt('\\\\')) {\n return Parser.parseEscape(t)\n }\n return t.pop()\n }\n\n static concatRunes(x, y) {\n for (let i = 0; i < y.length; i++) {\n x.push(y[i])\n }\n return x\n }\n\n constructor(wholeRegexp, flags = 0) {\n this.wholeRegexp = wholeRegexp\n // Flags control the behavior of the parser and record information about\n // regexp context.\n this.flags = flags\n // number of capturing groups seen\n this.numCap = 0\n this.namedGroups = Object.create(null)\n // Stack of parsed expressions.\n this.stack = []\n this.free = null\n // checks\n this.numRegexp = 0 // number of regexps allocated\n this.numRunes = 0 // number of runes in char classes\n this.repeats = 0 // product of all repetitions seen\n this.height = null // regexp height, for height limit check\n this.size = null // regexp compiled size, for size limit check\n this.nlb = 0 // Number of lookbehinds seen\n }\n\n // Allocate a Regexp, from the free list if possible.\n newRegexp(op) {\n let re = this.free\n if (re !== null && re.subs !== null && re.subs.length > 0) {\n this.free = re.subs[0]\n re.reinit()\n re.op = op\n } else {\n re = new Regexp(op)\n this.numRegexp += 1\n }\n return re\n }\n\n reuse(re) {\n if (this.height !== null && this.height.has(re)) {\n this.height.delete(re)\n }\n if (re.subs !== null && re.subs.length > 0) {\n re.subs[0] = this.free\n }\n this.free = re\n }\n\n checkLimits(re) {\n if (this.numRunes > Parser.MAX_RUNES) {\n throw new RE2JSSyntaxException(Parser.ERR_LARGE)\n }\n this.checkSize(re)\n this.checkHeight(re)\n }\n\n checkSize(re) {\n if (this.size === null) {\n // We haven't started tracking size yet.\n // Do a relatively cheap check to see if we need to start.\n // Maintain the product of all the repeats we've seen\n // and don't track if the total number of regexp nodes\n // we've seen times the repeat product is in budget.\n if (this.repeats === 0) {\n this.repeats = 1\n }\n if (re.op === Regexp.Op.REPEAT) {\n let n = re.max\n if (n === -1) {\n n = re.min\n }\n if (n <= 0) {\n n = 1\n }\n if (n > Math.floor(Parser.MAX_SIZE / this.repeats)) {\n this.repeats = Parser.MAX_SIZE\n } else {\n this.repeats *= n\n }\n }\n if (this.numRegexp < Math.floor(Parser.MAX_SIZE / this.repeats)) {\n return\n }\n\n // We need to start tracking size.\n // Make the map and belatedly populate it\n // with info about everything we've constructed so far.\n this.size = new Map()\n for (let reEx of this.stack) {\n this.checkSize(reEx)\n }\n }\n\n if (this.calcSize(re, true) > Parser.MAX_SIZE) {\n throw new RE2JSSyntaxException(Parser.ERR_LARGE)\n }\n }\n\n calcSize(re, force = false) {\n if (!force && this.size !== null) {\n if (this.size.has(re)) {\n return this.size.get(re)\n }\n }\n\n let size = 0\n switch (re.op) {\n case Regexp.Op.LITERAL: {\n size = re.runes.length\n break\n }\n case Regexp.Op.PLB:\n case Regexp.Op.NLB:\n case Regexp.Op.CAPTURE:\n case Regexp.Op.STAR: {\n // star can be 1+ or 2+; assume 2 pessimistically\n size = 2 + this.calcSize(re.subs[0])\n break\n }\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n size = 1 + this.calcSize(re.subs[0])\n break\n }\n case Regexp.Op.CONCAT: {\n for (let sub of re.subs) {\n size = size + this.calcSize(sub)\n }\n break\n }\n case Regexp.Op.ALTERNATE: {\n for (let sub of re.subs) {\n size = size + this.calcSize(sub)\n }\n if (re.subs.length > 1) {\n size = size + re.subs.length - 1\n }\n break\n }\n case Regexp.Op.REPEAT: {\n let sub = this.calcSize(re.subs[0])\n if (re.max === -1) {\n if (re.min === 0) {\n size = 2 + sub // x*\n } else {\n size = 1 + re.min * sub // xxx+\n }\n break\n }\n // x{2,5} = xx(x(x(x)?)?)?\n size = re.max * sub + (re.max - re.min)\n break\n }\n }\n\n size = Math.max(1, size)\n if (this.size === null) {\n this.size = new Map()\n }\n this.size.set(re, size)\n return size\n }\n\n checkHeight(re) {\n if (this.numRegexp < Parser.MAX_HEIGHT) {\n return\n }\n if (this.height === null) {\n this.height = new Map()\n for (let reEx of this.stack) {\n this.checkHeight(reEx)\n }\n }\n if (this.calcHeight(re, true) > Parser.MAX_HEIGHT) {\n throw new RE2JSSyntaxException(Parser.ERR_NESTING_DEPTH)\n }\n }\n\n calcHeight(re, force = false) {\n if (!force && this.height !== null) {\n if (this.height.has(re)) {\n return this.height.get(re)\n }\n }\n let h = 1\n for (let sub of re.subs) {\n const hsub = this.calcHeight(sub)\n if (h < 1 + hsub) {\n h = 1 + hsub\n }\n }\n\n if (this.height === null) {\n this.height = new Map()\n }\n this.height.set(re, h)\n return h\n }\n\n // Parse stack manipulation.\n\n pop() {\n return this.stack.pop()\n }\n\n popToPseudo() {\n const n = this.stack.length\n let i = n\n while (i > 0 && !Regexp.isPseudoOp(this.stack[i - 1].op)) {\n i--\n }\n\n const r = this.stack.slice(i, n)\n this.stack = this.stack.slice(0, i)\n return r\n }\n\n // push pushes the regexp re onto the parse stack and returns the regexp.\n // Returns null for a CHAR_CLASS that can be merged with the top-of-stack.\n push(re) {\n this.numRunes += re.runes.length\n if (re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 2 && re.runes[0] === re.runes[1]) {\n if (this.maybeConcat(re.runes[0], this.flags & ~RE2Flags.FOLD_CASE)) {\n return null\n }\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags & ~RE2Flags.FOLD_CASE\n } else if (\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 4 &&\n re.runes[0] === re.runes[1] &&\n re.runes[2] === re.runes[3] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[2] &&\n Unicode.simpleFold(re.runes[2]) === re.runes[0]) ||\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 2 &&\n re.runes[0] + 1 === re.runes[1] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[1] &&\n Unicode.simpleFold(re.runes[1]) === re.runes[0])\n ) {\n // Case-insensitive rune like [Aa] or [Δδ].\n if (this.maybeConcat(re.runes[0], this.flags | RE2Flags.FOLD_CASE)) {\n return null\n }\n // Rewrite as (case-insensitive) literal.\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags | RE2Flags.FOLD_CASE\n } else {\n // Incremental concatenation.\n this.maybeConcat(-1, 0)\n }\n this.stack.push(re)\n this.checkLimits(re)\n return re\n }\n\n // maybeConcat implements incremental concatenation\n // of literal runes into string nodes. The parser calls this\n // before each push, so only the top fragment of the stack\n // might need processing. Since this is called before a push,\n // the topmost literal is no longer subject to operators like *\n // (Otherwise ab* would turn into (ab)*.)\n // If (r >= 0 and there's a node left over, maybeConcat uses it\n // to push r with the given flags.\n // maybeConcat reports whether r was pushed.\n maybeConcat(r, flags) {\n const n = this.stack.length\n if (n < 2) {\n return false\n }\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (\n re1.op !== Regexp.Op.LITERAL ||\n re2.op !== Regexp.Op.LITERAL ||\n (re1.flags & RE2Flags.FOLD_CASE) !== (re2.flags & RE2Flags.FOLD_CASE)\n ) {\n return false\n }\n // Push re1 into re2.\n re2.runes = Parser.concatRunes(re2.runes, re1.runes)\n // Reuse re1 if possible.\n if (r >= 0) {\n re1.runes = [r]\n re1.flags = flags\n return true\n }\n this.pop()\n this.reuse(re1)\n return false // did not push r\n }\n\n // newLiteral returns a new LITERAL Regexp with the given flags\n newLiteral(r, flags) {\n const re = this.newRegexp(Regexp.Op.LITERAL)\n re.flags = flags\n if ((flags & RE2Flags.FOLD_CASE) !== 0) {\n r = Parser.minFoldRune(r)\n }\n re.runes = [r]\n return re\n }\n\n // literal pushes a literal regexp for the rune r on the stack\n // and returns that regexp.\n literal(r) {\n this.push(this.newLiteral(r, this.flags))\n }\n\n // op pushes a regexp with the given op onto the stack\n // and returns that regexp.\n op(op) {\n const re = this.newRegexp(op)\n re.flags = this.flags\n return this.push(re)\n }\n\n // repeat replaces the top stack element with itself repeated according to\n // op, min, max. beforePos is the start position of the repetition operator.\n // Pre: t is positioned after the initial repetition operator.\n // Post: t advances past an optional perl-mode '?', or stays put.\n // Or, it fails with RE2JSSyntaxException.\n repeat(op, min, max, beforePos, t, lastRepeatPos) {\n let flags = this.flags\n if ((flags & RE2Flags.PERL_X) !== 0) {\n if (t.more() && t.lookingAt('?')) {\n t.skip(1)\n flags ^= RE2Flags.NON_GREEDY\n }\n if (lastRepeatPos !== -1) {\n // In Perl it is not allowed to stack repetition operators:\n // a** is a syntax error, not a doubled star, and a++ means\n // something else entirely, which we don't support!\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_OP, t.from(lastRepeatPos))\n }\n }\n\n const n = this.stack.length\n if (n === 0) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const sub = this.stack[n - 1]\n if (Regexp.isPseudoOp(sub.op)) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const re = this.newRegexp(op)\n re.min = min\n re.max = max\n re.flags = flags\n re.subs = [sub]\n this.stack[n - 1] = re\n\n this.checkLimits(re)\n\n if (op === Regexp.Op.REPEAT && (min >= 2 || max >= 2) && !this.repeatIsValid(re, 1000)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(beforePos))\n }\n }\n\n // repeatIsValid reports whether the repetition re is valid.\n // Valid means that the combination of the top-level repetition\n // and any inner repetitions does not exceed n copies of the\n // innermost thing.\n // This function rewalks the regexp tree and is called for every repetition,\n // so we have to worry about inducing quadratic behavior in the parser.\n // We avoid this by only calling repeatIsValid when min or max >= 2.\n // In that case the depth of any >= 2 nesting can only get to 9 without\n // triggering a parse error, so each subtree can only be rewalked 9 times.\n repeatIsValid(re, n) {\n if (re.op === Regexp.Op.REPEAT) {\n let m = re.max\n if (m === 0) {\n return true\n }\n if (m < 0) {\n m = re.min\n }\n if (m > n) {\n return false\n }\n if (m > 0) {\n n = Math.trunc(n / m)\n }\n }\n\n for (let sub of re.subs) {\n if (!this.repeatIsValid(sub, n)) {\n return false\n }\n }\n\n return true\n }\n\n // concat replaces the top of the stack (above the topmost '|' or '(') with\n // its concatenation.\n concat() {\n this.maybeConcat(-1, 0)\n const subs = this.popToPseudo()\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.EMPTY_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.CONCAT))\n }\n\n // alternate replaces the top of the stack (above the topmost '(') with its\n // alternation.\n alternate() {\n // Scan down to find pseudo-operator (.\n // There are no | above (.\n const subs = this.popToPseudo()\n // Make sure top class is clean.\n // All the others already are (see swapVerticalBar).\n if (subs.length > 0) {\n this.cleanAlt(subs[subs.length - 1])\n }\n // Empty alternate is special case\n // (shouldn't happen but easy to handle).\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.NO_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.ALTERNATE))\n }\n\n // cleanAlt cleans re for eventual inclusion in an alternation.\n cleanAlt(re) {\n if (re.op === Regexp.Op.CHAR_CLASS) {\n re.runes = new CharClass(re.runes).cleanClass().toArray()\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n re.runes = []\n re.op = Regexp.Op.ANY_CHAR\n } else if (\n re.runes.length === 4 &&\n re.runes[0] === 0 &&\n re.runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n re.runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n re.runes[3] === Unicode.MAX_RUNE\n ) {\n re.runes = []\n re.op = Regexp.Op.ANY_CHAR_NOT_NL\n }\n }\n }\n\n // collapse returns the result of applying op to subs[start:end].\n // If (sub contains op nodes, they all get hoisted up\n // so that there is never a concat of a concat or an\n // alternate of an alternate.\n collapse(subs, op) {\n if (subs.length === 1) {\n return subs[0]\n }\n // Concatenate subs iff op is same.\n // Compute length in first pass.\n let len = 0\n for (let sub of subs) {\n len += sub.op === op ? sub.subs.length : 1\n }\n let newsubs = new Array(len).fill(null)\n let i = 0\n for (let sub of subs) {\n if (sub.op === op) {\n for (let j = 0; j < sub.subs.length; j++) {\n newsubs[i++] = sub.subs[j]\n }\n this.reuse(sub)\n } else {\n newsubs[i++] = sub\n }\n }\n\n let re = this.newRegexp(op)\n re.subs = newsubs\n if (op === Regexp.Op.ALTERNATE) {\n // re.subs = this.factor(re.subs, re.flags)\n re.subs = this.factor(re.subs)\n if (re.subs.length === 1) {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n }\n }\n return re\n }\n\n // factor factors common prefixes from the alternation list sub. It\n // returns a replacement list that reuses the same storage and frees\n // (passes to p.reuse) any removed *Regexps.\n //\n // For example,\n // ABC|ABD|AEF|BCX|BCY\n // simplifies by literal prefix extraction to\n // A(B(C|D)|EF)|BC(X|Y)\n // which simplifies by character class introduction to\n // A(B[CD]|EF)|BC[XY]\n //\n factor(array) {\n if (array.length < 2) {\n return array\n }\n // The following code is subtle, because it's a literal JS\n // translation of code that makes clever use of Go \"slices\".\n // A slice is a triple (array, offset, length), and the Go\n // implementation uses two slices, |sub| and |out| backed by the\n // same array. In JS, we have to be explicit about all of these\n // variables, so:\n //\n // Go JS\n // sub (array, s, lensub)\n // out (array, 0, lenout) // (always a prefix of |array|)\n //\n // In the comments we'll use the logical notation of go slices, e.g. sub[i]\n // even though the JS code will read array[s + i].\n\n let s = 0 // offset of first |sub| within array.\n let lensub = array.length // = len(sub)\n let lenout = 0 // = len(out)\n // Round 1: Factor out common literal prefixes.\n // Note: (str, strlen) and (istr, istrlen) are like Go slices\n // onto a prefix of some Regexp's runes array (hence offset=0).\n let str = null\n let strlen = 0\n let strflags = 0\n let start = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (len <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin\n // with str as modified by strflags.\n let istr = null\n let istrlen = 0\n let iflags = 0\n if (i < lensub) {\n // NB, we inlined Go's leadingString() since Java has no pair return.\n let re = array[s + i]\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n re = re.subs[0]\n }\n if (re.op === Regexp.Op.LITERAL) {\n istr = re.runes\n istrlen = re.runes.length\n iflags = re.flags & RE2Flags.FOLD_CASE\n }\n // istr is the leading literal string that re begins with.\n // The string refers to storage in re or its children.\n if (iflags === strflags) {\n let same = 0\n while (same < strlen && same < istrlen && str[same] === istr[same]) {\n same++\n }\n\n if (same > 0) {\n // Matches at least one rune in current range.\n // Keep going around.\n strlen = same\n continue\n }\n }\n }\n // Found end of a run with common leading literal string:\n // sub[start:i] all begin with str[0:strlen], but sub[i]\n // does not even begin with str[0].\n //\n // Factor out common string and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = this.newRegexp(Regexp.Op.LITERAL)\n prefix.flags = strflags\n prefix.runes = str.slice(0, strlen)\n for (let j = start; j < i; j++) {\n array[s + j] = this.removeLeadingString(array[s + j], strlen)\n this.checkLimits(array[s + j])\n }\n // Recurse.\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n str = istr\n strlen = istrlen\n strflags = iflags\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 2: Factor out common complex prefixes,\n // just the first piece of each concatenation,\n // whatever it is. This is good enough a lot of the time.\n start = 0\n lenout = 0\n let first = null\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin with\n // ifirst.\n let ifirst = null\n if (i < lensub) {\n ifirst = Parser.leadingRegexp(array[s + i])\n if (\n first !== null &&\n first.equals(ifirst) &&\n (Parser.isCharClass(first) ||\n (first.op === Regexp.Op.REPEAT &&\n first.min === first.max &&\n Parser.isCharClass(first.subs[0])))\n ) {\n continue\n }\n }\n // Found end of a run with common leading regexp:\n // sub[start:i] all begin with first but sub[i] does not.\n //\n // Factor out common regexp and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = first\n for (let j = start; j < i; j++) {\n const reuse = j !== start // prefix came from sub[start]\n array[s + j] = this.removeLeadingRegexp(array[s + j], reuse)\n this.checkLimits(array[s + j])\n }\n // recurse\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n first = ifirst\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 3: Collapse runs of single literals into character classes.\n start = 0\n lenout = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that are either\n // literal runes or character classes.\n if (i < lensub && Parser.isCharClass(array[s + i])) {\n continue\n }\n // sub[i] is not a char or char class;\n // emit char class for sub[start:i]...\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Make new char class.\n // Start with most complex regexp in sub[start].\n let max = start\n for (let j = start + 1; j < i; j++) {\n const subMax = array[s + max]\n const subJ = array[s + j]\n if (\n subMax.op < subJ.op ||\n (subMax.op === subJ.op &&\n (subMax.runes !== null ? subMax.runes.length : 0) <\n (subJ.runes !== null ? subJ.runes.length : 0))\n ) {\n max = j\n }\n }\n // swap sub[start], sub[max].\n const tmp = array[s + start]\n array[s + start] = array[s + max]\n array[s + max] = tmp\n for (let j = start + 1; j < i; j++) {\n Parser.mergeCharClass(array[s + start], array[s + j])\n this.reuse(array[s + j])\n }\n this.cleanAlt(array[s + start])\n array[lenout++] = array[s + start]\n }\n // ... and then emit sub[i].\n if (i < lensub) {\n array[lenout++] = array[s + i]\n }\n start = i + 1\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 4: Collapse runs of empty matches into a single empty match.\n start = 0\n lenout = 0\n for (let i = 0; i < lensub; ++i) {\n if (\n i + 1 < lensub &&\n array[s + i].op === Regexp.Op.EMPTY_MATCH &&\n array[s + i + 1].op === Regexp.Op.EMPTY_MATCH\n ) {\n continue\n }\n array[lenout++] = array[s + i]\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n return array.slice(s, lensub)\n }\n\n // removeLeadingString removes the first n leading runes\n // from the beginning of re. It returns the replacement for re.\n removeLeadingString(re, n) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n // Removing a leading string in a concatenation\n // might simplify the concatenation.\n const sub = this.removeLeadingString(re.subs[0], n)\n re.subs[0] = sub\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n this.reuse(sub)\n switch (re.subs.length) {\n case 0:\n case 1:\n // Impossible but handle.\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = null\n break\n case 2: {\n const old = re\n re = re.subs[1]\n this.reuse(old)\n break\n }\n default:\n re.subs = re.subs.slice(1, re.subs.length)\n break\n }\n }\n return re\n }\n if (re.op === Regexp.Op.LITERAL) {\n re.runes = re.runes.slice(n, re.runes.length)\n if (re.runes.length === 0) {\n re.op = Regexp.Op.EMPTY_MATCH\n }\n }\n return re\n }\n\n // removeLeadingRegexp removes the leading regexp in re.\n // It returns the replacement for re.\n // If reuse is true, it passes the removed regexp (if no longer needed) to\n // reuse.\n removeLeadingRegexp(re, reuse) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n if (reuse) {\n this.reuse(re.subs[0])\n }\n re.subs = re.subs.slice(1, re.subs.length)\n switch (re.subs.length) {\n case 0: {\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = Regexp.emptySubs()\n break\n }\n case 1: {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n break\n }\n }\n return re\n }\n if (reuse) {\n this.reuse(re)\n }\n return this.newRegexp(Regexp.Op.EMPTY_MATCH)\n }\n\n parseInternal() {\n if ((this.flags & RE2Flags.LITERAL) !== 0) {\n // Trivial parser for literal string.\n return Parser.literalRegexp(this.wholeRegexp, this.flags)\n }\n // Otherwise, must do real work.\n let lastRepeatPos = -1\n let min = -1\n let max = -1\n const t = new StringIterator(this.wholeRegexp)\n while (t.more()) {\n {\n let repeatPos = -1\n bigswitch: switch (t.peek()) {\n case Codepoint.CODES.get('('):\n // Intercept Lookbehinds if the flag is enabled\n if ((this.flags & RE2Flags.LOOKBEHIND) !== 0) {\n if (t.lookingAt('(?<=')) {\n this.parsePosLookBehind()\n t.skip(4) // Skip over '(?<='\n break\n }\n if (t.lookingAt('(?<!')) {\n this.parseNegLookBehind()\n t.skip(4) // Skip over '(?<!'\n break\n }\n }\n\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.lookingAt('(?')) {\n // Flag changes and non-capturing groups.\n this.parsePerlFlags(t)\n break\n }\n this.op(Regexp.Op.LEFT_PAREN).cap = ++this.numCap\n t.skip(1) // '('\n break\n case Codepoint.CODES.get('|'):\n this.parseVerticalBar() // '|'\n t.skip(1) // '|'\n break\n case Codepoint.CODES.get(')'):\n this.parseRightParen()\n t.skip(1) // ')'\n break\n case Codepoint.CODES.get('^'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.BEGIN_TEXT)\n } else {\n this.op(Regexp.Op.BEGIN_LINE)\n }\n t.skip(1) // '^'\n break\n case Codepoint.CODES.get('$'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.END_TEXT).flags |= RE2Flags.WAS_DOLLAR\n } else {\n this.op(Regexp.Op.END_LINE)\n }\n t.skip(1) // '$'\n break\n case Codepoint.CODES.get('.'):\n if ((this.flags & RE2Flags.DOT_NL) !== 0) {\n this.op(Regexp.Op.ANY_CHAR)\n } else {\n this.op(Regexp.Op.ANY_CHAR_NOT_NL)\n }\n t.skip(1) // '.'\n break\n case Codepoint.CODES.get('['):\n this.parseClass(t)\n break\n case Codepoint.CODES.get('*'):\n case Codepoint.CODES.get('+'):\n case Codepoint.CODES.get('?'): {\n repeatPos = t.pos()\n let op = null\n switch (t.pop()) {\n case Codepoint.CODES.get('*'):\n op = Regexp.Op.STAR\n break\n case Codepoint.CODES.get('+'):\n op = Regexp.Op.PLUS\n break\n case Codepoint.CODES.get('?'):\n op = Regexp.Op.QUEST\n break\n }\n this.repeat(op, min, max, repeatPos, t, lastRepeatPos)\n // (min and max are now dead.)\n break\n }\n\n case Codepoint.CODES.get('{'): {\n repeatPos = t.pos()\n const minMax = Parser.parseRepeat(t)\n if (minMax < 0) {\n // If the repeat cannot be parsed, { is a literal.\n t.rewindTo(repeatPos)\n this.literal(t.pop()) // '{'\n break\n }\n min = minMax >> 16\n max = ((minMax & Unicode.MAX_BMP) << 16) >> 16\n this.repeat(Regexp.Op.REPEAT, min, max, repeatPos, t, lastRepeatPos)\n break\n }\n\n case Codepoint.CODES.get('\\\\'): {\n const savedPos = t.pos()\n t.skip(1) // '\\\\'\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.more()) {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('A'):\n this.op(Regexp.Op.BEGIN_TEXT)\n break bigswitch\n case Codepoint.CODES.get('b'):\n this.op(Regexp.Op.WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('B'):\n this.op(Regexp.Op.NO_WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('C'):\n // any byte; not supported\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, '\\\\C')\n case Codepoint.CODES.get('Q'): {\n // \\Q ... \\E: the ... is always literals\n let lit = t.rest()\n const i = lit.indexOf('\\\\E')\n if (i >= 0) {\n lit = lit.substring(0, i)\n t.skipString(lit)\n t.skipString('\\\\E')\n } else {\n t.skipString(lit)\n }\n\n let j = 0\n while (j < lit.length) {\n const codepoint = lit.codePointAt(j)\n this.literal(codepoint)\n j += Utils.charCount(codepoint)\n }\n break bigswitch\n }\n\n case Codepoint.CODES.get('z'):\n this.op(Regexp.Op.END_TEXT)\n break bigswitch\n default:\n t.rewindTo(savedPos)\n break\n }\n } else {\n // Unconditionally rewind if PERL_X is off, or if string ended abruptly\n t.rewindTo(savedPos)\n }\n\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n // Look for Unicode character group like \\p{Han}\n if (t.lookingAt('\\\\p') || t.lookingAt('\\\\P')) {\n const cc = new CharClass()\n if (this.parseUnicodeClass(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n }\n // Perl character class escape.\n const cc = new CharClass()\n if (this.parsePerlClassEscape(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n t.rewindTo(savedPos)\n this.reuse(re)\n // Ordinary single-character escape.\n this.literal(Parser.parseEscape(t))\n break\n }\n default:\n this.literal(t.pop())\n break\n }\n lastRepeatPos = repeatPos\n }\n }\n\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n !== 1) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp)\n }\n this.stack[0].namedGroups = this.namedGroups\n return this.stack[0]\n }\n\n // parsePerlFlags parses a Perl flag setting or non-capturing group or both,\n // like (?i) or (?: or (?i:.\n // Pre: t at \"(?\". Post: t after \")\".\n // Sets numCap.\n parsePerlFlags(t) {\n const startPos = t.pos()\n // Check for named captures, first introduced in Python's regexp library.\n // As usual, there are three slightly different syntaxes:\n //\n // (?P<name>expr) the original, introduced by Python\n // (?<name>expr) the .NET alteration, adopted by Perl 5.10\n // (?'name'expr) another .NET alteration, adopted by Perl 5.10\n //\n // Perl 5.10 gave in and implemented the Python version too,\n // but they claim that the last two are the preferred forms.\n // PCRE and languages based on it (specifically, PHP and Ruby)\n // support all three as well. EcmaScript 4 uses only the Python form.\n //\n // In both the open source world (via Code Search) and the\n // Google source tree, (?P<name>expr) and (?<name>expr) are the\n // dominant forms of named captures and both are supported.\n const s = t.rest()\n if (s.startsWith('(?P<') || s.startsWith('(?<')) {\n // Pull out name.\n const begin = s.charAt(2) === 'P' ? 4 : 3\n const end = s.indexOf('>')\n if (end < 0) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s)\n }\n const name = s.substring(begin, end) // \"name\"\n t.skipString(name)\n t.skip(begin + 1) // \"(?P<>\" or \"(?<>\"\n if (!Parser.isValidCaptureName(name)) {\n // \"(?P<name>\"\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s.substring(0, end + 1)) // \"(?P<name>\" or \"(?<name>\"\n }\n // Like ordinary capture, but named.\n const re = this.op(Regexp.Op.LEFT_PAREN)\n re.cap = ++this.numCap\n if (this.namedGroups[name]) {\n throw new RE2JSSyntaxException(Parser.ERR_DUPLICATE_NAMED_CAPTURE, name)\n }\n this.namedGroups[name] = this.numCap\n re.name = name\n return\n }\n // Non-capturing group. Might also twiddle Perl flags.\n t.skip(2) // \"(?\"\n\n let flags = this.flags\n let sign = +1\n let sawFlag = false\n loop: while (t.more()) {\n {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('i'):\n flags |= RE2Flags.FOLD_CASE\n sawFlag = true\n break\n case Codepoint.CODES.get('m'):\n flags &= ~RE2Flags.ONE_LINE\n sawFlag = true\n break\n case Codepoint.CODES.get('s'):\n flags |= RE2Flags.DOT_NL\n sawFlag = true\n break\n case Codepoint.CODES.get('U'):\n flags |= RE2Flags.NON_GREEDY\n sawFlag = true\n break\n // Switch to negation.\n case Codepoint.CODES.get('-'):\n if (sign < 0) {\n break loop\n }\n sign = -1\n // Invert flags so that | above turn into &~ and vice versa.\n // We'll invert flags again before using it below.\n flags = ~flags\n sawFlag = false\n break\n // End of flags, starting group or not.\n case Codepoint.CODES.get(':'):\n case Codepoint.CODES.get(')'):\n if (sign < 0) {\n if (!sawFlag) {\n break loop\n }\n flags = ~flags\n }\n if (c === Codepoint.CODES.get(':')) {\n // Open new group\n this.op(Regexp.Op.LEFT_PAREN)\n }\n this.flags = flags\n return\n default:\n // Flags.\n break loop\n }\n }\n }\n\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_PERL_OP, t.from(startPos))\n }\n\n // Lookbehinds parsing\n parsePosLookBehind() {\n const re = this.newRegexp(Regexp.Op.LEFT_PAREN)\n re.flags = this.flags\n re.lb = ++this.nlb\n return this.push(re)\n }\n\n parseNegLookBehind() {\n const re = this.newRegexp(Regexp.Op.LEFT_PAREN)\n re.flags = this.flags\n re.lb = -++this.nlb\n return this.push(re)\n }\n\n // parseVerticalBar handles a | in the input.\n parseVerticalBar() {\n this.concat()\n // The concatenation we just parsed is on top of the stack.\n // If it sits above an opVerticalBar, swap it below\n // (things below an opVerticalBar become an alternation).\n // Otherwise, push a new vertical bar.\n if (!this.swapVerticalBar()) {\n this.op(Regexp.Op.VERTICAL_BAR)\n }\n }\n\n // If the top of the stack is an element followed by an opVerticalBar\n // swapVerticalBar swaps the two and returns true.\n // Otherwise it returns false.\n swapVerticalBar() {\n const n = this.stack.length\n // If above and below vertical bar are literal or char class,\n // can merge into a single char class.\n if (\n n >= 3 &&\n this.stack[n - 2].op === Regexp.Op.VERTICAL_BAR &&\n Parser.isCharClass(this.stack[n - 1]) &&\n Parser.isCharClass(this.stack[n - 3])\n ) {\n let re1 = this.stack[n - 1]\n let re3 = this.stack[n - 3]\n // Make re3 the more complex of the two.\n if (re1.op > re3.op) {\n const tmp = re3\n re3 = re1\n re1 = tmp\n this.stack[n - 3] = re3\n }\n Parser.mergeCharClass(re3, re1)\n this.reuse(re1)\n this.pop()\n return true\n }\n if (n >= 2) {\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (re2.op === Regexp.Op.VERTICAL_BAR) {\n if (n >= 3) {\n // Now out of reach.\n // Clean opportunistically.\n this.cleanAlt(this.stack[n - 3])\n }\n this.stack[n - 2] = re1\n this.stack[n - 1] = re2\n return true\n }\n }\n return false\n }\n\n // parseRightParen handles a ')' in the input.\n parseRightParen() {\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n < 2) {\n throw new RE2JSSyntaxException(Parser.ERR_UNEXPECTED_PAREN, this.wholeRegexp)\n }\n\n const re1 = this.pop()\n const re2 = this.pop()\n if (re2.op !== Regexp.Op.LEFT_PAREN) {\n throw new RE2JSSyntaxException(Parser.ERR_UNEXPECTED_PAREN, this.wholeRegexp)\n }\n // Restore flags at time of paren.\n this.flags = re2.flags\n\n // Handle lookbehinds\n if (re2.lb !== 0) {\n if (re2.lb > 0) {\n re2.op = Regexp.Op.PLB\n } else {\n re2.op = Regexp.Op.NLB\n }\n re2.subs = [re1]\n this.push(re2)\n return\n }\n\n if (re2.cap === 0) {\n // Just for grouping.\n this.push(re1)\n } else {\n re2.op = Regexp.Op.CAPTURE\n re2.subs = [re1]\n this.push(re2)\n }\n }\n\n // parsePerlClassEscape parses a leading Perl character class escape like \\d\n // from the beginning of |t|. If one is present, it appends the characters\n // to cc and returns true. The iterator is advanced past the escape\n // on success, undefined on failure, in which case false is returned.\n parsePerlClassEscape(t, cc) {\n const beforePos = t.pos()\n if (\n (this.flags & RE2Flags.PERL_X) === 0 ||\n !t.more() ||\n t.pop() !== Codepoint.CODES.get('\\\\') ||\n !t.more()\n ) {\n return false\n }\n t.pop() // e.g. advance past 'd' in \"\\\\d\"\n const p = t.from(beforePos)\n const g = PERL_GROUPS.has(p) ? PERL_GROUPS.get(p) : null\n if (g === null) {\n return false\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseNamedClass parses a leading POSIX named character class like\n // [:alnum:] from the beginning of t. If one is present, it appends the\n // characters to cc, advances the iterator, and returns true.\n // Pre: t at \"[:\". Post: t after \":]\".\n // On failure (no class of than name), throws RE2JSSyntaxException.\n // On misparse, returns false; t.pos() is undefined.\n parseNamedClass(t, cc) {\n // (Go precondition check deleted.)\n const cls = t.rest()\n const i = cls.indexOf(':]')\n if (i < 0) {\n return false\n }\n\n const name = cls.substring(0, i + 2) // \"[:alnum:]\"\n t.skipString(name)\n const g = POSIX_GROUPS.has(name) ? POSIX_GROUPS.get(name) : null\n if (g === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, name)\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseUnicodeClass() parses a leading Unicode character class like \\p{Han}\n // from the beginning of t. If one is present, it appends the characters to\n // to |cc|, advances |t| and returns true.\n //\n // Returns false if such a pattern is not present or UNICODE_GROUPS\n // flag is not enabled; |t.pos()| is not advanced in this case.\n // Indicates error by throwing RE2JSSyntaxException.\n parseUnicodeClass(t, cc) {\n const startPos = t.pos()\n if (\n (this.flags & RE2Flags.UNICODE_GROUPS) === 0 ||\n (!t.lookingAt('\\\\p') && !t.lookingAt('\\\\P'))\n ) {\n return false\n }\n\n t.skip(1) // '\\\\'\n // Committed to parse or throw exception.\n let sign = +1\n let c = t.pop() // 'p' or 'P'\n if (c === Codepoint.CODES.get('P')) {\n sign = -1\n }\n if (!t.more()) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n\n c = t.pop()\n let name\n\n if (c !== Codepoint.CODES.get('{')) {\n // Single-letter name.\n name = Utils.runeToString(c)\n } else {\n // Name is in braces.\n const rest = t.rest()\n const end = rest.indexOf('}')\n if (end < 0) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n name = rest.substring(0, end) // e.g. \"Han\"\n t.skipString(name)\n t.skip(1)\n // Don't use skip(end) because it assumes UTF-16 coding, and\n // StringIterator doesn't guarantee that.\n }\n // Group can have leading negation too.\n // \\p{^Han} == \\P{Han}, \\P{^Han} == \\p{Han}.\n if (!(name.length === 0) && name.codePointAt(0) === Codepoint.CODES.get('^')) {\n sign = 0 - sign // -sign\n name = name.substring(1)\n }\n\n const pair = Parser.unicodeTable(name)\n if (pair === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(startPos))\n }\n if (pair.sign < 0) {\n sign = 0 - sign\n }\n\n const tab = pair.tab\n const fold = pair.fold // fold-equivalent table\n // Variation of CharClass.appendGroup() for tables.\n if ((this.flags & RE2Flags.FOLD_CASE) === 0 || fold === null) {\n cc.appendTableWithSign(tab, sign)\n } else {\n // Merge and clean tab and fold in a temporary buffer.\n // This is necessary for the negative case and just tidy\n // for the positive case.\n const tmp = new CharClass().appendTable(tab).appendTable(fold).cleanClass().toArray()\n cc.appendClassWithSign(tmp, sign)\n }\n return true\n }\n\n // parseClass parses a character class and pushes it onto the parse stack.\n //\n // NOTES:\n // Pre: at '['; Post: after ']'.\n // Mutates stack. Advances iterator. May throw.\n parseClass(t) {\n const startPos = t.pos()\n t.skip(1) // '['\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n const cc = new CharClass()\n let sign = +1\n\n if (t.more() && t.lookingAt('^')) {\n sign = -1\n t.skip(1) // '^'\n // If character class does not match \\n, add it here,\n // so that negation later will do the right thing.\n if ((this.flags & RE2Flags.CLASS_NL) === 0) {\n cc.appendRange(Codepoint.CODES.get('\\n'), Codepoint.CODES.get('\\n'))\n }\n }\n\n let first = true // ']' and '-' are okay as first char in class\n while (!t.more() || t.peek() !== Codepoint.CODES.get(']') || first) {\n // POSIX: - is only okay unescaped as first or last in class.\n // Perl: - is okay anywhere.\n if (t.more() && t.lookingAt('-') && (this.flags & RE2Flags.PERL_X) === 0 && !first) {\n const s = t.rest()\n if (s === '-' || !s.startsWith('-]')) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n }\n\n first = false\n const beforePos = t.pos()\n // Look for POSIX [:alnum:] etc.\n if (t.lookingAt('[:')) {\n if (this.parseNamedClass(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n }\n\n // Look for Unicode character group like \\p{Han}.\n if (this.parseUnicodeClass(t, cc)) {\n continue\n }\n\n // Look for Perl character class symbols (extension).\n if (this.parsePerlClassEscape(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n\n // Single character or simple range.\n const lo = Parser.parseClassChar(t, startPos)\n let hi = lo\n if (t.more() && t.lookingAt('-')) {\n t.skip(1)\n if (t.more() && t.lookingAt(']')) {\n // [a-] means (a|-) so check for final ].\n t.skip(-1)\n } else {\n hi = Parser.parseClassChar(t, startPos)\n if (hi < lo) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(beforePos))\n }\n }\n }\n if ((this.flags & RE2Flags.FOLD_CASE) === 0) {\n cc.appendRange(lo, hi)\n } else {\n cc.appendFoldedRange(lo, hi)\n }\n }\n t.skip(1) // ']'\n\n cc.cleanClass()\n if (sign < 0) {\n cc.negateClass()\n }\n re.runes = cc.toArray()\n this.push(re)\n }\n}\n\nexport { Parser }\n","import { RE2Flags } from './RE2Flags'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { Machine } from './Machine'\nimport { MachineInput } from './MachineInput'\nimport { DFA } from './DFA'\nimport { Backtracker } from './Backtracker'\nimport { OnePass } from './OnePass'\nimport { PrefilterTree, Prefilter } from './Prefilter'\nimport { Compiler } from './Compiler'\nimport { Simplify } from './Simplify'\nimport { Parser } from './Parser'\nimport { Utils } from './Utils'\n\nclass AtomicReference {\n constructor(initialValue) {\n this.value = initialValue\n }\n\n // Returns the current value\n get() {\n return this.value\n }\n\n // Sets to the given value\n set(newValue) {\n this.value = newValue\n }\n\n // Atomically sets to the given value and returns true if the current value == the expected value\n compareAndSet(expect, update) {\n if (this.value === expect) {\n this.value = update\n return true\n }\n return false\n }\n}\n\n/**\n * An RE2 class instance is a compiled representation of an RE2 regular expression, independent of\n * the public Java-like Pattern/Matcher API.\n *\n * This class also contains various implementation helpers for RE2 regular expressions.\n *\n * Use the {@link #quoteMeta(String)} utility function to quote all regular expression\n * metacharacters in an arbitrary string.\n *\n */\nclass RE2 {\n // This is visible for testing.\n static initTest(expr) {\n const re2 = RE2.compile(expr)\n const res = new RE2(re2.expr, re2.prog, re2.numSubexp, re2.longest)\n res.cond = re2.cond\n res.prefix = re2.prefix\n res.prefixUTF8 = re2.prefixUTF8\n res.prefixComplete = re2.prefixComplete\n res.prefixRune = re2.prefixRune\n res.prefilter = re2.prefilter\n return res\n }\n\n /**\n * Parses a regular expression and returns, if successful, an {@code RE2} instance that can be\n * used to match against text.\n *\n * When matching against text, the regexp returns a match that begins as early as possible in the\n * input (leftmost), and among those it chooses the one that a backtracking search would have\n * found first. This so-called leftmost-first matching is the same semantics that Perl, Python,\n * and other implementations use, although this package implements it without the expense of\n * backtracking. For POSIX leftmost-longest matching, see {@link #compilePOSIX}.\n */\n static compile(expr) {\n return RE2.compileImpl(expr, RE2Flags.PERL, false)\n }\n\n /**\n * {@code compilePOSIX} is like {@link #compile} but restricts the regular expression to POSIX ERE\n * (egrep) syntax and changes the match semantics to leftmost-longest.\n *\n * That is, when matching against text, the regexp returns a match that begins as early as\n * possible in the input (leftmost), and among those it chooses a match that is as long as\n * possible. This so-called leftmost-longest matching is the same semantics that early regular\n * expression implementations used and that POSIX specifies.\n *\n * However, there can be multiple leftmost-longest matches, with different submatch choices, and\n * here this package diverges from POSIX. Among the possible leftmost-longest matches, this\n * package chooses the one that a backtracking search would have found first, while POSIX\n * specifies that the match be chosen to maximize the length of the first subexpression, then the\n * second, and so on from left to right. The POSIX rule is computationally prohibitive and not\n * even well-defined. See http://swtch.com/~rsc/regexp/regexp2.html#posix\n */\n static compilePOSIX(expr) {\n return RE2.compileImpl(expr, RE2Flags.POSIX, true)\n }\n\n // Exposed to ExecTests.\n static compileImpl(expr, mode, longest) {\n let re = Parser.parse(expr, mode)\n const maxCap = re.maxCap()\n re = Simplify.simplify(re)\n\n const prefilter = PrefilterTree.build(re)\n\n const prog = Compiler.compileRegexp(re)\n const re2 = new RE2(expr, prog, maxCap, longest)\n\n re2.prefilter = prefilter.type === Prefilter.Type.NONE ? null : prefilter\n\n const [prefixCompl, prefixStr] = prog.prefix()\n re2.prefixComplete = prefixCompl\n re2.prefix = prefixStr\n re2.prefixUTF8 = Utils.stringToUtf8ByteArray(re2.prefix)\n\n if (re2.prefix.length > 0) {\n re2.prefixRune = re2.prefix.codePointAt(0)\n }\n re2.namedGroups = re.namedGroups\n return re2\n }\n\n /**\n * Returns true iff textual regular expression {@code pattern} matches string {@code s}.\n *\n * More complicated queries need to use {@link #compile} and the full {@code RE2} interface.\n */\n // This is visible for testing.\n static match(pattern, s) {\n return RE2.compile(pattern).match(s)\n }\n\n constructor(expr, prog, numSubexp = 0, longest = 0) {\n this.expr = expr // as passed to Compile\n this.prog = prog // compiled program\n this.numSubexp = numSubexp\n this.longest = longest\n this.cond = prog.startCond() // EMPTY_* bitmask: empty-width conditions\n this.prefix = null // required UTF-16 prefix in unanchored matches\n this.prefixUTF8 = null // required UTF-8 prefix in unanchored matches\n this.prefixComplete = false // true if prefix is the entire regexp\n this.prefixRune = 0 // first rune in prefix\n this.pooled = new AtomicReference() // Cache of machines for running regexp. Forms a Treiber stack.\n this.dfa = new DFA(this.prog) // initialize Lazy DFA\n this.onepass = OnePass.compile(this.prog) // compile OnePass\n this.prefilter = null\n }\n\n matchPrefixComplete(input, pos, anchor, ncap) {\n // If strictly anchored, execution must start at 0\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return null\n }\n\n let matchStart = -1\n let matchEnd = -1\n const pLen = input.prefixLength(this)\n\n if (anchor === RE2Flags.UNANCHORED) {\n const idx = input.index(this, pos)\n if (idx < 0) return null\n matchStart = pos + idx\n matchEnd = matchStart + pLen\n } else if (anchor === RE2Flags.ANCHOR_BOTH) {\n if (input.endPos() !== pLen) return null\n const idx = input.index(this, 0)\n if (idx !== 0) return null\n matchStart = 0\n matchEnd = pLen\n } else if (anchor === RE2Flags.ANCHOR_START) {\n const idx = input.index(this, 0)\n if (idx !== 0) return null\n matchStart = 0\n matchEnd = pLen\n }\n\n if (matchStart < 0) return null\n\n // If captures are requested (e.g. findSubmatch instead of test), populate bounds\n if (ncap > 0) {\n const matchcap = new Int32Array(ncap).fill(-1)\n matchcap[0] = matchStart\n matchcap[1] = matchEnd\n return Array.from(matchcap)\n }\n return [] // Matched successfully, but no capture data requested\n }\n\n executeEngine(input, pos, anchor, ncap) {\n // LITERAL FAST PATH\n // If the entire regex is just a literal string (and no nested capture boundaries are requested),\n // bypass all state machines and execute via V8's blistering fast native indexOf\n if (this.prefixComplete && (ncap === 0 || this.numSubexp === 0)) {\n return this.matchPrefixComplete(input, pos, anchor, ncap)\n }\n\n // PREFILTER FAST PATH\n // If the unanchored query requires specific literal strings (e.g. \"a.*b\"),\n // verify those strings exist using high-speed JS string searches before waking up the state engines.\n if (this.prefilter !== null && anchor === RE2Flags.UNANCHORED) {\n if (!this.prefilter.eval(input, pos)) {\n return null\n }\n }\n\n // FAST PATH: OnePass DFA engine.\n // If compiled successfully, it perfectly supports capture groups\n // and is blisteringly fast since it skips thread queues completely.\n if (this.onepass !== null) {\n return OnePass.execute(this, input, pos, anchor, ncap)\n }\n\n // If the user wants capturing groups (ncap > 0), the DFA mathematically CANNOT do it.\n // We must use the NFA.\n if (ncap > 0) {\n // Backtracker bit-state execution bounds check\n if (this.prog.numLb === 0 && input.endPos() <= Backtracker.maxBitStateLen(this.prog)) {\n return Backtracker.execute(this, input, pos, anchor, ncap)\n }\n // NFA execution\n return this.doExecuteNFA(input, pos, anchor, ncap)\n }\n\n // The DFA will safely return null (bailout) if it encounters a lookbehind\n if (this.prog.numLb === 0) {\n const dfaResult = this.dfa.match(input, pos, anchor)\n if (dfaResult !== null) {\n // DFA succeeded (returned true or false)\n return dfaResult ? [] : null // Return empty array to signify \"matched but no captures\"\n }\n\n // Backtracker bit-state execution bounds check\n if (input.endPos() <= Backtracker.maxBitStateLen(this.prog)) {\n return Backtracker.execute(this, input, pos, anchor, ncap)\n }\n }\n\n // Fallback to NFA\n return this.doExecuteNFA(input, pos, anchor, ncap)\n }\n\n /**\n * Returns the number of parenthesized subexpressions in this regular expression.\n */\n numberOfCapturingGroups() {\n return this.numSubexp\n }\n\n /**\n * Returns the number of instructions in this compiled regular expression program.\n */\n numberOfInstructions() {\n return this.prog.numInst()\n }\n\n // get() returns a machine to use for matching |this|. It uses |this|'s\n // machine cache if possible, to avoid unnecessary allocation.\n get() {\n // Pop a machine off the stack if available.\n let head\n\n do {\n head = this.pooled.get()\n } while (head && !this.pooled.compareAndSet(head, head.next))\n\n return head\n }\n\n // Clears the memory associated with this machine.\n reset() {\n this.pooled.set(null)\n }\n\n // put() returns a machine to |this|'s machine cache. There is no attempt to\n // limit the size of the cache, so it will grow to the maximum number of\n // simultaneous matches run using |this|. (The cache empties when |this|\n // gets garbage collected or reset is called.)\n put(m, isNew) {\n // To avoid allocation in the single-thread or uncontended case, reuse a node only if\n // it was the only element in the stack when it was popped, and it's the only element\n // in the stack when it's pushed back after use.\n let head = this.pooled.get()\n do {\n head = this.pooled.get()\n if (!isNew && head) {\n // If an element had a null next pointer and it was previously in the stack, another thread\n // might be trying to pop it out right now, and if it sees the same node now in the\n // stack the pop will succeed, but the new top of the stack will be the stale (null) value\n // of next. Allocate a new Machine so that the CAS will not succeed if this node has been\n // popped and re-pushed.\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n // Without this comparison, TSAN will complain about a race condition:\n // Thread A, B, and C all attempt to do a match on the same pattern.\n //\n // A: Allocates Machine 1; executes match; put machine 1. State is now:\n //\n // pooled -> machine 1 -> null\n //\n // B reads pooled, sees machine 1\n //\n // C reads pooled, sees machine 1\n //\n // B successfully CASes pooled to null\n //\n // B executes match; put machine 1, which involves setting machine1.next to\n // null (even though it's already null); preempted before CAS\n //\n // C resumes, and reads machine1.next in order to execute cas(head, head.next)\n //\n // There is no happens-before relationship between B's redundant null write\n // and C's read, thus triggering TSAN.\n //\n // Not needed for JS code\n if (m.next !== head) {\n m.next = head\n }\n } while (!this.pooled.compareAndSet(head, m))\n }\n\n toString() {\n return this.expr\n }\n\n // doExecuteNFA() finds the leftmost match in the input and returns\n // the position of its subexpressions.\n // Derived from exec.go.\n doExecuteNFA(input, pos, anchor, ncap) {\n let m = this.get()\n // The Treiber stack cannot reuse nodes, unless the node to be reused has only ever been at\n // the bottom of the stack (i.e., next == null).\n let isNew = false\n if (!m) {\n m = Machine.fromRE2(this)\n isNew = true\n } else if (m.next !== null) {\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n m.init(ncap)\n const cap = m.match(input, pos, anchor) ? m.submatches() : null\n this.put(m, isNew)\n return cap\n }\n\n match(s) {\n return this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Matches the regular expression against input starting at position start and ending at position\n * end, with the given anchoring. Records the submatch boundaries in group, which is [start, end)\n * pairs of byte offsets. The number of boundaries needed is inferred from the size of the group\n * array. It is most efficient not to ask for submatch boundaries.\n *\n * @param input the input byte array\n * @param start the beginning position in the input\n * @param end the end position in the input\n * @param anchor the anchoring flag (UNANCHORED, ANCHOR_START, ANCHOR_BOTH)\n * @param group the array to fill with submatch positions\n * @param ngroup the number of array pairs to fill in\n * @returns true if a match was found\n */\n matchWithGroup(input, start, end, anchor, ngroup) {\n if (!(input instanceof MatcherInputBase)) {\n if (Utils.isByteArray(input)) {\n input = MatcherInput.utf8(input)\n } else {\n input = MatcherInput.utf16(input)\n }\n }\n\n return this.matchMachineInput(input, start, end, anchor, ngroup)\n }\n\n matchMachineInput(input, start, end, anchor, ngroup) {\n if (start > end) {\n return [false, null]\n }\n const machineInput = input.isUTF16Encoding()\n ? MachineInput.fromUTF16(input.asCharSequence(), 0, end)\n : MachineInput.fromUTF8(input.asBytes(), 0, end)\n\n const groupMatch = this.executeEngine(machineInput, start, anchor, 2 * ngroup)\n\n if (groupMatch === null) {\n return [false, null]\n }\n return [true, groupMatch]\n }\n\n /**\n * Returns true iff this regexp matches the UTF-8 byte array {@code b}.\n */\n // This is visible for testing.\n matchUTF8(b) {\n return this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Returns a copy of {@code src} in which all matches for this regexp have been replaced by\n * {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAll(src, repl) {\n return this.replaceAllFunc(src, () => repl, 2 * src.length + 1)\n }\n\n /**\n * Returns a copy of {@code src} in which only the first match for this regexp has been replaced\n * by {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceFirst(src, repl) {\n return this.replaceAllFunc(src, () => repl, 1)\n }\n\n /**\n * Returns a copy of {@code src} in which at most {@code maxReplaces} matches for this regexp have\n * been replaced by the return value of of function {@code repl} (whose first argument is the\n * matched string). No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAllFunc(src, replFunc, maxReplaces) {\n let lastMatchEnd = 0\n let searchPos = 0\n let out = ''\n\n const input = MachineInput.fromUTF16(src)\n let numReplaces = 0\n while (searchPos <= src.length) {\n const a = this.executeEngine(input, searchPos, RE2Flags.UNANCHORED, 2)\n if (a === null || a.length === 0) {\n break\n }\n out += src.substring(lastMatchEnd, a[0])\n\n if (a[1] > lastMatchEnd || a[0] === 0) {\n out += replFunc(src.substring(a[0], a[1]))\n numReplaces++\n }\n\n lastMatchEnd = a[1]\n const width = input.step(searchPos) & 7\n if (searchPos + width > a[1]) {\n searchPos += width\n } else if (searchPos + 1 > a[1]) {\n searchPos++\n } else {\n searchPos = a[1]\n }\n if (numReplaces >= maxReplaces) {\n break\n }\n }\n\n out += src.substring(lastMatchEnd)\n return out\n }\n\n // The number of capture values in the program may correspond\n // to fewer capturing expressions than are in the regexp.\n // For example, \"(a){0}\" turns into an empty program, so the\n // maximum capture in the program is 0 but we need to return\n // an expression for \\1. Pad returns a with -1s appended as needed;\n // the result may alias a.\n pad(a) {\n if (a === null) {\n return null\n }\n\n let n = (1 + this.numSubexp) * 2\n\n if (a.length < n) {\n let a2 = new Array(n).fill(-1)\n for (let i = 0; i < a.length; i++) {\n a2[i] = a[i]\n }\n a = a2\n }\n return a\n }\n\n // Find matches in input.\n allMatches(input, n, deliverFun = (v) => v) {\n let result = []\n const end = input.endPos()\n if (n < 0) {\n n = end + 1\n }\n\n let pos = 0\n let i = 0\n let prevMatchEnd = -1\n while (i < n && pos <= end) {\n const matches = this.executeEngine(input, pos, RE2Flags.UNANCHORED, this.prog.numCap)\n if (matches === null || matches.length === 0) {\n break\n }\n\n let accept = true\n if (matches[1] === pos) {\n if (matches[0] === prevMatchEnd) {\n accept = false\n }\n const r = input.step(pos)\n if (r < 0) {\n pos = end + 1\n } else {\n pos += r & 7\n }\n } else {\n pos = matches[1]\n }\n prevMatchEnd = matches[1]\n\n if (accept) {\n result.push(deliverFun(this.pad(matches)))\n i++\n }\n }\n return result\n }\n\n // Legacy Go-style interface; preserved (package-private) for better\n // test coverage.\n //\n // There are 16 methods of RE2 that match a regular expression and\n // identify the matched text. Their names are matched by this regular\n // expression:\n //\n // find(All)?(UTF8)?(Submatch)?(Index)?\n //\n // If 'All' is present, the routine matches successive non-overlapping\n // matches of the entire expression. Empty matches abutting a\n // preceding match are ignored. The return value is an array\n // containing the successive return values of the corresponding\n // non-All routine. These routines take an extra integer argument, n;\n // if n >= 0, the function returns at most n matches/submatches.\n //\n // If 'UTF8' is present, the argument is a UTF-8 encoded byte[] array;\n // otherwise it is a UTF-16 encoded js string; return values\n // are adjusted as appropriate.\n //\n // If 'Submatch' is present, the return value is an list identifying\n // the successive submatches of the expression. Submatches are\n // matches of parenthesized subexpressions within the regular\n // expression, numbered from left to right in order of opening\n // parenthesis. Submatch 0 is the match of the entire expression,\n // submatch 1 the match of the first parenthesized subexpression, and\n // so on.\n //\n // If 'Index' is present, matches and submatches are identified by\n // byte index pairs within the input string: result[2*n:2*n+1]\n // identifies the indexes of the nth submatch. The pair for n==0\n // identifies the match of the entire expression. If 'Index' is not\n // present, the match is identified by the text of the match/submatch.\n // If an index is negative, it means that subexpression did not match\n // any string in the input.\n\n /**\n * Returns an array holding the text of the leftmost match in {@code b} of this regular\n * expression.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8(b) {\n const a = this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return b.slice(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code b} of this regular expression. The match itself is at {@code b[loc[0]...loc[1]]}.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Index(b) {\n const a = this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return a.slice(0, 2)\n }\n\n /**\n * Returns a string holding the text of the leftmost match in {@code s} of this regular\n * expression.\n *\n * If there is no match, the return value is an empty string, but it will also be empty if the\n * regular expression successfully matches an empty string. Use {@link #findIndex} or\n * {@link #findSubmatch} if it is necessary to distinguish these cases.\n */\n // This is visible for testing.\n find(s) {\n const a = this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return ''\n }\n return s.substring(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code s} of this regular expression. The match itself is at\n * {@code s.substring(loc[0], loc[1])}.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findIndex(s) {\n return this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n }\n\n /**\n * Returns an array of arrays the text of the leftmost match of the regular expression in\n * {@code b} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Submatch(b) {\n const a = this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = b.slice(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code b} and the matches, if any, of its subexpressions, as defined by the the\n * <a href='#submatch'>Submatch</a> and <a href='#index'>Index</a> descriptions above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8SubmatchIndex(b) {\n return this.pad(\n this.executeEngine(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * Returns an array of strings holding the text of the leftmost match of the regular expression in\n * {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatch(s) {\n const a = this.executeEngine(\n MachineInput.fromUTF16(s),\n 0,\n RE2Flags.UNANCHORED,\n this.prog.numCap\n )\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = s.substring(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatchIndex(s) {\n return this.pad(\n this.executeEngine(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * {@code findAllUTF8()} is the <a href='#all'>All</a> version of {@link #findUTF8}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n *\n * TODO(adonovan): think about defining a byte slice view class, like a read-only Go slice backed\n * by |b|.\n */\n // This is visible for testing.\n findAllUTF8(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) =>\n b.slice(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Index} is the <a href='#all'>All</a> version of {@link #findUTF8Index}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Index(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAll} is the <a href='#all'>All</a> version of {@link #find}; it returns a list of up\n * to {@code n} successive matches of the expression, as defined by the <a href='#all'>All</a>\n * description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAll(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) =>\n s.substring(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllIndex} is the <a href='#all'>All</a> version of {@link #findIndex}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Submatch} is the <a href='#all'>All</a> version of {@link #findUTF8Submatch};\n * it returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Submatch(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = b.slice(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8SubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findUTF8SubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8SubmatchIndex(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatch} is the <a href='#all'>All</a> version of {@link #findSubmatch}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatch(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = s.substring(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findSubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatchIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n}\n\nexport { RE2 }\n","import { Compiler } from './Compiler'\nimport { Parser } from './Parser'\nimport { Simplify } from './Simplify'\nimport { DFA } from './DFA'\nimport { Machine } from './Machine'\nimport { MachineInput } from './MachineInput'\nimport { RE2Flags } from './RE2Flags'\nimport { PublicFlags } from './PublicFlags'\nimport { Utils } from './Utils'\nimport { RE2JSCompileException } from './exceptions'\n\nclass RE2Set {\n static UNANCHORED = RE2Flags.UNANCHORED\n static ANCHOR_START = RE2Flags.ANCHOR_START\n static ANCHOR_BOTH = RE2Flags.ANCHOR_BOTH\n\n constructor(anchor = RE2Set.UNANCHORED, flags = 0) {\n this.anchor = anchor\n this.jsFlags = flags\n\n let re2Flags = RE2Flags.PERL\n if ((flags & PublicFlags.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= ~RE2Flags.UNICODE_GROUPS\n }\n if ((flags & PublicFlags.LOOKBEHINDS) !== 0) {\n re2Flags |= RE2Flags.LOOKBEHIND\n }\n this.re2Flags = re2Flags\n\n this.regexps = []\n this.prog = null\n this.dfa = null\n this.dummyRe2 = null\n }\n\n add(pattern) {\n if (this.prog) {\n throw new RE2JSCompileException('Cannot add patterns after compile')\n }\n\n let fregex = pattern\n if ((this.jsFlags & PublicFlags.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`\n }\n if ((this.jsFlags & PublicFlags.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`\n }\n if ((this.jsFlags & PublicFlags.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`\n }\n\n const re = Parser.parse(fregex, this.re2Flags)\n this.regexps.push(Simplify.simplify(re))\n return this.regexps.length - 1\n }\n\n compile() {\n if (this.prog) return\n this.prog = Compiler.compileSet(this.regexps)\n this.dfa = new DFA(this.prog)\n this.dummyRe2 = {\n prog: this.prog,\n cond: this.prog.startCond(),\n prefix: '',\n prefixRune: 0,\n longest: false\n }\n }\n\n match(input) {\n if (!this.prog) this.compile()\n\n const machineInput = Utils.isByteArray(input)\n ? MachineInput.fromUTF8(input)\n : MachineInput.fromUTF16(input)\n\n let internalAnchor = RE2Flags.UNANCHORED\n if (this.anchor === RE2Set.ANCHOR_START) {\n internalAnchor = RE2Flags.ANCHOR_START\n } else if (this.anchor === RE2Set.ANCHOR_BOTH) {\n internalAnchor = RE2Flags.ANCHOR_BOTH\n }\n\n // Fast path: Try the blistering fast DFA\n const dfaResult = this.dfa.matchSet(machineInput, 0, internalAnchor)\n if (dfaResult !== null) return dfaResult\n\n // Safe Fallback: Handle boundaries (\\b) or massive state explosions via NFA\n const machine = Machine.fromRE2(this.dummyRe2)\n machine.init(0)\n return machine.matchSet(machineInput, 0, internalAnchor)\n }\n}\n\nexport { RE2Set }\n","import { Utils } from './Utils'\n\n/**\n * Transform JS regex string to RE2 regex string\n */\nclass TranslateRegExpString {\n static isUpperCaseAlpha(ch) {\n return 'A' <= ch && ch <= 'Z'\n }\n\n static isHexadecimal(ch) {\n return ('0' <= ch && ch <= '9') || ('A' <= ch && ch <= 'F') || ('a' <= ch && ch <= 'f')\n }\n\n static translate(data) {\n if (typeof data !== 'string') {\n return data\n }\n\n let result = ''\n let changed = false\n let size = data.length\n\n if (size === 0) {\n result = '(?:)'\n changed = true\n }\n\n let i = 0\n while (i < size) {\n let ch = data[i]\n\n if (ch === '\\\\') {\n if (i + 1 < size) {\n ch = data[i + 1]\n switch (ch) {\n case '\\\\': {\n result += '\\\\\\\\'\n i += 2\n continue\n }\n case 'c': {\n if (i + 2 < size) {\n let nextCh = data[i + 2]\n let code = nextCh.charCodeAt(0)\n if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {\n let val = code % 32\n result += '\\\\x'\n result += (val >> 4).toString(16).toUpperCase()\n result += (val & 15).toString(16).toUpperCase()\n i += 3\n changed = true\n continue\n }\n }\n result += 'c'\n i += 2\n changed = true\n continue\n }\n case 'u': {\n if (i + 2 < size) {\n let nextCh = data[i + 2]\n if (nextCh === '{') {\n result += '\\\\x'\n i += 2\n changed = true\n continue\n } else if (i + 5 < size) {\n let isHex4 = true\n for (let j = 0; j < 4; j++) {\n if (!TranslateRegExpString.isHexadecimal(data[i + 2 + j])) {\n isHex4 = false\n break\n }\n }\n if (isHex4) {\n result += '\\\\x{' + data.substring(i + 2, i + 6) + '}'\n i += 6\n changed = true\n continue\n }\n }\n }\n result += 'u'\n i += 2\n changed = true\n continue\n }\n default: {\n result += '\\\\'\n let cp = data.codePointAt(i + 1)\n let symSize = Utils.charCount(cp)\n result += data.substring(i + 1, i + 1 + symSize)\n i += symSize + 1\n continue\n }\n }\n }\n } else if (ch === '/') {\n result += '\\\\/'\n i += 1\n changed = true\n continue\n } else if (ch === '(' && i + 2 < size && data[i + 1] === '?' && data[i + 2] === '<') {\n if (i + 3 < size && !'=!>)'.includes(data[i + 3])) {\n result += '(?P<'\n i += 3\n changed = true\n continue\n }\n }\n\n let cp = data.codePointAt(i)\n let symSize = Utils.charCount(cp)\n result += data.substring(i, i + symSize)\n i += symSize\n }\n\n return changed ? result : data\n }\n}\n\nexport { TranslateRegExpString }\n","import { RE2Flags } from './RE2Flags'\nimport { PublicFlags } from './PublicFlags'\nimport { MatcherInput } from './MatcherInput'\nimport { MachineInput } from './MachineInput'\nimport { Matcher } from './Matcher'\nimport { RE2 } from './RE2'\nimport { RE2Set } from './Set'\nimport { Utils } from './Utils'\nimport { TranslateRegExpString } from './TranslateRegExpString'\nimport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException,\n RE2JSInternalException\n} from './exceptions'\n\n/**\n * A compiled representation of an RE2 regular expression\n *\n * The matching functions take {@code String} arguments instead of the more general Java\n * {@code CharSequence} since the latter doesn't provide UTF-16 decoding.\n *\n *\n * @author rsc@google.com (Russ Cox)\n * @class\n */\nclass RE2JS {\n /**\n * Flag: case insensitive matching.\n */\n static CASE_INSENSITIVE = PublicFlags.CASE_INSENSITIVE\n /**\n * Flag: dot ({@code .}) matches all characters, including newline.\n */\n static DOTALL = PublicFlags.DOTALL\n /**\n * Flag: multiline matching: {@code ^} and {@code $} match at beginning and end of line, not just\n * beginning and end of input.\n */\n static MULTILINE = PublicFlags.MULTILINE\n /**\n * Flag: Unicode groups (e.g. {@code \\p\\ Greek\\} ) will be syntax errors.\n */\n static DISABLE_UNICODE_GROUPS = PublicFlags.DISABLE_UNICODE_GROUPS\n /**\n * Flag: matches longest possible string.\n */\n static LONGEST_MATCH = PublicFlags.LONGEST_MATCH\n /**\n * Flag: enable linear-time captureless lookbehinds.\n */\n static LOOKBEHINDS = PublicFlags.LOOKBEHINDS\n\n /**\n * Returns a literal pattern string for the specified string.\n *\n * This method produces a string that can be used to create a <code>RE2JS</code> that would\n * match the string <code>s</code> as if it were a literal pattern.\n *\n * Metacharacters or escape sequences in the input sequence will be given no special meaning.\n *\n * @param {string} str The string to be literalized\n * @returns {string} A literal string replacement\n */\n static quote(str) {\n return Utils.quoteMeta(str)\n }\n\n /**\n * Quotes '\\' and '$' in {@code str}, so that the returned string could be used in\n * replacement methods as a literal replacement of {@code str}.\n *\n * This is a convenience delegation to {@link Matcher.quoteReplacement}.\n *\n * @param {string} str the string to be quoted\n * @param {boolean} [javaMode=false] whether the replacement will be used in javaMode\n * @returns {string} the quoted string\n */\n static quoteReplacement(str, javaMode = false) {\n return Matcher.quoteReplacement(str, javaMode)\n }\n\n /**\n * Translates a given regular expression string to ensure compatibility with RE2JS.\n *\n * This function preprocesses the input regex string by applying necessary transformations,\n * such as escaping special characters (e.g., `/`), converting named capture groups to\n * RE2JS-compatible syntax, and handling Unicode sequences properly. It ensures that the\n * resulting regex is safe and properly formatted before compilation.\n *\n * @param {string} expr - The regular expression string to be translated.\n * @returns {string} - The transformed regular expression string, ready for compilation.\n */\n static translateRegExp(expr) {\n return TranslateRegExpString.translate(expr)\n }\n\n /**\n * Helper: create new RE2JS with given regex and flags. Flregex is the regex with flags applied.\n * @param {string} regex\n * @param {number} [flags=0]\n * @returns {RE2JS}\n */\n static compile(regex, flags = 0) {\n let fregex = regex\n if ((flags & RE2JS.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`\n }\n if ((flags & RE2JS.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`\n }\n if ((flags & RE2JS.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`\n }\n if (\n (flags &\n ~(\n RE2JS.MULTILINE |\n RE2JS.DOTALL |\n RE2JS.CASE_INSENSITIVE |\n RE2JS.DISABLE_UNICODE_GROUPS |\n RE2JS.LONGEST_MATCH |\n RE2JS.LOOKBEHINDS\n )) !==\n 0\n ) {\n throw new RE2JSFlagsException(\n 'Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH, LOOKBEHINDS'\n )\n }\n\n let re2Flags = RE2Flags.PERL\n if ((flags & RE2JS.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= ~RE2Flags.UNICODE_GROUPS\n }\n if ((flags & RE2JS.LOOKBEHINDS) !== 0) {\n re2Flags |= RE2Flags.LOOKBEHIND\n }\n\n const p = new RE2JS(regex, flags)\n // The compiled RE2 regexp.\n p.re2Input = RE2.compileImpl(fregex, re2Flags, (flags & RE2JS.LONGEST_MATCH) !== 0)\n return p\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string} regex the regular expression\n * @param {string|number[]} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n * @throws RE2JSSyntaxException if the regular expression is malformed\n */\n static matches(regex, input) {\n return RE2JS.compile(regex).testExact(input)\n }\n\n /**\n * This is visible for testing.\n * @private\n */\n static initTest(pattern, flags, re2) {\n if (pattern == null) {\n throw new Error('pattern is null')\n }\n if (re2 == null) {\n throw new Error('re2 is null')\n }\n const p = new RE2JS(pattern, flags)\n // The compiled RE2 regexp.\n p.re2Input = re2\n return p\n }\n\n /**\n *\n * @param {string} pattern\n * @param {number} flags\n */\n constructor(pattern, flags) {\n // The pattern string at construction time.\n this.patternInput = pattern\n // The flags at construction time.\n this.flagsInput = flags\n }\n\n /**\n * Releases memory used by internal caches associated with this pattern. Does not change the\n * observable behaviour. Useful for tests that detect memory leaks via allocation tracking.\n */\n reset() {\n this.re2Input.reset()\n }\n\n /**\n * Returns the flags used in the constructor.\n * @returns {number}\n */\n flags() {\n return this.flagsInput\n }\n\n /**\n * Returns the pattern used in the constructor.\n * @returns {string}\n */\n pattern() {\n return this.patternInput\n }\n\n re2() {\n return this.re2Input\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string|number[]} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n */\n matches(input) {\n return this.testExact(input)\n }\n\n /**\n * Creates a new {@code Matcher} matching the pattern against the input.\n *\n * @param {string|number[]} input the input string\n * @returns {Matcher}\n */\n matcher(input) {\n if (Utils.isByteArray(input)) {\n input = MatcherInput.utf8(input)\n }\n\n return new Matcher(this, input)\n }\n\n /**\n * Tests whether the regular expression matches any part of the input string.\n * Performance Note: This method is highly optimized. Because it only returns\n * a boolean and does not extract capture groups, it bypasses the `Matcher` overhead\n * and guarantees execution on the high-speed DFA engine whenever possible.\n *\n * @param {string|number[]} input - The input string or UTF-8 byte array to test against.\n * @returns {boolean} `true` if the pattern is found anywhere in the input, `false` otherwise.\n */\n test(input) {\n if (Utils.isByteArray(input)) {\n // Reuse the existing UTF-8 fast-path method\n return this.re2Input.matchUTF8(input)\n }\n\n // Reuse the existing UTF-16 fast-path method\n return this.re2Input.match(input)\n }\n\n /**\n * Tests whether the regular expression matches the ENTIRE input string.\n * * **Performance Note:** This operates identically to `.matches()`, but is significantly\n * faster because it does not request capture group data. By requesting 0 capture groups,\n * it securely routes execution through the DFA fast-path.\n *\n * @param {string|number[]} input - The input string or UTF-8 byte array to test against.\n * @returns {boolean} `true` if the exact input string fully matches the pattern, `false` otherwise.\n */\n testExact(input) {\n const machineInput = Utils.isByteArray(input)\n ? MachineInput.fromUTF8(input)\n : MachineInput.fromUTF16(input)\n\n return this.re2Input.executeEngine(machineInput, 0, RE2Flags.ANCHOR_BOTH, 0) !== null\n }\n\n /**\n * Splits input around instances of the regular expression. It returns an array giving the strings\n * that occur before, between, and after instances of the regular expression.\n *\n * If {@code limit <= 0}, there is no limit on the size of the returned array. If\n * {@code limit == 0}, empty strings that would occur at the end of the array are omitted. If\n * {@code limit > 0}, at most limit strings are returned. The final string contains the remainder\n * of the input, possibly including additional matches of the pattern.\n *\n * @param {string} input the input string to be split\n * @param {number} [limit=0] the limit\n * @returns {string[]} the split strings\n */\n split(input, limit = 0) {\n const m = this.matcher(input)\n\n const result = []\n let emptiesSkipped = 0\n let last = 0\n\n while (m.find()) {\n if (last === 0 && m.end() === 0) {\n // Zero-width match at the beginning, skip\n last = m.end()\n continue\n }\n\n if (limit > 0 && result.length === limit - 1) {\n // no more room for matches\n break\n }\n\n if (last === m.start()) {\n // Empty match, may or may not be trailing.\n if (limit === 0) {\n emptiesSkipped += 1\n last = m.end()\n continue\n }\n } else {\n // If emptiesSkipped > 0 then limit == 0 and we have non-trailing empty matches to add before\n // this non-empty match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n }\n\n result.push(m.substring(last, m.start()))\n last = m.end()\n }\n\n if (limit === 0 && last !== m.inputLength()) {\n // Unlimited match, no more delimiters but we have a non-empty input at the end. Catch up any skipped empty\n // matches, then emit the final match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n\n result.push(m.substring(last, m.inputLength()))\n }\n\n if (limit !== 0 || result.length === 0) {\n result.push(m.substring(last, m.inputLength()))\n }\n\n return result\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.patternInput\n }\n\n /**\n * Returns the program size of this pattern.\n *\n * <p>\n * Similar to the C++ implementation, the program size is a very approximate measure of a regexp's\n * \"cost\". Larger numbers are more expensive than smaller numbers.\n * </p>\n *\n * @returns {number} the program size of this pattern\n */\n programSize() {\n return this.re2Input.numberOfInstructions()\n }\n\n /**\n * Returns the number of capturing groups in this matcher's pattern. Group zero denotes the entire\n * pattern and is excluded from this count.\n *\n * @returns {number} the number of capturing groups in this pattern\n */\n groupCount() {\n return this.re2Input.numberOfCapturingGroups()\n }\n\n /**\n * Return a map of the capturing groups in this matcher's pattern, where key is the name and value\n * is the index of the group in the pattern.\n * @returns {Record<string, number>}\n */\n namedGroups() {\n return this.re2Input.namedGroups\n }\n\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other) {\n return true\n }\n if (other === null || this.constructor !== other.constructor) {\n return false\n }\n\n return this.flagsInput === other.flagsInput && this.patternInput === other.patternInput\n }\n}\n\nexport {\n RE2JS,\n RE2Set,\n Matcher,\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException,\n RE2JSInternalException\n}\n"],"names":["RE2Flags","FOLD_CASE","LITERAL","CLASS_NL","DOT_NL","ONE_LINE","NON_GREEDY","PERL_X","UNICODE_GROUPS","WAS_DOLLAR","LOOKBEHIND","MATCH_NL","PERL","POSIX","UNANCHORED","ANCHOR_START","ANCHOR_BOTH","PublicFlags","CASE_INSENSITIVE","DOTALL","MULTILINE","DISABLE_UNICODE_GROUPS","LONGEST_MATCH","LOOKBEHINDS","ASCII_SIZE","ASCII_TO_UPPER","Int32Array","ASCII_TO_LOWER","MAX_BMP","i","Codepoint","CODES","Map","toUpperCase","codepoint","s","String","fromCodePoint","expectedLen","codePointAt","length","sOrigin","toLowerCase","originExpectedLen","UnicodeRangeTable","constructor","data","isStride1","SIZE","getLo","index","getHi","getStride","B64_MAP","Uint8Array","b","charCodeAt","decodeVLQ","str","res","value","shift","digit","push","decodeRanges","numRanges","out","Uint32Array","current","resIdx","decodeOrbit","map","currentKey","set","LazyMap","initializer","cache","has","key","get","fn","val","UnicodeTables","_CASE_ORBIT","CASE_ORBIT","_Print","Print","CATEGORIES","C","Cc","Cf","Cn","Co","Cs","L","LC","Ll","Lm","Lo","Lt","Lu","M","Mc","Me","Mn","N","Nd","Nl","No","P","Pc","Pd","Pe","Pf","Pi","Po","Ps","S","Sc","Sk","Sm","So","Z","Zl","Zp","Zs","Upper","SCRIPTS","Adlam","Ahom","Anatolian_Hieroglyphs","Arabic","Armenian","Avestan","Balinese","Bamum","Bassa_Vah","Batak","Bengali","Beria_Erfe","Bhaiksuki","Bopomofo","Brahmi","Braille","Buginese","Buhid","Canadian_Aboriginal","Carian","Caucasian_Albanian","Chakma","Cham","Cherokee","Chorasmian","Common","Coptic","Cuneiform","Cypriot","Cypro_Minoan","Cyrillic","Deseret","Devanagari","Dives_Akuru","Dogra","Duployan","Egyptian_Hieroglyphs","Elbasan","Elymaic","Ethiopic","Garay","Georgian","Glagolitic","Gothic","Grantha","Greek","Gujarati","Gunjala_Gondi","Gurmukhi","Gurung_Khema","Han","Hangul","Hanifi_Rohingya","Hanunoo","Hatran","Hebrew","Hiragana","Imperial_Aramaic","Inherited","Inscriptional_Pahlavi","Inscriptional_Parthian","Javanese","Kaithi","Kannada","Katakana","Kawi","Kayah_Li","Kharoshthi","Khitan_Small_Script","Khmer","Khojki","Khudawadi","Kirat_Rai","Lao","Latin","Lepcha","Limbu","Linear_A","Linear_B","Lisu","Lycian","Lydian","Mahajani","Makasar","Malayalam","Mandaic","Manichaean","Marchen","Masaram_Gondi","Medefaidrin","Meetei_Mayek","Mende_Kikakui","Meroitic_Cursive","Meroitic_Hieroglyphs","Miao","Modi","Mongolian","Mro","Multani","Myanmar","Nabataean","Nag_Mundari","Nandinagari","New_Tai_Lue","Newa","Nko","Nushu","Nyiakeng_Puachue_Hmong","Ogham","Ol_Chiki","Ol_Onal","Old_Hungarian","Old_Italic","Old_North_Arabian","Old_Permic","Old_Persian","Old_Sogdian","Old_South_Arabian","Old_Turkic","Old_Uyghur","Oriya","Osage","Osmanya","Pahawh_Hmong","Palmyrene","Pau_Cin_Hau","Phags_Pa","Phoenician","Psalter_Pahlavi","Rejang","Runic","Samaritan","Saurashtra","Sharada","Shavian","Siddham","Sidetic","SignWriting","Sinhala","Sogdian","Sora_Sompeng","Soyombo","Sundanese","Sunuwar","Syloti_Nagri","Syriac","Tagalog","Tagbanwa","Tai_Le","Tai_Tham","Tai_Viet","Tai_Yo","Takri","Tamil","Tangsa","Tangut","Telugu","Thaana","Thai","Tibetan","Tifinagh","Tirhuta","Todhri","Tolong_Siki","Toto","Tulu_Tigalari","Ugaritic","Unknown","Vai","Vithkuqi","Wancho","Warang_Citi","Yezidi","Yi","Zanabazar_Square","FOLD_CATEGORIES","FOLD_SCRIPT","Unicode","MAX_RUNE","MAX_ASCII","MAX_LATIN1","MIN_FOLD","MAX_FOLD","MIN_HIGH_SURROGATE","MAX_HIGH_SURROGATE","MIN_LOW_SURROGATE","MAX_LOW_SURROGATE","MIN_SUPPLEMENTARY_CODE_POINT","is32","ranges","r","lo","hi","m","Math","floor","rlo","rhi","stride","is","isUpper","isPrint","simpleFold","l","equalsIgnoreCase","r1","r2","Utils","METACHARACTERS","EMPTY_BEGIN_LINE","EMPTY_END_LINE","EMPTY_BEGIN_TEXT","EMPTY_END_TEXT","EMPTY_WORD_BOUNDARY","EMPTY_NO_WORD_BOUNDARY","EMPTY_ALL","emptyInts","isByteArray","input","Array","isArray","isalnum","c","unhex","escapeRune","rune","indexOf","toString","stringToRunes","from","runeToString","isWordRune","emptyOpContext","op","quoteMeta","split","join","charCount","codePoint","stringToUtf8ByteArray","globalThis","TextEncoder","encode","p","utf8ByteArrayToString","bytes","TextDecoder","decode","pos","c1","fromCharCode","c2","c3","c4","u","createEnum","values","initNum","enumObject","Object","create","keyVal","freeze","MatcherInputBase","Encoding","getEncoding","Error","isUTF8Encoding","UTF_8","isUTF16Encoding","UTF_16","Utf8MatcherInput","asCharSequence","asBytes","Utf16MatcherInput","charSequence","MatcherInput","utf16","utf8","MachineInputBase","EOF","canCheckPrefix","endPos","end","hasString","hasAnyString","prefixLength","MachineUTF8Input","start","prefilter","target","idx","ac8","searchUTF8","step","re2","prefixUTF8","context","lim","source","fromIndex","targetLength","limit","j","MachineUTF16Input","ac16","searchUTF16","prefix","MachineInput","fromUTF8","fromUTF16","RE2JSException","message","name","RE2JSSyntaxException","error","getDescription","getPattern","RE2JSCompileException","RE2JSGroupException","RE2JSFlagsException","RE2JSInternalException","Matcher","quoteReplacement","javaMode","pattern","patternInput","patternGroupCount","numberOfCapturingGroups","groups","namedGroups","numberOfInstructions","resetMatcherInput","reset","matcherInputLength","matcherInput","appendPos","hasMatch","hasGroups","anchorFlag","group","groupInt","Number","isFinite","loadGroup","programSize","substring","getNamedGroups","result","keys","groupCount","matchMachineInput","ok","matches","genMatch","lookingAt","find","machineInput","startByte","anchor","hasLookbehinds","prog","numLb","ngroup","slice","inputLength","appendReplacement","replacement","e","appendReplacementInternalJava","appendReplacementInternalJs","last","n","groupName","groupVal","prototype","hasOwnProperty","call","appendTail","replaceAll","replace","replaceFirst","all","Inst","ALT","ALT_MATCH","CAPTURE","EMPTY_WIDTH","FAIL","MATCH","NOP","RUNE","RUNE1","RUNE_ANY","RUNE_ANY_NOT_NL","LB_WRITE","LB_CHECK","isRuneOp","escapeRunes","runes","arg","matchRune","r0","len","base","half","matchRunePos","lb","Thread","inst","cap","Queue","numInst","sparse","densePcs","denseThreads","size","contains","pc","isEmpty","add","clear","Machine","THREADS_CHUNK_SIZE","fromRE2","q0","q1","pool","poolSize","matched","matchcap","numCap","ncap","fromMachine","machine","init","initNewCap","resetCap","lbTable","fill","t","submatches","subarray","alloc","capLen","freeQueue","queue","freeThread","match","startCond","cond","runq","nextq","width","rune1","width1","flag","prefixRune","advance","lbStarts","nextPos","tmpq","matchSet","Set","sort","a","nextCond","atEnd","longest","q","d","opos","abs","hashPCs","pcs","h","imul","arraysEqual","DFAState","nfaStates","isMatch","matchIDs","nextLatin1","nextLatin1Anchored","transKeys","transVals","lastSeen","DFA","MAX_CACHE_CLEARS","stateCache","stateCount","startState","stateLimit","cacheClears","failed","clock","computeClosure","closure","stack","pop","getInst","includes","sortedPCs","getState","closureResult","hash","bucket","state","evictCache","allStates","keepCount","max","startIndex","survivorsArray","survivors","charCode","next","nextPCs","nextState","currentState","checkMatch","currentPos","forEach","id","VISITED_BITS","MAX_BACKTRACK_PROG","INITIAL_JOB_CAPACITY","MAX_BACKTRACK_VECTOR","BitState","jobPc","jobArg","jobPos","jobLen","visited","visitedSize","shouldVisit","mask","newSize","newPc","newArg","newPos","tryBacktrack","currentPc","skipShouldVisit","outInst","old","bitStatePool","Backtracker","shouldBacktrack","maxBitStateLen","execute","QueueOnePass","dense","nextIndex","empty","insert","insertNew","mergeRuneSets","leftRunes","rightRunes","leftPC","rightPC","leftLen","rightLen","lx","rx","merged","ix","extend","isLeft","newArray","low","OnePassProg","orig","onePassCopy","pAOther","pAAlt","instAlt","instOther","pBAlt","pBOther","patch","makeOnePass","instQueue","visitQueue","onePassRunes","check","matchOut","matchArg","tempOut","tempMatch","mergeRes","cleanupOnePass","original","instOriginal","OnePass","compile","startInst","hasAlt","opOut","nextIdx","onepass","Regexp","Op","isPseudoOp","LEFT_PAREN","emptySubs","quoteIfHyphen","fromRegexp","re","regex","flags","subs","min","reinit","appendTo","NO_MATCH","EMPTY_MATCH","STAR","PLUS","QUEST","REPEAT","sub","CONCAT","ALTERNATE","sep","ANY_CHAR_NOT_NL","ANY_CHAR","PLB","NLB","BEGIN_TEXT","END_TEXT","BEGIN_LINE","END_LINE","WORD_BOUNDARY","NO_WORD_BOUNDARY","CHAR_CLASS","maxCap","equals","that","AhoCorasick","wordArrays","fail","word","node","child","curr","failNode","charSeq","Prefilter","Type","NONE","EXACT","AND","OR","type","eval","PrefilterTree","build","pf","simplify","newSubs","seen","uniqueSubs","allExact","words16","arr","words8","PatchList","head","tail","Prog","addInst","skipNop","loop","append","l1","l2","Frag","nullable","Compiler","ANY_RUNE_NOT_NL","ANY_RUNE","compileRegexp","f","newInst","compileSet","regexps","starts","nop","cat","f1","f2","alt","nongreedy","quest","star","plus","lookBehind","any","dotStar","lbAutomaton","checkId","bra","ket","Simplify","nre","changed","nsub","simplify1","prefixSubs","suffix","nre2","CharGroup","sign","cls","code1","code2","code3","PERL_GROUPS","code4","code5","code6","code7","code8","code9","code10","code11","code12","code13","code14","code15","code16","code17","POSIX_GROUPS","CharClass","charClassToString","cmp","array","pivotFrom","pivotTo","qsortIntPair","left","right","pivotIndex","temp","toArray","cleanClass","w","appendLiteral","x","appendFoldedRange","appendRange","appendClass","appendFoldedClass","appendNegatedClass","nextLo","appendTable","table","appendNegatedTable","appendTableWithSign","negateClass","appendClassWithSign","appendGroup","g","foldCase","StringIterator","position","rewindTo","more","peek","skip","skipString","rest","startsWith","beforePos","Parser","ERR_INTERNAL_ERROR","ERR_INVALID_CHAR_RANGE","ERR_INVALID_ESCAPE","ERR_INVALID_NAMED_CAPTURE","ERR_INVALID_PERL_OP","ERR_INVALID_REPEAT_OP","ERR_INVALID_REPEAT_SIZE","ERR_MISSING_BRACKET","ERR_MISSING_PAREN","ERR_MISSING_REPEAT_ARGUMENT","ERR_TRAILING_BACKSLASH","ERR_DUPLICATE_NAMED_CAPTURE","ERR_UNEXPECTED_PAREN","ERR_NESTING_DEPTH","ERR_LARGE","MAX_HEIGHT","MAX_SIZE","MAX_RUNES","ANY_TABLE","ASCII_TABLE","ASCII_FOLD_TABLE","unicodeTable","tab","fold","minFoldRune","leadingRegexp","literalRegexp","parse","parseInternal","parseRepeat","parseInt","isValidCaptureName","parseFloat","isCharClass","mergeCharClass","dst","src","parseEscape","startPos","bigswitch","nhex","v","y","parseClassChar","wholeClassPos","concatRunes","wholeRegexp","free","numRegexp","numRunes","repeats","height","nlb","newRegexp","reuse","delete","checkLimits","checkSize","checkHeight","reEx","calcSize","force","calcHeight","hsub","popToPseudo","maybeConcat","re1","newLiteral","literal","repeat","lastRepeatPos","repeatIsValid","trunc","concat","collapse","alternate","cleanAlt","newsubs","factor","lensub","lenout","strlen","strflags","istr","istrlen","iflags","same","removeLeadingString","first","ifirst","removeLeadingRegexp","subMax","subJ","tmp","repeatPos","parsePosLookBehind","parseNegLookBehind","parsePerlFlags","parseVerticalBar","parseRightParen","parseClass","minMax","savedPos","lit","cc","parseUnicodeClass","parsePerlClassEscape","swapVerticalBar","begin","charAt","sawFlag","VERTICAL_BAR","re3","parseNamedClass","pair","AtomicReference","initialValue","newValue","compareAndSet","expect","update","RE2","initTest","expr","numSubexp","prefixComplete","compileImpl","compilePOSIX","mode","prefixCompl","prefixStr","pooled","dfa","matchPrefixComplete","matchStart","matchEnd","pLen","executeEngine","doExecuteNFA","dfaResult","put","isNew","matchWithGroup","groupMatch","matchUTF8","repl","replaceAllFunc","replFunc","maxReplaces","lastMatchEnd","searchPos","numReplaces","pad","a2","allMatches","deliverFun","prevMatchEnd","accept","findUTF8","findUTF8Index","findIndex","findUTF8Submatch","ret","findUTF8SubmatchIndex","findSubmatch","findSubmatchIndex","findAllUTF8","findAllUTF8Index","findAll","findAllIndex","findAllUTF8Submatch","findAllUTF8SubmatchIndex","findAllSubmatch","findAllSubmatchIndex","RE2Set","jsFlags","re2Flags","dummyRe2","fregex","internalAnchor","TranslateRegExpString","isUpperCaseAlpha","ch","isHexadecimal","translate","nextCh","code","isHex4","cp","symSize","RE2JS","quote","translateRegExp","re2Input","testExact","flagsInput","matcher","test","emptiesSkipped","other"],"mappings":"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"}