@rohal12/twee-ts 1.13.0 → 1.14.0

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.
package/dist/index.js CHANGED
@@ -1375,8 +1375,7 @@ function parseTwee(source, options = {}) {
1375
1375
  return { passages, diagnostics };
1376
1376
  }
1377
1377
 
1378
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode-codepoint.js
1379
- var _a;
1378
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js
1380
1379
  var decodeMap = /* @__PURE__ */ new Map([
1381
1380
  [0, 65533],
1382
1381
  // C1 Unicode control character reference replacements
@@ -1408,47 +1407,16 @@ var decodeMap = /* @__PURE__ */ new Map([
1408
1407
  [158, 382],
1409
1408
  [159, 376]
1410
1409
  ]);
1411
- var fromCodePoint = (
1412
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
1413
- (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
1414
- let output = "";
1415
- if (codePoint > 65535) {
1416
- codePoint -= 65536;
1417
- output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
1418
- codePoint = 56320 | codePoint & 1023;
1419
- }
1420
- output += String.fromCharCode(codePoint);
1421
- return output;
1422
- })
1423
- );
1424
1410
  function replaceCodePoint(codePoint) {
1425
- var _a3;
1426
1411
  if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
1427
1412
  return 65533;
1428
1413
  }
1429
- return (_a3 = decodeMap.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;
1414
+ return decodeMap.get(codePoint) ?? codePoint;
1430
1415
  }
1431
1416
 
1432
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/decode-shared.js
1417
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js
1433
1418
  function decodeBase64(input) {
1434
- const binary = (
1435
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1436
- typeof atob === "function" ? (
1437
- // Browser (and Node >=16)
1438
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1439
- atob(input)
1440
- ) : (
1441
- // Older Node versions (<16)
1442
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1443
- typeof Buffer.from === "function" ? (
1444
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
1445
- Buffer.from(input, "base64").toString("binary")
1446
- ) : (
1447
- // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
1448
- new Buffer(input, "base64").toString("binary")
1449
- )
1450
- )
1451
- );
1419
+ const binary = atob(input);
1452
1420
  const evenLength = binary.length & ~1;
1453
1421
  const out = new Uint16Array(evenLength / 2);
1454
1422
  for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
@@ -1459,36 +1427,36 @@ function decodeBase64(input) {
1459
1427
  return out;
1460
1428
  }
1461
1429
 
1462
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js
1430
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js
1463
1431
  var htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
1464
1432
 
1465
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/generated/decode-data-xml.js
1433
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-xml.js
1466
1434
  var xmlDecodeTree = /* @__PURE__ */ decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
1467
1435
 
1468
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/bin-trie-flags.js
1436
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js
1469
1437
  var BinTrieFlags;
1470
- (function(BinTrieFlags3) {
1471
- BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
1472
- BinTrieFlags3[BinTrieFlags3["FLAG13"] = 8192] = "FLAG13";
1473
- BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
1474
- BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
1438
+ (function(BinTrieFlags2) {
1439
+ BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
1440
+ BinTrieFlags2[BinTrieFlags2["FLAG13"] = 8192] = "FLAG13";
1441
+ BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
1442
+ BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
1475
1443
  })(BinTrieFlags || (BinTrieFlags = {}));
1476
1444
 
1477
- // node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode.js
1445
+ // node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js
1478
1446
  var CharCodes;
1479
- (function(CharCodes4) {
1480
- CharCodes4[CharCodes4["NUM"] = 35] = "NUM";
1481
- CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI";
1482
- CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS";
1483
- CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO";
1484
- CharCodes4[CharCodes4["NINE"] = 57] = "NINE";
1485
- CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A";
1486
- CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F";
1487
- CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X";
1488
- CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z";
1489
- CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A";
1490
- CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F";
1491
- CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z";
1447
+ (function(CharCodes3) {
1448
+ CharCodes3[CharCodes3["NUM"] = 35] = "NUM";
1449
+ CharCodes3[CharCodes3["SEMI"] = 59] = "SEMI";
1450
+ CharCodes3[CharCodes3["EQUALS"] = 61] = "EQUALS";
1451
+ CharCodes3[CharCodes3["ZERO"] = 48] = "ZERO";
1452
+ CharCodes3[CharCodes3["NINE"] = 57] = "NINE";
1453
+ CharCodes3[CharCodes3["LOWER_A"] = 97] = "LOWER_A";
1454
+ CharCodes3[CharCodes3["LOWER_F"] = 102] = "LOWER_F";
1455
+ CharCodes3[CharCodes3["LOWER_X"] = 120] = "LOWER_X";
1456
+ CharCodes3[CharCodes3["LOWER_Z"] = 122] = "LOWER_Z";
1457
+ CharCodes3[CharCodes3["UPPER_A"] = 65] = "UPPER_A";
1458
+ CharCodes3[CharCodes3["UPPER_F"] = 70] = "UPPER_F";
1459
+ CharCodes3[CharCodes3["UPPER_Z"] = 90] = "UPPER_Z";
1492
1460
  })(CharCodes || (CharCodes = {}));
1493
1461
  var TO_LOWER_BIT = 32;
1494
1462
  function isNumber(code) {
@@ -1504,33 +1472,51 @@ function isEntityInAttributeInvalidEnd(code) {
1504
1472
  return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
1505
1473
  }
1506
1474
  var EntityDecoderState;
1507
- (function(EntityDecoderState3) {
1508
- EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
1509
- EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
1510
- EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
1511
- EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
1512
- EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
1475
+ (function(EntityDecoderState2) {
1476
+ EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
1477
+ EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
1478
+ EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
1479
+ EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
1480
+ EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
1513
1481
  })(EntityDecoderState || (EntityDecoderState = {}));
1514
1482
  var DecodingMode;
1515
- (function(DecodingMode3) {
1516
- DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
1517
- DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
1518
- DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
1483
+ (function(DecodingMode2) {
1484
+ DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
1485
+ DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
1486
+ DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
1519
1487
  })(DecodingMode || (DecodingMode = {}));
1520
1488
  var EntityDecoder = class {
1489
+ decodeTree;
1490
+ emitCodePoint;
1491
+ errors;
1521
1492
  constructor(decodeTree, emitCodePoint, errors) {
1522
1493
  this.decodeTree = decodeTree;
1523
1494
  this.emitCodePoint = emitCodePoint;
1524
1495
  this.errors = errors;
1525
- this.state = EntityDecoderState.EntityStart;
1526
- this.consumed = 1;
1527
- this.result = 0;
1528
- this.treeIndex = 0;
1529
- this.excess = 1;
1530
- this.decodeMode = DecodingMode.Strict;
1531
- this.runConsumed = 0;
1532
1496
  }
1533
- /** Resets the instance to make it reusable. */
1497
+ /** The current state of the decoder. */
1498
+ state = EntityDecoderState.EntityStart;
1499
+ /** Characters that were consumed while parsing an entity. */
1500
+ consumed = 1;
1501
+ /**
1502
+ * The result of the entity.
1503
+ *
1504
+ * Either the result index of a numeric entity, or the codepoint of a
1505
+ * numeric entity.
1506
+ */
1507
+ result = 0;
1508
+ /** The current index in the decode tree. */
1509
+ treeIndex = 0;
1510
+ /** The number of characters that were consumed in excess. */
1511
+ excess = 1;
1512
+ /** The mode in which the decoder is operating. */
1513
+ decodeMode = DecodingMode.Strict;
1514
+ /** The number of characters that have been consumed in the current run. */
1515
+ runConsumed = 0;
1516
+ /**
1517
+ * Resets the instance to make it reusable.
1518
+ * @param decodeMode Entity decoding mode to use.
1519
+ */
1534
1520
  startEntity(decodeMode) {
1535
1521
  this.decodeMode = decodeMode;
1536
1522
  this.state = EntityDecoderState.EntityStart;
@@ -1546,7 +1532,6 @@ var EntityDecoder = class {
1546
1532
  *
1547
1533
  * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
1548
1534
  * entity is incomplete, and resume when the next string is written.
1549
- *
1550
1535
  * @param input The string containing the entity (or a continuation of the entity).
1551
1536
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
1552
1537
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1580,7 +1565,6 @@ var EntityDecoder = class {
1580
1565
  * Switches between the numeric decimal and hexadecimal states.
1581
1566
  *
1582
1567
  * Equivalent to the `Numeric character reference state` in the HTML spec.
1583
- *
1584
1568
  * @param input The string containing the entity (or a continuation of the entity).
1585
1569
  * @param offset The current offset.
1586
1570
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1601,7 +1585,6 @@ var EntityDecoder = class {
1601
1585
  * Parses a hexadecimal numeric entity.
1602
1586
  *
1603
1587
  * Equivalent to the `Hexademical character reference state` in the HTML spec.
1604
- *
1605
1588
  * @param input The string containing the entity (or a continuation of the entity).
1606
1589
  * @param offset The current offset.
1607
1590
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1624,7 +1607,6 @@ var EntityDecoder = class {
1624
1607
  * Parses a decimal numeric entity.
1625
1608
  *
1626
1609
  * Equivalent to the `Decimal character reference state` in the HTML spec.
1627
- *
1628
1610
  * @param input The string containing the entity (or a continuation of the entity).
1629
1611
  * @param offset The current offset.
1630
1612
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1647,7 +1629,6 @@ var EntityDecoder = class {
1647
1629
  *
1648
1630
  * Implements the logic from the `Hexademical character reference start
1649
1631
  * state` and `Numeric character reference end state` in the HTML spec.
1650
- *
1651
1632
  * @param lastCp The last code point of the entity. Used to see if the
1652
1633
  * entity was terminated with a semicolon.
1653
1634
  * @param expectedLength The minimum number of characters that should be
@@ -1656,9 +1637,8 @@ var EntityDecoder = class {
1656
1637
  * @returns The number of characters that were consumed.
1657
1638
  */
1658
1639
  emitNumericEntity(lastCp, expectedLength) {
1659
- var _a3;
1660
1640
  if (this.consumed <= expectedLength) {
1661
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
1641
+ this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
1662
1642
  return 0;
1663
1643
  }
1664
1644
  if (lastCp === CharCodes.SEMI) {
@@ -1679,7 +1659,6 @@ var EntityDecoder = class {
1679
1659
  * Parses a named entity.
1680
1660
  *
1681
1661
  * Equivalent to the `Named character reference state` in the HTML spec.
1682
- *
1683
1662
  * @param input The string containing the entity (or a continuation of the entity).
1684
1663
  * @param offset The current offset.
1685
1664
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -1752,24 +1731,20 @@ var EntityDecoder = class {
1752
1731
  }
1753
1732
  /**
1754
1733
  * Emit a named entity that was not terminated with a semicolon.
1755
- *
1756
1734
  * @returns The number of characters consumed.
1757
1735
  */
1758
1736
  emitNotTerminatedNamedEntity() {
1759
- var _a3;
1760
1737
  const { result, decodeTree } = this;
1761
1738
  const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
1762
1739
  this.emitNamedEntityData(result, valueLength, this.consumed);
1763
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();
1740
+ this.errors?.missingSemicolonAfterCharacterReference();
1764
1741
  return this.consumed;
1765
1742
  }
1766
1743
  /**
1767
1744
  * Emit a named entity.
1768
- *
1769
1745
  * @param result The index of the entity in the decode tree.
1770
1746
  * @param valueLength The number of bytes in the entity.
1771
1747
  * @param consumed The number of characters consumed.
1772
- *
1773
1748
  * @returns The number of characters consumed.
1774
1749
  */
1775
1750
  emitNamedEntityData(result, valueLength, consumed) {
@@ -1784,11 +1759,9 @@ var EntityDecoder = class {
1784
1759
  * Signal to the parser that the end of the input was reached.
1785
1760
  *
1786
1761
  * Remaining data will be emitted and relevant errors will be produced.
1787
- *
1788
1762
  * @returns The number of characters consumed.
1789
1763
  */
1790
1764
  end() {
1791
- var _a3;
1792
1765
  switch (this.state) {
1793
1766
  case EntityDecoderState.NamedEntity: {
1794
1767
  return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
@@ -1801,7 +1774,7 @@ var EntityDecoder = class {
1801
1774
  return this.emitNumericEntity(0, 3);
1802
1775
  }
1803
1776
  case EntityDecoderState.NumericStart: {
1804
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
1777
+ this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
1805
1778
  return 0;
1806
1779
  }
1807
1780
  case EntityDecoderState.EntityStart: {
@@ -1839,36 +1812,36 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
1839
1812
  return -1;
1840
1813
  }
1841
1814
 
1842
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Tokenizer.js
1815
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Tokenizer.js
1843
1816
  var CharCodes2;
1844
- (function(CharCodes4) {
1845
- CharCodes4[CharCodes4["Tab"] = 9] = "Tab";
1846
- CharCodes4[CharCodes4["NewLine"] = 10] = "NewLine";
1847
- CharCodes4[CharCodes4["FormFeed"] = 12] = "FormFeed";
1848
- CharCodes4[CharCodes4["CarriageReturn"] = 13] = "CarriageReturn";
1849
- CharCodes4[CharCodes4["Space"] = 32] = "Space";
1850
- CharCodes4[CharCodes4["ExclamationMark"] = 33] = "ExclamationMark";
1851
- CharCodes4[CharCodes4["Number"] = 35] = "Number";
1852
- CharCodes4[CharCodes4["Amp"] = 38] = "Amp";
1853
- CharCodes4[CharCodes4["SingleQuote"] = 39] = "SingleQuote";
1854
- CharCodes4[CharCodes4["DoubleQuote"] = 34] = "DoubleQuote";
1855
- CharCodes4[CharCodes4["Dash"] = 45] = "Dash";
1856
- CharCodes4[CharCodes4["Slash"] = 47] = "Slash";
1857
- CharCodes4[CharCodes4["Zero"] = 48] = "Zero";
1858
- CharCodes4[CharCodes4["Nine"] = 57] = "Nine";
1859
- CharCodes4[CharCodes4["Semi"] = 59] = "Semi";
1860
- CharCodes4[CharCodes4["Lt"] = 60] = "Lt";
1861
- CharCodes4[CharCodes4["Eq"] = 61] = "Eq";
1862
- CharCodes4[CharCodes4["Gt"] = 62] = "Gt";
1863
- CharCodes4[CharCodes4["Questionmark"] = 63] = "Questionmark";
1864
- CharCodes4[CharCodes4["UpperA"] = 65] = "UpperA";
1865
- CharCodes4[CharCodes4["LowerA"] = 97] = "LowerA";
1866
- CharCodes4[CharCodes4["UpperF"] = 70] = "UpperF";
1867
- CharCodes4[CharCodes4["LowerF"] = 102] = "LowerF";
1868
- CharCodes4[CharCodes4["UpperZ"] = 90] = "UpperZ";
1869
- CharCodes4[CharCodes4["LowerZ"] = 122] = "LowerZ";
1870
- CharCodes4[CharCodes4["LowerX"] = 120] = "LowerX";
1871
- CharCodes4[CharCodes4["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
1817
+ (function(CharCodes3) {
1818
+ CharCodes3[CharCodes3["Tab"] = 9] = "Tab";
1819
+ CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine";
1820
+ CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed";
1821
+ CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn";
1822
+ CharCodes3[CharCodes3["Space"] = 32] = "Space";
1823
+ CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark";
1824
+ CharCodes3[CharCodes3["Number"] = 35] = "Number";
1825
+ CharCodes3[CharCodes3["Amp"] = 38] = "Amp";
1826
+ CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote";
1827
+ CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote";
1828
+ CharCodes3[CharCodes3["Dash"] = 45] = "Dash";
1829
+ CharCodes3[CharCodes3["Slash"] = 47] = "Slash";
1830
+ CharCodes3[CharCodes3["Zero"] = 48] = "Zero";
1831
+ CharCodes3[CharCodes3["Nine"] = 57] = "Nine";
1832
+ CharCodes3[CharCodes3["Semi"] = 59] = "Semi";
1833
+ CharCodes3[CharCodes3["Lt"] = 60] = "Lt";
1834
+ CharCodes3[CharCodes3["Eq"] = 61] = "Eq";
1835
+ CharCodes3[CharCodes3["Gt"] = 62] = "Gt";
1836
+ CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark";
1837
+ CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA";
1838
+ CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA";
1839
+ CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF";
1840
+ CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF";
1841
+ CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ";
1842
+ CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ";
1843
+ CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX";
1844
+ CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
1872
1845
  })(CharCodes2 || (CharCodes2 = {}));
1873
1846
  var State;
1874
1847
  (function(State2) {
@@ -1891,12 +1864,12 @@ var State;
1891
1864
  State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction";
1892
1865
  State2[State2["BeforeComment"] = 18] = "BeforeComment";
1893
1866
  State2[State2["CDATASequence"] = 19] = "CDATASequence";
1894
- State2[State2["InSpecialComment"] = 20] = "InSpecialComment";
1895
- State2[State2["InCommentLike"] = 21] = "InCommentLike";
1896
- State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS";
1897
- State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT";
1898
- State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence";
1899
- State2[State2["InSpecialTag"] = 25] = "InSpecialTag";
1867
+ State2[State2["DeclarationSequence"] = 20] = "DeclarationSequence";
1868
+ State2[State2["InSpecialComment"] = 21] = "InSpecialComment";
1869
+ State2[State2["InCommentLike"] = 22] = "InCommentLike";
1870
+ State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence";
1871
+ State2[State2["InSpecialTag"] = 24] = "InSpecialTag";
1872
+ State2[State2["InPlainText"] = 25] = "InPlainText";
1900
1873
  State2[State2["InEntity"] = 26] = "InEntity";
1901
1874
  })(State || (State = {}));
1902
1875
  function isWhitespace(c) {
@@ -1916,12 +1889,56 @@ var QuoteType;
1916
1889
  QuoteType2[QuoteType2["Double"] = 3] = "Double";
1917
1890
  })(QuoteType || (QuoteType = {}));
1918
1891
  var Sequences = {
1892
+ Empty: new Uint8Array(0),
1919
1893
  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
1920
1894
  // CDATA[
1921
1895
  CdataEnd: new Uint8Array([93, 93, 62]),
1922
1896
  // ]]>
1923
- CommentEnd: new Uint8Array([45, 45, 62]),
1924
- // `-->`
1897
+ CommentEnd: new Uint8Array([45, 45, 33, 62]),
1898
+ // `--!>`
1899
+ Doctype: new Uint8Array([100, 111, 99, 116, 121, 112, 101]),
1900
+ // `doctype`
1901
+ IframeEnd: new Uint8Array([60, 47, 105, 102, 114, 97, 109, 101]),
1902
+ // `</iframe`
1903
+ NoembedEnd: new Uint8Array([
1904
+ 60,
1905
+ 47,
1906
+ 110,
1907
+ 111,
1908
+ 101,
1909
+ 109,
1910
+ 98,
1911
+ 101,
1912
+ 100
1913
+ ]),
1914
+ // `</noembed`
1915
+ NoframesEnd: new Uint8Array([
1916
+ 60,
1917
+ 47,
1918
+ 110,
1919
+ 111,
1920
+ 102,
1921
+ 114,
1922
+ 97,
1923
+ 109,
1924
+ 101,
1925
+ 115
1926
+ ]),
1927
+ // `</noframes`
1928
+ Plaintext: new Uint8Array([
1929
+ 60,
1930
+ 47,
1931
+ 112,
1932
+ 108,
1933
+ 97,
1934
+ 105,
1935
+ 110,
1936
+ 116,
1937
+ 101,
1938
+ 120,
1939
+ 116
1940
+ ]),
1941
+ // `</plaintext`
1925
1942
  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
1926
1943
  // `</script`
1927
1944
  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
@@ -1944,22 +1961,43 @@ var Sequences = {
1944
1961
  XmpEnd: new Uint8Array([60, 47, 120, 109, 112])
1945
1962
  // `</xmp`
1946
1963
  };
1964
+ var specialStartSequences = /* @__PURE__ */ new Map([
1965
+ [Sequences.IframeEnd[2], Sequences.IframeEnd],
1966
+ [Sequences.NoembedEnd[2], Sequences.NoembedEnd],
1967
+ [Sequences.Plaintext[2], Sequences.Plaintext],
1968
+ [Sequences.ScriptEnd[2], Sequences.ScriptEnd],
1969
+ [Sequences.TitleEnd[2], Sequences.TitleEnd],
1970
+ [Sequences.XmpEnd[2], Sequences.XmpEnd]
1971
+ ]);
1947
1972
  var Tokenizer = class {
1948
- constructor({ xmlMode = false, decodeEntities = true }, cbs) {
1973
+ cbs;
1974
+ /** The current state the tokenizer is in. */
1975
+ state = State.Text;
1976
+ /** The read buffer. */
1977
+ buffer = "";
1978
+ /** The beginning of the section that is currently being read. */
1979
+ sectionStart = 0;
1980
+ /** The index within the buffer that we are currently looking at. */
1981
+ index = 0;
1982
+ /** The start of the last entity. */
1983
+ entityStart = 0;
1984
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
1985
+ baseState = State.Text;
1986
+ /** For special parsing behavior inside of script and style tags. */
1987
+ isSpecial = false;
1988
+ /** Indicates whether the tokenizer has been paused. */
1989
+ running = true;
1990
+ /** The offset of the current buffer. */
1991
+ offset = 0;
1992
+ xmlMode;
1993
+ decodeEntities;
1994
+ recognizeSelfClosing;
1995
+ entityDecoder;
1996
+ constructor({ xmlMode = false, decodeEntities = true, recognizeSelfClosing = xmlMode }, cbs) {
1949
1997
  this.cbs = cbs;
1950
- this.state = State.Text;
1951
- this.buffer = "";
1952
- this.sectionStart = 0;
1953
- this.index = 0;
1954
- this.entityStart = 0;
1955
- this.baseState = State.Text;
1956
- this.isSpecial = false;
1957
- this.running = true;
1958
- this.offset = 0;
1959
- this.currentSequence = void 0;
1960
- this.sequenceIndex = 0;
1961
1998
  this.xmlMode = xmlMode;
1962
1999
  this.decodeEntities = decodeEntities;
2000
+ this.recognizeSelfClosing = recognizeSelfClosing;
1963
2001
  this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
1964
2002
  }
1965
2003
  reset() {
@@ -1968,7 +2006,9 @@ var Tokenizer = class {
1968
2006
  this.sectionStart = 0;
1969
2007
  this.index = 0;
1970
2008
  this.baseState = State.Text;
1971
- this.currentSequence = void 0;
2009
+ this.isSpecial = false;
2010
+ this.currentSequence = Sequences.Empty;
2011
+ this.sequenceIndex = 0;
1972
2012
  this.running = true;
1973
2013
  this.offset = 0;
1974
2014
  }
@@ -2001,56 +2041,63 @@ var Tokenizer = class {
2001
2041
  this.startEntity();
2002
2042
  }
2003
2043
  }
2004
- stateSpecialStartSequence(c) {
2005
- const isEnd = this.sequenceIndex === this.currentSequence.length;
2006
- const isMatch = isEnd ? (
2007
- // If we are at the end of the sequence, make sure the tag name has ended
2008
- isEndOfTagSection(c)
2009
- ) : (
2010
- // Otherwise, do a case-insensitive comparison
2011
- (c | 32) === this.currentSequence[this.sequenceIndex]
2012
- );
2013
- if (!isMatch) {
2014
- this.isSpecial = false;
2015
- } else if (!isEnd) {
2016
- this.sequenceIndex++;
2017
- return;
2044
+ currentSequence = Sequences.Empty;
2045
+ sequenceIndex = 0;
2046
+ enterTagBody() {
2047
+ if (this.currentSequence === Sequences.Plaintext) {
2048
+ this.currentSequence = Sequences.Empty;
2049
+ this.state = State.InPlainText;
2050
+ } else if (this.isSpecial) {
2051
+ this.state = State.InSpecialTag;
2052
+ this.sequenceIndex = 0;
2053
+ } else {
2054
+ this.state = State.Text;
2018
2055
  }
2019
- this.sequenceIndex = 0;
2020
- this.state = State.InTagName;
2021
- this.stateInTagName(c);
2022
2056
  }
2023
- /** Look for an end tag. For <title> tags, also decode entities. */
2024
- stateInSpecialTag(c) {
2025
- if (this.sequenceIndex === this.currentSequence.length) {
2026
- if (c === CharCodes2.Gt || isWhitespace(c)) {
2027
- const endOfText = this.index - this.currentSequence.length;
2028
- if (this.sectionStart < endOfText) {
2029
- const actualIndex = this.index;
2030
- this.index = endOfText;
2031
- this.cbs.ontext(this.sectionStart, endOfText);
2032
- this.index = actualIndex;
2033
- }
2034
- this.isSpecial = false;
2035
- this.sectionStart = endOfText + 2;
2036
- this.stateInClosingTagName(c);
2057
+ /**
2058
+ * Match the opening tag name against an HTML text-only tag sequence.
2059
+ *
2060
+ * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`,
2061
+ * `noembed`/`noframes`), so we may switch to an alternate sequence at the
2062
+ * first distinguishing byte. On a successful full match we fall back to
2063
+ * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or
2064
+ * plaintext mode based on `currentSequence` / `isSpecial`.
2065
+ * @param c Current character code point.
2066
+ */
2067
+ stateSpecialStartSequence(c) {
2068
+ const lower = c | 32;
2069
+ if (this.sequenceIndex < this.currentSequence.length) {
2070
+ if (lower === this.currentSequence[this.sequenceIndex]) {
2071
+ this.sequenceIndex++;
2037
2072
  return;
2038
2073
  }
2039
- this.sequenceIndex = 0;
2040
- }
2041
- if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2042
- this.sequenceIndex += 1;
2043
- } else if (this.sequenceIndex === 0) {
2044
- if (this.currentSequence === Sequences.TitleEnd) {
2045
- if (this.decodeEntities && c === CharCodes2.Amp) {
2046
- this.startEntity();
2074
+ if (this.sequenceIndex === 3) {
2075
+ if (this.currentSequence === Sequences.ScriptEnd && lower === Sequences.StyleEnd[3]) {
2076
+ this.currentSequence = Sequences.StyleEnd;
2077
+ this.sequenceIndex = 4;
2078
+ return;
2047
2079
  }
2048
- } else if (this.fastForwardTo(CharCodes2.Lt)) {
2049
- this.sequenceIndex = 1;
2080
+ if (this.currentSequence === Sequences.TitleEnd && lower === Sequences.TextareaEnd[3]) {
2081
+ this.currentSequence = Sequences.TextareaEnd;
2082
+ this.sequenceIndex = 4;
2083
+ return;
2084
+ }
2085
+ } else if (this.sequenceIndex === 4 && this.currentSequence === Sequences.NoembedEnd && lower === Sequences.NoframesEnd[4]) {
2086
+ this.currentSequence = Sequences.NoframesEnd;
2087
+ this.sequenceIndex = 5;
2088
+ return;
2050
2089
  }
2051
- } else {
2052
- this.sequenceIndex = Number(c === CharCodes2.Lt);
2090
+ } else if (isEndOfTagSection(c)) {
2091
+ this.sequenceIndex = 0;
2092
+ this.state = State.InTagName;
2093
+ this.stateInTagName(c);
2094
+ return;
2053
2095
  }
2096
+ this.isSpecial = false;
2097
+ this.currentSequence = Sequences.Empty;
2098
+ this.sequenceIndex = 0;
2099
+ this.state = State.InTagName;
2100
+ this.stateInTagName(c);
2054
2101
  }
2055
2102
  stateCDATASequence(c) {
2056
2103
  if (c === Sequences.Cdata[this.sequenceIndex]) {
@@ -2062,14 +2109,19 @@ var Tokenizer = class {
2062
2109
  }
2063
2110
  } else {
2064
2111
  this.sequenceIndex = 0;
2065
- this.state = State.InDeclaration;
2066
- this.stateInDeclaration(c);
2112
+ if (this.xmlMode) {
2113
+ this.state = State.InDeclaration;
2114
+ this.stateInDeclaration(c);
2115
+ } else {
2116
+ this.state = State.InSpecialComment;
2117
+ this.stateInSpecialComment(c);
2118
+ }
2067
2119
  }
2068
2120
  }
2069
2121
  /**
2070
2122
  * When we wait for one specific character, we can speed things up
2071
2123
  * by skipping through the buffer until we find it.
2072
- *
2124
+ * @param c Current character code point.
2073
2125
  * @returns Whether the character was found.
2074
2126
  */
2075
2127
  fastForwardTo(c) {
@@ -2081,6 +2133,16 @@ var Tokenizer = class {
2081
2133
  this.index = this.buffer.length + this.offset - 1;
2082
2134
  return false;
2083
2135
  }
2136
+ /**
2137
+ * Emit a comment token and return to the text state.
2138
+ * @param offset Number of characters in the end sequence that have already been matched.
2139
+ */
2140
+ emitComment(offset) {
2141
+ this.cbs.oncomment(this.sectionStart, this.index, offset);
2142
+ this.sequenceIndex = 0;
2143
+ this.sectionStart = this.index + 1;
2144
+ this.state = State.Text;
2145
+ }
2084
2146
  /**
2085
2147
  * Comments and CDATA end with `-->` and `]]>`.
2086
2148
  *
@@ -2088,14 +2150,26 @@ var Tokenizer = class {
2088
2150
  * - Their end sequences have a distinct character they start with.
2089
2151
  * - That character is then repeated, so we have to check multiple repeats.
2090
2152
  * - All characters but the start character of the sequence can be skipped.
2153
+ * @param c Current character code point.
2091
2154
  */
2092
2155
  stateInCommentLike(c) {
2093
- if (c === this.currentSequence[this.sequenceIndex]) {
2156
+ if (!this.xmlMode && this.currentSequence === Sequences.CommentEnd && this.sequenceIndex <= 1 && /*
2157
+ * We're still at the very start of the comment: the only
2158
+ * characters consumed since `<!--` are the dashes that
2159
+ * advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`).
2160
+ */
2161
+ this.index === this.sectionStart + this.sequenceIndex && c === CharCodes2.Gt) {
2162
+ this.emitComment(this.sequenceIndex);
2163
+ } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === 2 && c === CharCodes2.Gt) {
2164
+ this.emitComment(2);
2165
+ } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === this.currentSequence.length - 1 && c !== CharCodes2.Gt) {
2166
+ this.sequenceIndex = Number(c === CharCodes2.Dash);
2167
+ } else if (c === this.currentSequence[this.sequenceIndex]) {
2094
2168
  if (++this.sequenceIndex === this.currentSequence.length) {
2095
2169
  if (this.currentSequence === Sequences.CdataEnd) {
2096
2170
  this.cbs.oncdata(this.sectionStart, this.index, 2);
2097
2171
  } else {
2098
- this.cbs.oncomment(this.sectionStart, this.index, 2);
2172
+ this.cbs.oncomment(this.sectionStart, this.index, 3);
2099
2173
  }
2100
2174
  this.sequenceIndex = 0;
2101
2175
  this.sectionStart = this.index + 1;
@@ -2114,34 +2188,72 @@ var Tokenizer = class {
2114
2188
  *
2115
2189
  * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
2116
2190
  * We allow anything that wouldn't end the tag.
2191
+ * @param c Current character code point.
2117
2192
  */
2118
2193
  isTagStartChar(c) {
2119
2194
  return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
2120
2195
  }
2121
- startSpecial(sequence, offset) {
2122
- this.isSpecial = true;
2123
- this.currentSequence = sequence;
2124
- this.sequenceIndex = offset;
2125
- this.state = State.SpecialStartSequence;
2196
+ /**
2197
+ * Scan raw-text / RCDATA content for the matching end tag.
2198
+ *
2199
+ * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline.
2200
+ * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`.
2201
+ * @param c Current character code point.
2202
+ */
2203
+ stateInSpecialTag(c) {
2204
+ if (this.sequenceIndex === this.currentSequence.length) {
2205
+ if (isEndOfTagSection(c)) {
2206
+ const endOfText = this.index - this.currentSequence.length;
2207
+ if (this.sectionStart < endOfText) {
2208
+ const actualIndex = this.index;
2209
+ this.index = endOfText;
2210
+ this.cbs.ontext(this.sectionStart, endOfText);
2211
+ this.index = actualIndex;
2212
+ }
2213
+ this.isSpecial = false;
2214
+ this.sectionStart = endOfText + 2;
2215
+ this.stateInClosingTagName(c);
2216
+ return;
2217
+ }
2218
+ this.sequenceIndex = 0;
2219
+ }
2220
+ if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2221
+ this.sequenceIndex += 1;
2222
+ } else if (this.sequenceIndex === 0) {
2223
+ if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd) {
2224
+ if (this.decodeEntities && c === CharCodes2.Amp) {
2225
+ this.startEntity();
2226
+ }
2227
+ } else if (this.fastForwardTo(CharCodes2.Lt)) {
2228
+ this.sequenceIndex = 1;
2229
+ }
2230
+ } else {
2231
+ this.sequenceIndex = Number(c === CharCodes2.Lt);
2232
+ }
2126
2233
  }
2127
2234
  stateBeforeTagName(c) {
2128
2235
  if (c === CharCodes2.ExclamationMark) {
2129
2236
  this.state = State.BeforeDeclaration;
2130
2237
  this.sectionStart = this.index + 1;
2131
2238
  } else if (c === CharCodes2.Questionmark) {
2132
- this.state = State.InProcessingInstruction;
2133
- this.sectionStart = this.index + 1;
2239
+ if (this.xmlMode) {
2240
+ this.state = State.InProcessingInstruction;
2241
+ this.sequenceIndex = 0;
2242
+ this.sectionStart = this.index + 1;
2243
+ } else {
2244
+ this.state = State.InSpecialComment;
2245
+ this.sectionStart = this.index;
2246
+ }
2134
2247
  } else if (this.isTagStartChar(c)) {
2135
- const lower = c | 32;
2136
2248
  this.sectionStart = this.index;
2137
- if (this.xmlMode) {
2249
+ const special = this.xmlMode || this.cbs.isInForeignContext?.() ? void 0 : specialStartSequences.get(c | 32);
2250
+ if (special === void 0) {
2138
2251
  this.state = State.InTagName;
2139
- } else if (lower === Sequences.ScriptEnd[2]) {
2140
- this.state = State.BeforeSpecialS;
2141
- } else if (lower === Sequences.TitleEnd[2] || lower === Sequences.XmpEnd[2]) {
2142
- this.state = State.BeforeSpecialT;
2143
2252
  } else {
2144
- this.state = State.InTagName;
2253
+ this.isSpecial = true;
2254
+ this.currentSequence = special;
2255
+ this.sequenceIndex = 3;
2256
+ this.state = State.SpecialStartSequence;
2145
2257
  }
2146
2258
  } else if (c === CharCodes2.Slash) {
2147
2259
  this.state = State.BeforeClosingTagName;
@@ -2160,15 +2272,23 @@ var Tokenizer = class {
2160
2272
  }
2161
2273
  stateBeforeClosingTagName(c) {
2162
2274
  if (isWhitespace(c)) {
2275
+ if (this.xmlMode) {
2276
+ } else {
2277
+ this.state = State.InSpecialComment;
2278
+ this.sectionStart = this.index;
2279
+ }
2163
2280
  } else if (c === CharCodes2.Gt) {
2164
2281
  this.state = State.Text;
2282
+ if (!this.xmlMode) {
2283
+ this.sectionStart = this.index + 1;
2284
+ }
2165
2285
  } else {
2166
2286
  this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment;
2167
2287
  this.sectionStart = this.index;
2168
2288
  }
2169
2289
  }
2170
2290
  stateInClosingTagName(c) {
2171
- if (c === CharCodes2.Gt || isWhitespace(c)) {
2291
+ if (isEndOfTagSection(c)) {
2172
2292
  this.cbs.onclosetag(this.sectionStart, this.index);
2173
2293
  this.sectionStart = -1;
2174
2294
  this.state = State.AfterClosingTagName;
@@ -2184,12 +2304,7 @@ var Tokenizer = class {
2184
2304
  stateBeforeAttributeName(c) {
2185
2305
  if (c === CharCodes2.Gt) {
2186
2306
  this.cbs.onopentagend(this.index);
2187
- if (this.isSpecial) {
2188
- this.state = State.InSpecialTag;
2189
- this.sequenceIndex = 0;
2190
- } else {
2191
- this.state = State.Text;
2192
- }
2307
+ this.enterTagBody();
2193
2308
  this.sectionStart = this.index + 1;
2194
2309
  } else if (c === CharCodes2.Slash) {
2195
2310
  this.state = State.InSelfClosingTag;
@@ -2198,12 +2313,26 @@ var Tokenizer = class {
2198
2313
  this.sectionStart = this.index;
2199
2314
  }
2200
2315
  }
2316
+ /**
2317
+ * Handle `/` before `>` in an opening tag.
2318
+ *
2319
+ * In HTML mode, text-only tags ignore the self-closing flag and still enter
2320
+ * their raw-text/RCDATA/plaintext state unless self-closing tags are being
2321
+ * recognized. In XML mode, or for ordinary tags, the tokenizer returns to
2322
+ * regular text parsing after emitting the self-closing callback.
2323
+ * @param c Current character code point.
2324
+ */
2201
2325
  stateInSelfClosingTag(c) {
2202
2326
  if (c === CharCodes2.Gt) {
2203
2327
  this.cbs.onselfclosingtag(this.index);
2204
- this.state = State.Text;
2205
2328
  this.sectionStart = this.index + 1;
2329
+ if (!this.recognizeSelfClosing) {
2330
+ this.enterTagBody();
2331
+ return;
2332
+ }
2333
+ this.state = State.Text;
2206
2334
  this.isSpecial = false;
2335
+ this.currentSequence = Sequences.Empty;
2207
2336
  } else if (!isWhitespace(c)) {
2208
2337
  this.state = State.BeforeAttributeName;
2209
2338
  this.stateBeforeAttributeName(c);
@@ -2271,12 +2400,54 @@ var Tokenizer = class {
2271
2400
  this.startEntity();
2272
2401
  }
2273
2402
  }
2403
+ /**
2404
+ * Distinguish between CDATA, declarations, HTML comments, and HTML bogus
2405
+ * comments after `<!`.
2406
+ *
2407
+ * In HTML mode, only real comments and doctypes stay on declaration paths;
2408
+ * everything else becomes a bogus comment terminated by the next `>`.
2409
+ * @param c Current character code point.
2410
+ */
2274
2411
  stateBeforeDeclaration(c) {
2275
2412
  if (c === CharCodes2.OpeningSquareBracket) {
2276
2413
  this.state = State.CDATASequence;
2277
2414
  this.sequenceIndex = 0;
2278
- } else {
2415
+ } else if (this.xmlMode) {
2279
2416
  this.state = c === CharCodes2.Dash ? State.BeforeComment : State.InDeclaration;
2417
+ } else if ((c | 32) === Sequences.Doctype[0]) {
2418
+ this.state = State.DeclarationSequence;
2419
+ this.currentSequence = Sequences.Doctype;
2420
+ this.sequenceIndex = 1;
2421
+ } else if (c === CharCodes2.Gt) {
2422
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
2423
+ this.state = State.Text;
2424
+ this.sectionStart = this.index + 1;
2425
+ } else if (c === CharCodes2.Dash) {
2426
+ this.state = State.BeforeComment;
2427
+ } else {
2428
+ this.state = State.InSpecialComment;
2429
+ }
2430
+ }
2431
+ /**
2432
+ * Continue matching `doctype` after `<!d`.
2433
+ *
2434
+ * A full `doctype` match stays on the declaration path; any other name falls
2435
+ * back to an HTML bogus comment, which matches browser behavior for
2436
+ * non-doctype `<!...>` constructs.
2437
+ * @param c Current character code point.
2438
+ */
2439
+ stateDeclarationSequence(c) {
2440
+ if (this.sequenceIndex === this.currentSequence.length) {
2441
+ this.state = State.InDeclaration;
2442
+ this.stateInDeclaration(c);
2443
+ } else if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
2444
+ this.sequenceIndex += 1;
2445
+ } else if (c === CharCodes2.Gt) {
2446
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
2447
+ this.state = State.Text;
2448
+ this.sectionStart = this.index + 1;
2449
+ } else {
2450
+ this.state = State.InSpecialComment;
2280
2451
  }
2281
2452
  }
2282
2453
  stateInDeclaration(c) {
@@ -2286,21 +2457,39 @@ var Tokenizer = class {
2286
2457
  this.sectionStart = this.index + 1;
2287
2458
  }
2288
2459
  }
2460
+ /**
2461
+ * XML processing instructions (`<?...?>`).
2462
+ *
2463
+ * In HTML mode `<?` is routed to `InSpecialComment` instead, so this
2464
+ * state is only reachable in XML mode.
2465
+ * @param c Current character code point.
2466
+ */
2289
2467
  stateInProcessingInstruction(c) {
2290
- if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
2291
- this.cbs.onprocessinginstruction(this.sectionStart, this.index);
2468
+ if (c === CharCodes2.Questionmark) {
2469
+ this.sequenceIndex = 1;
2470
+ } else if (c === CharCodes2.Gt && this.sequenceIndex === 1) {
2471
+ this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);
2472
+ this.sequenceIndex = 0;
2292
2473
  this.state = State.Text;
2293
2474
  this.sectionStart = this.index + 1;
2475
+ } else {
2476
+ this.sequenceIndex = Number(this.fastForwardTo(CharCodes2.Questionmark));
2294
2477
  }
2295
2478
  }
2296
2479
  stateBeforeComment(c) {
2297
2480
  if (c === CharCodes2.Dash) {
2298
2481
  this.state = State.InCommentLike;
2299
2482
  this.currentSequence = Sequences.CommentEnd;
2300
- this.sequenceIndex = 2;
2483
+ this.sequenceIndex = 0;
2301
2484
  this.sectionStart = this.index + 1;
2302
- } else {
2485
+ } else if (this.xmlMode) {
2303
2486
  this.state = State.InDeclaration;
2487
+ } else if (c === CharCodes2.Gt) {
2488
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
2489
+ this.state = State.Text;
2490
+ this.sectionStart = this.index + 1;
2491
+ } else {
2492
+ this.state = State.InSpecialComment;
2304
2493
  }
2305
2494
  }
2306
2495
  stateInSpecialComment(c) {
@@ -2310,38 +2499,6 @@ var Tokenizer = class {
2310
2499
  this.sectionStart = this.index + 1;
2311
2500
  }
2312
2501
  }
2313
- stateBeforeSpecialS(c) {
2314
- const lower = c | 32;
2315
- if (lower === Sequences.ScriptEnd[3]) {
2316
- this.startSpecial(Sequences.ScriptEnd, 4);
2317
- } else if (lower === Sequences.StyleEnd[3]) {
2318
- this.startSpecial(Sequences.StyleEnd, 4);
2319
- } else {
2320
- this.state = State.InTagName;
2321
- this.stateInTagName(c);
2322
- }
2323
- }
2324
- stateBeforeSpecialT(c) {
2325
- const lower = c | 32;
2326
- switch (lower) {
2327
- case Sequences.TitleEnd[3]: {
2328
- this.startSpecial(Sequences.TitleEnd, 4);
2329
- break;
2330
- }
2331
- case Sequences.TextareaEnd[3]: {
2332
- this.startSpecial(Sequences.TextareaEnd, 4);
2333
- break;
2334
- }
2335
- case Sequences.XmpEnd[3]: {
2336
- this.startSpecial(Sequences.XmpEnd, 4);
2337
- break;
2338
- }
2339
- default: {
2340
- this.state = State.InTagName;
2341
- this.stateInTagName(c);
2342
- }
2343
- }
2344
- }
2345
2502
  startEntity() {
2346
2503
  this.baseState = this.state;
2347
2504
  this.state = State.InEntity;
@@ -2370,7 +2527,7 @@ var Tokenizer = class {
2370
2527
  */
2371
2528
  cleanup() {
2372
2529
  if (this.running && this.sectionStart !== this.index) {
2373
- if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
2530
+ if (this.state === State.Text || this.state === State.InPlainText || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
2374
2531
  this.cbs.ontext(this.sectionStart, this.index);
2375
2532
  this.sectionStart = this.index;
2376
2533
  } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) {
@@ -2395,6 +2552,10 @@ var Tokenizer = class {
2395
2552
  this.stateText(c);
2396
2553
  break;
2397
2554
  }
2555
+ case State.InPlainText: {
2556
+ this.index = this.buffer.length + this.offset - 1;
2557
+ break;
2558
+ }
2398
2559
  case State.SpecialStartSequence: {
2399
2560
  this.stateSpecialStartSequence(c);
2400
2561
  break;
@@ -2407,6 +2568,10 @@ var Tokenizer = class {
2407
2568
  this.stateCDATASequence(c);
2408
2569
  break;
2409
2570
  }
2571
+ case State.DeclarationSequence: {
2572
+ this.stateDeclarationSequence(c);
2573
+ break;
2574
+ }
2410
2575
  case State.InAttributeValueDq: {
2411
2576
  this.stateInAttributeValueDoubleQuotes(c);
2412
2577
  break;
@@ -2459,14 +2624,6 @@ var Tokenizer = class {
2459
2624
  this.stateAfterClosingTagName(c);
2460
2625
  break;
2461
2626
  }
2462
- case State.BeforeSpecialS: {
2463
- this.stateBeforeSpecialS(c);
2464
- break;
2465
- }
2466
- case State.BeforeSpecialT: {
2467
- this.stateBeforeSpecialT(c);
2468
- break;
2469
- }
2470
2627
  case State.InAttributeValueNq: {
2471
2628
  this.stateInAttributeValueNoQuotes(c);
2472
2629
  break;
@@ -2508,43 +2665,110 @@ var Tokenizer = class {
2508
2665
  this.handleTrailingData();
2509
2666
  this.cbs.onend();
2510
2667
  }
2511
- /** Handle any trailing data. */
2512
- handleTrailingData() {
2513
- const endIndex = this.buffer.length + this.offset;
2514
- if (this.sectionStart >= endIndex) {
2515
- return;
2668
+ handleTrailingCommentLikeData(endIndex) {
2669
+ if (this.state !== State.InCommentLike) {
2670
+ return false;
2516
2671
  }
2517
- if (this.state === State.InCommentLike) {
2518
- if (this.currentSequence === Sequences.CdataEnd) {
2519
- this.cbs.oncdata(this.sectionStart, endIndex, 0);
2672
+ if (this.currentSequence === Sequences.CdataEnd) {
2673
+ if (this.xmlMode) {
2674
+ if (this.sectionStart < endIndex) {
2675
+ this.cbs.oncdata(this.sectionStart, endIndex, 0);
2676
+ }
2520
2677
  } else {
2521
- this.cbs.oncomment(this.sectionStart, endIndex, 0);
2678
+ const cdataStart = this.sectionStart - Sequences.Cdata.length - 1;
2679
+ this.cbs.oncomment(cdataStart, endIndex, 0);
2522
2680
  }
2523
- } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) {
2524
2681
  } else {
2525
- this.cbs.ontext(this.sectionStart, endIndex);
2682
+ const offset = this.xmlMode ? 0 : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1);
2683
+ this.cbs.oncomment(this.sectionStart, endIndex, offset);
2526
2684
  }
2685
+ return true;
2527
2686
  }
2528
- emitCodePoint(cp, consumed) {
2529
- if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
2530
- if (this.sectionStart < this.entityStart) {
2531
- this.cbs.onattribdata(this.sectionStart, this.entityStart);
2532
- }
2533
- this.sectionStart = this.entityStart + consumed;
2534
- this.index = this.sectionStart - 1;
2535
- this.cbs.onattribentity(cp);
2536
- } else {
2537
- if (this.sectionStart < this.entityStart) {
2538
- this.cbs.ontext(this.sectionStart, this.entityStart);
2687
+ handleTrailingMarkupDeclaration(endIndex) {
2688
+ if (this.xmlMode) {
2689
+ switch (this.state) {
2690
+ case State.InSpecialComment:
2691
+ case State.BeforeComment:
2692
+ case State.CDATASequence:
2693
+ case State.DeclarationSequence:
2694
+ case State.InDeclaration: {
2695
+ this.cbs.ontext(this.sectionStart, endIndex);
2696
+ return true;
2697
+ }
2698
+ default: {
2699
+ return false;
2700
+ }
2701
+ }
2702
+ }
2703
+ switch (this.state) {
2704
+ case State.BeforeDeclaration:
2705
+ case State.InSpecialComment:
2706
+ case State.BeforeComment:
2707
+ case State.CDATASequence: {
2708
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
2709
+ return true;
2710
+ }
2711
+ case State.DeclarationSequence: {
2712
+ if (this.sequenceIndex !== Sequences.Doctype.length) {
2713
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
2714
+ }
2715
+ return true;
2716
+ }
2717
+ case State.InDeclaration: {
2718
+ return true;
2719
+ }
2720
+ default: {
2721
+ return false;
2722
+ }
2723
+ }
2724
+ }
2725
+ /** Handle any trailing data. */
2726
+ handleTrailingData() {
2727
+ const endIndex = this.buffer.length + this.offset;
2728
+ if (this.handleTrailingCommentLikeData(endIndex) || this.handleTrailingMarkupDeclaration(endIndex)) {
2729
+ return;
2730
+ }
2731
+ if (this.sectionStart >= endIndex) {
2732
+ return;
2733
+ }
2734
+ switch (this.state) {
2735
+ case State.InTagName:
2736
+ case State.BeforeAttributeName:
2737
+ case State.BeforeAttributeValue:
2738
+ case State.AfterAttributeName:
2739
+ case State.InAttributeName:
2740
+ case State.InAttributeValueSq:
2741
+ case State.InAttributeValueDq:
2742
+ case State.InAttributeValueNq:
2743
+ case State.InClosingTagName: {
2744
+ break;
2745
+ }
2746
+ default: {
2747
+ this.cbs.ontext(this.sectionStart, endIndex);
2539
2748
  }
2540
- this.sectionStart = this.entityStart + consumed;
2541
- this.index = this.sectionStart - 1;
2542
- this.cbs.ontextentity(cp, this.sectionStart);
2749
+ }
2750
+ }
2751
+ emitCodePoint(cp, consumed) {
2752
+ if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
2753
+ if (this.sectionStart < this.entityStart) {
2754
+ this.cbs.onattribdata(this.sectionStart, this.entityStart);
2755
+ }
2756
+ this.sectionStart = this.entityStart + consumed;
2757
+ this.index = this.sectionStart - 1;
2758
+ this.cbs.onattribentity(cp);
2759
+ } else {
2760
+ if (this.sectionStart < this.entityStart) {
2761
+ this.cbs.ontext(this.sectionStart, this.entityStart);
2762
+ }
2763
+ this.sectionStart = this.entityStart + consumed;
2764
+ this.index = this.sectionStart - 1;
2765
+ this.cbs.ontextentity(cp, this.sectionStart);
2543
2766
  }
2544
2767
  }
2545
2768
  };
2546
2769
 
2547
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Parser.js
2770
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/Parser.js
2771
+ var { fromCodePoint } = String;
2548
2772
  var formTags = /* @__PURE__ */ new Set([
2549
2773
  "input",
2550
2774
  "option",
@@ -2555,6 +2779,7 @@ var formTags = /* @__PURE__ */ new Set([
2555
2779
  "textarea"
2556
2780
  ]);
2557
2781
  var pTag = /* @__PURE__ */ new Set(["p"]);
2782
+ var headingTags = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6", "p"]);
2558
2783
  var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]);
2559
2784
  var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]);
2560
2785
  var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]);
@@ -2563,14 +2788,15 @@ var openImpliesClose = /* @__PURE__ */ new Map([
2563
2788
  ["th", /* @__PURE__ */ new Set(["th"])],
2564
2789
  ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])],
2565
2790
  ["body", /* @__PURE__ */ new Set(["head", "link", "script"])],
2791
+ ["a", /* @__PURE__ */ new Set(["a"])],
2566
2792
  ["li", /* @__PURE__ */ new Set(["li"])],
2567
2793
  ["p", pTag],
2568
- ["h1", pTag],
2569
- ["h2", pTag],
2570
- ["h3", pTag],
2571
- ["h4", pTag],
2572
- ["h5", pTag],
2573
- ["h6", pTag],
2794
+ ["h1", headingTags],
2795
+ ["h2", headingTags],
2796
+ ["h3", headingTags],
2797
+ ["h4", headingTags],
2798
+ ["h5", headingTags],
2799
+ ["h6", headingTags],
2574
2800
  ["select", formTags],
2575
2801
  ["input", formTags],
2576
2802
  ["output", formTags],
@@ -2607,6 +2833,7 @@ var openImpliesClose = /* @__PURE__ */ new Map([
2607
2833
  ["tbody", tableSectionTags],
2608
2834
  ["tfoot", tableSectionTags]
2609
2835
  ]);
2836
+ var DOCUMENT_TYPE = "doctype";
2610
2837
  var voidElements = /* @__PURE__ */ new Set([
2611
2838
  "area",
2612
2839
  "base",
@@ -2636,98 +2863,201 @@ var htmlIntegrationElements = /* @__PURE__ */ new Set([
2636
2863
  "ms",
2637
2864
  "mtext",
2638
2865
  "annotation-xml",
2639
- "foreignobject",
2866
+ "foreignObject",
2640
2867
  "desc",
2641
2868
  "title"
2642
2869
  ]);
2870
+ var svgTagNameAdjustments = /* @__PURE__ */ new Map([
2871
+ ["altglyph", "altGlyph"],
2872
+ ["altglyphdef", "altGlyphDef"],
2873
+ ["altglyphitem", "altGlyphItem"],
2874
+ ["animatecolor", "animateColor"],
2875
+ ["animatemotion", "animateMotion"],
2876
+ ["animatetransform", "animateTransform"],
2877
+ ["clippath", "clipPath"],
2878
+ ["feblend", "feBlend"],
2879
+ ["fecolormatrix", "feColorMatrix"],
2880
+ ["fecomponenttransfer", "feComponentTransfer"],
2881
+ ["fecomposite", "feComposite"],
2882
+ ["feconvolvematrix", "feConvolveMatrix"],
2883
+ ["fediffuselighting", "feDiffuseLighting"],
2884
+ ["fedisplacementmap", "feDisplacementMap"],
2885
+ ["fedistantlight", "feDistantLight"],
2886
+ ["fedropshadow", "feDropShadow"],
2887
+ ["feflood", "feFlood"],
2888
+ ["fefunca", "feFuncA"],
2889
+ ["fefuncb", "feFuncB"],
2890
+ ["fefuncg", "feFuncG"],
2891
+ ["fefuncr", "feFuncR"],
2892
+ ["fegaussianblur", "feGaussianBlur"],
2893
+ ["feimage", "feImage"],
2894
+ ["femerge", "feMerge"],
2895
+ ["femergenode", "feMergeNode"],
2896
+ ["femorphology", "feMorphology"],
2897
+ ["feoffset", "feOffset"],
2898
+ ["fepointlight", "fePointLight"],
2899
+ ["fespecularlighting", "feSpecularLighting"],
2900
+ ["fespotlight", "feSpotLight"],
2901
+ ["fetile", "feTile"],
2902
+ ["feturbulence", "feTurbulence"],
2903
+ ["foreignobject", "foreignObject"],
2904
+ ["glyphref", "glyphRef"],
2905
+ ["lineargradient", "linearGradient"],
2906
+ ["radialgradient", "radialGradient"],
2907
+ ["textpath", "textPath"]
2908
+ ]);
2909
+ var ForeignContext;
2910
+ (function(ForeignContext2) {
2911
+ ForeignContext2[ForeignContext2["None"] = 0] = "None";
2912
+ ForeignContext2[ForeignContext2["Svg"] = 1] = "Svg";
2913
+ ForeignContext2[ForeignContext2["MathML"] = 2] = "MathML";
2914
+ })(ForeignContext || (ForeignContext = {}));
2643
2915
  var reNameEnd = /\s|\//;
2644
2916
  var Parser = class {
2917
+ options;
2918
+ /** The start index of the last event. */
2919
+ startIndex = 0;
2920
+ /** The end index of the last event. */
2921
+ endIndex = 0;
2922
+ /**
2923
+ * Store the start index of the current open tag,
2924
+ * so we can update the start index for attributes.
2925
+ */
2926
+ openTagStart = 0;
2927
+ tagname = "";
2928
+ attribname = "";
2929
+ attribvalue = "";
2930
+ attribs = null;
2931
+ stack = [];
2932
+ foreignContext;
2933
+ cbs;
2934
+ lowerCaseTagNames;
2935
+ lowerCaseAttributeNames;
2936
+ recognizeSelfClosing;
2937
+ /** We are parsing HTML. Inverse of the `xmlMode` option. */
2938
+ htmlMode;
2939
+ tokenizer;
2940
+ buffers = [];
2941
+ bufferOffset = 0;
2942
+ /** The index of the last written buffer. Used when resuming after a `pause()`. */
2943
+ writeIndex = 0;
2944
+ /** Indicates whether the parser has finished running / `.end` has been called. */
2945
+ ended = false;
2645
2946
  constructor(cbs, options = {}) {
2646
- var _a3, _b, _c, _d, _e, _f;
2647
2947
  this.options = options;
2648
- this.startIndex = 0;
2649
- this.endIndex = 0;
2650
- this.openTagStart = 0;
2651
- this.tagname = "";
2652
- this.attribname = "";
2653
- this.attribvalue = "";
2654
- this.attribs = null;
2655
- this.stack = [];
2656
- this.buffers = [];
2657
- this.bufferOffset = 0;
2658
- this.writeIndex = 0;
2659
- this.ended = false;
2660
- this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
2948
+ this.cbs = cbs ?? {};
2661
2949
  this.htmlMode = !this.options.xmlMode;
2662
- this.lowerCaseTagNames = (_a3 = options.lowerCaseTags) !== null && _a3 !== void 0 ? _a3 : this.htmlMode;
2663
- this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;
2664
- this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;
2665
- this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);
2666
- this.foreignContext = [!this.htmlMode];
2667
- (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);
2950
+ this.lowerCaseTagNames = options.lowerCaseTags ?? this.htmlMode;
2951
+ this.lowerCaseAttributeNames = options.lowerCaseAttributeNames ?? this.htmlMode;
2952
+ this.recognizeSelfClosing = options.recognizeSelfClosing ?? !this.htmlMode;
2953
+ this.tokenizer = new (options.Tokenizer ?? Tokenizer)(this.options, this);
2954
+ this.foreignContext = [ForeignContext.None];
2955
+ this.cbs.onparserinit?.(this);
2668
2956
  }
2669
2957
  // Tokenizer event handlers
2670
- /** @internal */
2958
+ /**
2959
+ * @param start Start index for the current parser event.
2960
+ * @param endIndex End index for the current parser event.
2961
+ * @internal
2962
+ */
2671
2963
  ontext(start, endIndex) {
2672
- var _a3, _b;
2673
2964
  const data = this.getSlice(start, endIndex);
2674
2965
  this.endIndex = endIndex - 1;
2675
- (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, data);
2966
+ this.cbs.ontext?.(data);
2676
2967
  this.startIndex = endIndex;
2677
2968
  }
2678
- /** @internal */
2969
+ /**
2970
+ * @param cp Current Unicode code point.
2971
+ * @param endIndex End index for the current parser event.
2972
+ * @internal
2973
+ */
2679
2974
  ontextentity(cp, endIndex) {
2680
- var _a3, _b;
2681
2975
  this.endIndex = endIndex - 1;
2682
- (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, fromCodePoint(cp));
2976
+ this.cbs.ontext?.(fromCodePoint(cp));
2683
2977
  this.startIndex = endIndex;
2684
2978
  }
2979
+ /** @internal */
2980
+ isInForeignContext() {
2981
+ return this.foreignContext[0] !== ForeignContext.None;
2982
+ }
2685
2983
  /**
2686
2984
  * Checks if the current tag is a void element. Override this if you want
2687
2985
  * to specify your own additional void elements.
2986
+ * @param name Name of the pseudo selector.
2688
2987
  */
2689
2988
  isVoidElement(name) {
2690
2989
  return this.htmlMode && voidElements.has(name);
2691
2990
  }
2692
- /** @internal */
2991
+ /**
2992
+ * Read a tag name from the buffer.
2993
+ *
2994
+ * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name
2995
+ * is lowercased and may be adjusted for SVG casing or the `image` → `img`
2996
+ * alias.
2997
+ * @param start Start index of the tag name in the buffer.
2998
+ * @param endIndex End index of the tag name in the buffer.
2999
+ */
3000
+ readTagName(start, endIndex) {
3001
+ const name = this.lowerCaseTagNames ? this.getSlice(start, endIndex).toLowerCase() : this.getSlice(start, endIndex);
3002
+ if (!(this.lowerCaseTagNames && this.htmlMode)) {
3003
+ return name;
3004
+ }
3005
+ if (this.foreignContext[0] === ForeignContext.Svg) {
3006
+ return svgTagNameAdjustments.get(name) ?? name;
3007
+ }
3008
+ if (this.foreignContext.length > 1) {
3009
+ const adjusted = svgTagNameAdjustments.get(name);
3010
+ if (adjusted !== void 0 && this.stack.includes(adjusted)) {
3011
+ return adjusted;
3012
+ }
3013
+ }
3014
+ if (!this.isInForeignContext()) {
3015
+ return name === "image" ? "img" : name;
3016
+ }
3017
+ return name;
3018
+ }
3019
+ /**
3020
+ * @param start Start index for the current parser event.
3021
+ * @param endIndex End index for the current parser event.
3022
+ * @internal
3023
+ */
2693
3024
  onopentagname(start, endIndex) {
2694
3025
  this.endIndex = endIndex;
2695
- let name = this.getSlice(start, endIndex);
2696
- if (this.lowerCaseTagNames) {
2697
- name = name.toLowerCase();
2698
- }
2699
- this.emitOpenTag(name);
3026
+ this.emitOpenTag(this.readTagName(start, endIndex));
2700
3027
  }
2701
3028
  emitOpenTag(name) {
2702
- var _a3, _b, _c, _d;
2703
3029
  this.openTagStart = this.startIndex;
2704
3030
  this.tagname = name;
3031
+ if (this.htmlMode && name === "form" && this.stack.includes("form")) {
3032
+ this.tagname = "";
3033
+ return;
3034
+ }
2705
3035
  const impliesClose = this.htmlMode && openImpliesClose.get(name);
2706
3036
  if (impliesClose) {
2707
3037
  while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
2708
- const element = this.stack.shift();
2709
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, true);
3038
+ this.popElement(true);
2710
3039
  }
2711
3040
  }
2712
3041
  if (!this.isVoidElement(name)) {
2713
3042
  this.stack.unshift(name);
2714
3043
  if (this.htmlMode) {
2715
- if (foreignContextElements.has(name)) {
2716
- this.foreignContext.unshift(true);
3044
+ if (name === "svg") {
3045
+ this.foreignContext.unshift(ForeignContext.Svg);
3046
+ } else if (name === "math") {
3047
+ this.foreignContext.unshift(ForeignContext.MathML);
2717
3048
  } else if (htmlIntegrationElements.has(name)) {
2718
- this.foreignContext.unshift(false);
3049
+ this.foreignContext.unshift(ForeignContext.None);
2719
3050
  }
2720
3051
  }
2721
3052
  }
2722
- (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
3053
+ this.cbs.onopentagname?.(name);
2723
3054
  if (this.cbs.onopentag)
2724
3055
  this.attribs = {};
2725
3056
  }
2726
3057
  endOpenTag(isImplied) {
2727
- var _a3, _b;
2728
3058
  this.startIndex = this.openTagStart;
2729
3059
  if (this.attribs) {
2730
- (_b = (_a3 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a3, this.tagname, this.attribs, isImplied);
3060
+ this.cbs.onopentag?.(this.tagname, this.attribs, isImplied);
2731
3061
  this.attribs = null;
2732
3062
  }
2733
3063
  if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
@@ -2735,80 +3065,107 @@ var Parser = class {
2735
3065
  }
2736
3066
  this.tagname = "";
2737
3067
  }
2738
- /** @internal */
3068
+ /**
3069
+ * @param endIndex End index for the current parser event.
3070
+ * @internal
3071
+ */
2739
3072
  onopentagend(endIndex) {
2740
3073
  this.endIndex = endIndex;
2741
3074
  this.endOpenTag(false);
2742
3075
  this.startIndex = endIndex + 1;
2743
3076
  }
2744
- /** @internal */
3077
+ /**
3078
+ * @param start Start index for the current parser event.
3079
+ * @param endIndex End index for the current parser event.
3080
+ * @internal
3081
+ */
2745
3082
  onclosetag(start, endIndex) {
2746
- var _a3, _b, _c, _d, _e, _f, _g, _h;
2747
3083
  this.endIndex = endIndex;
2748
- let name = this.getSlice(start, endIndex);
2749
- if (this.lowerCaseTagNames) {
2750
- name = name.toLowerCase();
2751
- }
2752
- if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) {
2753
- this.foreignContext.shift();
2754
- }
3084
+ const name = this.readTagName(start, endIndex);
2755
3085
  if (!this.isVoidElement(name)) {
2756
3086
  const pos = this.stack.indexOf(name);
2757
3087
  if (pos !== -1) {
2758
- for (let index = 0; index <= pos; index++) {
2759
- const element = this.stack.shift();
2760
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, index !== pos);
3088
+ for (let index = 0; index < pos; index++) {
3089
+ this.popElement(true);
2761
3090
  }
3091
+ this.popElement(false);
2762
3092
  } else if (this.htmlMode && name === "p") {
2763
3093
  this.emitOpenTag("p");
2764
3094
  this.closeCurrentTag(true);
2765
3095
  }
2766
3096
  } else if (this.htmlMode && name === "br") {
2767
- (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br");
2768
- (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true);
2769
- (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false);
3097
+ this.cbs.onopentagname?.("br");
3098
+ this.cbs.onopentag?.("br", {}, true);
3099
+ this.cbs.onclosetag?.("br", false);
2770
3100
  }
2771
3101
  this.startIndex = endIndex + 1;
2772
3102
  }
2773
- /** @internal */
3103
+ /**
3104
+ * @param endIndex End index for the current parser event.
3105
+ * @internal
3106
+ */
2774
3107
  onselfclosingtag(endIndex) {
2775
3108
  this.endIndex = endIndex;
2776
- if (this.recognizeSelfClosing || this.foreignContext[0]) {
3109
+ if (this.recognizeSelfClosing || this.isInForeignContext()) {
2777
3110
  this.closeCurrentTag(false);
2778
3111
  this.startIndex = endIndex + 1;
2779
3112
  } else {
2780
3113
  this.onopentagend(endIndex);
2781
3114
  }
2782
3115
  }
3116
+ /**
3117
+ * Pop the top element off the stack, emit a close event, and maintain
3118
+ * the foreign context stack.
3119
+ * @param implied Whether this close is implied (not from an explicit end tag).
3120
+ */
3121
+ popElement(implied) {
3122
+ const element = this.stack.shift();
3123
+ if (this.htmlMode && (foreignContextElements.has(element) || htmlIntegrationElements.has(element))) {
3124
+ this.foreignContext.shift();
3125
+ }
3126
+ this.cbs.onclosetag?.(element, implied);
3127
+ }
2783
3128
  closeCurrentTag(isOpenImplied) {
2784
- var _a3, _b;
2785
3129
  const name = this.tagname;
2786
3130
  this.endOpenTag(isOpenImplied);
2787
3131
  if (this.stack[0] === name) {
2788
- (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, name, !isOpenImplied);
2789
- this.stack.shift();
3132
+ this.popElement(!isOpenImplied);
2790
3133
  }
2791
3134
  }
2792
- /** @internal */
3135
+ /**
3136
+ * @param start Start index for the current parser event.
3137
+ * @param endIndex End index for the current parser event.
3138
+ * @internal
3139
+ */
2793
3140
  onattribname(start, endIndex) {
2794
3141
  this.startIndex = start;
2795
3142
  const name = this.getSlice(start, endIndex);
2796
3143
  this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name;
2797
3144
  }
2798
- /** @internal */
3145
+ /**
3146
+ * @param start Start index for the current parser event.
3147
+ * @param endIndex End index for the current parser event.
3148
+ * @internal
3149
+ */
2799
3150
  onattribdata(start, endIndex) {
2800
3151
  this.attribvalue += this.getSlice(start, endIndex);
2801
3152
  }
2802
- /** @internal */
3153
+ /**
3154
+ * @param cp Current Unicode code point.
3155
+ * @internal
3156
+ */
2803
3157
  onattribentity(cp) {
2804
3158
  this.attribvalue += fromCodePoint(cp);
2805
3159
  }
2806
- /** @internal */
3160
+ /**
3161
+ * @param quote Quote type used for the current attribute.
3162
+ * @param endIndex End index for the current parser event.
3163
+ * @internal
3164
+ */
2807
3165
  onattribend(quote2, endIndex) {
2808
- var _a3, _b;
2809
3166
  this.endIndex = endIndex;
2810
- (_b = (_a3 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a3, this.attribname, this.attribvalue, quote2 === QuoteType.Double ? '"' : quote2 === QuoteType.Single ? "'" : quote2 === QuoteType.NoValue ? void 0 : null);
2811
- if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
3167
+ this.cbs.onattribute?.(this.attribname, this.attribvalue, quote2 === QuoteType.Double ? '"' : quote2 === QuoteType.Single ? "'" : quote2 === QuoteType.NoValue ? void 0 : null);
3168
+ if (this.attribs && !Object.hasOwn(this.attribs, this.attribname)) {
2812
3169
  this.attribs[this.attribname] = this.attribvalue;
2813
3170
  }
2814
3171
  this.attribvalue = "";
@@ -2821,17 +3178,25 @@ var Parser = class {
2821
3178
  }
2822
3179
  return name;
2823
3180
  }
2824
- /** @internal */
3181
+ /**
3182
+ * @param start Start index for the current parser event.
3183
+ * @param endIndex End index for the current parser event.
3184
+ * @internal
3185
+ */
2825
3186
  ondeclaration(start, endIndex) {
2826
3187
  this.endIndex = endIndex;
2827
3188
  const value = this.getSlice(start, endIndex);
2828
3189
  if (this.cbs.onprocessinginstruction) {
2829
- const name = this.getInstructionName(value);
3190
+ const name = this.htmlMode ? this.lowerCaseTagNames ? DOCUMENT_TYPE : value.slice(0, DOCUMENT_TYPE.length) : this.getInstructionName(value);
2830
3191
  this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
2831
3192
  }
2832
3193
  this.startIndex = endIndex + 1;
2833
3194
  }
2834
- /** @internal */
3195
+ /**
3196
+ * @param start Start index for the current parser event.
3197
+ * @param endIndex End index for the current parser event.
3198
+ * @internal
3199
+ */
2835
3200
  onprocessinginstruction(start, endIndex) {
2836
3201
  this.endIndex = endIndex;
2837
3202
  const value = this.getSlice(start, endIndex);
@@ -2841,57 +3206,66 @@ var Parser = class {
2841
3206
  }
2842
3207
  this.startIndex = endIndex + 1;
2843
3208
  }
2844
- /** @internal */
3209
+ /**
3210
+ * @param start Start index for the current parser event.
3211
+ * @param endIndex End index for the current parser event.
3212
+ * @param offset Offset applied when computing parser indices.
3213
+ * @internal
3214
+ */
2845
3215
  oncomment(start, endIndex, offset) {
2846
- var _a3, _b, _c, _d;
2847
3216
  this.endIndex = endIndex;
2848
- (_b = (_a3 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a3, this.getSlice(start, endIndex - offset));
2849
- (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
3217
+ this.cbs.oncomment?.(this.getSlice(start, endIndex - offset));
3218
+ this.cbs.oncommentend?.();
2850
3219
  this.startIndex = endIndex + 1;
2851
3220
  }
2852
- /** @internal */
3221
+ /**
3222
+ * @param start Start index for the current parser event.
3223
+ * @param endIndex End index for the current parser event.
3224
+ * @param offset Offset applied when computing parser indices.
3225
+ * @internal
3226
+ */
2853
3227
  oncdata(start, endIndex, offset) {
2854
- var _a3, _b, _c, _d, _e, _f, _g, _h, _j, _k;
2855
3228
  this.endIndex = endIndex;
2856
3229
  const value = this.getSlice(start, endIndex - offset);
2857
3230
  if (!this.htmlMode || this.options.recognizeCDATA) {
2858
- (_b = (_a3 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a3);
2859
- (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
2860
- (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
3231
+ this.cbs.oncdatastart?.();
3232
+ this.cbs.ontext?.(value);
3233
+ this.cbs.oncdataend?.();
3234
+ } else if (this.isInForeignContext()) {
3235
+ this.cbs.ontext?.(value);
2861
3236
  } else {
2862
- (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);
2863
- (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
3237
+ this.cbs.oncomment?.(`[CDATA[${value}]]`);
3238
+ this.cbs.oncommentend?.();
2864
3239
  }
2865
3240
  this.startIndex = endIndex + 1;
2866
3241
  }
2867
3242
  /** @internal */
2868
3243
  onend() {
2869
- var _a3, _b;
2870
3244
  if (this.cbs.onclosetag) {
2871
3245
  this.endIndex = this.startIndex;
2872
3246
  for (let index = 0; index < this.stack.length; index++) {
2873
3247
  this.cbs.onclosetag(this.stack[index], true);
2874
3248
  }
2875
3249
  }
2876
- (_b = (_a3 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a3);
3250
+ this.cbs.onend?.();
2877
3251
  }
2878
3252
  /**
2879
3253
  * Resets the parser to a blank state, ready to parse a new HTML document
2880
3254
  */
2881
3255
  reset() {
2882
- var _a3, _b, _c, _d;
2883
- (_b = (_a3 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a3);
3256
+ this.cbs.onreset?.();
2884
3257
  this.tokenizer.reset();
2885
3258
  this.tagname = "";
2886
3259
  this.attribname = "";
3260
+ this.attribvalue = "";
2887
3261
  this.attribs = null;
2888
3262
  this.stack.length = 0;
2889
3263
  this.startIndex = 0;
2890
3264
  this.endIndex = 0;
2891
- (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
3265
+ this.cbs.onparserinit?.(this);
2892
3266
  this.buffers.length = 0;
2893
3267
  this.foreignContext.length = 0;
2894
- this.foreignContext.unshift(!this.htmlMode);
3268
+ this.foreignContext.unshift(ForeignContext.None);
2895
3269
  this.bufferOffset = 0;
2896
3270
  this.writeIndex = 0;
2897
3271
  this.ended = false;
@@ -2899,7 +3273,6 @@ var Parser = class {
2899
3273
  /**
2900
3274
  * Resets the parser, then parses a complete document and
2901
3275
  * pushes it to the handler.
2902
- *
2903
3276
  * @param data Document to parse.
2904
3277
  */
2905
3278
  parseComplete(data) {
@@ -2907,6 +3280,9 @@ var Parser = class {
2907
3280
  this.end(data);
2908
3281
  }
2909
3282
  getSlice(start, end) {
3283
+ if (start === end) {
3284
+ return "";
3285
+ }
2910
3286
  while (start - this.bufferOffset >= this.buffers[0].length) {
2911
3287
  this.shiftBuffer();
2912
3288
  }
@@ -2924,13 +3300,11 @@ var Parser = class {
2924
3300
  }
2925
3301
  /**
2926
3302
  * Parses a chunk of data and calls the corresponding callbacks.
2927
- *
2928
3303
  * @param chunk Chunk to parse.
2929
3304
  */
2930
3305
  write(chunk) {
2931
- var _a3, _b;
2932
3306
  if (this.ended) {
2933
- (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".write() after done!"));
3307
+ this.cbs.onerror?.(new Error(".write() after done!"));
2934
3308
  return;
2935
3309
  }
2936
3310
  this.buffers.push(chunk);
@@ -2941,13 +3315,11 @@ var Parser = class {
2941
3315
  }
2942
3316
  /**
2943
3317
  * Parses the end of the buffer and clears the stack, calls onend.
2944
- *
2945
3318
  * @param chunk Optional final chunk to parse.
2946
3319
  */
2947
3320
  end(chunk) {
2948
- var _a3, _b;
2949
3321
  if (this.ended) {
2950
- (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".end() after done!"));
3322
+ this.cbs.onerror?.(new Error(".end() after done!"));
2951
3323
  return;
2952
3324
  }
2953
3325
  if (chunk)
@@ -2972,27 +3344,9 @@ var Parser = class {
2972
3344
  if (this.ended)
2973
3345
  this.tokenizer.end();
2974
3346
  }
2975
- /**
2976
- * Alias of `write`, for backwards compatibility.
2977
- *
2978
- * @param chunk Chunk to parse.
2979
- * @deprecated
2980
- */
2981
- parseChunk(chunk) {
2982
- this.write(chunk);
2983
- }
2984
- /**
2985
- * Alias of `end`, for backwards compatibility.
2986
- *
2987
- * @param chunk Optional final chunk to parse.
2988
- * @deprecated
2989
- */
2990
- done(chunk) {
2991
- this.end(chunk);
2992
- }
2993
3347
  };
2994
3348
 
2995
- // node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js
3349
+ // node_modules/.pnpm/domelementtype@3.0.0/node_modules/domelementtype/dist/index.js
2996
3350
  var ElementType;
2997
3351
  (function(ElementType2) {
2998
3352
  ElementType2["Root"] = "root";
@@ -3005,8 +3359,8 @@ var ElementType;
3005
3359
  ElementType2["CDATA"] = "cdata";
3006
3360
  ElementType2["Doctype"] = "doctype";
3007
3361
  })(ElementType || (ElementType = {}));
3008
- function isTag(elem) {
3009
- return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
3362
+ function isTag(element) {
3363
+ return element.type === ElementType.Tag || element.type === ElementType.Script || element.type === ElementType.Style;
3010
3364
  }
3011
3365
  var Root = ElementType.Root;
3012
3366
  var Text = ElementType.Text;
@@ -3018,15 +3372,18 @@ var Tag = ElementType.Tag;
3018
3372
  var CDATA = ElementType.CDATA;
3019
3373
  var Doctype = ElementType.Doctype;
3020
3374
 
3021
- // node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js
3375
+ // node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/node.js
3022
3376
  var Node = class {
3023
- constructor() {
3024
- this.parent = null;
3025
- this.prev = null;
3026
- this.next = null;
3027
- this.startIndex = null;
3028
- this.endIndex = null;
3029
- }
3377
+ /** Parent of the node */
3378
+ parent = null;
3379
+ /** Previous sibling */
3380
+ prev = null;
3381
+ /** Next sibling */
3382
+ next = null;
3383
+ /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
3384
+ startIndex = null;
3385
+ /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
3386
+ endIndex = null;
3030
3387
  // Read-write aliases for properties
3031
3388
  /**
3032
3389
  * Same as {@link parent}.
@@ -3045,8 +3402,8 @@ var Node = class {
3045
3402
  get previousSibling() {
3046
3403
  return this.prev;
3047
3404
  }
3048
- set previousSibling(prev) {
3049
- this.prev = prev;
3405
+ set previousSibling(previous) {
3406
+ this.prev = previous;
3050
3407
  }
3051
3408
  /**
3052
3409
  * Same as {@link next}.
@@ -3060,7 +3417,6 @@ var Node = class {
3060
3417
  }
3061
3418
  /**
3062
3419
  * Clone this node, and optionally its children.
3063
- *
3064
3420
  * @param recursive Clone child nodes as well.
3065
3421
  * @returns A clone of the node.
3066
3422
  */
@@ -3069,6 +3425,7 @@ var Node = class {
3069
3425
  }
3070
3426
  };
3071
3427
  var DataNode = class extends Node {
3428
+ data;
3072
3429
  /**
3073
3430
  * @param data The content of the data node
3074
3431
  */
@@ -3088,34 +3445,36 @@ var DataNode = class extends Node {
3088
3445
  }
3089
3446
  };
3090
3447
  var Text2 = class extends DataNode {
3091
- constructor() {
3092
- super(...arguments);
3093
- this.type = ElementType.Text;
3094
- }
3448
+ type = ElementType.Text;
3095
3449
  get nodeType() {
3096
3450
  return 3;
3097
3451
  }
3098
3452
  };
3099
3453
  var Comment2 = class extends DataNode {
3100
- constructor() {
3101
- super(...arguments);
3102
- this.type = ElementType.Comment;
3103
- }
3454
+ type = ElementType.Comment;
3104
3455
  get nodeType() {
3105
3456
  return 8;
3106
3457
  }
3107
3458
  };
3108
3459
  var ProcessingInstruction = class extends DataNode {
3460
+ type = ElementType.Directive;
3461
+ name;
3109
3462
  constructor(name, data) {
3110
3463
  super(data);
3111
3464
  this.name = name;
3112
- this.type = ElementType.Directive;
3113
3465
  }
3114
3466
  get nodeType() {
3115
3467
  return 1;
3116
3468
  }
3469
+ /** If this is a doctype, the document type name (parse5 only). */
3470
+ "x-name";
3471
+ /** If this is a doctype, the document type public identifier (parse5 only). */
3472
+ "x-publicId";
3473
+ /** If this is a doctype, the document type system identifier (parse5 only). */
3474
+ "x-systemId";
3117
3475
  };
3118
3476
  var NodeWithChildren = class extends Node {
3477
+ children;
3119
3478
  /**
3120
3479
  * @param children Children of the node. Only certain node types can have children.
3121
3480
  */
@@ -3126,8 +3485,7 @@ var NodeWithChildren = class extends Node {
3126
3485
  // Aliases
3127
3486
  /** First child of the node. */
3128
3487
  get firstChild() {
3129
- var _a3;
3130
- return (_a3 = this.children[0]) !== null && _a3 !== void 0 ? _a3 : null;
3488
+ return this.children[0] ?? null;
3131
3489
  }
3132
3490
  /** Last child of the node. */
3133
3491
  get lastChild() {
@@ -3145,28 +3503,26 @@ var NodeWithChildren = class extends Node {
3145
3503
  }
3146
3504
  };
3147
3505
  var CDATA2 = class extends NodeWithChildren {
3148
- constructor() {
3149
- super(...arguments);
3150
- this.type = ElementType.CDATA;
3151
- }
3506
+ type = ElementType.CDATA;
3152
3507
  get nodeType() {
3153
3508
  return 4;
3154
3509
  }
3155
3510
  };
3156
3511
  var Document = class extends NodeWithChildren {
3157
- constructor() {
3158
- super(...arguments);
3159
- this.type = ElementType.Root;
3160
- }
3512
+ type = ElementType.Root;
3161
3513
  get nodeType() {
3162
3514
  return 9;
3163
3515
  }
3164
3516
  };
3165
3517
  var Element = class extends NodeWithChildren {
3518
+ name;
3519
+ attribs;
3520
+ type;
3166
3521
  /**
3167
3522
  * @param name Name of the tag, eg. `div`, `span`.
3168
3523
  * @param attribs Object mapping attribute names to attribute values.
3169
3524
  * @param children Children of the node.
3525
+ * @param type Node type used for the new node instance.
3170
3526
  */
3171
3527
  constructor(name, attribs, children = [], type = name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag) {
3172
3528
  super(children);
@@ -3189,16 +3545,19 @@ var Element = class extends NodeWithChildren {
3189
3545
  this.name = name;
3190
3546
  }
3191
3547
  get attributes() {
3192
- return Object.keys(this.attribs).map((name) => {
3193
- var _a3, _b;
3194
- return {
3195
- name,
3196
- value: this.attribs[name],
3197
- namespace: (_a3 = this["x-attribsNamespace"]) === null || _a3 === void 0 ? void 0 : _a3[name],
3198
- prefix: (_b = this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name]
3199
- };
3200
- });
3201
- }
3548
+ return Object.keys(this.attribs).map((name) => ({
3549
+ name,
3550
+ value: this.attribs[name],
3551
+ namespace: this["x-attribsNamespace"]?.[name],
3552
+ prefix: this["x-attribsPrefix"]?.[name]
3553
+ }));
3554
+ }
3555
+ /** Element namespace (parse5 only). */
3556
+ namespace;
3557
+ /** Element attribute namespaces (parse5 only). */
3558
+ "x-attribsNamespace";
3559
+ /** Element attribute namespace-related prefixes (parse5 only). */
3560
+ "x-attribsPrefix";
3202
3561
  };
3203
3562
  function isTag2(node) {
3204
3563
  return isTag(node);
@@ -3227,7 +3586,9 @@ function cloneNode(node, recursive = false) {
3227
3586
  } else if (isTag2(node)) {
3228
3587
  const children = recursive ? cloneChildren(node.children) : [];
3229
3588
  const clone = new Element(node.name, { ...node.attribs }, children);
3230
- children.forEach((child) => child.parent = clone);
3589
+ for (const child of children) {
3590
+ child.parent = clone;
3591
+ }
3231
3592
  if (node.namespace != null) {
3232
3593
  clone.namespace = node.namespace;
3233
3594
  }
@@ -3241,12 +3602,16 @@ function cloneNode(node, recursive = false) {
3241
3602
  } else if (isCDATA(node)) {
3242
3603
  const children = recursive ? cloneChildren(node.children) : [];
3243
3604
  const clone = new CDATA2(children);
3244
- children.forEach((child) => child.parent = clone);
3605
+ for (const child of children) {
3606
+ child.parent = clone;
3607
+ }
3245
3608
  result = clone;
3246
3609
  } else if (isDocument(node)) {
3247
3610
  const children = recursive ? cloneChildren(node.children) : [];
3248
3611
  const clone = new Document(children);
3249
- children.forEach((child) => child.parent = clone);
3612
+ for (const child of children) {
3613
+ child.parent = clone;
3614
+ }
3250
3615
  if (node["x-mode"]) {
3251
3616
  clone["x-mode"] = node["x-mode"];
3252
3617
  }
@@ -3271,43 +3636,55 @@ function cloneNode(node, recursive = false) {
3271
3636
  }
3272
3637
  function cloneChildren(childs) {
3273
3638
  const children = childs.map((child) => cloneNode(child, true));
3274
- for (let i = 1; i < children.length; i++) {
3275
- children[i].prev = children[i - 1];
3276
- children[i - 1].next = children[i];
3639
+ for (let index = 1; index < children.length; index++) {
3640
+ children[index].prev = children[index - 1];
3641
+ children[index - 1].next = children[index];
3277
3642
  }
3278
3643
  return children;
3279
3644
  }
3280
3645
 
3281
- // node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js
3282
- var defaultOpts = {
3646
+ // node_modules/.pnpm/domhandler@6.0.1/node_modules/domhandler/dist/index.js
3647
+ var defaultOptions = {
3283
3648
  withStartIndices: false,
3284
3649
  withEndIndices: false,
3285
3650
  xmlMode: false
3286
3651
  };
3287
3652
  var DomHandler = class {
3653
+ /** The elements of the DOM */
3654
+ dom = [];
3655
+ /** The root element for the DOM */
3656
+ root = new Document(this.dom);
3657
+ /** Called once parsing has completed. */
3658
+ callback;
3659
+ /** Settings for the handler. */
3660
+ options;
3661
+ /** Callback whenever a tag is closed. */
3662
+ elementCB;
3663
+ /** Indicated whether parsing has been completed. */
3664
+ done = false;
3665
+ /** Stack of open tags. */
3666
+ tagStack = [this.root];
3667
+ /** A data node that is still being written to. */
3668
+ lastNode = null;
3669
+ /** Reference to the parser instance. Used for location information. */
3670
+ parser = null;
3288
3671
  /**
3289
3672
  * @param callback Called once parsing has completed.
3290
3673
  * @param options Settings for the handler.
3291
3674
  * @param elementCB Callback whenever a tag is closed.
3292
3675
  */
3293
3676
  constructor(callback, options, elementCB) {
3294
- this.dom = [];
3295
- this.root = new Document(this.dom);
3296
- this.done = false;
3297
- this.tagStack = [this.root];
3298
- this.lastNode = null;
3299
- this.parser = null;
3300
3677
  if (typeof options === "function") {
3301
3678
  elementCB = options;
3302
- options = defaultOpts;
3679
+ options = defaultOptions;
3303
3680
  }
3304
3681
  if (typeof callback === "object") {
3305
3682
  options = callback;
3306
3683
  callback = void 0;
3307
3684
  }
3308
- this.callback = callback !== null && callback !== void 0 ? callback : null;
3309
- this.options = options !== null && options !== void 0 ? options : defaultOpts;
3310
- this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
3685
+ this.callback = callback ?? null;
3686
+ this.options = options ?? defaultOptions;
3687
+ this.elementCB = elementCB ?? null;
3311
3688
  }
3312
3689
  onparserinit(parser) {
3313
3690
  this.parser = parser;
@@ -3334,12 +3711,12 @@ var DomHandler = class {
3334
3711
  }
3335
3712
  onclosetag() {
3336
3713
  this.lastNode = null;
3337
- const elem = this.tagStack.pop();
3338
- if (this.options.withEndIndices) {
3339
- elem.endIndex = this.parser.endIndex;
3714
+ const element = this.tagStack.pop();
3715
+ if (this.options.withEndIndices && this.parser) {
3716
+ element.endIndex = this.parser.endIndex;
3340
3717
  }
3341
3718
  if (this.elementCB)
3342
- this.elementCB(elem);
3719
+ this.elementCB(element);
3343
3720
  }
3344
3721
  onopentag(name, attribs) {
3345
3722
  const type = this.options.xmlMode ? ElementType.Tag : void 0;
@@ -3351,7 +3728,7 @@ var DomHandler = class {
3351
3728
  const { lastNode } = this;
3352
3729
  if (lastNode && lastNode.type === ElementType.Text) {
3353
3730
  lastNode.data += data;
3354
- if (this.options.withEndIndices) {
3731
+ if (this.options.withEndIndices && this.parser) {
3355
3732
  lastNode.endIndex = this.parser.endIndex;
3356
3733
  }
3357
3734
  } else {
@@ -3396,10 +3773,10 @@ var DomHandler = class {
3396
3773
  addNode(node) {
3397
3774
  const parent = this.tagStack[this.tagStack.length - 1];
3398
3775
  const previousSibling = parent.children[parent.children.length - 1];
3399
- if (this.options.withStartIndices) {
3776
+ if (this.options.withStartIndices && this.parser) {
3400
3777
  node.startIndex = this.parser.startIndex;
3401
3778
  }
3402
- if (this.options.withEndIndices) {
3779
+ if (this.options.withEndIndices && this.parser) {
3403
3780
  node.endIndex = this.parser.endIndex;
3404
3781
  }
3405
3782
  parent.children.push(node);
@@ -3412,616 +3789,7 @@ var DomHandler = class {
3412
3789
  }
3413
3790
  };
3414
3791
 
3415
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js
3416
- var decode_data_html_default = new Uint16Array(
3417
- // prettier-ignore
3418
- '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0))
3419
- );
3420
-
3421
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js
3422
- var decode_data_xml_default = new Uint16Array(
3423
- // prettier-ignore
3424
- "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0))
3425
- );
3426
-
3427
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js
3428
- var _a2;
3429
- var decodeMap2 = /* @__PURE__ */ new Map([
3430
- [0, 65533],
3431
- // C1 Unicode control character reference replacements
3432
- [128, 8364],
3433
- [130, 8218],
3434
- [131, 402],
3435
- [132, 8222],
3436
- [133, 8230],
3437
- [134, 8224],
3438
- [135, 8225],
3439
- [136, 710],
3440
- [137, 8240],
3441
- [138, 352],
3442
- [139, 8249],
3443
- [140, 338],
3444
- [142, 381],
3445
- [145, 8216],
3446
- [146, 8217],
3447
- [147, 8220],
3448
- [148, 8221],
3449
- [149, 8226],
3450
- [150, 8211],
3451
- [151, 8212],
3452
- [152, 732],
3453
- [153, 8482],
3454
- [154, 353],
3455
- [155, 8250],
3456
- [156, 339],
3457
- [158, 382],
3458
- [159, 376]
3459
- ]);
3460
- var fromCodePoint2 = (
3461
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
3462
- (_a2 = String.fromCodePoint) !== null && _a2 !== void 0 ? _a2 : function(codePoint) {
3463
- let output = "";
3464
- if (codePoint > 65535) {
3465
- codePoint -= 65536;
3466
- output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
3467
- codePoint = 56320 | codePoint & 1023;
3468
- }
3469
- output += String.fromCharCode(codePoint);
3470
- return output;
3471
- }
3472
- );
3473
- function replaceCodePoint2(codePoint) {
3474
- var _a3;
3475
- if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
3476
- return 65533;
3477
- }
3478
- return (_a3 = decodeMap2.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;
3479
- }
3480
-
3481
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js
3482
- var CharCodes3;
3483
- (function(CharCodes4) {
3484
- CharCodes4[CharCodes4["NUM"] = 35] = "NUM";
3485
- CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI";
3486
- CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS";
3487
- CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO";
3488
- CharCodes4[CharCodes4["NINE"] = 57] = "NINE";
3489
- CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A";
3490
- CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F";
3491
- CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X";
3492
- CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z";
3493
- CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A";
3494
- CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F";
3495
- CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z";
3496
- })(CharCodes3 || (CharCodes3 = {}));
3497
- var TO_LOWER_BIT2 = 32;
3498
- var BinTrieFlags2;
3499
- (function(BinTrieFlags3) {
3500
- BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
3501
- BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
3502
- BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
3503
- })(BinTrieFlags2 || (BinTrieFlags2 = {}));
3504
- function isNumber2(code) {
3505
- return code >= CharCodes3.ZERO && code <= CharCodes3.NINE;
3506
- }
3507
- function isHexadecimalCharacter2(code) {
3508
- return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_F || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_F;
3509
- }
3510
- function isAsciiAlphaNumeric2(code) {
3511
- return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_Z || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_Z || isNumber2(code);
3512
- }
3513
- function isEntityInAttributeInvalidEnd2(code) {
3514
- return code === CharCodes3.EQUALS || isAsciiAlphaNumeric2(code);
3515
- }
3516
- var EntityDecoderState2;
3517
- (function(EntityDecoderState3) {
3518
- EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
3519
- EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
3520
- EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
3521
- EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
3522
- EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
3523
- })(EntityDecoderState2 || (EntityDecoderState2 = {}));
3524
- var DecodingMode2;
3525
- (function(DecodingMode3) {
3526
- DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
3527
- DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
3528
- DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
3529
- })(DecodingMode2 || (DecodingMode2 = {}));
3530
- var EntityDecoder2 = class {
3531
- constructor(decodeTree, emitCodePoint, errors) {
3532
- this.decodeTree = decodeTree;
3533
- this.emitCodePoint = emitCodePoint;
3534
- this.errors = errors;
3535
- this.state = EntityDecoderState2.EntityStart;
3536
- this.consumed = 1;
3537
- this.result = 0;
3538
- this.treeIndex = 0;
3539
- this.excess = 1;
3540
- this.decodeMode = DecodingMode2.Strict;
3541
- }
3542
- /** Resets the instance to make it reusable. */
3543
- startEntity(decodeMode) {
3544
- this.decodeMode = decodeMode;
3545
- this.state = EntityDecoderState2.EntityStart;
3546
- this.result = 0;
3547
- this.treeIndex = 0;
3548
- this.excess = 1;
3549
- this.consumed = 1;
3550
- }
3551
- /**
3552
- * Write an entity to the decoder. This can be called multiple times with partial entities.
3553
- * If the entity is incomplete, the decoder will return -1.
3554
- *
3555
- * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
3556
- * entity is incomplete, and resume when the next string is written.
3557
- *
3558
- * @param string The string containing the entity (or a continuation of the entity).
3559
- * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
3560
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3561
- */
3562
- write(str, offset) {
3563
- switch (this.state) {
3564
- case EntityDecoderState2.EntityStart: {
3565
- if (str.charCodeAt(offset) === CharCodes3.NUM) {
3566
- this.state = EntityDecoderState2.NumericStart;
3567
- this.consumed += 1;
3568
- return this.stateNumericStart(str, offset + 1);
3569
- }
3570
- this.state = EntityDecoderState2.NamedEntity;
3571
- return this.stateNamedEntity(str, offset);
3572
- }
3573
- case EntityDecoderState2.NumericStart: {
3574
- return this.stateNumericStart(str, offset);
3575
- }
3576
- case EntityDecoderState2.NumericDecimal: {
3577
- return this.stateNumericDecimal(str, offset);
3578
- }
3579
- case EntityDecoderState2.NumericHex: {
3580
- return this.stateNumericHex(str, offset);
3581
- }
3582
- case EntityDecoderState2.NamedEntity: {
3583
- return this.stateNamedEntity(str, offset);
3584
- }
3585
- }
3586
- }
3587
- /**
3588
- * Switches between the numeric decimal and hexadecimal states.
3589
- *
3590
- * Equivalent to the `Numeric character reference state` in the HTML spec.
3591
- *
3592
- * @param str The string containing the entity (or a continuation of the entity).
3593
- * @param offset The current offset.
3594
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3595
- */
3596
- stateNumericStart(str, offset) {
3597
- if (offset >= str.length) {
3598
- return -1;
3599
- }
3600
- if ((str.charCodeAt(offset) | TO_LOWER_BIT2) === CharCodes3.LOWER_X) {
3601
- this.state = EntityDecoderState2.NumericHex;
3602
- this.consumed += 1;
3603
- return this.stateNumericHex(str, offset + 1);
3604
- }
3605
- this.state = EntityDecoderState2.NumericDecimal;
3606
- return this.stateNumericDecimal(str, offset);
3607
- }
3608
- addToNumericResult(str, start, end, base) {
3609
- if (start !== end) {
3610
- const digitCount = end - start;
3611
- this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);
3612
- this.consumed += digitCount;
3613
- }
3614
- }
3615
- /**
3616
- * Parses a hexadecimal numeric entity.
3617
- *
3618
- * Equivalent to the `Hexademical character reference state` in the HTML spec.
3619
- *
3620
- * @param str The string containing the entity (or a continuation of the entity).
3621
- * @param offset The current offset.
3622
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3623
- */
3624
- stateNumericHex(str, offset) {
3625
- const startIdx = offset;
3626
- while (offset < str.length) {
3627
- const char = str.charCodeAt(offset);
3628
- if (isNumber2(char) || isHexadecimalCharacter2(char)) {
3629
- offset += 1;
3630
- } else {
3631
- this.addToNumericResult(str, startIdx, offset, 16);
3632
- return this.emitNumericEntity(char, 3);
3633
- }
3634
- }
3635
- this.addToNumericResult(str, startIdx, offset, 16);
3636
- return -1;
3637
- }
3638
- /**
3639
- * Parses a decimal numeric entity.
3640
- *
3641
- * Equivalent to the `Decimal character reference state` in the HTML spec.
3642
- *
3643
- * @param str The string containing the entity (or a continuation of the entity).
3644
- * @param offset The current offset.
3645
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3646
- */
3647
- stateNumericDecimal(str, offset) {
3648
- const startIdx = offset;
3649
- while (offset < str.length) {
3650
- const char = str.charCodeAt(offset);
3651
- if (isNumber2(char)) {
3652
- offset += 1;
3653
- } else {
3654
- this.addToNumericResult(str, startIdx, offset, 10);
3655
- return this.emitNumericEntity(char, 2);
3656
- }
3657
- }
3658
- this.addToNumericResult(str, startIdx, offset, 10);
3659
- return -1;
3660
- }
3661
- /**
3662
- * Validate and emit a numeric entity.
3663
- *
3664
- * Implements the logic from the `Hexademical character reference start
3665
- * state` and `Numeric character reference end state` in the HTML spec.
3666
- *
3667
- * @param lastCp The last code point of the entity. Used to see if the
3668
- * entity was terminated with a semicolon.
3669
- * @param expectedLength The minimum number of characters that should be
3670
- * consumed. Used to validate that at least one digit
3671
- * was consumed.
3672
- * @returns The number of characters that were consumed.
3673
- */
3674
- emitNumericEntity(lastCp, expectedLength) {
3675
- var _a3;
3676
- if (this.consumed <= expectedLength) {
3677
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
3678
- return 0;
3679
- }
3680
- if (lastCp === CharCodes3.SEMI) {
3681
- this.consumed += 1;
3682
- } else if (this.decodeMode === DecodingMode2.Strict) {
3683
- return 0;
3684
- }
3685
- this.emitCodePoint(replaceCodePoint2(this.result), this.consumed);
3686
- if (this.errors) {
3687
- if (lastCp !== CharCodes3.SEMI) {
3688
- this.errors.missingSemicolonAfterCharacterReference();
3689
- }
3690
- this.errors.validateNumericCharacterReference(this.result);
3691
- }
3692
- return this.consumed;
3693
- }
3694
- /**
3695
- * Parses a named entity.
3696
- *
3697
- * Equivalent to the `Named character reference state` in the HTML spec.
3698
- *
3699
- * @param str The string containing the entity (or a continuation of the entity).
3700
- * @param offset The current offset.
3701
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
3702
- */
3703
- stateNamedEntity(str, offset) {
3704
- const { decodeTree } = this;
3705
- let current = decodeTree[this.treeIndex];
3706
- let valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14;
3707
- for (; offset < str.length; offset++, this.excess++) {
3708
- const char = str.charCodeAt(offset);
3709
- this.treeIndex = determineBranch2(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
3710
- if (this.treeIndex < 0) {
3711
- return this.result === 0 || // If we are parsing an attribute
3712
- this.decodeMode === DecodingMode2.Attribute && // We shouldn't have consumed any characters after the entity,
3713
- (valueLength === 0 || // And there should be no invalid characters.
3714
- isEntityInAttributeInvalidEnd2(char)) ? 0 : this.emitNotTerminatedNamedEntity();
3715
- }
3716
- current = decodeTree[this.treeIndex];
3717
- valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14;
3718
- if (valueLength !== 0) {
3719
- if (char === CharCodes3.SEMI) {
3720
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
3721
- }
3722
- if (this.decodeMode !== DecodingMode2.Strict) {
3723
- this.result = this.treeIndex;
3724
- this.consumed += this.excess;
3725
- this.excess = 0;
3726
- }
3727
- }
3728
- }
3729
- return -1;
3730
- }
3731
- /**
3732
- * Emit a named entity that was not terminated with a semicolon.
3733
- *
3734
- * @returns The number of characters consumed.
3735
- */
3736
- emitNotTerminatedNamedEntity() {
3737
- var _a3;
3738
- const { result, decodeTree } = this;
3739
- const valueLength = (decodeTree[result] & BinTrieFlags2.VALUE_LENGTH) >> 14;
3740
- this.emitNamedEntityData(result, valueLength, this.consumed);
3741
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();
3742
- return this.consumed;
3743
- }
3744
- /**
3745
- * Emit a named entity.
3746
- *
3747
- * @param result The index of the entity in the decode tree.
3748
- * @param valueLength The number of bytes in the entity.
3749
- * @param consumed The number of characters consumed.
3750
- *
3751
- * @returns The number of characters consumed.
3752
- */
3753
- emitNamedEntityData(result, valueLength, consumed) {
3754
- const { decodeTree } = this;
3755
- this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags2.VALUE_LENGTH : decodeTree[result + 1], consumed);
3756
- if (valueLength === 3) {
3757
- this.emitCodePoint(decodeTree[result + 2], consumed);
3758
- }
3759
- return consumed;
3760
- }
3761
- /**
3762
- * Signal to the parser that the end of the input was reached.
3763
- *
3764
- * Remaining data will be emitted and relevant errors will be produced.
3765
- *
3766
- * @returns The number of characters consumed.
3767
- */
3768
- end() {
3769
- var _a3;
3770
- switch (this.state) {
3771
- case EntityDecoderState2.NamedEntity: {
3772
- return this.result !== 0 && (this.decodeMode !== DecodingMode2.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
3773
- }
3774
- // Otherwise, emit a numeric entity if we have one.
3775
- case EntityDecoderState2.NumericDecimal: {
3776
- return this.emitNumericEntity(0, 2);
3777
- }
3778
- case EntityDecoderState2.NumericHex: {
3779
- return this.emitNumericEntity(0, 3);
3780
- }
3781
- case EntityDecoderState2.NumericStart: {
3782
- (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);
3783
- return 0;
3784
- }
3785
- case EntityDecoderState2.EntityStart: {
3786
- return 0;
3787
- }
3788
- }
3789
- }
3790
- };
3791
- function getDecoder(decodeTree) {
3792
- let ret = "";
3793
- const decoder = new EntityDecoder2(decodeTree, (str) => ret += fromCodePoint2(str));
3794
- return function decodeWithTrie(str, decodeMode) {
3795
- let lastIndex = 0;
3796
- let offset = 0;
3797
- while ((offset = str.indexOf("&", offset)) >= 0) {
3798
- ret += str.slice(lastIndex, offset);
3799
- decoder.startEntity(decodeMode);
3800
- const len = decoder.write(
3801
- str,
3802
- // Skip the "&"
3803
- offset + 1
3804
- );
3805
- if (len < 0) {
3806
- lastIndex = offset + decoder.end();
3807
- break;
3808
- }
3809
- lastIndex = offset + len;
3810
- offset = len === 0 ? lastIndex + 1 : lastIndex;
3811
- }
3812
- const result = ret + str.slice(lastIndex);
3813
- ret = "";
3814
- return result;
3815
- };
3816
- }
3817
- function determineBranch2(decodeTree, current, nodeIdx, char) {
3818
- const branchCount = (current & BinTrieFlags2.BRANCH_LENGTH) >> 7;
3819
- const jumpOffset = current & BinTrieFlags2.JUMP_TABLE;
3820
- if (branchCount === 0) {
3821
- return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
3822
- }
3823
- if (jumpOffset) {
3824
- const value = char - jumpOffset;
3825
- return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
3826
- }
3827
- let lo = nodeIdx;
3828
- let hi = lo + branchCount - 1;
3829
- while (lo <= hi) {
3830
- const mid = lo + hi >>> 1;
3831
- const midVal = decodeTree[mid];
3832
- if (midVal < char) {
3833
- lo = mid + 1;
3834
- } else if (midVal > char) {
3835
- hi = mid - 1;
3836
- } else {
3837
- return decodeTree[mid + branchCount];
3838
- }
3839
- }
3840
- return -1;
3841
- }
3842
- var htmlDecoder = getDecoder(decode_data_html_default);
3843
- var xmlDecoder = getDecoder(decode_data_xml_default);
3844
-
3845
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/encode-html.js
3846
- function restoreDiff(arr) {
3847
- for (let i = 1; i < arr.length; i++) {
3848
- arr[i][0] += arr[i - 1][0] + 1;
3849
- }
3850
- return arr;
3851
- }
3852
- var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
3853
-
3854
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js
3855
- var xmlCodeMap = /* @__PURE__ */ new Map([
3856
- [34, "&quot;"],
3857
- [38, "&amp;"],
3858
- [39, "&apos;"],
3859
- [60, "&lt;"],
3860
- [62, "&gt;"]
3861
- ]);
3862
- var getCodePoint = (
3863
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3864
- String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : (
3865
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
3866
- (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index)
3867
- )
3868
- );
3869
- function getEscaper(regex, map) {
3870
- return function escape2(data) {
3871
- let match;
3872
- let lastIdx = 0;
3873
- let result = "";
3874
- while (match = regex.exec(data)) {
3875
- if (lastIdx !== match.index) {
3876
- result += data.substring(lastIdx, match.index);
3877
- }
3878
- result += map.get(match[0].charCodeAt(0));
3879
- lastIdx = match.index + 1;
3880
- }
3881
- return result + data.substring(lastIdx);
3882
- };
3883
- }
3884
- var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
3885
- var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
3886
- [34, "&quot;"],
3887
- [38, "&amp;"],
3888
- [160, "&nbsp;"]
3889
- ]));
3890
- var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
3891
- [38, "&amp;"],
3892
- [60, "&lt;"],
3893
- [62, "&gt;"],
3894
- [160, "&nbsp;"]
3895
- ]));
3896
-
3897
- // node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js
3898
- var EntityLevel;
3899
- (function(EntityLevel2) {
3900
- EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
3901
- EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
3902
- })(EntityLevel || (EntityLevel = {}));
3903
- var EncodingMode;
3904
- (function(EncodingMode2) {
3905
- EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
3906
- EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
3907
- EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
3908
- EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
3909
- EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
3910
- })(EncodingMode || (EncodingMode = {}));
3911
-
3912
- // node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js
3913
- var elementNames = new Map([
3914
- "altGlyph",
3915
- "altGlyphDef",
3916
- "altGlyphItem",
3917
- "animateColor",
3918
- "animateMotion",
3919
- "animateTransform",
3920
- "clipPath",
3921
- "feBlend",
3922
- "feColorMatrix",
3923
- "feComponentTransfer",
3924
- "feComposite",
3925
- "feConvolveMatrix",
3926
- "feDiffuseLighting",
3927
- "feDisplacementMap",
3928
- "feDistantLight",
3929
- "feDropShadow",
3930
- "feFlood",
3931
- "feFuncA",
3932
- "feFuncB",
3933
- "feFuncG",
3934
- "feFuncR",
3935
- "feGaussianBlur",
3936
- "feImage",
3937
- "feMerge",
3938
- "feMergeNode",
3939
- "feMorphology",
3940
- "feOffset",
3941
- "fePointLight",
3942
- "feSpecularLighting",
3943
- "feSpotLight",
3944
- "feTile",
3945
- "feTurbulence",
3946
- "foreignObject",
3947
- "glyphRef",
3948
- "linearGradient",
3949
- "radialGradient",
3950
- "textPath"
3951
- ].map((val) => [val.toLowerCase(), val]));
3952
- var attributeNames = new Map([
3953
- "definitionURL",
3954
- "attributeName",
3955
- "attributeType",
3956
- "baseFrequency",
3957
- "baseProfile",
3958
- "calcMode",
3959
- "clipPathUnits",
3960
- "diffuseConstant",
3961
- "edgeMode",
3962
- "filterUnits",
3963
- "glyphRef",
3964
- "gradientTransform",
3965
- "gradientUnits",
3966
- "kernelMatrix",
3967
- "kernelUnitLength",
3968
- "keyPoints",
3969
- "keySplines",
3970
- "keyTimes",
3971
- "lengthAdjust",
3972
- "limitingConeAngle",
3973
- "markerHeight",
3974
- "markerUnits",
3975
- "markerWidth",
3976
- "maskContentUnits",
3977
- "maskUnits",
3978
- "numOctaves",
3979
- "pathLength",
3980
- "patternContentUnits",
3981
- "patternTransform",
3982
- "patternUnits",
3983
- "pointsAtX",
3984
- "pointsAtY",
3985
- "pointsAtZ",
3986
- "preserveAlpha",
3987
- "preserveAspectRatio",
3988
- "primitiveUnits",
3989
- "refX",
3990
- "refY",
3991
- "repeatCount",
3992
- "repeatDur",
3993
- "requiredExtensions",
3994
- "requiredFeatures",
3995
- "specularConstant",
3996
- "specularExponent",
3997
- "spreadMethod",
3998
- "startOffset",
3999
- "stdDeviation",
4000
- "stitchTiles",
4001
- "surfaceScale",
4002
- "systemLanguage",
4003
- "tableValues",
4004
- "targetX",
4005
- "targetY",
4006
- "textLength",
4007
- "viewBox",
4008
- "viewTarget",
4009
- "xChannelSelector",
4010
- "yChannelSelector",
4011
- "zoomAndPan"
4012
- ].map((val) => [val.toLowerCase(), val]));
4013
-
4014
- // node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/helpers.js
4015
- var DocumentPosition;
4016
- (function(DocumentPosition2) {
4017
- DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
4018
- DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
4019
- DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
4020
- DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
4021
- DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
4022
- })(DocumentPosition || (DocumentPosition = {}));
4023
-
4024
- // node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/index.js
3792
+ // node_modules/.pnpm/htmlparser2@12.0.0/node_modules/htmlparser2/dist/index.js
4025
3793
  function parseDocument(data, options) {
4026
3794
  const handler = new DomHandler(void 0, options);
4027
3795
  new Parser(handler, options).end(data);
@@ -4483,10 +4251,12 @@ function toTwine2Archive(story, startName, options) {
4483
4251
  function toTwine2HTML(story, format, startName, options) {
4484
4252
  let template = readFormatSource(format);
4485
4253
  if (template.includes("{{STORY_NAME}}")) {
4486
- template = template.replaceAll("{{STORY_NAME}}", htmlEscape(story.name));
4254
+ const name = htmlEscape(story.name);
4255
+ template = template.replaceAll("{{STORY_NAME}}", () => name);
4487
4256
  }
4488
4257
  if (template.includes("{{STORY_DATA}}")) {
4489
- template = template.replace("{{STORY_DATA}}", getTwine2DataChunk(story, startName, options));
4258
+ const data = getTwine2DataChunk(story, startName, options);
4259
+ template = template.replace("{{STORY_DATA}}", () => data);
4490
4260
  }
4491
4261
  return template;
4492
4262
  }
@@ -4587,10 +4357,11 @@ function toTwine1HTML(story, format, startName) {
4587
4357
  const displayStart = startName === "Start" ? "" : startName;
4588
4358
  template = template.replace('"VERSION"', `Compiled with ${CREATOR_NAME2}, ${VERSION}`);
4589
4359
  template = template.replace('"TIME"', `Built on ${(/* @__PURE__ */ new Date()).toUTCString()}`);
4590
- template = template.replace('"START_AT"', `"${jsStringEscape(displayStart)}"`);
4360
+ const startAtValue = `"${jsStringEscape(displayStart)}"`;
4361
+ template = template.replace('"START_AT"', () => startAtValue);
4591
4362
  template = template.replace('"STORY_SIZE"', `"${count}"`);
4592
4363
  if (template.includes('"STORY"')) {
4593
- template = template.replace('"STORY"', data);
4364
+ template = template.replace('"STORY"', () => data);
4594
4365
  } else {
4595
4366
  let footer;
4596
4367
  try {
@@ -4626,7 +4397,7 @@ function tryReplaceComponent(template, placeholder, componentPath, required) {
4626
4397
  try {
4627
4398
  let content = readFileSync2(componentPath, "utf-8");
4628
4399
  if (content.charCodeAt(0) === 65279) content = content.slice(1);
4629
- return template.replace(placeholder, content);
4400
+ return template.replace(placeholder, () => content);
4630
4401
  } catch (e) {
4631
4402
  if (required) {
4632
4403
  throw new Error(
@@ -4714,7 +4485,8 @@ function modifyHead(html, modulePaths, headFile, diagnostics) {
4714
4485
  }
4715
4486
  if (parts.length > 0) {
4716
4487
  parts.push("</head>");
4717
- return html.replace("</head>", parts.join("\n"));
4488
+ const replacement = parts.join("\n");
4489
+ return html.replace("</head>", () => replacement);
4718
4490
  }
4719
4491
  return html;
4720
4492
  }