@pol-studios/db 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/DataLayerContext-CL6alnkb.d.ts +755 -0
  2. package/dist/UserMetadataContext-B8gVWGMl.d.ts +35 -0
  3. package/dist/UserMetadataContext-DntmpK41.d.ts +33 -0
  4. package/dist/auth/context.d.ts +3 -2
  5. package/dist/auth/context.js +22 -12786
  6. package/dist/auth/context.js.map +1 -1
  7. package/dist/auth/guards.js +12 -7640
  8. package/dist/auth/guards.js.map +1 -1
  9. package/dist/auth/hooks.d.ts +3 -3
  10. package/dist/auth/hooks.js +26 -10591
  11. package/dist/auth/hooks.js.map +1 -1
  12. package/dist/auth/index.d.ts +3 -2
  13. package/dist/auth/index.js +45 -13008
  14. package/dist/auth/index.js.map +1 -1
  15. package/dist/{canvas-UVNDA54X.node → canvas-C4TBBDUL.node} +0 -0
  16. package/dist/canvas-ZQNCL7JL.js +1541 -0
  17. package/dist/canvas-ZQNCL7JL.js.map +1 -0
  18. package/dist/chunk-3PJTNH2L.js +2778 -0
  19. package/dist/chunk-3PJTNH2L.js.map +1 -0
  20. package/dist/chunk-5EFDS7SR.js +205 -0
  21. package/dist/chunk-5EFDS7SR.js.map +1 -0
  22. package/dist/chunk-7SCJNYTE.js +1459 -0
  23. package/dist/chunk-7SCJNYTE.js.map +1 -0
  24. package/dist/chunk-DJ6VLEAL.js +247 -0
  25. package/dist/chunk-DJ6VLEAL.js.map +1 -0
  26. package/dist/chunk-GC3TBUWE.js +14 -0
  27. package/dist/chunk-GC3TBUWE.js.map +1 -0
  28. package/dist/chunk-H3LNH2NT.js +611 -0
  29. package/dist/chunk-H3LNH2NT.js.map +1 -0
  30. package/dist/chunk-H6365JPC.js +1858 -0
  31. package/dist/chunk-H6365JPC.js.map +1 -0
  32. package/dist/chunk-HAWJTZCK.js +86 -0
  33. package/dist/chunk-HAWJTZCK.js.map +1 -0
  34. package/dist/chunk-J4ZVCXZ4.js +1 -0
  35. package/dist/chunk-J4ZVCXZ4.js.map +1 -0
  36. package/dist/chunk-JAATANS3.js +429 -0
  37. package/dist/chunk-JAATANS3.js.map +1 -0
  38. package/dist/chunk-LNJ3WF7V.js +470 -0
  39. package/dist/chunk-LNJ3WF7V.js.map +1 -0
  40. package/dist/chunk-N26IEHZT.js +79 -0
  41. package/dist/chunk-N26IEHZT.js.map +1 -0
  42. package/dist/chunk-NSIAAYW3.js +1 -0
  43. package/dist/chunk-NSIAAYW3.js.map +1 -0
  44. package/dist/chunk-NZON56CB.js +3864 -0
  45. package/dist/chunk-NZON56CB.js.map +1 -0
  46. package/dist/chunk-OQ7U6EQ3.js +7550 -0
  47. package/dist/chunk-OQ7U6EQ3.js.map +1 -0
  48. package/dist/chunk-P4UZ7IXC.js +42 -0
  49. package/dist/chunk-P4UZ7IXC.js.map +1 -0
  50. package/dist/chunk-SM73S2DY.js +11 -0
  51. package/dist/chunk-SM73S2DY.js.map +1 -0
  52. package/dist/chunk-TKWR5AAY.js +415 -0
  53. package/dist/chunk-TKWR5AAY.js.map +1 -0
  54. package/dist/chunk-U5UNPBKB.js +501 -0
  55. package/dist/chunk-U5UNPBKB.js.map +1 -0
  56. package/dist/chunk-WGDJ4IXR.js +921 -0
  57. package/dist/chunk-WGDJ4IXR.js.map +1 -0
  58. package/dist/chunk-WVF7RUW5.js +186 -0
  59. package/dist/chunk-WVF7RUW5.js.map +1 -0
  60. package/dist/chunk-X3HZLNBV.js +2129 -0
  61. package/dist/chunk-X3HZLNBV.js.map +1 -0
  62. package/dist/chunk-XU3SBFAG.js +5205 -0
  63. package/dist/chunk-XU3SBFAG.js.map +1 -0
  64. package/dist/chunk-ZVBHWU7O.js +1412 -0
  65. package/dist/chunk-ZVBHWU7O.js.map +1 -0
  66. package/dist/client/index.d.ts +1 -1
  67. package/dist/client/index.js +54 -163
  68. package/dist/client/index.js.map +1 -1
  69. package/dist/core/index.d.ts +19 -0
  70. package/dist/{index-BFu5_dS8.d.ts → database.types-ChFCG-4M.d.ts} +1 -177
  71. package/dist/dist-NDNRSNOG.js +521 -0
  72. package/dist/dist-NDNRSNOG.js.map +1 -0
  73. package/dist/gen/index.js +188 -1280
  74. package/dist/gen/index.js.map +1 -1
  75. package/dist/hooks/index.d.ts +10 -3
  76. package/dist/hooks/index.js +20 -8695
  77. package/dist/hooks/index.js.map +1 -1
  78. package/dist/index-CQLyNG6A.d.ts +433 -0
  79. package/dist/index.d.ts +12 -8
  80. package/dist/index.js +447 -47848
  81. package/dist/index.js.map +1 -1
  82. package/dist/index.native.d.ts +373 -33
  83. package/dist/index.native.js +432 -25048
  84. package/dist/index.native.js.map +1 -1
  85. package/dist/index.web.d.ts +10 -7
  86. package/dist/index.web.js +585 -43773
  87. package/dist/index.web.js.map +1 -1
  88. package/dist/mutation/index.d.ts +2 -2
  89. package/dist/mutation/index.js +331 -4777
  90. package/dist/mutation/index.js.map +1 -1
  91. package/dist/parser/index.js +45 -3697
  92. package/dist/parser/index.js.map +1 -1
  93. package/dist/pdf-PHXP7RHD.js +20336 -0
  94. package/dist/pdf-PHXP7RHD.js.map +1 -0
  95. package/dist/powersync-bridge/index.d.ts +284 -0
  96. package/dist/powersync-bridge/index.js +22 -0
  97. package/dist/powersync-bridge/index.js.map +1 -0
  98. package/dist/query/index.js +31 -13175
  99. package/dist/query/index.js.map +1 -1
  100. package/dist/realtime/index.js +279 -12541
  101. package/dist/realtime/index.js.map +1 -1
  102. package/dist/{UserMetadataContext-BYYqA6LI.d.ts → setupAuthContext-Kv-THH-h.d.ts} +1 -29
  103. package/dist/types/index.d.ts +5 -1
  104. package/dist/types/index.js +14 -0
  105. package/dist/{useBatchUpsert-CSQVX7w8.d.ts → useBatchUpsert-9OYjibLh.d.ts} +1 -1
  106. package/dist/{useDbCount-RGCuHmHp.d.ts → useDbCount-BG356T9i.d.ts} +3 -719
  107. package/dist/{useReceiptAI-Bn0czE7C.d.ts → useReceiptAI-6HkRpRml.d.ts} +1 -1
  108. package/dist/{useResolveFeedback-CpZPP8Pw.d.ts → useResolveFeedback-BWmatBlE.d.ts} +26 -45
  109. package/dist/{useSupabase-pPhUZHcl.d.ts → useSupabase-DvWVuHHE.d.ts} +2 -1
  110. package/dist/with-auth/index.d.ts +704 -0
  111. package/dist/with-auth/index.js +1221 -0
  112. package/dist/with-auth/index.js.map +1 -0
  113. package/package.json +25 -10
@@ -1,3645 +1,47 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
- // If the importer is in node compatibility mode or this is not an ESM
20
- // file that has been converted to a CommonJS file using a Babel-
21
- // compatible transform (i.e. "__esModule" has not been set), then set
22
- // "default" to the CommonJS "module.exports" for node compatibility.
23
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
- mod
25
- ));
26
-
27
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/tools/output/categories.js
28
- var require_categories = __commonJS({
29
- "../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/tools/output/categories.js"(exports, module) {
30
- module.exports = [
31
- {
32
- "name": "C",
33
- "alias": "Other",
34
- "isBmpLast": true,
35
- "bmp": "\0-\x7F-\x9F\xAD\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u0605\u061C\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u086F\u088F-\u0897\u08E2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A\u0C3B\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDC\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u1716-\u171E\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180E\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1ACF-\u1AFF\u1B4D-\u1B4F\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20C1-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E5E-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC3-\uFBD2\uFD90\uFD91\uFDC8-\uFDCE\uFDD0-\uFDEF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF",
36
- "astral": "\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDF6F\uDF8A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC76-\uDC7E\uDCBD\uDCC3-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEBA-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF47-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF3-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDEBF\uDECA-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA0-\uDFFF]|\uD833[\uDC00-\uDEFF\uDF2E\uDF2F\uDF47-\uDF4F\uDFC4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDEB-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDE8F\uDEAF-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD839[\uDC00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDC\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFEF\uDFF1-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7D-\uDE7F\uDE87-\uDE8F\uDEAD-\uDEAF\uDEBB-\uDEBF\uDEC6-\uDECF\uDEDA-\uDEDF\uDEE8-\uDEEF\uDEF7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF39-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]"
37
- },
38
- {
39
- "name": "Cc",
40
- "alias": "Control",
41
- "bmp": "\0-\x7F-\x9F"
42
- },
43
- {
44
- "name": "Cf",
45
- "alias": "Format",
46
- "bmp": "\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB",
47
- "astral": "\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC38]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]"
48
- },
49
- {
50
- "name": "Cn",
51
- "alias": "Unassigned",
52
- "bmp": "\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u05FF\u070E\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u086F\u088F\u0892-\u0897\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A\u0C3B\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDC\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u1716-\u171E\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1ACF-\u1AFF\u1B4D-\u1B4F\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u2065\u2072\u2073\u208F\u209D-\u209F\u20C1-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E5E-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC3-\uFBD2\uFD90\uFD91\uFDC8-\uFDCE\uFDD0-\uFDEF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD\uFEFE\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE\uFFFF",
53
- "astral": "\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDF6F\uDF8A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC76-\uDC7E\uDCC3-\uDCCC\uDCCE\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEBA-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF47-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDB7F][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF3-\uDFFF]|\uD80D[\uDC2F\uDC39-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDEBF\uDECA-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA4-\uDFFF]|\uD833[\uDC00-\uDEFF\uDF2E\uDF2F\uDF47-\uDF4F\uDFC4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDDEB-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDE8F\uDEAF-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD839[\uDC00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDC\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFEF\uDFF1-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7D-\uDE7F\uDE87-\uDE8F\uDEAD-\uDEAF\uDEBB-\uDEBF\uDEC6-\uDECF\uDEDA-\uDEDF\uDEE8-\uDEEF\uDEF7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF39-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDCFF\uDDF0-\uDFFF]|[\uDBBF\uDBFF][\uDFFE\uDFFF]"
54
- },
55
- {
56
- "name": "Co",
57
- "alias": "Private_Use",
58
- "bmp": "\uE000-\uF8FF",
59
- "astral": "[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD]"
60
- },
61
- {
62
- "name": "Cs",
63
- "alias": "Surrogate",
64
- "bmp": "\uD800-\uDFFF"
65
- },
66
- {
67
- "name": "L",
68
- "alias": "Letter",
69
- "bmp": "A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",
70
- "astral": "\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]"
71
- },
72
- {
73
- "name": "LC",
74
- "alias": "Cased_Letter",
75
- "bmp": "A-Za-z\xB5\xC0-\xD6\xD8-\xF6\xF8-\u01BA\u01BC-\u01BF\u01C4-\u0293\u0295-\u02AF\u0370-\u0373\u0376\u0377\u037B-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0560-\u0588\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FD-\u10FF\u13A0-\u13F5\u13F8-\u13FD\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2134\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C7B\u2C7E-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA640-\uA66D\uA680-\uA69B\uA722-\uA76F\uA771-\uA787\uA78B-\uA78E\uA790-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F5\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A",
76
- "astral": "\uD801[\uDC00-\uDC4F\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC]|\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD806[\uDCA0-\uDCDF]|\uD81B[\uDE40-\uDE7F]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF09\uDF0B-\uDF1E]|\uD83A[\uDD00-\uDD43]"
77
- },
78
- {
79
- "name": "Ll",
80
- "alias": "Lowercase_Letter",
81
- "bmp": "a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5F\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C1\uA7C3\uA7C8\uA7CA\uA7D1\uA7D3\uA7D5\uA7D7\uA7D9\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A",
82
- "astral": "\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD837[\uDF00-\uDF09\uDF0B-\uDF1E]|\uD83A[\uDD22-\uDD43]"
83
- },
84
- {
85
- "name": "Lm",
86
- "alias": "Modifier_Letter",
87
- "bmp": "\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u08C9\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F2-\uA7F4\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uAB69\uFF70\uFF9E\uFF9F",
88
- "astral": "\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD838[\uDD37-\uDD3D]|\u{1E94B}"
89
- },
90
- {
91
- "name": "Lo",
92
- "alias": "Other_Letter",
93
- "bmp": "\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C8\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",
94
- "astral": "\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC50-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF4A\uDF50]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\u{1DF0A}|\uD838[\uDD00-\uDD2C\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]"
95
- },
96
- {
97
- "name": "Lt",
98
- "alias": "Titlecase_Letter",
99
- "bmp": "\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC"
100
- },
101
- {
102
- "name": "Lu",
103
- "alias": "Uppercase_Letter",
104
- "bmp": "A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2F\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C4-\uA7C7\uA7C9\uA7D0\uA7D6\uA7D8\uA7F5\uFF21-\uFF3A",
105
- "astral": "\uD801[\uDC00-\uDC27\uDCB0-\uDCD3\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]"
106
- },
107
- {
108
- "name": "M",
109
- "alias": "Mark",
110
- "bmp": "\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u180F\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F",
111
- "astral": "\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50\uDF82-\uDF85]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC70\uDC73\uDC74\uDC7F-\uDC82\uDCB0-\uDCBA\uDCC2\uDD00-\uDD02\uDD27-\uDD34\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDCE\uDDCF\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC5E\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF2B]|\uD806[\uDC2C-\uDC3A\uDD30-\uDD35\uDD37\uDD38\uDD3B-\uDD3E\uDD40\uDD42\uDD43\uDDD1-\uDDD7\uDDDA-\uDDE0\uDDE4\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDEF3-\uDEF6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF51-\uDF87\uDF8F-\uDF92\uDFE4\uDFF0\uDFF1]|\uD82F[\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEAE\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]"
112
- },
113
- {
114
- "name": "Mc",
115
- "alias": "Spacing_Mark",
116
- "bmp": "\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u1715\u1734\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF7\u302E\u302F\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC",
117
- "astral": "\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD45\uDD46\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDDCE\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3E\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB0-\uDCB2\uDCB9\uDCBB-\uDCBE\uDCC1\uDDAF-\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF20\uDF21\uDF26]|\uD806[\uDC2C-\uDC2E\uDC38\uDD30-\uDD35\uDD37\uDD38\uDD3D\uDD40\uDD42\uDDD1-\uDDD3\uDDDC-\uDDDF\uDDE4\uDE39\uDE57\uDE58\uDE97]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4\uDD8A-\uDD8E\uDD93\uDD94\uDD96\uDEF5\uDEF6]|\uD81B[\uDF51-\uDF87\uDFF0\uDFF1]|\uD834[\uDD65\uDD66\uDD6D-\uDD72]"
118
- },
119
- {
120
- "name": "Me",
121
- "alias": "Enclosing_Mark",
122
- "bmp": "\u0488\u0489\u1ABE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672"
123
- },
124
- {
125
- "name": "Mn",
126
- "alias": "Nonspacing_Mark",
127
- "bmp": "\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3C\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732\u1733\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u180F\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F",
128
- "astral": "\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50\uDF82-\uDF85]|\uD804[\uDC01\uDC38-\uDC46\uDC70\uDC73\uDC74\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDCC2\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF40\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB3-\uDCB8\uDCBA\uDCBF\uDCC0\uDCC2\uDCC3\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEAE\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]"
129
- },
130
- {
131
- "name": "N",
132
- "alias": "Number",
133
- "bmp": "0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19",
134
- "astral": "\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]"
135
- },
136
- {
137
- "name": "Nd",
138
- "alias": "Decimal_Number",
139
- "bmp": "0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19",
140
- "astral": "\uD801[\uDCA0-\uDCA9]|\uD803[\uDD30-\uDD39]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9\uDD50-\uDD59]|\uD807[\uDC50-\uDC59\uDD50-\uDD59\uDDA0-\uDDA9]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDD50-\uDD59]|\uD83E[\uDFF0-\uDFF9]"
141
- },
142
- {
143
- "name": "Nl",
144
- "alias": "Letter_Number",
145
- "bmp": "\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF",
146
- "astral": "\uD800[\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]|\uD809[\uDC00-\uDC6E]"
147
- },
148
- {
149
- "name": "No",
150
- "alias": "Other_Number",
151
- "bmp": "\xB2\xB3\xB9\xBC-\xBE\u09F4-\u09F9\u0B72-\u0B77\u0BF0-\u0BF2\u0C78-\u0C7E\u0D58-\u0D5E\u0D70-\u0D78\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u19DA\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835",
152
- "astral": "\uD800[\uDD07-\uDD33\uDD75-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC65\uDDE1-\uDDF4]|\uD805[\uDF3A\uDF3B]|\uD806[\uDCEA-\uDCF2]|\uD807[\uDC5A-\uDC6C\uDFC0-\uDFD4]|\uD81A[\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD83A[\uDCC7-\uDCCF]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]"
153
- },
154
- {
155
- "name": "P",
156
- "alias": "Punctuation",
157
- "bmp": "!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65",
158
- "astral": "\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\u{1056F}|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\u{1BC9F}|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]"
159
- },
160
- {
161
- "name": "Pc",
162
- "alias": "Connector_Punctuation",
163
- "bmp": "_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F"
164
- },
165
- {
166
- "name": "Pd",
167
- "alias": "Dash_Punctuation",
168
- "bmp": "\\-\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u2E5D\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D",
169
- "astral": "\u{10EAD}"
170
- },
171
- {
172
- "name": "Pe",
173
- "alias": "Close_Punctuation",
174
- "bmp": "\\)\\]\\}\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u2E56\u2E58\u2E5A\u2E5C\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63"
175
- },
176
- {
177
- "name": "Pf",
178
- "alias": "Final_Punctuation",
179
- "bmp": "\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21"
180
- },
181
- {
182
- "name": "Pi",
183
- "alias": "Initial_Punctuation",
184
- "bmp": "\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20"
185
- },
186
- {
187
- "name": "Po",
188
- "alias": "Other_Punctuation",
189
- "bmp": "!-#%-'\\*,\\.\\/:;\\?@\\\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43-\u2E4F\u2E52-\u2E54\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65",
190
- "astral": "\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\u{1056F}|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\u{1BC9F}|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]"
191
- },
192
- {
193
- "name": "Ps",
194
- "alias": "Open_Punctuation",
195
- "bmp": "\\(\\[\\{\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u2E55\u2E57\u2E59\u2E5B\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62"
196
- },
197
- {
198
- "name": "S",
199
- "alias": "Symbol",
200
- "bmp": "\\$\\+<->\\^`\\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD",
201
- "astral": "\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\u{1173F}|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\u{1BC9C}|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDD-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC5\uDED0-\uDED9\uDEE0-\uDEE7\uDEF0-\uDEF6\uDF00-\uDF92\uDF94-\uDFCA]"
202
- },
203
- {
204
- "name": "Sc",
205
- "alias": "Currency_Symbol",
206
- "bmp": "\\$\xA2-\xA5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20C0\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6",
207
- "astral": "\uD807[\uDFDD-\uDFE0]|\u{1E2FF}|\u{1ECB0}"
208
- },
209
- {
210
- "name": "Sk",
211
- "alias": "Modifier_Symbol",
212
- "bmp": "\\^`\xA8\xAF\xB4\xB8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u0888\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u309B\u309C\uA700-\uA716\uA720\uA721\uA789\uA78A\uAB5B\uAB6A\uAB6B\uFBB2-\uFBC2\uFF3E\uFF40\uFFE3",
213
- "astral": "\uD83C[\uDFFB-\uDFFF]"
214
- },
215
- {
216
- "name": "Sm",
217
- "alias": "Math_Symbol",
218
- "bmp": "\\+<->\\|~\xAC\xB1\xD7\xF7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2118\u2140-\u2144\u214B\u2190-\u2194\u219A\u219B\u21A0\u21A3\u21A6\u21AE\u21CE\u21CF\u21D2\u21D4\u21F4-\u22FF\u2320\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC",
219
- "astral": "\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD83B[\uDEF0\uDEF1]"
220
- },
221
- {
222
- "name": "So",
223
- "alias": "Other_Symbol",
224
- "bmp": "\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFD40-\uFD4F\uFDCF\uFDFD-\uFDFF\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD",
225
- "astral": "\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\u{1173F}|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\u{1BC9C}|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\u{1E14F}|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEDD-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC5\uDED0-\uDED9\uDEE0-\uDEE7\uDEF0-\uDEF6\uDF00-\uDF92\uDF94-\uDFCA]"
226
- },
227
- {
228
- "name": "Z",
229
- "alias": "Separator",
230
- "bmp": " \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000"
231
- },
232
- {
233
- "name": "Zl",
234
- "alias": "Line_Separator",
235
- "bmp": "\u2028"
236
- },
237
- {
238
- "name": "Zp",
239
- "alias": "Paragraph_Separator",
240
- "bmp": "\u2029"
241
- },
242
- {
243
- "name": "Zs",
244
- "alias": "Space_Separator",
245
- "bmp": " \xA0\u1680\u2000-\u200A\u202F\u205F\u3000"
246
- }
247
- ];
248
- }
249
- });
250
-
251
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/tools/output/properties.js
252
- var require_properties = __commonJS({
253
- "../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/tools/output/properties.js"(exports, module) {
254
- module.exports = [
255
- {
256
- "name": "ASCII",
257
- "bmp": "\0-\x7F"
258
- },
259
- {
260
- "name": "Alphabetic",
261
- "bmp": "A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0345\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05B0-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0657\u0659-\u065F\u066E-\u06D3\u06D5-\u06DC\u06E1-\u06E8\u06ED-\u06EF\u06FA-\u06FC\u06FF\u0710-\u073F\u074D-\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0817\u081A-\u082C\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u08D4-\u08DF\u08E3-\u08E9\u08F0-\u093B\u093D-\u094C\u094E-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C4\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09F0\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A51\u0A59-\u0A5C\u0A5E\u0A70-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC5\u0AC7-\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0-\u0AE3\u0AF9-\u0AFC\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D-\u0B44\u0B47\u0B48\u0B4B\u0B4C\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4C\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCC\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E46\u0E4D\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0ECD\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F71-\u0F81\u0F88-\u0F97\u0F99-\u0FBC\u1000-\u1036\u1038\u103B-\u103F\u1050-\u108F\u109A-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1713\u171F-\u1733\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17C8\u17D7\u17DC\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u1938\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A1B\u1A20-\u1A5E\u1A61-\u1A74\u1AA7\u1ABF\u1AC0\u1ACC-\u1ACE\u1B00-\u1B33\u1B35-\u1B43\u1B45-\u1B4C\u1B80-\u1BA9\u1BAC-\u1BAF\u1BBA-\u1BE5\u1BE7-\u1BF1\u1C00-\u1C36\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1DE7-\u1DF4\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u24B6-\u24E9\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA674-\uA67B\uA67F-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA805\uA807-\uA827\uA840-\uA873\uA880-\uA8C3\uA8C5\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FF\uA90A-\uA92A\uA930-\uA952\uA960-\uA97C\uA980-\uA9B2\uA9B4-\uA9BF\uA9CF\uA9E0-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA60-\uAA76\uAA7A-\uAABE\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",
262
- "astral": "\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC45\uDC71-\uDC75\uDC82-\uDCB8\uDCC2\uDCD0-\uDCE8\uDD00-\uDD32\uDD44-\uDD47\uDD50-\uDD72\uDD76\uDD80-\uDDBF\uDDC1-\uDDC4\uDDCE\uDDCF\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE34\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEE8\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D-\uDF44\uDF47\uDF48\uDF4B\uDF4C\uDF50\uDF57\uDF5D-\uDF63]|\uD805[\uDC00-\uDC41\uDC43-\uDC45\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCC1\uDCC4\uDCC5\uDCC7\uDD80-\uDDB5\uDDB8-\uDDBE\uDDD8-\uDDDD\uDE00-\uDE3E\uDE40\uDE44\uDE80-\uDEB5\uDEB8\uDF00-\uDF1A\uDF1D-\uDF2A\uDF40-\uDF46]|\uD806[\uDC00-\uDC38\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B\uDD3C\uDD3F-\uDD42\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDDF\uDDE1\uDDE3\uDDE4\uDE00-\uDE32\uDE35-\uDE3E\uDE50-\uDE97\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC3E\uDC40\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD41\uDD43\uDD46\uDD47\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD96\uDD98\uDEE0-\uDEF6\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9E]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD47\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]"
263
- },
264
- {
265
- "name": "Any",
266
- "isBmpLast": true,
267
- "bmp": "\0-\uFFFF",
268
- "astral": "[\uD800-\uDBFF][\uDC00-\uDFFF]"
269
- },
270
- {
271
- "name": "Default_Ignorable_Code_Point",
272
- "bmp": "\xAD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180F\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFE00-\uFE0F\uFEFF\uFFA0\uFFF0-\uFFF8",
273
- "astral": "\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|[\uDB40-\uDB43][\uDC00-\uDFFF]"
274
- },
275
- {
276
- "name": "Lowercase",
277
- "bmp": "a-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02B8\u02C0\u02C1\u02E0-\u02E4\u0345\u0371\u0373\u0377\u037A-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1DBF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u2071\u207F\u2090-\u209C\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2170-\u217F\u2184\u24D0-\u24E9\u2C30-\u2C5F\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7D\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B-\uA69D\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C1\uA7C3\uA7C8\uA7CA\uA7D1\uA7D3\uA7D5\uA7D7\uA7D9\uA7F6\uA7F8-\uA7FA\uAB30-\uAB5A\uAB5C-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A",
278
- "astral": "\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDF80\uDF83-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD837[\uDF00-\uDF09\uDF0B-\uDF1E]|\uD83A[\uDD22-\uDD43]"
279
- },
280
- {
281
- "name": "Noncharacter_Code_Point",
282
- "bmp": "\uFDD0-\uFDEF\uFFFE\uFFFF",
283
- "astral": "[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]"
284
- },
285
- {
286
- "name": "Uppercase",
287
- "bmp": "A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2160-\u216F\u2183\u24B6-\u24CF\u2C00-\u2C2F\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C4-\uA7C7\uA7C9\uA7D0\uA7D6\uA7D8\uA7F5\uFF21-\uFF3A",
288
- "astral": "\uD801[\uDC00-\uDC27\uDCB0-\uDCD3\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]"
289
- },
290
- {
291
- "name": "White_Space",
292
- "bmp": " -\r \x85\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000"
293
- }
294
- ];
295
- }
296
- });
297
-
298
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/tools/output/scripts.js
299
- var require_scripts = __commonJS({
300
- "../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/tools/output/scripts.js"(exports, module) {
301
- module.exports = [
302
- {
303
- "name": "Adlam",
304
- "astral": "\uD83A[\uDD00-\uDD4B\uDD50-\uDD59\uDD5E\uDD5F]"
305
- },
306
- {
307
- "name": "Ahom",
308
- "astral": "\uD805[\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF46]"
309
- },
310
- {
311
- "name": "Anatolian_Hieroglyphs",
312
- "astral": "\uD811[\uDC00-\uDE46]"
313
- },
314
- {
315
- "name": "Arabic",
316
- "bmp": "\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C-\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u06FF\u0750-\u077F\u0870-\u088E\u0890\u0891\u0898-\u08E1\u08E3-\u08FF\uFB50-\uFBC2\uFBD3-\uFD3D\uFD40-\uFD8F\uFD92-\uFDC7\uFDCF\uFDF0-\uFDFF\uFE70-\uFE74\uFE76-\uFEFC",
317
- "astral": "\uD803[\uDE60-\uDE7E]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]"
318
- },
319
- {
320
- "name": "Armenian",
321
- "bmp": "\u0531-\u0556\u0559-\u058A\u058D-\u058F\uFB13-\uFB17"
322
- },
323
- {
324
- "name": "Avestan",
325
- "astral": "\uD802[\uDF00-\uDF35\uDF39-\uDF3F]"
326
- },
327
- {
328
- "name": "Balinese",
329
- "bmp": "\u1B00-\u1B4C\u1B50-\u1B7E"
330
- },
331
- {
332
- "name": "Bamum",
333
- "bmp": "\uA6A0-\uA6F7",
334
- "astral": "\uD81A[\uDC00-\uDE38]"
335
- },
336
- {
337
- "name": "Bassa_Vah",
338
- "astral": "\uD81A[\uDED0-\uDEED\uDEF0-\uDEF5]"
339
- },
340
- {
341
- "name": "Batak",
342
- "bmp": "\u1BC0-\u1BF3\u1BFC-\u1BFF"
343
- },
344
- {
345
- "name": "Bengali",
346
- "bmp": "\u0980-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FE"
347
- },
348
- {
349
- "name": "Bhaiksuki",
350
- "astral": "\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC45\uDC50-\uDC6C]"
351
- },
352
- {
353
- "name": "Bopomofo",
354
- "bmp": "\u02EA\u02EB\u3105-\u312F\u31A0-\u31BF"
355
- },
356
- {
357
- "name": "Brahmi",
358
- "astral": "\uD804[\uDC00-\uDC4D\uDC52-\uDC75\uDC7F]"
359
- },
360
- {
361
- "name": "Braille",
362
- "bmp": "\u2800-\u28FF"
363
- },
364
- {
365
- "name": "Buginese",
366
- "bmp": "\u1A00-\u1A1B\u1A1E\u1A1F"
367
- },
368
- {
369
- "name": "Buhid",
370
- "bmp": "\u1740-\u1753"
371
- },
372
- {
373
- "name": "Canadian_Aboriginal",
374
- "bmp": "\u1400-\u167F\u18B0-\u18F5",
375
- "astral": "\uD806[\uDEB0-\uDEBF]"
376
- },
377
- {
378
- "name": "Carian",
379
- "astral": "\uD800[\uDEA0-\uDED0]"
380
- },
381
- {
382
- "name": "Caucasian_Albanian",
383
- "astral": "\uD801[\uDD30-\uDD63\uDD6F]"
384
- },
385
- {
386
- "name": "Chakma",
387
- "astral": "\uD804[\uDD00-\uDD34\uDD36-\uDD47]"
388
- },
389
- {
390
- "name": "Cham",
391
- "bmp": "\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA5C-\uAA5F"
392
- },
393
- {
394
- "name": "Cherokee",
395
- "bmp": "\u13A0-\u13F5\u13F8-\u13FD\uAB70-\uABBF"
396
- },
397
- {
398
- "name": "Chorasmian",
399
- "astral": "\uD803[\uDFB0-\uDFCB]"
400
- },
401
- {
402
- "name": "Common",
403
- "bmp": "\0-@\\[-`\\{-\xA9\xAB-\xB9\xBB-\xBF\xD7\xF7\u02B9-\u02DF\u02E5-\u02E9\u02EC-\u02FF\u0374\u037E\u0385\u0387\u0605\u060C\u061B\u061F\u0640\u06DD\u08E2\u0964\u0965\u0E3F\u0FD5-\u0FD8\u10FB\u16EB-\u16ED\u1735\u1736\u1802\u1803\u1805\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1CFA\u2000-\u200B\u200E-\u2064\u2066-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20C0\u2100-\u2125\u2127-\u2129\u212C-\u2131\u2133-\u214D\u214F-\u215F\u2189-\u218B\u2190-\u2426\u2440-\u244A\u2460-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2E00-\u2E5D\u2FF0-\u2FFB\u3000-\u3004\u3006\u3008-\u3020\u3030-\u3037\u303C-\u303F\u309B\u309C\u30A0\u30FB\u30FC\u3190-\u319F\u31C0-\u31E3\u3220-\u325F\u327F-\u32CF\u32FF\u3358-\u33FF\u4DC0-\u4DFF\uA700-\uA721\uA788-\uA78A\uA830-\uA839\uA92E\uA9CF\uAB5B\uAB6A\uAB6B\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFF70\uFF9E\uFF9F\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD",
404
- "astral": "\uD800[\uDD00-\uDD02\uDD07-\uDD33\uDD37-\uDD3F\uDD90-\uDD9C\uDDD0-\uDDFC\uDEE1-\uDEFB]|\uD82F[\uDCA0-\uDCA3]|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD66\uDD6A-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDEE0-\uDEF3\uDF00-\uDF56\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDFCB\uDFCE-\uDFFF]|\uD83B[\uDC71-\uDCB4\uDD01-\uDD3D]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD00-\uDDAD\uDDE6-\uDDFF\uDE01\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDD-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC5\uDED0-\uDED9\uDEE0-\uDEE7\uDEF0-\uDEF6\uDF00-\uDF92\uDF94-\uDFCA\uDFF0-\uDFF9]|\uDB40[\uDC01\uDC20-\uDC7F]"
405
- },
406
- {
407
- "name": "Coptic",
408
- "bmp": "\u03E2-\u03EF\u2C80-\u2CF3\u2CF9-\u2CFF"
409
- },
410
- {
411
- "name": "Cuneiform",
412
- "astral": "\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC70-\uDC74\uDC80-\uDD43]"
413
- },
414
- {
415
- "name": "Cypriot",
416
- "astral": "\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F]"
417
- },
418
- {
419
- "name": "Cypro_Minoan",
420
- "astral": "\uD80B[\uDF90-\uDFF2]"
421
- },
422
- {
423
- "name": "Cyrillic",
424
- "bmp": "\u0400-\u0484\u0487-\u052F\u1C80-\u1C88\u1D2B\u1D78\u2DE0-\u2DFF\uA640-\uA69F\uFE2E\uFE2F"
425
- },
426
- {
427
- "name": "Deseret",
428
- "astral": "\uD801[\uDC00-\uDC4F]"
429
- },
430
- {
431
- "name": "Devanagari",
432
- "bmp": "\u0900-\u0950\u0955-\u0963\u0966-\u097F\uA8E0-\uA8FF"
433
- },
434
- {
435
- "name": "Dives_Akuru",
436
- "astral": "\uD806[\uDD00-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD46\uDD50-\uDD59]"
437
- },
438
- {
439
- "name": "Dogra",
440
- "astral": "\uD806[\uDC00-\uDC3B]"
441
- },
442
- {
443
- "name": "Duployan",
444
- "astral": "\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9C-\uDC9F]"
445
- },
446
- {
447
- "name": "Egyptian_Hieroglyphs",
448
- "astral": "\uD80C[\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E\uDC30-\uDC38]"
449
- },
450
- {
451
- "name": "Elbasan",
452
- "astral": "\uD801[\uDD00-\uDD27]"
453
- },
454
- {
455
- "name": "Elymaic",
456
- "astral": "\uD803[\uDFE0-\uDFF6]"
457
- },
458
- {
459
- "name": "Ethiopic",
460
- "bmp": "\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E",
461
- "astral": "\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]"
462
- },
463
- {
464
- "name": "Georgian",
465
- "bmp": "\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u10FF\u1C90-\u1CBA\u1CBD-\u1CBF\u2D00-\u2D25\u2D27\u2D2D"
466
- },
467
- {
468
- "name": "Glagolitic",
469
- "bmp": "\u2C00-\u2C5F",
470
- "astral": "\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]"
471
- },
472
- {
473
- "name": "Gothic",
474
- "astral": "\uD800[\uDF30-\uDF4A]"
475
- },
476
- {
477
- "name": "Grantha",
478
- "astral": "\uD804[\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]"
479
- },
480
- {
481
- "name": "Greek",
482
- "bmp": "\u0370-\u0373\u0375-\u0377\u037A-\u037D\u037F\u0384\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03E1\u03F0-\u03FF\u1D26-\u1D2A\u1D5D-\u1D61\u1D66-\u1D6A\u1DBF\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2126\uAB65",
483
- "astral": "\uD800[\uDD40-\uDD8E\uDDA0]|\uD834[\uDE00-\uDE45]"
484
- },
485
- {
486
- "name": "Gujarati",
487
- "bmp": "\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9-\u0AFF"
488
- },
489
- {
490
- "name": "Gunjala_Gondi",
491
- "astral": "\uD807[\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9]"
492
- },
493
- {
494
- "name": "Gurmukhi",
495
- "bmp": "\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A76"
496
- },
497
- {
498
- "name": "Han",
499
- "bmp": "\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFA6D\uFA70-\uFAD9",
500
- "astral": "\uD81B[\uDFE2\uDFE3\uDFF0\uDFF1]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]"
501
- },
502
- {
503
- "name": "Hangul",
504
- "bmp": "\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC"
505
- },
506
- {
507
- "name": "Hanifi_Rohingya",
508
- "astral": "\uD803[\uDD00-\uDD27\uDD30-\uDD39]"
509
- },
510
- {
511
- "name": "Hanunoo",
512
- "bmp": "\u1720-\u1734"
513
- },
514
- {
515
- "name": "Hatran",
516
- "astral": "\uD802[\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDCFF]"
517
- },
518
- {
519
- "name": "Hebrew",
520
- "bmp": "\u0591-\u05C7\u05D0-\u05EA\u05EF-\u05F4\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFB4F"
521
- },
522
- {
523
- "name": "Hiragana",
524
- "bmp": "\u3041-\u3096\u309D-\u309F",
525
- "astral": "\uD82C[\uDC01-\uDD1F\uDD50-\uDD52]|\u{1F200}"
526
- },
527
- {
528
- "name": "Imperial_Aramaic",
529
- "astral": "\uD802[\uDC40-\uDC55\uDC57-\uDC5F]"
530
- },
531
- {
532
- "name": "Inherited",
533
- "bmp": "\u0300-\u036F\u0485\u0486\u064B-\u0655\u0670\u0951-\u0954\u1AB0-\u1ACE\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DFF\u200C\u200D\u20D0-\u20F0\u302A-\u302D\u3099\u309A\uFE00-\uFE0F\uFE20-\uFE2D",
534
- "astral": "\uD800[\uDDFD\uDEE0]|\u{1133B}|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD]|\uDB40[\uDD00-\uDDEF]"
535
- },
536
- {
537
- "name": "Inscriptional_Pahlavi",
538
- "astral": "\uD802[\uDF60-\uDF72\uDF78-\uDF7F]"
539
- },
540
- {
541
- "name": "Inscriptional_Parthian",
542
- "astral": "\uD802[\uDF40-\uDF55\uDF58-\uDF5F]"
543
- },
544
- {
545
- "name": "Javanese",
546
- "bmp": "\uA980-\uA9CD\uA9D0-\uA9D9\uA9DE\uA9DF"
547
- },
548
- {
549
- "name": "Kaithi",
550
- "astral": "\uD804[\uDC80-\uDCC2\uDCCD]"
551
- },
552
- {
553
- "name": "Kannada",
554
- "bmp": "\u0C80-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2"
555
- },
556
- {
557
- "name": "Katakana",
558
- "bmp": "\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D",
559
- "astral": "\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00\uDD20-\uDD22\uDD64-\uDD67]"
560
- },
561
- {
562
- "name": "Kayah_Li",
563
- "bmp": "\uA900-\uA92D\uA92F"
564
- },
565
- {
566
- "name": "Kharoshthi",
567
- "astral": "\uD802[\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F-\uDE48\uDE50-\uDE58]"
568
- },
569
- {
570
- "name": "Khitan_Small_Script",
571
- "astral": "\u{16FE4}|\uD822[\uDF00-\uDFFF]|\uD823[\uDC00-\uDCD5]"
572
- },
573
- {
574
- "name": "Khmer",
575
- "bmp": "\u1780-\u17DD\u17E0-\u17E9\u17F0-\u17F9\u19E0-\u19FF"
576
- },
577
- {
578
- "name": "Khojki",
579
- "astral": "\uD804[\uDE00-\uDE11\uDE13-\uDE3E]"
580
- },
581
- {
582
- "name": "Khudawadi",
583
- "astral": "\uD804[\uDEB0-\uDEEA\uDEF0-\uDEF9]"
584
- },
585
- {
586
- "name": "Lao",
587
- "bmp": "\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF"
588
- },
589
- {
590
- "name": "Latin",
591
- "bmp": "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A",
592
- "astral": "\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E]"
593
- },
594
- {
595
- "name": "Lepcha",
596
- "bmp": "\u1C00-\u1C37\u1C3B-\u1C49\u1C4D-\u1C4F"
597
- },
598
- {
599
- "name": "Limbu",
600
- "bmp": "\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1940\u1944-\u194F"
601
- },
602
- {
603
- "name": "Linear_A",
604
- "astral": "\uD801[\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]"
605
- },
606
- {
607
- "name": "Linear_B",
608
- "astral": "\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA]"
609
- },
610
- {
611
- "name": "Lisu",
612
- "bmp": "\uA4D0-\uA4FF",
613
- "astral": "\u{11FB0}"
614
- },
615
- {
616
- "name": "Lycian",
617
- "astral": "\uD800[\uDE80-\uDE9C]"
618
- },
619
- {
620
- "name": "Lydian",
621
- "astral": "\uD802[\uDD20-\uDD39\uDD3F]"
622
- },
623
- {
624
- "name": "Mahajani",
625
- "astral": "\uD804[\uDD50-\uDD76]"
626
- },
627
- {
628
- "name": "Makasar",
629
- "astral": "\uD807[\uDEE0-\uDEF8]"
630
- },
631
- {
632
- "name": "Malayalam",
633
- "bmp": "\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F"
634
- },
635
- {
636
- "name": "Mandaic",
637
- "bmp": "\u0840-\u085B\u085E"
638
- },
639
- {
640
- "name": "Manichaean",
641
- "astral": "\uD802[\uDEC0-\uDEE6\uDEEB-\uDEF6]"
642
- },
643
- {
644
- "name": "Marchen",
645
- "astral": "\uD807[\uDC70-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]"
646
- },
647
- {
648
- "name": "Masaram_Gondi",
649
- "astral": "\uD807[\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]"
650
- },
651
- {
652
- "name": "Medefaidrin",
653
- "astral": "\uD81B[\uDE40-\uDE9A]"
654
- },
655
- {
656
- "name": "Meetei_Mayek",
657
- "bmp": "\uAAE0-\uAAF6\uABC0-\uABED\uABF0-\uABF9"
658
- },
659
- {
660
- "name": "Mende_Kikakui",
661
- "astral": "\uD83A[\uDC00-\uDCC4\uDCC7-\uDCD6]"
662
- },
663
- {
664
- "name": "Meroitic_Cursive",
665
- "astral": "\uD802[\uDDA0-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDDFF]"
666
- },
667
- {
668
- "name": "Meroitic_Hieroglyphs",
669
- "astral": "\uD802[\uDD80-\uDD9F]"
670
- },
671
- {
672
- "name": "Miao",
673
- "astral": "\uD81B[\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F]"
674
- },
675
- {
676
- "name": "Modi",
677
- "astral": "\uD805[\uDE00-\uDE44\uDE50-\uDE59]"
678
- },
679
- {
680
- "name": "Mongolian",
681
- "bmp": "\u1800\u1801\u1804\u1806-\u1819\u1820-\u1878\u1880-\u18AA",
682
- "astral": "\uD805[\uDE60-\uDE6C]"
683
- },
684
- {
685
- "name": "Mro",
686
- "astral": "\uD81A[\uDE40-\uDE5E\uDE60-\uDE69\uDE6E\uDE6F]"
687
- },
688
- {
689
- "name": "Multani",
690
- "astral": "\uD804[\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA9]"
691
- },
692
- {
693
- "name": "Myanmar",
694
- "bmp": "\u1000-\u109F\uA9E0-\uA9FE\uAA60-\uAA7F"
695
- },
696
- {
697
- "name": "Nabataean",
698
- "astral": "\uD802[\uDC80-\uDC9E\uDCA7-\uDCAF]"
699
- },
700
- {
701
- "name": "Nandinagari",
702
- "astral": "\uD806[\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE4]"
703
- },
704
- {
705
- "name": "New_Tai_Lue",
706
- "bmp": "\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u19DE\u19DF"
707
- },
708
- {
709
- "name": "Newa",
710
- "astral": "\uD805[\uDC00-\uDC5B\uDC5D-\uDC61]"
711
- },
712
- {
713
- "name": "Nko",
714
- "bmp": "\u07C0-\u07FA\u07FD-\u07FF"
715
- },
716
- {
717
- "name": "Nushu",
718
- "astral": "\u{16FE1}|\uD82C[\uDD70-\uDEFB]"
719
- },
720
- {
721
- "name": "Nyiakeng_Puachue_Hmong",
722
- "astral": "\uD838[\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDD4F]"
723
- },
724
- {
725
- "name": "Ogham",
726
- "bmp": "\u1680-\u169C"
727
- },
728
- {
729
- "name": "Ol_Chiki",
730
- "bmp": "\u1C50-\u1C7F"
731
- },
732
- {
733
- "name": "Old_Hungarian",
734
- "astral": "\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDCFF]"
735
- },
736
- {
737
- "name": "Old_Italic",
738
- "astral": "\uD800[\uDF00-\uDF23\uDF2D-\uDF2F]"
739
- },
740
- {
741
- "name": "Old_North_Arabian",
742
- "astral": "\uD802[\uDE80-\uDE9F]"
743
- },
744
- {
745
- "name": "Old_Permic",
746
- "astral": "\uD800[\uDF50-\uDF7A]"
747
- },
748
- {
749
- "name": "Old_Persian",
750
- "astral": "\uD800[\uDFA0-\uDFC3\uDFC8-\uDFD5]"
751
- },
752
- {
753
- "name": "Old_Sogdian",
754
- "astral": "\uD803[\uDF00-\uDF27]"
755
- },
756
- {
757
- "name": "Old_South_Arabian",
758
- "astral": "\uD802[\uDE60-\uDE7F]"
759
- },
760
- {
761
- "name": "Old_Turkic",
762
- "astral": "\uD803[\uDC00-\uDC48]"
763
- },
764
- {
765
- "name": "Old_Uyghur",
766
- "astral": "\uD803[\uDF70-\uDF89]"
767
- },
768
- {
769
- "name": "Oriya",
770
- "bmp": "\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B77"
771
- },
772
- {
773
- "name": "Osage",
774
- "astral": "\uD801[\uDCB0-\uDCD3\uDCD8-\uDCFB]"
775
- },
776
- {
777
- "name": "Osmanya",
778
- "astral": "\uD801[\uDC80-\uDC9D\uDCA0-\uDCA9]"
779
- },
780
- {
781
- "name": "Pahawh_Hmong",
782
- "astral": "\uD81A[\uDF00-\uDF45\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]"
783
- },
784
- {
785
- "name": "Palmyrene",
786
- "astral": "\uD802[\uDC60-\uDC7F]"
787
- },
788
- {
789
- "name": "Pau_Cin_Hau",
790
- "astral": "\uD806[\uDEC0-\uDEF8]"
791
- },
792
- {
793
- "name": "Phags_Pa",
794
- "bmp": "\uA840-\uA877"
795
- },
796
- {
797
- "name": "Phoenician",
798
- "astral": "\uD802[\uDD00-\uDD1B\uDD1F]"
799
- },
800
- {
801
- "name": "Psalter_Pahlavi",
802
- "astral": "\uD802[\uDF80-\uDF91\uDF99-\uDF9C\uDFA9-\uDFAF]"
803
- },
804
- {
805
- "name": "Rejang",
806
- "bmp": "\uA930-\uA953\uA95F"
807
- },
808
- {
809
- "name": "Runic",
810
- "bmp": "\u16A0-\u16EA\u16EE-\u16F8"
811
- },
812
- {
813
- "name": "Samaritan",
814
- "bmp": "\u0800-\u082D\u0830-\u083E"
815
- },
816
- {
817
- "name": "Saurashtra",
818
- "bmp": "\uA880-\uA8C5\uA8CE-\uA8D9"
819
- },
820
- {
821
- "name": "Sharada",
822
- "astral": "\uD804[\uDD80-\uDDDF]"
823
- },
824
- {
825
- "name": "Shavian",
826
- "astral": "\uD801[\uDC50-\uDC7F]"
827
- },
828
- {
829
- "name": "Siddham",
830
- "astral": "\uD805[\uDD80-\uDDB5\uDDB8-\uDDDD]"
831
- },
832
- {
833
- "name": "SignWriting",
834
- "astral": "\uD836[\uDC00-\uDE8B\uDE9B-\uDE9F\uDEA1-\uDEAF]"
835
- },
836
- {
837
- "name": "Sinhala",
838
- "bmp": "\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4",
839
- "astral": "\uD804[\uDDE1-\uDDF4]"
840
- },
841
- {
842
- "name": "Sogdian",
843
- "astral": "\uD803[\uDF30-\uDF59]"
844
- },
845
- {
846
- "name": "Sora_Sompeng",
847
- "astral": "\uD804[\uDCD0-\uDCE8\uDCF0-\uDCF9]"
848
- },
849
- {
850
- "name": "Soyombo",
851
- "astral": "\uD806[\uDE50-\uDEA2]"
852
- },
853
- {
854
- "name": "Sundanese",
855
- "bmp": "\u1B80-\u1BBF\u1CC0-\u1CC7"
856
- },
857
- {
858
- "name": "Syloti_Nagri",
859
- "bmp": "\uA800-\uA82C"
860
- },
861
- {
862
- "name": "Syriac",
863
- "bmp": "\u0700-\u070D\u070F-\u074A\u074D-\u074F\u0860-\u086A"
864
- },
865
- {
866
- "name": "Tagalog",
867
- "bmp": "\u1700-\u1715\u171F"
868
- },
869
- {
870
- "name": "Tagbanwa",
871
- "bmp": "\u1760-\u176C\u176E-\u1770\u1772\u1773"
872
- },
873
- {
874
- "name": "Tai_Le",
875
- "bmp": "\u1950-\u196D\u1970-\u1974"
876
- },
877
- {
878
- "name": "Tai_Tham",
879
- "bmp": "\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD"
880
- },
881
- {
882
- "name": "Tai_Viet",
883
- "bmp": "\uAA80-\uAAC2\uAADB-\uAADF"
884
- },
885
- {
886
- "name": "Takri",
887
- "astral": "\uD805[\uDE80-\uDEB9\uDEC0-\uDEC9]"
888
- },
889
- {
890
- "name": "Tamil",
891
- "bmp": "\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA",
892
- "astral": "\uD807[\uDFC0-\uDFF1\uDFFF]"
893
- },
894
- {
895
- "name": "Tangsa",
896
- "astral": "\uD81A[\uDE70-\uDEBE\uDEC0-\uDEC9]"
897
- },
898
- {
899
- "name": "Tangut",
900
- "astral": "\u{16FE0}|[\uD81C-\uD820][\uDC00-\uDFFF]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEFF]|\uD823[\uDD00-\uDD08]"
901
- },
902
- {
903
- "name": "Telugu",
904
- "bmp": "\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C77-\u0C7F"
905
- },
906
- {
907
- "name": "Thaana",
908
- "bmp": "\u0780-\u07B1"
909
- },
910
- {
911
- "name": "Thai",
912
- "bmp": "\u0E01-\u0E3A\u0E40-\u0E5B"
913
- },
914
- {
915
- "name": "Tibetan",
916
- "bmp": "\u0F00-\u0F47\u0F49-\u0F6C\u0F71-\u0F97\u0F99-\u0FBC\u0FBE-\u0FCC\u0FCE-\u0FD4\u0FD9\u0FDA"
917
- },
918
- {
919
- "name": "Tifinagh",
920
- "bmp": "\u2D30-\u2D67\u2D6F\u2D70\u2D7F"
921
- },
922
- {
923
- "name": "Tirhuta",
924
- "astral": "\uD805[\uDC80-\uDCC7\uDCD0-\uDCD9]"
925
- },
926
- {
927
- "name": "Toto",
928
- "astral": "\uD838[\uDE90-\uDEAE]"
929
- },
930
- {
931
- "name": "Ugaritic",
932
- "astral": "\uD800[\uDF80-\uDF9D\uDF9F]"
933
- },
934
- {
935
- "name": "Vai",
936
- "bmp": "\uA500-\uA62B"
937
- },
938
- {
939
- "name": "Vithkuqi",
940
- "astral": "\uD801[\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC]"
941
- },
942
- {
943
- "name": "Wancho",
944
- "astral": "\uD838[\uDEC0-\uDEF9\uDEFF]"
945
- },
946
- {
947
- "name": "Warang_Citi",
948
- "astral": "\uD806[\uDCA0-\uDCF2\uDCFF]"
949
- },
950
- {
951
- "name": "Yezidi",
952
- "astral": "\uD803[\uDE80-\uDEA9\uDEAB-\uDEAD\uDEB0\uDEB1]"
953
- },
954
- {
955
- "name": "Yi",
956
- "bmp": "\uA000-\uA48C\uA490-\uA4C6"
957
- },
958
- {
959
- "name": "Zanabazar_Square",
960
- "astral": "\uD806[\uDE00-\uDE47]"
961
- }
962
- ];
963
- }
964
- });
965
-
966
- // ../../../node_modules/.pnpm/flat@6.0.1/node_modules/flat/index.js
967
- function isBuffer(obj) {
968
- return obj && obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
969
- }
970
- function keyIdentity(key) {
971
- return key;
972
- }
973
- function flatten(target, opts) {
974
- opts = opts || {};
975
- const delimiter = opts.delimiter || ".";
976
- const maxDepth = opts.maxDepth;
977
- const transformKey = opts.transformKey || keyIdentity;
978
- const output = {};
979
- function step(object, prev, currentDepth) {
980
- currentDepth = currentDepth || 1;
981
- Object.keys(object).forEach(function(key) {
982
- const value = object[key];
983
- const isarray = opts.safe && Array.isArray(value);
984
- const type = Object.prototype.toString.call(value);
985
- const isbuffer = isBuffer(value);
986
- const isobject = type === "[object Object]" || type === "[object Array]";
987
- const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key);
988
- if (!isarray && !isbuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) {
989
- return step(value, newKey, currentDepth + 1);
990
- }
991
- output[newKey] = value;
992
- });
993
- }
994
- step(target);
995
- return output;
996
- }
997
- function unflatten(target, opts) {
998
- opts = opts || {};
999
- const delimiter = opts.delimiter || ".";
1000
- const overwrite = opts.overwrite || false;
1001
- const transformKey = opts.transformKey || keyIdentity;
1002
- const result = {};
1003
- const isbuffer = isBuffer(target);
1004
- if (isbuffer || Object.prototype.toString.call(target) !== "[object Object]") {
1005
- return target;
1006
- }
1007
- function getkey(key) {
1008
- const parsedKey = Number(key);
1009
- return isNaN(parsedKey) || key.indexOf(".") !== -1 || opts.object ? key : parsedKey;
1010
- }
1011
- function addKeys(keyPrefix, recipient, target2) {
1012
- return Object.keys(target2).reduce(function(result2, key) {
1013
- result2[keyPrefix + delimiter + key] = target2[key];
1014
- return result2;
1015
- }, recipient);
1016
- }
1017
- function isEmpty(val) {
1018
- const type = Object.prototype.toString.call(val);
1019
- const isArray2 = type === "[object Array]";
1020
- const isObject2 = type === "[object Object]";
1021
- if (!val) {
1022
- return true;
1023
- } else if (isArray2) {
1024
- return !val.length;
1025
- } else if (isObject2) {
1026
- return !Object.keys(val).length;
1027
- }
1028
- }
1029
- target = Object.keys(target).reduce(function(result2, key) {
1030
- const type = Object.prototype.toString.call(target[key]);
1031
- const isObject2 = type === "[object Object]" || type === "[object Array]";
1032
- if (!isObject2 || isEmpty(target[key])) {
1033
- result2[key] = target[key];
1034
- return result2;
1035
- } else {
1036
- return addKeys(
1037
- key,
1038
- result2,
1039
- flatten(target[key], opts)
1040
- );
1041
- }
1042
- }, {});
1043
- Object.keys(target).forEach(function(key) {
1044
- const split = key.split(delimiter).map(transformKey);
1045
- let key1 = getkey(split.shift());
1046
- let key2 = getkey(split[0]);
1047
- let recipient = result;
1048
- while (key2 !== void 0) {
1049
- if (key1 === "__proto__") {
1050
- return;
1051
- }
1052
- const type = Object.prototype.toString.call(recipient[key1]);
1053
- const isobject = type === "[object Object]" || type === "[object Array]";
1054
- if (!overwrite && !isobject && typeof recipient[key1] !== "undefined") {
1055
- return;
1056
- }
1057
- if (overwrite && !isobject || !overwrite && recipient[key1] == null) {
1058
- recipient[key1] = typeof key2 === "number" && !opts.object ? [] : {};
1059
- }
1060
- recipient = recipient[key1];
1061
- if (split.length > 0) {
1062
- key1 = getkey(split.shift());
1063
- key2 = getkey(split[0]);
1064
- }
1065
- }
1066
- recipient[key1] = unflatten(target[key], opts);
1067
- });
1068
- return result;
1069
- }
1070
-
1071
- // src/parser/lib/sort-search-param.ts
1072
- var sortSearchParams = (params) => new URLSearchParams(
1073
- Array.from(params.entries()).sort((a, b) => {
1074
- const x = `${a[0]}${a[1]}`;
1075
- const y = `${b[0]}${b[1]}`;
1076
- return x > y ? 1 : -1;
1077
- })
1078
- );
1079
-
1080
- // src/parser/lib/encode-object.ts
1081
- var encodeObject = (obj) => {
1082
- const sortedEntries = Object.entries(flatten(obj)).sort(([a], [b]) => a.length - b.length);
1083
- const bodyParams = new URLSearchParams();
1084
- sortedEntries.forEach(([key, value]) => {
1085
- bodyParams.append(key, String(value));
1086
- });
1087
- return sortSearchParams(bodyParams).toString();
1088
- };
1089
-
1090
- // src/parser/lib/is-object.ts
1091
- var isObject = (v) => typeof v === "object" && !Array.isArray(v) && v !== null;
1092
-
1093
- // src/parser/lib/find-last-index.ts
1094
- function findLastIndex(array, predicate) {
1095
- let l = array.length;
1096
- while (l--) {
1097
- if (predicate(array[l], l, array)) return l;
1098
- }
1099
- return -1;
1100
- }
1101
-
1102
- // src/parser/lib/is-not-null.ts
1103
- var isNotNull = (i) => i !== null;
1104
-
1105
- // ../../../node_modules/.pnpm/fast-equals@5.2.2/node_modules/fast-equals/dist/esm/index.mjs
1106
- var getOwnPropertyNames = Object.getOwnPropertyNames;
1107
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
1108
- var hasOwnProperty = Object.prototype.hasOwnProperty;
1109
- function combineComparators(comparatorA, comparatorB) {
1110
- return function isEqual(a, b, state) {
1111
- return comparatorA(a, b, state) && comparatorB(a, b, state);
1112
- };
1113
- }
1114
- function createIsCircular(areItemsEqual) {
1115
- return function isCircular(a, b, state) {
1116
- if (!a || !b || typeof a !== "object" || typeof b !== "object") {
1117
- return areItemsEqual(a, b, state);
1118
- }
1119
- var cache = state.cache;
1120
- var cachedA = cache.get(a);
1121
- var cachedB = cache.get(b);
1122
- if (cachedA && cachedB) {
1123
- return cachedA === b && cachedB === a;
1124
- }
1125
- cache.set(a, b);
1126
- cache.set(b, a);
1127
- var result = areItemsEqual(a, b, state);
1128
- cache.delete(a);
1129
- cache.delete(b);
1130
- return result;
1131
- };
1132
- }
1133
- function getStrictProperties(object) {
1134
- return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
1135
- }
1136
- var hasOwn = Object.hasOwn || (function(object, property) {
1137
- return hasOwnProperty.call(object, property);
1138
- });
1139
- function sameValueZeroEqual(a, b) {
1140
- return a === b || !a && !b && a !== a && b !== b;
1141
- }
1142
- var PREACT_VNODE = "__v";
1143
- var PREACT_OWNER = "__o";
1144
- var REACT_OWNER = "_owner";
1145
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
1146
- var keys = Object.keys;
1147
- function areArraysEqual(a, b, state) {
1148
- var index = a.length;
1149
- if (b.length !== index) {
1150
- return false;
1151
- }
1152
- while (index-- > 0) {
1153
- if (!state.equals(a[index], b[index], index, index, a, b, state)) {
1154
- return false;
1155
- }
1156
- }
1157
- return true;
1158
- }
1159
- function areDatesEqual(a, b) {
1160
- return sameValueZeroEqual(a.getTime(), b.getTime());
1161
- }
1162
- function areErrorsEqual(a, b) {
1163
- return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;
1164
- }
1165
- function areFunctionsEqual(a, b) {
1166
- return a === b;
1167
- }
1168
- function areMapsEqual(a, b, state) {
1169
- var size = a.size;
1170
- if (size !== b.size) {
1171
- return false;
1172
- }
1173
- if (!size) {
1174
- return true;
1175
- }
1176
- var matchedIndices = new Array(size);
1177
- var aIterable = a.entries();
1178
- var aResult;
1179
- var bResult;
1180
- var index = 0;
1181
- while (aResult = aIterable.next()) {
1182
- if (aResult.done) {
1183
- break;
1184
- }
1185
- var bIterable = b.entries();
1186
- var hasMatch = false;
1187
- var matchIndex = 0;
1188
- while (bResult = bIterable.next()) {
1189
- if (bResult.done) {
1190
- break;
1191
- }
1192
- if (matchedIndices[matchIndex]) {
1193
- matchIndex++;
1194
- continue;
1195
- }
1196
- var aEntry = aResult.value;
1197
- var bEntry = bResult.value;
1198
- if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state) && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {
1199
- hasMatch = matchedIndices[matchIndex] = true;
1200
- break;
1201
- }
1202
- matchIndex++;
1203
- }
1204
- if (!hasMatch) {
1205
- return false;
1206
- }
1207
- index++;
1208
- }
1209
- return true;
1210
- }
1211
- var areNumbersEqual = sameValueZeroEqual;
1212
- function areObjectsEqual(a, b, state) {
1213
- var properties2 = keys(a);
1214
- var index = properties2.length;
1215
- if (keys(b).length !== index) {
1216
- return false;
1217
- }
1218
- while (index-- > 0) {
1219
- if (!isPropertyEqual(a, b, state, properties2[index])) {
1220
- return false;
1221
- }
1222
- }
1223
- return true;
1224
- }
1225
- function areObjectsEqualStrict(a, b, state) {
1226
- var properties2 = getStrictProperties(a);
1227
- var index = properties2.length;
1228
- if (getStrictProperties(b).length !== index) {
1229
- return false;
1230
- }
1231
- var property;
1232
- var descriptorA;
1233
- var descriptorB;
1234
- while (index-- > 0) {
1235
- property = properties2[index];
1236
- if (!isPropertyEqual(a, b, state, property)) {
1237
- return false;
1238
- }
1239
- descriptorA = getOwnPropertyDescriptor(a, property);
1240
- descriptorB = getOwnPropertyDescriptor(b, property);
1241
- if ((descriptorA || descriptorB) && (!descriptorA || !descriptorB || descriptorA.configurable !== descriptorB.configurable || descriptorA.enumerable !== descriptorB.enumerable || descriptorA.writable !== descriptorB.writable)) {
1242
- return false;
1243
- }
1244
- }
1245
- return true;
1246
- }
1247
- function arePrimitiveWrappersEqual(a, b) {
1248
- return sameValueZeroEqual(a.valueOf(), b.valueOf());
1249
- }
1250
- function areRegExpsEqual(a, b) {
1251
- return a.source === b.source && a.flags === b.flags;
1252
- }
1253
- function areSetsEqual(a, b, state) {
1254
- var size = a.size;
1255
- if (size !== b.size) {
1256
- return false;
1257
- }
1258
- if (!size) {
1259
- return true;
1260
- }
1261
- var matchedIndices = new Array(size);
1262
- var aIterable = a.values();
1263
- var aResult;
1264
- var bResult;
1265
- while (aResult = aIterable.next()) {
1266
- if (aResult.done) {
1267
- break;
1268
- }
1269
- var bIterable = b.values();
1270
- var hasMatch = false;
1271
- var matchIndex = 0;
1272
- while (bResult = bIterable.next()) {
1273
- if (bResult.done) {
1274
- break;
1275
- }
1276
- if (!matchedIndices[matchIndex] && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)) {
1277
- hasMatch = matchedIndices[matchIndex] = true;
1278
- break;
1279
- }
1280
- matchIndex++;
1281
- }
1282
- if (!hasMatch) {
1283
- return false;
1284
- }
1285
- }
1286
- return true;
1287
- }
1288
- function areTypedArraysEqual(a, b) {
1289
- var index = a.length;
1290
- if (b.length !== index) {
1291
- return false;
1292
- }
1293
- while (index-- > 0) {
1294
- if (a[index] !== b[index]) {
1295
- return false;
1296
- }
1297
- }
1298
- return true;
1299
- }
1300
- function areUrlsEqual(a, b) {
1301
- return a.hostname === b.hostname && a.pathname === b.pathname && a.protocol === b.protocol && a.port === b.port && a.hash === b.hash && a.username === b.username && a.password === b.password;
1302
- }
1303
- function isPropertyEqual(a, b, state, property) {
1304
- if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE) && (a.$$typeof || b.$$typeof)) {
1305
- return true;
1306
- }
1307
- return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);
1308
- }
1309
- var ARGUMENTS_TAG = "[object Arguments]";
1310
- var BOOLEAN_TAG = "[object Boolean]";
1311
- var DATE_TAG = "[object Date]";
1312
- var ERROR_TAG = "[object Error]";
1313
- var MAP_TAG = "[object Map]";
1314
- var NUMBER_TAG = "[object Number]";
1315
- var OBJECT_TAG = "[object Object]";
1316
- var REG_EXP_TAG = "[object RegExp]";
1317
- var SET_TAG = "[object Set]";
1318
- var STRING_TAG = "[object String]";
1319
- var URL_TAG = "[object URL]";
1320
- var isArray = Array.isArray;
1321
- var isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView ? ArrayBuffer.isView : null;
1322
- var assign = Object.assign;
1323
- var getTag = Object.prototype.toString.call.bind(Object.prototype.toString);
1324
- function createEqualityComparator(_a) {
1325
- var areArraysEqual2 = _a.areArraysEqual, areDatesEqual2 = _a.areDatesEqual, areErrorsEqual2 = _a.areErrorsEqual, areFunctionsEqual2 = _a.areFunctionsEqual, areMapsEqual2 = _a.areMapsEqual, areNumbersEqual2 = _a.areNumbersEqual, areObjectsEqual2 = _a.areObjectsEqual, arePrimitiveWrappersEqual2 = _a.arePrimitiveWrappersEqual, areRegExpsEqual2 = _a.areRegExpsEqual, areSetsEqual2 = _a.areSetsEqual, areTypedArraysEqual2 = _a.areTypedArraysEqual, areUrlsEqual2 = _a.areUrlsEqual;
1326
- return function comparator(a, b, state) {
1327
- if (a === b) {
1328
- return true;
1329
- }
1330
- if (a == null || b == null) {
1331
- return false;
1332
- }
1333
- var type = typeof a;
1334
- if (type !== typeof b) {
1335
- return false;
1336
- }
1337
- if (type !== "object") {
1338
- if (type === "number") {
1339
- return areNumbersEqual2(a, b, state);
1340
- }
1341
- if (type === "function") {
1342
- return areFunctionsEqual2(a, b, state);
1343
- }
1344
- return false;
1345
- }
1346
- var constructor = a.constructor;
1347
- if (constructor !== b.constructor) {
1348
- return false;
1349
- }
1350
- if (constructor === Object) {
1351
- return areObjectsEqual2(a, b, state);
1352
- }
1353
- if (isArray(a)) {
1354
- return areArraysEqual2(a, b, state);
1355
- }
1356
- if (isTypedArray != null && isTypedArray(a)) {
1357
- return areTypedArraysEqual2(a, b, state);
1358
- }
1359
- if (constructor === Date) {
1360
- return areDatesEqual2(a, b, state);
1361
- }
1362
- if (constructor === RegExp) {
1363
- return areRegExpsEqual2(a, b, state);
1364
- }
1365
- if (constructor === Map) {
1366
- return areMapsEqual2(a, b, state);
1367
- }
1368
- if (constructor === Set) {
1369
- return areSetsEqual2(a, b, state);
1370
- }
1371
- var tag = getTag(a);
1372
- if (tag === DATE_TAG) {
1373
- return areDatesEqual2(a, b, state);
1374
- }
1375
- if (tag === REG_EXP_TAG) {
1376
- return areRegExpsEqual2(a, b, state);
1377
- }
1378
- if (tag === MAP_TAG) {
1379
- return areMapsEqual2(a, b, state);
1380
- }
1381
- if (tag === SET_TAG) {
1382
- return areSetsEqual2(a, b, state);
1383
- }
1384
- if (tag === OBJECT_TAG) {
1385
- return typeof a.then !== "function" && typeof b.then !== "function" && areObjectsEqual2(a, b, state);
1386
- }
1387
- if (tag === URL_TAG) {
1388
- return areUrlsEqual2(a, b, state);
1389
- }
1390
- if (tag === ERROR_TAG) {
1391
- return areErrorsEqual2(a, b, state);
1392
- }
1393
- if (tag === ARGUMENTS_TAG) {
1394
- return areObjectsEqual2(a, b, state);
1395
- }
1396
- if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {
1397
- return arePrimitiveWrappersEqual2(a, b, state);
1398
- }
1399
- return false;
1400
- };
1401
- }
1402
- function createEqualityComparatorConfig(_a) {
1403
- var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;
1404
- var config = {
1405
- areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,
1406
- areDatesEqual,
1407
- areErrorsEqual,
1408
- areFunctionsEqual,
1409
- areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,
1410
- areNumbersEqual,
1411
- areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,
1412
- arePrimitiveWrappersEqual,
1413
- areRegExpsEqual,
1414
- areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,
1415
- areTypedArraysEqual: strict ? areObjectsEqualStrict : areTypedArraysEqual,
1416
- areUrlsEqual
1417
- };
1418
- if (createCustomConfig) {
1419
- config = assign({}, config, createCustomConfig(config));
1420
- }
1421
- if (circular) {
1422
- var areArraysEqual$1 = createIsCircular(config.areArraysEqual);
1423
- var areMapsEqual$1 = createIsCircular(config.areMapsEqual);
1424
- var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);
1425
- var areSetsEqual$1 = createIsCircular(config.areSetsEqual);
1426
- config = assign({}, config, {
1427
- areArraysEqual: areArraysEqual$1,
1428
- areMapsEqual: areMapsEqual$1,
1429
- areObjectsEqual: areObjectsEqual$1,
1430
- areSetsEqual: areSetsEqual$1
1431
- });
1432
- }
1433
- return config;
1434
- }
1435
- function createInternalEqualityComparator(compare) {
1436
- return function(a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {
1437
- return compare(a, b, state);
1438
- };
1439
- }
1440
- function createIsEqual(_a) {
1441
- var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;
1442
- if (createState) {
1443
- return function isEqual(a, b) {
1444
- var _a2 = createState(), _b = _a2.cache, cache = _b === void 0 ? circular ? /* @__PURE__ */ new WeakMap() : void 0 : _b, meta = _a2.meta;
1445
- return comparator(a, b, {
1446
- cache,
1447
- equals,
1448
- meta,
1449
- strict
1450
- });
1451
- };
1452
- }
1453
- if (circular) {
1454
- return function isEqual(a, b) {
1455
- return comparator(a, b, {
1456
- cache: /* @__PURE__ */ new WeakMap(),
1457
- equals,
1458
- meta: void 0,
1459
- strict
1460
- });
1461
- };
1462
- }
1463
- var state = {
1464
- cache: void 0,
1465
- equals,
1466
- meta: void 0,
1467
- strict
1468
- };
1469
- return function isEqual(a, b) {
1470
- return comparator(a, b, state);
1471
- };
1472
- }
1473
- var deepEqual = createCustomEqual();
1474
- var strictDeepEqual = createCustomEqual({ strict: true });
1475
- var circularDeepEqual = createCustomEqual({ circular: true });
1476
- var strictCircularDeepEqual = createCustomEqual({
1477
- circular: true,
1478
- strict: true
1479
- });
1480
- var shallowEqual = createCustomEqual({
1481
- createInternalComparator: function() {
1482
- return sameValueZeroEqual;
1483
- }
1484
- });
1485
- var strictShallowEqual = createCustomEqual({
1486
- strict: true,
1487
- createInternalComparator: function() {
1488
- return sameValueZeroEqual;
1489
- }
1490
- });
1491
- var circularShallowEqual = createCustomEqual({
1492
- circular: true,
1493
- createInternalComparator: function() {
1494
- return sameValueZeroEqual;
1495
- }
1496
- });
1497
- var strictCircularShallowEqual = createCustomEqual({
1498
- circular: true,
1499
- createInternalComparator: function() {
1500
- return sameValueZeroEqual;
1501
- },
1502
- strict: true
1503
- });
1504
- function createCustomEqual(options) {
1505
- if (options === void 0) {
1506
- options = {};
1507
- }
1508
- var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;
1509
- var config = createEqualityComparatorConfig(options);
1510
- var comparator = createEqualityComparator(config);
1511
- var equals = createCustomInternalComparator ? createCustomInternalComparator(comparator) : createInternalEqualityComparator(comparator);
1512
- return createIsEqual({ circular, comparator, createState, equals, strict });
1513
- }
1514
-
1515
- // src/parser/lib/operators.ts
1516
- var buildLikeRegex = (search) => new RegExp(`^${search.replace(/%/g, ".*")}$`);
1517
- var textSearch = (c, v) => {
1518
- const regExp = `^${v.split("&").map((v2) => v2.trim().toLowerCase()).join("|").replace(/:\*/g, ".*")}$`;
1519
- const tokens2 = c.match(/'(.*?)'/g).map((t) => t.replace(/'/g, "").toLowerCase());
1520
- return tokens2.some((t) => new RegExp(regExp).test(t));
1521
- };
1522
- var ifDateGetTime = (v) => v instanceof Date ? v.getTime() : v;
1523
- var enclose = (v, char) => {
1524
- if (!v.startsWith(char)) v = `${char}${v}`;
1525
- if (!v.endsWith(char)) v = `${v}${char}`;
1526
- return v;
1527
- };
1528
- var OPERATOR_MAP = {
1529
- eq: (c, v) => ifDateGetTime(c) === ifDateGetTime(v),
1530
- neq: (c, v) => ifDateGetTime(c) !== ifDateGetTime(v),
1531
- gt: (c, v) => c > v,
1532
- gte: (c, v) => c >= v,
1533
- lt: (c, v) => c < v,
1534
- lte: (c, v) => c <= v,
1535
- like: (c, v) => buildLikeRegex(v).test(c.toString()),
1536
- ilike: (c, v) => buildLikeRegex(v.toLowerCase()).test(c.toString().toLowerCase()),
1537
- is: (c, v) => c === v,
1538
- in: (c, v) => {
1539
- const parsedValue = v.slice(1, -1).split(",");
1540
- return parsedValue.some((i) => i === c);
1541
- },
1542
- // contains
1543
- cs: (c, v) => {
1544
- if (!Array.isArray(c)) return false;
1545
- if (!Array.isArray(v)) v = v.slice(1, -1).split(",");
1546
- return v.every((i) => c.some((colVal) => deepEqual(colVal, i)));
1547
- },
1548
- // containedBy
1549
- cd: (c, v) => {
1550
- if (!Array.isArray(c)) return false;
1551
- if (!Array.isArray(v)) v = v.slice(1, -1).split(",");
1552
- return c.every(
1553
- (i) => v.some((cmpVal) => deepEqual(cmpVal, i))
1554
- );
1555
- },
1556
- fts: textSearch,
1557
- plfts: (c, v) => buildLikeRegex(enclose(v.toLowerCase(), "%")).test(
1558
- c.toString().toLowerCase()
1559
- )
1560
- };
1561
-
1562
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/xregexp.js
1563
- var REGEX_DATA = "xregexp";
1564
- var features = {
1565
- astral: false,
1566
- namespacing: true
1567
- };
1568
- var fixed = {};
1569
- var regexCache = {};
1570
- var patternCache = {};
1571
- var tokens = [];
1572
- var defaultScope = "default";
1573
- var classScope = "class";
1574
- var nativeTokens = {
1575
- // Any native multicharacter token in default scope, or any single character
1576
- "default": /\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,
1577
- // Any native multicharacter token in character class scope, or any single character
1578
- "class": /\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/
1579
- };
1580
- var replacementToken = /\$(?:\{([^\}]+)\}|<([^>]+)>|(\d\d?|[\s\S]?))/g;
1581
- var correctExecNpcg = /()??/.exec("")[1] === void 0;
1582
- var hasFlagsProp = /x/.flags !== void 0;
1583
- function hasNativeFlag(flag) {
1584
- let isSupported = true;
1585
- try {
1586
- new RegExp("", flag);
1587
- if (flag === "y") {
1588
- const gy = /* @__PURE__ */ (() => "gy")();
1589
- const incompleteY = ".a".replace(new RegExp("a", gy), ".") === "..";
1590
- if (incompleteY) {
1591
- isSupported = false;
1592
- }
1593
- }
1594
- } catch (exception) {
1595
- isSupported = false;
1596
- }
1597
- return isSupported;
1598
- }
1599
- var hasNativeD = hasNativeFlag("d");
1600
- var hasNativeS = hasNativeFlag("s");
1601
- var hasNativeU = hasNativeFlag("u");
1602
- var hasNativeY = hasNativeFlag("y");
1603
- var registeredFlags = {
1604
- d: hasNativeD,
1605
- g: true,
1606
- i: true,
1607
- m: true,
1608
- s: hasNativeS,
1609
- u: hasNativeU,
1610
- y: hasNativeY
1611
- };
1612
- var nonnativeFlags = hasNativeS ? /[^dgimsuy]+/g : /[^dgimuy]+/g;
1613
- function augment(regex, captureNames, xSource, xFlags, isInternalOnly) {
1614
- regex[REGEX_DATA] = {
1615
- captureNames
1616
- };
1617
- if (isInternalOnly) {
1618
- return regex;
1619
- }
1620
- if (regex.__proto__) {
1621
- regex.__proto__ = XRegExp.prototype;
1622
- } else {
1623
- for (const p in XRegExp.prototype) {
1624
- regex[p] = XRegExp.prototype[p];
1625
- }
1626
- }
1627
- regex[REGEX_DATA].source = xSource;
1628
- regex[REGEX_DATA].flags = xFlags ? xFlags.split("").sort().join("") : xFlags;
1629
- return regex;
1630
- }
1631
- function clipDuplicates(str) {
1632
- return str.replace(/([\s\S])(?=[\s\S]*\1)/g, "");
1633
- }
1634
- function copyRegex(regex, options) {
1635
- if (!XRegExp.isRegExp(regex)) {
1636
- throw new TypeError("Type RegExp expected");
1637
- }
1638
- const xData = regex[REGEX_DATA] || {};
1639
- let flags = getNativeFlags(regex);
1640
- let flagsToAdd = "";
1641
- let flagsToRemove = "";
1642
- let xregexpSource = null;
1643
- let xregexpFlags = null;
1644
- options = options || {};
1645
- if (options.removeG) {
1646
- flagsToRemove += "g";
1647
- }
1648
- if (options.removeY) {
1649
- flagsToRemove += "y";
1650
- }
1651
- if (flagsToRemove) {
1652
- flags = flags.replace(new RegExp(`[${flagsToRemove}]+`, "g"), "");
1653
- }
1654
- if (options.addG) {
1655
- flagsToAdd += "g";
1656
- }
1657
- if (options.addY) {
1658
- flagsToAdd += "y";
1659
- }
1660
- if (flagsToAdd) {
1661
- flags = clipDuplicates(flags + flagsToAdd);
1662
- }
1663
- if (!options.isInternalOnly) {
1664
- if (xData.source !== void 0) {
1665
- xregexpSource = xData.source;
1666
- }
1667
- if (xData.flags != null) {
1668
- xregexpFlags = flagsToAdd ? clipDuplicates(xData.flags + flagsToAdd) : xData.flags;
1669
- }
1670
- }
1671
- regex = augment(
1672
- new RegExp(options.source || regex.source, flags),
1673
- hasNamedCapture(regex) ? xData.captureNames.slice(0) : null,
1674
- xregexpSource,
1675
- xregexpFlags,
1676
- options.isInternalOnly
1677
- );
1678
- return regex;
1679
- }
1680
- function dec(hex2) {
1681
- return parseInt(hex2, 16);
1682
- }
1683
- function getContextualTokenSeparator(match, scope, flags) {
1684
- const matchEndPos = match.index + match[0].length;
1685
- const precedingChar = match.input[match.index - 1];
1686
- const followingChar = match.input[matchEndPos];
1687
- if (
1688
- // No need to separate tokens if at the beginning or end of a group, before or after a
1689
- // group, or before or after a `|`
1690
- /^[()|]$/.test(precedingChar) || /^[()|]$/.test(followingChar) || // No need to separate tokens if at the beginning or end of the pattern
1691
- match.index === 0 || matchEndPos === match.input.length || // No need to separate tokens if at the beginning of a noncapturing group or lookaround.
1692
- // Looks only at the last 4 chars (at most) for perf when constructing long regexes.
1693
- /\(\?(?:[:=!]|<[=!])$/.test(match.input.substring(match.index - 4, match.index)) || // Avoid separating tokens when the following token is a quantifier
1694
- isQuantifierNext(match.input, matchEndPos, flags)
1695
- ) {
1696
- return "";
1697
- }
1698
- return "(?:)";
1699
- }
1700
- function getNativeFlags(regex) {
1701
- return hasFlagsProp ? regex.flags : (
1702
- // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or concatenation
1703
- // with an empty string) allows this to continue working predictably when
1704
- // `XRegExp.proptotype.toString` is overridden
1705
- /\/([a-z]*)$/i.exec(RegExp.prototype.toString.call(regex))[1]
1706
- );
1707
- }
1708
- function hasNamedCapture(regex) {
1709
- return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);
1710
- }
1711
- function hex(dec2) {
1712
- return parseInt(dec2, 10).toString(16);
1713
- }
1714
- function isQuantifierNext(pattern, pos, flags) {
1715
- const inlineCommentPattern = "\\(\\?#[^)]*\\)";
1716
- const lineCommentPattern = "#[^#\\n]*";
1717
- const quantifierPattern = "[?*+]|{\\d+(?:,\\d*)?}";
1718
- const regex = flags.includes("x") ? (
1719
- // Ignore any leading whitespace, line comments, and inline comments
1720
- new RegExp(`^(?:\\s|${lineCommentPattern}|${inlineCommentPattern})*(?:${quantifierPattern})`)
1721
- ) : (
1722
- // Ignore any leading inline comments
1723
- new RegExp(`^(?:${inlineCommentPattern})*(?:${quantifierPattern})`)
1724
- );
1725
- return regex.test(pattern.slice(pos));
1726
- }
1727
- function isType(value, type) {
1728
- return Object.prototype.toString.call(value) === `[object ${type}]`;
1729
- }
1730
- function nullThrows(value) {
1731
- if (value == null) {
1732
- throw new TypeError("Cannot convert null or undefined to object");
1733
- }
1734
- return value;
1735
- }
1736
- function pad4(str) {
1737
- while (str.length < 4) {
1738
- str = `0${str}`;
1739
- }
1740
- return str;
1741
- }
1742
- function prepareFlags(pattern, flags) {
1743
- if (clipDuplicates(flags) !== flags) {
1744
- throw new SyntaxError(`Invalid duplicate regex flag ${flags}`);
1745
- }
1746
- pattern = pattern.replace(/^\(\?([\w$]+)\)/, ($0, $1) => {
1747
- if (/[dgy]/.test($1)) {
1748
- throw new SyntaxError(`Cannot use flags dgy in mode modifier ${$0}`);
1749
- }
1750
- flags = clipDuplicates(flags + $1);
1751
- return "";
1752
- });
1753
- for (const flag of flags) {
1754
- if (!registeredFlags[flag]) {
1755
- throw new SyntaxError(`Unknown regex flag ${flag}`);
1756
- }
1757
- }
1758
- return {
1759
- pattern,
1760
- flags
1761
- };
1762
- }
1763
- function prepareOptions(value) {
1764
- const options = {};
1765
- if (isType(value, "String")) {
1766
- XRegExp.forEach(value, /[^\s,]+/, (match) => {
1767
- options[match] = true;
1768
- });
1769
- return options;
1770
- }
1771
- return value;
1772
- }
1773
- function registerFlag(flag) {
1774
- if (!/^[\w$]$/.test(flag)) {
1775
- throw new Error("Flag must be a single character A-Za-z0-9_$");
1776
- }
1777
- registeredFlags[flag] = true;
1778
- }
1779
- function runTokens(pattern, flags, pos, scope, context) {
1780
- let i = tokens.length;
1781
- const leadChar = pattern[pos];
1782
- let result = null;
1783
- let match;
1784
- let t;
1785
- while (i--) {
1786
- t = tokens[i];
1787
- if (t.leadChar && t.leadChar !== leadChar || t.scope !== scope && t.scope !== "all" || t.flag && !flags.includes(t.flag)) {
1788
- continue;
1789
- }
1790
- match = XRegExp.exec(pattern, t.regex, pos, "sticky");
1791
- if (match) {
1792
- result = {
1793
- matchLength: match[0].length,
1794
- output: t.handler.call(context, match, scope, flags),
1795
- reparse: t.reparse
1796
- };
1797
- break;
1798
- }
1799
- }
1800
- return result;
1801
- }
1802
- function setAstral(on) {
1803
- features.astral = on;
1804
- }
1805
- function setNamespacing(on) {
1806
- features.namespacing = on;
1807
- }
1808
- function XRegExp(pattern, flags) {
1809
- if (XRegExp.isRegExp(pattern)) {
1810
- if (flags !== void 0) {
1811
- throw new TypeError("Cannot supply flags when copying a RegExp");
1812
- }
1813
- return copyRegex(pattern);
1814
- }
1815
- pattern = pattern === void 0 ? "" : String(pattern);
1816
- flags = flags === void 0 ? "" : String(flags);
1817
- if (XRegExp.isInstalled("astral") && !flags.includes("A")) {
1818
- flags += "A";
1819
- }
1820
- if (!patternCache[pattern]) {
1821
- patternCache[pattern] = {};
1822
- }
1823
- if (!patternCache[pattern][flags]) {
1824
- const context = {
1825
- hasNamedCapture: false,
1826
- captureNames: []
1827
- };
1828
- let scope = defaultScope;
1829
- let output = "";
1830
- let pos = 0;
1831
- let result;
1832
- const applied = prepareFlags(pattern, flags);
1833
- let appliedPattern = applied.pattern;
1834
- const appliedFlags = applied.flags;
1835
- while (pos < appliedPattern.length) {
1836
- do {
1837
- result = runTokens(appliedPattern, appliedFlags, pos, scope, context);
1838
- if (result && result.reparse) {
1839
- appliedPattern = appliedPattern.slice(0, pos) + result.output + appliedPattern.slice(pos + result.matchLength);
1840
- }
1841
- } while (result && result.reparse);
1842
- if (result) {
1843
- output += result.output;
1844
- pos += result.matchLength || 1;
1845
- } else {
1846
- const [token] = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, "sticky");
1847
- output += token;
1848
- pos += token.length;
1849
- if (token === "[" && scope === defaultScope) {
1850
- scope = classScope;
1851
- } else if (token === "]" && scope === classScope) {
1852
- scope = defaultScope;
1853
- }
1854
- }
1855
- }
1856
- patternCache[pattern][flags] = {
1857
- // Use basic cleanup to collapse repeated empty groups like `(?:)(?:)` to `(?:)`. Empty
1858
- // groups are sometimes inserted during regex transpilation in order to keep tokens
1859
- // separated. However, more than one empty group in a row is never needed.
1860
- pattern: output.replace(/(?:\(\?:\))+/g, "(?:)"),
1861
- // Strip all but native flags
1862
- flags: appliedFlags.replace(nonnativeFlags, ""),
1863
- // `context.captureNames` has an item for each capturing group, even if unnamed
1864
- captures: context.hasNamedCapture ? context.captureNames : null
1865
- };
1866
- }
1867
- const generated = patternCache[pattern][flags];
1868
- return augment(
1869
- new RegExp(generated.pattern, generated.flags),
1870
- generated.captures,
1871
- pattern,
1872
- flags
1873
- );
1874
- }
1875
- XRegExp.prototype = new RegExp();
1876
- XRegExp.version = "5.1.1";
1877
- XRegExp._clipDuplicates = clipDuplicates;
1878
- XRegExp._hasNativeFlag = hasNativeFlag;
1879
- XRegExp._dec = dec;
1880
- XRegExp._hex = hex;
1881
- XRegExp._pad4 = pad4;
1882
- XRegExp.addToken = (regex, handler, options) => {
1883
- options = options || {};
1884
- let { optionalFlags } = options;
1885
- if (options.flag) {
1886
- registerFlag(options.flag);
1887
- }
1888
- if (optionalFlags) {
1889
- optionalFlags = optionalFlags.split("");
1890
- for (const flag of optionalFlags) {
1891
- registerFlag(flag);
1892
- }
1893
- }
1894
- tokens.push({
1895
- regex: copyRegex(regex, {
1896
- addG: true,
1897
- addY: hasNativeY,
1898
- isInternalOnly: true
1899
- }),
1900
- handler,
1901
- scope: options.scope || defaultScope,
1902
- flag: options.flag,
1903
- reparse: options.reparse,
1904
- leadChar: options.leadChar
1905
- });
1906
- XRegExp.cache.flush("patterns");
1907
- };
1908
- XRegExp.cache = (pattern, flags) => {
1909
- if (!regexCache[pattern]) {
1910
- regexCache[pattern] = {};
1911
- }
1912
- return regexCache[pattern][flags] || (regexCache[pattern][flags] = XRegExp(pattern, flags));
1913
- };
1914
- XRegExp.cache.flush = (cacheName) => {
1915
- if (cacheName === "patterns") {
1916
- patternCache = {};
1917
- } else {
1918
- regexCache = {};
1919
- }
1920
- };
1921
- XRegExp.escape = (str) => String(nullThrows(str)).replace(/[\\\[\]{}()*+?.^$|]/g, "\\$&").replace(/[\s#\-,]/g, (match) => `\\u${pad4(hex(match.charCodeAt(0)))}`);
1922
- XRegExp.exec = (str, regex, pos, sticky) => {
1923
- let cacheKey = "g";
1924
- let addY = false;
1925
- let fakeY = false;
1926
- let match;
1927
- addY = hasNativeY && !!(sticky || regex.sticky && sticky !== false);
1928
- if (addY) {
1929
- cacheKey += "y";
1930
- } else if (sticky) {
1931
- fakeY = true;
1932
- cacheKey += "FakeY";
1933
- }
1934
- regex[REGEX_DATA] = regex[REGEX_DATA] || {};
1935
- const r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {
1936
- addG: true,
1937
- addY,
1938
- source: fakeY ? `${regex.source}|()` : void 0,
1939
- removeY: sticky === false,
1940
- isInternalOnly: true
1941
- }));
1942
- pos = pos || 0;
1943
- r2.lastIndex = pos;
1944
- match = fixed.exec.call(r2, str);
1945
- if (fakeY && match && match.pop() === "") {
1946
- match = null;
1947
- }
1948
- if (regex.global) {
1949
- regex.lastIndex = match ? r2.lastIndex : 0;
1950
- }
1951
- return match;
1952
- };
1953
- XRegExp.forEach = (str, regex, callback) => {
1954
- let pos = 0;
1955
- let i = -1;
1956
- let match;
1957
- while (match = XRegExp.exec(str, regex, pos)) {
1958
- callback(match, ++i, str, regex);
1959
- pos = match.index + (match[0].length || 1);
1960
- }
1961
- };
1962
- XRegExp.globalize = (regex) => copyRegex(regex, { addG: true });
1963
- XRegExp.install = (options) => {
1964
- options = prepareOptions(options);
1965
- if (!features.astral && options.astral) {
1966
- setAstral(true);
1967
- }
1968
- if (!features.namespacing && options.namespacing) {
1969
- setNamespacing(true);
1970
- }
1971
- };
1972
- XRegExp.isInstalled = (feature) => !!features[feature];
1973
- XRegExp.isRegExp = (value) => Object.prototype.toString.call(value) === "[object RegExp]";
1974
- XRegExp.match = (str, regex, scope) => {
1975
- const global = regex.global && scope !== "one" || scope === "all";
1976
- const cacheKey = (global ? "g" : "") + (regex.sticky ? "y" : "") || "noGY";
1977
- regex[REGEX_DATA] = regex[REGEX_DATA] || {};
1978
- const r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {
1979
- addG: !!global,
1980
- removeG: scope === "one",
1981
- isInternalOnly: true
1982
- }));
1983
- const result = String(nullThrows(str)).match(r2);
1984
- if (regex.global) {
1985
- regex.lastIndex = scope === "one" && result ? (
1986
- // Can't use `r2.lastIndex` since `r2` is nonglobal in this case
1987
- result.index + result[0].length
1988
- ) : 0;
1989
- }
1990
- return global ? result || [] : result && result[0];
1991
- };
1992
- XRegExp.matchChain = (str, chain) => (function recurseChain(values, level) {
1993
- const item = chain[level].regex ? chain[level] : { regex: chain[level] };
1994
- const matches = [];
1995
- function addMatch(match) {
1996
- if (item.backref) {
1997
- const ERR_UNDEFINED_GROUP = `Backreference to undefined group: ${item.backref}`;
1998
- const isNamedBackref = isNaN(item.backref);
1999
- if (isNamedBackref && XRegExp.isInstalled("namespacing")) {
2000
- if (!(match.groups && item.backref in match.groups)) {
2001
- throw new ReferenceError(ERR_UNDEFINED_GROUP);
2002
- }
2003
- } else if (!match.hasOwnProperty(item.backref)) {
2004
- throw new ReferenceError(ERR_UNDEFINED_GROUP);
2005
- }
2006
- const backrefValue = isNamedBackref && XRegExp.isInstalled("namespacing") ? match.groups[item.backref] : match[item.backref];
2007
- matches.push(backrefValue || "");
2008
- } else {
2009
- matches.push(match[0]);
2010
- }
2011
- }
2012
- for (const value of values) {
2013
- XRegExp.forEach(value, item.regex, addMatch);
2014
- }
2015
- return level === chain.length - 1 || !matches.length ? matches : recurseChain(matches, level + 1);
2016
- })([str], 0);
2017
- XRegExp.replace = (str, search, replacement, scope) => {
2018
- const isRegex = XRegExp.isRegExp(search);
2019
- const global = search.global && scope !== "one" || scope === "all";
2020
- const cacheKey = (global ? "g" : "") + (search.sticky ? "y" : "") || "noGY";
2021
- let s2 = search;
2022
- if (isRegex) {
2023
- search[REGEX_DATA] = search[REGEX_DATA] || {};
2024
- s2 = search[REGEX_DATA][cacheKey] || (search[REGEX_DATA][cacheKey] = copyRegex(search, {
2025
- addG: !!global,
2026
- removeG: scope === "one",
2027
- isInternalOnly: true
2028
- }));
2029
- } else if (global) {
2030
- s2 = new RegExp(XRegExp.escape(String(search)), "g");
2031
- }
2032
- const result = fixed.replace.call(nullThrows(str), s2, replacement);
2033
- if (isRegex && search.global) {
2034
- search.lastIndex = 0;
2035
- }
2036
- return result;
2037
- };
2038
- XRegExp.replaceEach = (str, replacements) => {
2039
- for (const r of replacements) {
2040
- str = XRegExp.replace(str, r[0], r[1], r[2]);
2041
- }
2042
- return str;
2043
- };
2044
- XRegExp.split = (str, separator, limit) => fixed.split.call(nullThrows(str), separator, limit);
2045
- XRegExp.test = (str, regex, pos, sticky) => !!XRegExp.exec(str, regex, pos, sticky);
2046
- XRegExp.uninstall = (options) => {
2047
- options = prepareOptions(options);
2048
- if (features.astral && options.astral) {
2049
- setAstral(false);
2050
- }
2051
- if (features.namespacing && options.namespacing) {
2052
- setNamespacing(false);
2053
- }
2054
- };
2055
- XRegExp.union = (patterns, flags, options) => {
2056
- options = options || {};
2057
- const conjunction = options.conjunction || "or";
2058
- let numCaptures = 0;
2059
- let numPriorCaptures;
2060
- let captureNames;
2061
- function rewrite(match, paren, backref) {
2062
- const name = captureNames[numCaptures - numPriorCaptures];
2063
- if (paren) {
2064
- ++numCaptures;
2065
- if (name) {
2066
- return `(?<${name}>`;
2067
- }
2068
- } else if (backref) {
2069
- return `\\${+backref + numPriorCaptures}`;
2070
- }
2071
- return match;
2072
- }
2073
- if (!(isType(patterns, "Array") && patterns.length)) {
2074
- throw new TypeError("Must provide a nonempty array of patterns to merge");
2075
- }
2076
- const parts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g;
2077
- const output = [];
2078
- for (const pattern of patterns) {
2079
- if (XRegExp.isRegExp(pattern)) {
2080
- numPriorCaptures = numCaptures;
2081
- captureNames = pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames || [];
2082
- output.push(XRegExp(pattern.source).source.replace(parts, rewrite));
2083
- } else {
2084
- output.push(XRegExp.escape(pattern));
2085
- }
2086
- }
2087
- const separator = conjunction === "none" ? "" : "|";
2088
- return XRegExp(output.join(separator), flags);
2089
- };
2090
- fixed.exec = function(str) {
2091
- const origLastIndex = this.lastIndex;
2092
- const match = RegExp.prototype.exec.apply(this, arguments);
2093
- if (match) {
2094
- if (!correctExecNpcg && match.length > 1 && match.includes("")) {
2095
- const r2 = copyRegex(this, {
2096
- removeG: true,
2097
- isInternalOnly: true
2098
- });
2099
- String(str).slice(match.index).replace(r2, (...args) => {
2100
- const len = args.length;
2101
- for (let i = 1; i < len - 2; ++i) {
2102
- if (args[i] === void 0) {
2103
- match[i] = void 0;
2104
- }
2105
- }
2106
- });
2107
- }
2108
- if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {
2109
- let groupsObject = match;
2110
- if (XRegExp.isInstalled("namespacing")) {
2111
- match.groups = /* @__PURE__ */ Object.create(null);
2112
- groupsObject = match.groups;
2113
- }
2114
- for (let i = 1; i < match.length; ++i) {
2115
- const name = this[REGEX_DATA].captureNames[i - 1];
2116
- if (name) {
2117
- groupsObject[name] = match[i];
2118
- }
2119
- }
2120
- } else if (!match.groups && XRegExp.isInstalled("namespacing")) {
2121
- match.groups = void 0;
2122
- }
2123
- if (this.global && !match[0].length && this.lastIndex > match.index) {
2124
- this.lastIndex = match.index;
2125
- }
2126
- }
2127
- if (!this.global) {
2128
- this.lastIndex = origLastIndex;
2129
- }
2130
- return match;
2131
- };
2132
- fixed.test = function(str) {
2133
- return !!fixed.exec.call(this, str);
2134
- };
2135
- fixed.match = function(regex) {
2136
- if (!XRegExp.isRegExp(regex)) {
2137
- regex = new RegExp(regex);
2138
- } else if (regex.global) {
2139
- const result = String.prototype.match.apply(this, arguments);
2140
- regex.lastIndex = 0;
2141
- return result;
2142
- }
2143
- return fixed.exec.call(regex, nullThrows(this));
2144
- };
2145
- fixed.replace = function(search, replacement) {
2146
- const isRegex = XRegExp.isRegExp(search);
2147
- let origLastIndex;
2148
- let captureNames;
2149
- let result;
2150
- if (isRegex) {
2151
- if (search[REGEX_DATA]) {
2152
- ({ captureNames } = search[REGEX_DATA]);
2153
- }
2154
- origLastIndex = search.lastIndex;
2155
- } else {
2156
- search += "";
2157
- }
2158
- if (isType(replacement, "Function")) {
2159
- result = String(this).replace(search, (...args) => {
2160
- if (captureNames) {
2161
- let groupsObject;
2162
- if (XRegExp.isInstalled("namespacing")) {
2163
- groupsObject = /* @__PURE__ */ Object.create(null);
2164
- args.push(groupsObject);
2165
- } else {
2166
- args[0] = new String(args[0]);
2167
- [groupsObject] = args;
2168
- }
2169
- for (let i = 0; i < captureNames.length; ++i) {
2170
- if (captureNames[i]) {
2171
- groupsObject[captureNames[i]] = args[i + 1];
2172
- }
2173
- }
2174
- }
2175
- return replacement(...args);
2176
- });
2177
- } else {
2178
- result = String(nullThrows(this)).replace(search, (...args) => {
2179
- return String(replacement).replace(replacementToken, replacer);
2180
- function replacer($0, bracketed, angled, dollarToken) {
2181
- bracketed = bracketed || angled;
2182
- const numNonCaptureArgs = isType(args[args.length - 1], "Object") ? 4 : 3;
2183
- const numCaptures = args.length - numNonCaptureArgs;
2184
- if (bracketed) {
2185
- if (/^\d+$/.test(bracketed)) {
2186
- const n2 = +bracketed;
2187
- if (n2 <= numCaptures) {
2188
- return args[n2] || "";
2189
- }
2190
- }
2191
- const n = captureNames ? captureNames.indexOf(bracketed) : -1;
2192
- if (n < 0) {
2193
- throw new SyntaxError(`Backreference to undefined group ${$0}`);
2194
- }
2195
- return args[n + 1] || "";
2196
- }
2197
- if (dollarToken === "" || dollarToken === " ") {
2198
- throw new SyntaxError(`Invalid token ${$0}`);
2199
- }
2200
- if (dollarToken === "&" || +dollarToken === 0) {
2201
- return args[0];
2202
- }
2203
- if (dollarToken === "$") {
2204
- return "$";
2205
- }
2206
- if (dollarToken === "`") {
2207
- return args[args.length - 1].slice(0, args[args.length - 2]);
2208
- }
2209
- if (dollarToken === "'") {
2210
- return args[args.length - 1].slice(args[args.length - 2] + args[0].length);
2211
- }
2212
- dollarToken = +dollarToken;
2213
- if (!isNaN(dollarToken)) {
2214
- if (dollarToken > numCaptures) {
2215
- throw new SyntaxError(`Backreference to undefined group ${$0}`);
2216
- }
2217
- return args[dollarToken] || "";
2218
- }
2219
- throw new SyntaxError(`Invalid token ${$0}`);
2220
- }
2221
- });
2222
- }
2223
- if (isRegex) {
2224
- if (search.global) {
2225
- search.lastIndex = 0;
2226
- } else {
2227
- search.lastIndex = origLastIndex;
2228
- }
2229
- }
2230
- return result;
2231
- };
2232
- fixed.split = function(separator, limit) {
2233
- if (!XRegExp.isRegExp(separator)) {
2234
- return String.prototype.split.apply(this, arguments);
2235
- }
2236
- const str = String(this);
2237
- const output = [];
2238
- const origLastIndex = separator.lastIndex;
2239
- let lastLastIndex = 0;
2240
- let lastLength;
2241
- limit = (limit === void 0 ? -1 : limit) >>> 0;
2242
- XRegExp.forEach(str, separator, (match) => {
2243
- if (match.index + match[0].length > lastLastIndex) {
2244
- output.push(str.slice(lastLastIndex, match.index));
2245
- if (match.length > 1 && match.index < str.length) {
2246
- Array.prototype.push.apply(output, match.slice(1));
2247
- }
2248
- lastLength = match[0].length;
2249
- lastLastIndex = match.index + lastLength;
2250
- }
2251
- });
2252
- if (lastLastIndex === str.length) {
2253
- if (!separator.test("") || lastLength) {
2254
- output.push("");
2255
- }
2256
- } else {
2257
- output.push(str.slice(lastLastIndex));
2258
- }
2259
- separator.lastIndex = origLastIndex;
2260
- return output.length > limit ? output.slice(0, limit) : output;
2261
- };
2262
- XRegExp.addToken(
2263
- /\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/,
2264
- (match, scope) => {
2265
- if (match[1] === "B" && scope === defaultScope) {
2266
- return match[0];
2267
- }
2268
- throw new SyntaxError(`Invalid escape ${match[0]}`);
2269
- },
2270
- {
2271
- scope: "all",
2272
- leadChar: "\\"
2273
- }
2274
- );
2275
- XRegExp.addToken(
2276
- /\\u{([\dA-Fa-f]+)}/,
2277
- (match, scope, flags) => {
2278
- const code = dec(match[1]);
2279
- if (code > 1114111) {
2280
- throw new SyntaxError(`Invalid Unicode code point ${match[0]}`);
2281
- }
2282
- if (code <= 65535) {
2283
- return `\\u${pad4(hex(code))}`;
2284
- }
2285
- if (hasNativeU && flags.includes("u")) {
2286
- return match[0];
2287
- }
2288
- throw new SyntaxError("Cannot use Unicode code point above \\u{FFFF} without flag u");
2289
- },
2290
- {
2291
- scope: "all",
2292
- leadChar: "\\"
2293
- }
2294
- );
2295
- XRegExp.addToken(
2296
- /\(\?#[^)]*\)/,
2297
- getContextualTokenSeparator,
2298
- { leadChar: "(" }
2299
- );
2300
- XRegExp.addToken(
2301
- /\s+|#[^\n]*\n?/,
2302
- getContextualTokenSeparator,
2303
- { flag: "x" }
2304
- );
2305
- if (!hasNativeS) {
2306
- XRegExp.addToken(
2307
- /\./,
2308
- () => "[\\s\\S]",
2309
- {
2310
- flag: "s",
2311
- leadChar: "."
2312
- }
2313
- );
2314
- }
2315
- XRegExp.addToken(
2316
- /\\k<([^>]+)>/,
2317
- function(match) {
2318
- const index = isNaN(match[1]) ? this.captureNames.indexOf(match[1]) + 1 : +match[1];
2319
- const endIndex = match.index + match[0].length;
2320
- if (!index || index > this.captureNames.length) {
2321
- throw new SyntaxError(`Backreference to undefined group ${match[0]}`);
2322
- }
2323
- return `\\${index}${endIndex === match.input.length || isNaN(match.input[endIndex]) ? "" : "(?:)"}`;
2324
- },
2325
- { leadChar: "\\" }
2326
- );
2327
- XRegExp.addToken(
2328
- /\\(\d+)/,
2329
- function(match, scope) {
2330
- if (!(scope === defaultScope && /^[1-9]/.test(match[1]) && +match[1] <= this.captureNames.length) && match[1] !== "0") {
2331
- throw new SyntaxError(`Cannot use octal escape or backreference to undefined group ${match[0]}`);
2332
- }
2333
- return match[0];
2334
- },
2335
- {
2336
- scope: "all",
2337
- leadChar: "\\"
2338
- }
2339
- );
2340
- XRegExp.addToken(
2341
- /\(\?P?<([\p{ID_Start}$_][\p{ID_Continue}$_\u200C\u200D]*)>/u,
2342
- function(match) {
2343
- if (!XRegExp.isInstalled("namespacing") && (match[1] === "length" || match[1] === "__proto__")) {
2344
- throw new SyntaxError(`Cannot use reserved word as capture name ${match[0]}`);
2345
- }
2346
- if (this.captureNames.includes(match[1])) {
2347
- throw new SyntaxError(`Cannot use same name for multiple groups ${match[0]}`);
2348
- }
2349
- this.captureNames.push(match[1]);
2350
- this.hasNamedCapture = true;
2351
- return "(";
2352
- },
2353
- { leadChar: "(" }
2354
- );
2355
- XRegExp.addToken(
2356
- /\((?!\?)/,
2357
- function(match, scope, flags) {
2358
- if (flags.includes("n")) {
2359
- return "(?:";
2360
- }
2361
- this.captureNames.push(null);
2362
- return "(";
2363
- },
2364
- {
2365
- optionalFlags: "n",
2366
- leadChar: "("
2367
- }
2368
- );
2369
- var xregexp_default = XRegExp;
2370
-
2371
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/addons/build.js
2372
- var build_default = (XRegExp2) => {
2373
- const REGEX_DATA2 = "xregexp";
2374
- const subParts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g;
2375
- const parts = XRegExp2.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/, subParts], "g", {
2376
- conjunction: "or"
2377
- });
2378
- function deanchor(pattern) {
2379
- const leadingAnchor = /^(?:\(\?:\))*\^/;
2380
- const trailingAnchor = /\$(?:\(\?:\))*$/;
2381
- if (leadingAnchor.test(pattern) && trailingAnchor.test(pattern) && // Ensure that the trailing `$` isn't escaped
2382
- trailingAnchor.test(pattern.replace(/\\[\s\S]/g, ""))) {
2383
- return pattern.replace(leadingAnchor, "").replace(trailingAnchor, "");
2384
- }
2385
- return pattern;
2386
- }
2387
- function asXRegExp(value, addFlagX) {
2388
- const flags = addFlagX ? "x" : "";
2389
- return XRegExp2.isRegExp(value) ? value[REGEX_DATA2] && value[REGEX_DATA2].captureNames ? (
2390
- // Don't recompile, to preserve capture names
2391
- value
2392
- ) : (
2393
- // Recompile as XRegExp
2394
- XRegExp2(value.source, flags)
2395
- ) : (
2396
- // Compile string as XRegExp
2397
- XRegExp2(value, flags)
2398
- );
2399
- }
2400
- function interpolate(substitution) {
2401
- return substitution instanceof RegExp ? substitution : XRegExp2.escape(substitution);
2402
- }
2403
- function reduceToSubpatternsObject(subpatterns, interpolated, subpatternIndex) {
2404
- subpatterns[`subpattern${subpatternIndex}`] = interpolated;
2405
- return subpatterns;
2406
- }
2407
- function embedSubpatternAfter(raw, subpatternIndex, rawLiterals) {
2408
- const hasSubpattern = subpatternIndex < rawLiterals.length - 1;
2409
- return raw + (hasSubpattern ? `{{subpattern${subpatternIndex}}}` : "");
2410
- }
2411
- XRegExp2.tag = (flags) => (literals, ...substitutions) => {
2412
- const subpatterns = substitutions.map(interpolate).reduce(reduceToSubpatternsObject, {});
2413
- const pattern = literals.raw.map(embedSubpatternAfter).join("");
2414
- return XRegExp2.build(pattern, subpatterns, flags);
2415
- };
2416
- XRegExp2.build = (pattern, subs, flags) => {
2417
- flags = flags || "";
2418
- const addFlagX = flags.includes("x");
2419
- const inlineFlags = /^\(\?([\w$]+)\)/.exec(pattern);
2420
- if (inlineFlags) {
2421
- flags = XRegExp2._clipDuplicates(flags + inlineFlags[1]);
2422
- }
2423
- const data = {};
2424
- for (const p in subs) {
2425
- if (subs.hasOwnProperty(p)) {
2426
- const sub = asXRegExp(subs[p], addFlagX);
2427
- data[p] = {
2428
- // Deanchoring allows embedding independently useful anchored regexes. If you
2429
- // really need to keep your anchors, double them (i.e., `^^...$$`).
2430
- pattern: deanchor(sub.source),
2431
- names: sub[REGEX_DATA2].captureNames || []
2432
- };
2433
- }
2434
- }
2435
- const patternAsRegex = asXRegExp(pattern, addFlagX);
2436
- let numCaps = 0;
2437
- let numPriorCaps;
2438
- let numOuterCaps = 0;
2439
- const outerCapsMap = [0];
2440
- const outerCapNames = patternAsRegex[REGEX_DATA2].captureNames || [];
2441
- const output = patternAsRegex.source.replace(parts, ($0, $1, $2, $3, $4) => {
2442
- const subName = $1 || $2;
2443
- let capName;
2444
- let intro;
2445
- let localCapIndex;
2446
- if (subName) {
2447
- if (!data.hasOwnProperty(subName)) {
2448
- throw new ReferenceError(`Undefined property ${$0}`);
2449
- }
2450
- if ($1) {
2451
- capName = outerCapNames[numOuterCaps];
2452
- outerCapsMap[++numOuterCaps] = ++numCaps;
2453
- intro = `(?<${capName || subName}>`;
2454
- } else {
2455
- intro = "(?:";
2456
- }
2457
- numPriorCaps = numCaps;
2458
- const rewrittenSubpattern = data[subName].pattern.replace(subParts, (match, paren, backref) => {
2459
- if (paren) {
2460
- capName = data[subName].names[numCaps - numPriorCaps];
2461
- ++numCaps;
2462
- if (capName) {
2463
- return `(?<${capName}>`;
2464
- }
2465
- } else if (backref) {
2466
- localCapIndex = +backref - 1;
2467
- return data[subName].names[localCapIndex] ? (
2468
- // Need to preserve the backreference name in case using flag `n`
2469
- `\\k<${data[subName].names[localCapIndex]}>`
2470
- ) : `\\${+backref + numPriorCaps}`;
2471
- }
2472
- return match;
2473
- });
2474
- return `${intro}${rewrittenSubpattern})`;
2475
- }
2476
- if ($3) {
2477
- capName = outerCapNames[numOuterCaps];
2478
- outerCapsMap[++numOuterCaps] = ++numCaps;
2479
- if (capName) {
2480
- return `(?<${capName}>`;
2481
- }
2482
- } else if ($4) {
2483
- localCapIndex = +$4 - 1;
2484
- return outerCapNames[localCapIndex] ? (
2485
- // Need to preserve the backreference name in case using flag `n`
2486
- `\\k<${outerCapNames[localCapIndex]}>`
2487
- ) : `\\${outerCapsMap[+$4]}`;
2488
- }
2489
- return $0;
2490
- });
2491
- return XRegExp2(output, flags);
2492
- };
2493
- };
2494
-
2495
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/addons/matchrecursive.js
2496
- var matchrecursive_default = (XRegExp2) => {
2497
- function row(name, value, start, end) {
2498
- return {
2499
- name,
2500
- value,
2501
- start,
2502
- end
2503
- };
2504
- }
2505
- XRegExp2.matchRecursive = (str, left, right, flags, options) => {
2506
- flags = flags || "";
2507
- options = options || {};
2508
- const global = flags.includes("g");
2509
- const sticky = flags.includes("y");
2510
- const basicFlags = flags.replace(/y/g, "");
2511
- left = XRegExp2(left, basicFlags);
2512
- right = XRegExp2(right, basicFlags);
2513
- let esc;
2514
- let { escapeChar } = options;
2515
- if (escapeChar) {
2516
- if (escapeChar.length > 1) {
2517
- throw new Error("Cannot use more than one escape character");
2518
- }
2519
- escapeChar = XRegExp2.escape(escapeChar);
2520
- esc = new RegExp(
2521
- `(?:${escapeChar}[\\S\\s]|(?:(?!${// Using `XRegExp.union` safely rewrites backreferences in `left` and `right`.
2522
- // Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax
2523
- // transformation resulting from those flags was already applied to `left` and
2524
- // `right` when they were passed through the XRegExp constructor above.
2525
- XRegExp2.union([left, right], "", { conjunction: "or" }).source})[^${escapeChar}])+)+`,
2526
- // Flags `dgy` not needed here
2527
- flags.replace(XRegExp2._hasNativeFlag("s") ? /[^imsu]/g : /[^imu]/g, "")
2528
- );
2529
- }
2530
- let openTokens = 0;
2531
- let delimStart = 0;
2532
- let delimEnd = 0;
2533
- let lastOuterEnd = 0;
2534
- let outerStart;
2535
- let innerStart;
2536
- let leftMatch;
2537
- let rightMatch;
2538
- const vN = options.valueNames;
2539
- const output = [];
2540
- while (true) {
2541
- if (escapeChar) {
2542
- delimEnd += (XRegExp2.exec(str, esc, delimEnd, "sticky") || [""])[0].length;
2543
- }
2544
- leftMatch = XRegExp2.exec(str, left, delimEnd);
2545
- rightMatch = XRegExp2.exec(str, right, delimEnd);
2546
- if (leftMatch && rightMatch) {
2547
- if (leftMatch.index <= rightMatch.index) {
2548
- rightMatch = null;
2549
- } else {
2550
- leftMatch = null;
2551
- }
2552
- }
2553
- if (leftMatch || rightMatch) {
2554
- delimStart = (leftMatch || rightMatch).index;
2555
- delimEnd = delimStart + (leftMatch || rightMatch)[0].length;
2556
- } else if (!openTokens) {
2557
- break;
2558
- }
2559
- if (sticky && !openTokens && delimStart > lastOuterEnd) {
2560
- break;
2561
- }
2562
- if (leftMatch) {
2563
- if (!openTokens) {
2564
- outerStart = delimStart;
2565
- innerStart = delimEnd;
2566
- }
2567
- openTokens += 1;
2568
- } else if (rightMatch && openTokens) {
2569
- openTokens -= 1;
2570
- if (!openTokens) {
2571
- if (vN) {
2572
- if (vN[0] && outerStart > lastOuterEnd) {
2573
- output.push(row(vN[0], str.slice(lastOuterEnd, outerStart), lastOuterEnd, outerStart));
2574
- }
2575
- if (vN[1]) {
2576
- output.push(row(vN[1], str.slice(outerStart, innerStart), outerStart, innerStart));
2577
- }
2578
- if (vN[2]) {
2579
- output.push(row(vN[2], str.slice(innerStart, delimStart), innerStart, delimStart));
2580
- }
2581
- if (vN[3]) {
2582
- output.push(row(vN[3], str.slice(delimStart, delimEnd), delimStart, delimEnd));
2583
- }
2584
- } else {
2585
- output.push(str.slice(innerStart, delimStart));
2586
- }
2587
- lastOuterEnd = delimEnd;
2588
- if (!global) {
2589
- break;
2590
- }
2591
- }
2592
- } else {
2593
- const unbalanced = options.unbalanced || "error";
2594
- if (unbalanced === "skip" || unbalanced === "skip-lazy") {
2595
- if (rightMatch) {
2596
- rightMatch = null;
2597
- } else {
2598
- if (unbalanced === "skip") {
2599
- const outerStartDelimLength = XRegExp2.exec(str, left, outerStart, "sticky")[0].length;
2600
- delimEnd = outerStart + (outerStartDelimLength || 1);
2601
- } else {
2602
- delimEnd = outerStart + 1;
2603
- }
2604
- openTokens = 0;
2605
- }
2606
- } else if (unbalanced === "error") {
2607
- const delimSide = rightMatch ? "right" : "left";
2608
- const errorPos = rightMatch ? delimStart : outerStart;
2609
- throw new Error(`Unbalanced ${delimSide} delimiter found in string at position ${errorPos}`);
2610
- } else {
2611
- throw new Error(`Unsupported value for unbalanced: ${unbalanced}`);
2612
- }
2613
- }
2614
- if (delimStart === delimEnd) {
2615
- delimEnd += 1;
2616
- }
2617
- }
2618
- if (global && output.length > 0 && !sticky && vN && vN[0] && str.length > lastOuterEnd) {
2619
- output.push(row(vN[0], str.slice(lastOuterEnd), lastOuterEnd, str.length));
2620
- }
2621
- return output;
2622
- };
2623
- };
2624
-
2625
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/addons/unicode-base.js
2626
- var unicode_base_default = (XRegExp2) => {
2627
- const unicode = {};
2628
- const unicodeTypes = {};
2629
- const dec2 = XRegExp2._dec;
2630
- const hex2 = XRegExp2._hex;
2631
- const pad42 = XRegExp2._pad4;
2632
- function normalize(name) {
2633
- return name.replace(/[- _]+/g, "").toLowerCase();
2634
- }
2635
- function charCode(chr) {
2636
- const esc = /^\\[xu](.+)/.exec(chr);
2637
- return esc ? dec2(esc[1]) : chr.charCodeAt(chr[0] === "\\" ? 1 : 0);
2638
- }
2639
- function invertBmp(range) {
2640
- let output = "";
2641
- let lastEnd = -1;
2642
- XRegExp2.forEach(
2643
- range,
2644
- /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/,
2645
- (m) => {
2646
- const start = charCode(m[1]);
2647
- if (start > lastEnd + 1) {
2648
- output += `\\u${pad42(hex2(lastEnd + 1))}`;
2649
- if (start > lastEnd + 2) {
2650
- output += `-\\u${pad42(hex2(start - 1))}`;
2651
- }
2652
- }
2653
- lastEnd = charCode(m[2] || m[1]);
2654
- }
2655
- );
2656
- if (lastEnd < 65535) {
2657
- output += `\\u${pad42(hex2(lastEnd + 1))}`;
2658
- if (lastEnd < 65534) {
2659
- output += "-\\uFFFF";
2660
- }
2661
- }
2662
- return output;
2663
- }
2664
- function cacheInvertedBmp(slug) {
2665
- const prop = "b!";
2666
- return unicode[slug][prop] || (unicode[slug][prop] = invertBmp(unicode[slug].bmp));
2667
- }
2668
- function buildAstral(slug, isNegated) {
2669
- const item = unicode[slug];
2670
- let combined = "";
2671
- if (item.bmp && !item.isBmpLast) {
2672
- combined = `[${item.bmp}]${item.astral ? "|" : ""}`;
2673
- }
2674
- if (item.astral) {
2675
- combined += item.astral;
2676
- }
2677
- if (item.isBmpLast && item.bmp) {
2678
- combined += `${item.astral ? "|" : ""}[${item.bmp}]`;
2679
- }
2680
- return isNegated ? `(?:(?!${combined})(?:[\uD800-\uDBFF][\uDC00-\uDFFF]|[\0-\uFFFF]))` : `(?:${combined})`;
2681
- }
2682
- function cacheAstral(slug, isNegated) {
2683
- const prop = isNegated ? "a!" : "a=";
2684
- return unicode[slug][prop] || (unicode[slug][prop] = buildAstral(slug, isNegated));
2685
- }
2686
- XRegExp2.addToken(
2687
- // Use `*` instead of `+` to avoid capturing `^` as the token name in `\p{^}`
2688
- /\\([pP])(?:{(\^?)(?:(\w+)=)?([^}]*)}|([A-Za-z]))/,
2689
- (match, scope, flags) => {
2690
- const ERR_DOUBLE_NEG = "Invalid double negation ";
2691
- const ERR_UNKNOWN_NAME = "Unknown Unicode token ";
2692
- const ERR_UNKNOWN_REF = "Unicode token missing data ";
2693
- const ERR_ASTRAL_ONLY = "Astral mode required for Unicode token ";
2694
- const ERR_ASTRAL_IN_CLASS = "Astral mode does not support Unicode tokens within character classes";
2695
- const [
2696
- fullToken,
2697
- pPrefix,
2698
- caretNegation,
2699
- typePrefix,
2700
- tokenName,
2701
- tokenSingleCharName
2702
- ] = match;
2703
- let isNegated = pPrefix === "P" || !!caretNegation;
2704
- const isAstralMode = flags.includes("A");
2705
- let slug = normalize(tokenSingleCharName || tokenName);
2706
- let item = unicode[slug];
2707
- if (pPrefix === "P" && caretNegation) {
2708
- throw new SyntaxError(ERR_DOUBLE_NEG + fullToken);
2709
- }
2710
- if (!unicode.hasOwnProperty(slug)) {
2711
- throw new SyntaxError(ERR_UNKNOWN_NAME + fullToken);
2712
- }
2713
- if (typePrefix) {
2714
- if (!(unicodeTypes[typePrefix] && unicodeTypes[typePrefix][slug])) {
2715
- throw new SyntaxError(ERR_UNKNOWN_NAME + fullToken);
2716
- }
2717
- }
2718
- if (item.inverseOf) {
2719
- slug = normalize(item.inverseOf);
2720
- if (!unicode.hasOwnProperty(slug)) {
2721
- throw new ReferenceError(`${ERR_UNKNOWN_REF + fullToken} -> ${item.inverseOf}`);
2722
- }
2723
- item = unicode[slug];
2724
- isNegated = !isNegated;
2725
- }
2726
- if (!(item.bmp || isAstralMode)) {
2727
- throw new SyntaxError(ERR_ASTRAL_ONLY + fullToken);
2728
- }
2729
- if (isAstralMode) {
2730
- if (scope === "class") {
2731
- throw new SyntaxError(ERR_ASTRAL_IN_CLASS);
2732
- }
2733
- return cacheAstral(slug, isNegated);
2734
- }
2735
- return scope === "class" ? isNegated ? cacheInvertedBmp(slug) : item.bmp : `${(isNegated ? "[^" : "[") + item.bmp}]`;
2736
- },
2737
- {
2738
- scope: "all",
2739
- optionalFlags: "A",
2740
- leadChar: "\\"
2741
- }
2742
- );
2743
- XRegExp2.addUnicodeData = (data, typePrefix) => {
2744
- const ERR_NO_NAME = "Unicode token requires name";
2745
- const ERR_NO_DATA = "Unicode token has no character data ";
2746
- if (typePrefix) {
2747
- unicodeTypes[typePrefix] = {};
2748
- }
2749
- for (const item of data) {
2750
- if (!item.name) {
2751
- throw new Error(ERR_NO_NAME);
2752
- }
2753
- if (!(item.inverseOf || item.bmp || item.astral)) {
2754
- throw new Error(ERR_NO_DATA + item.name);
2755
- }
2756
- const normalizedName = normalize(item.name);
2757
- unicode[normalizedName] = item;
2758
- if (typePrefix) {
2759
- unicodeTypes[typePrefix][normalizedName] = true;
2760
- }
2761
- if (item.alias) {
2762
- const normalizedAlias = normalize(item.alias);
2763
- unicode[normalizedAlias] = item;
2764
- if (typePrefix) {
2765
- unicodeTypes[typePrefix][normalizedAlias] = true;
2766
- }
2767
- }
2768
- }
2769
- XRegExp2.cache.flush("patterns");
2770
- };
2771
- XRegExp2._getUnicodeProperty = (name) => {
2772
- const slug = normalize(name);
2773
- return unicode[slug];
2774
- };
2775
- };
2776
-
2777
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/addons/unicode-categories.js
2778
- var import_categories = __toESM(require_categories());
2779
- var unicode_categories_default = (XRegExp2) => {
2780
- if (!XRegExp2.addUnicodeData) {
2781
- throw new ReferenceError("Unicode Base must be loaded before Unicode Categories");
2782
- }
2783
- XRegExp2.addUnicodeData(import_categories.default);
2784
- };
2785
-
2786
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/addons/unicode-properties.js
2787
- var import_properties = __toESM(require_properties());
2788
- var unicode_properties_default = (XRegExp2) => {
2789
- if (!XRegExp2.addUnicodeData) {
2790
- throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");
2791
- }
2792
- const unicodeData = import_properties.default;
2793
- unicodeData.push({
2794
- name: "Assigned",
2795
- // Since this is defined as the inverse of Unicode category Cn (Unassigned), the Unicode
2796
- // Categories addon is required to use this property
2797
- inverseOf: "Cn"
2798
- });
2799
- XRegExp2.addUnicodeData(unicodeData);
2800
- };
2801
-
2802
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/addons/unicode-scripts.js
2803
- var import_scripts = __toESM(require_scripts());
2804
- var unicode_scripts_default = (XRegExp2) => {
2805
- if (!XRegExp2.addUnicodeData) {
2806
- throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");
2807
- }
2808
- XRegExp2.addUnicodeData(import_scripts.default, "Script");
2809
- };
2810
-
2811
- // ../../../node_modules/.pnpm/xregexp@5.1.1/node_modules/xregexp/src/index.js
2812
- build_default(xregexp_default);
2813
- matchrecursive_default(xregexp_default);
2814
- unicode_base_default(xregexp_default);
2815
- unicode_categories_default(xregexp_default);
2816
- unicode_properties_default(xregexp_default);
2817
- unicode_scripts_default(xregexp_default);
2818
- var src_default = xregexp_default;
2819
-
2820
- // src/parser/lib/parse-select-param.ts
2821
- var parseSelectParam = (s, currentPath) => {
2822
- s = s.replace(/\s/g, "");
2823
- const foreignTables = src_default.matchRecursive(`,${s}`, ",[^,]*\\(", "\\)", "g", {
2824
- valueNames: {
2825
- "0": null,
2826
- "1": "tableName",
2827
- "2": "selectedColumns",
2828
- "3": null
2829
- }
2830
- }).reduce((prev, curr, idx, matches) => {
2831
- if (curr.name === "selectedColumns") {
2832
- const name = matches[idx - 1].value.slice(1, -1);
2833
- prev = { ...prev, [name]: curr.value };
2834
- }
2835
- return prev;
2836
- }, {});
2837
- const columns = s.replace(
2838
- new RegExp(
2839
- `${Object.entries(foreignTables).map(([table, selectedColumns]) => `${table}(${selectedColumns})`.replace(/\(/g, "\\(").replace(/\)/g, "\\)")).join("|")}`,
2840
- "g"
2841
- ),
2842
- ""
2843
- ).replace(/(,)\1+/g, ",").split(",").filter((c) => c.length > 0).map((c) => {
2844
- const split = c.split(":");
2845
- const hasAlias = split.length > 1;
2846
- return {
2847
- declaration: [currentPath?.declaration, c].filter(Boolean).join("."),
2848
- alias: hasAlias || currentPath?.alias ? [currentPath?.alias ?? currentPath?.path, split[0]].filter(Boolean).join(".") : void 0,
2849
- path: [currentPath?.path, split[hasAlias ? 1 : 0]].filter(Boolean).join(".")
2850
- };
2851
- });
2852
- return [
2853
- ...columns,
2854
- ...Object.entries(foreignTables).flatMap(([currentDeclaration, selectedColumns]) => {
2855
- const aliasSplit = currentDeclaration.split(":");
2856
- const currentAliasElem = aliasSplit.length > 1 ? aliasSplit[0] : void 0;
2857
- const currentPathDeclaration = aliasSplit[aliasSplit.length - 1];
2858
- const currentPathElem = currentPathDeclaration.split("!")[0];
2859
- const path = [currentPath?.path, currentPathElem].filter(Boolean).join(".");
2860
- const alias = [currentPath?.alias ?? currentPath?.path, currentAliasElem ?? currentPathElem].filter(Boolean).join(".");
2861
- const declaration = [currentPath?.declaration, currentDeclaration].filter(Boolean).join(".");
2862
- return parseSelectParam(`${selectedColumns}`, {
2863
- path,
2864
- alias: currentPath?.alias || currentAliasElem ? alias : void 0,
2865
- declaration
2866
- });
2867
- })
2868
- ];
2869
- };
2870
-
2871
- // src/parser/lib/is-iso-date-string.ts
2872
- var isISODateString = (v) => typeof v === "string" && /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/.test(
2873
- v
2874
- );
2875
-
2876
- // src/parser/lib/parse-value.ts
2877
- var parseValue = (v) => {
2878
- if (isISODateString(v)) return new Date(v);
2879
- try {
2880
- return JSON.parse(v);
2881
- } catch {
2882
- return v;
2883
- }
2884
- };
2885
-
2886
- // src/parser/postgrest-query-parser.ts
2887
- var SUPPORTED_OPERATORS = ["or", ...Object.keys(OPERATOR_MAP)];
2888
- var PostgrestQueryParser = class {
2889
- constructor(query, opts) {
2890
- this.opts = opts;
2891
- this._params = new URLSearchParams(query);
2892
- }
2893
- _params;
2894
- _filters;
2895
- _paths;
2896
- /**
2897
- * Getter that returns the paths and their aliases that the query selects. Will do the computation only once.
2898
- *
2899
- * ```js
2900
- * const p = new PostgrestParser(
2901
- * supabaseClient.from("test")
2902
- * .select(
2903
- * `name,
2904
- * city:cities (
2905
- * test:name
2906
- * ),
2907
- * countries (
2908
- * capital,
2909
- * population,
2910
- * some_ref (
2911
- * test:first,
2912
- * second
2913
- * )
2914
- * )`
2915
- * );
2916
- * console.log(p.paths);
2917
- * // [
2918
- * // { alias: undefined, path: "name" },
2919
- * // { alias: "city.test", path: "cities.name" },
2920
- * // { alias: undefined, path: "countries.capital" },
2921
- * // { alias: undefined, path: "countries.population" },
2922
- * // {
2923
- * // alias: "countries.some_ref.test",
2924
- * // path: "countries.some_ref.first",
2925
- * // },
2926
- * // { alias: undefined, path: "countries.some_ref.second" },
2927
- * // ];
2928
- * ```
2929
- *
2930
- * @returns an array of paths that the query selects, containing the columns and aliases
2931
- */
2932
- get paths() {
2933
- if (!this._paths) {
2934
- const select = this._params.get("select");
2935
- this._paths = select ? parseSelectParam(select) : [];
2936
- }
2937
- return this._paths;
2938
- }
2939
- /**
2940
- * Getter that returns the filters that this query applies in a json object.
2941
- *
2942
- * ```js
2943
- * const p = new PostgrestParser(
2944
- * supabaseClient.from("test").select('*')
2945
- * .or("full_name.eq.20,test.neq.true,and(full_name.eq.Test Name,email.eq.test@mail.com)")
2946
- * .eq("id", "123")
2947
- * .contains("id", "456")
2948
- * );
2949
- *
2950
- * console.log(p.filters);
2951
- *
2952
- * // [
2953
- * // {
2954
- * // or: [
2955
- * // {
2956
- * // path: "full_name",
2957
- * // negate: false,
2958
- * // operator: "eq",
2959
- * // value: 20,
2960
- * // },
2961
- * // {
2962
- * // path: "test",
2963
- * // negate: false,
2964
- * // operator: "neq",
2965
- * // value: true,
2966
- * // },
2967
- * // {
2968
- * // and: [
2969
- * // {
2970
- * // path: "full_name",
2971
- * // negate: false,
2972
- * // operator: "eq",
2973
- * // value: "Test Name",
2974
- * // },
2975
- * // {
2976
- * // path: "email",
2977
- * // negate: false,
2978
- * // operator: "eq",
2979
- * // value: "test@mail.com",
2980
- * // },
2981
- * // ],
2982
- * // },
2983
- * // ],
2984
- * // },
2985
- * // {
2986
- * // path: "id",
2987
- * // negate: false,
2988
- * // operator: "eq",
2989
- * // value: 123,
2990
- * // },
2991
- * // {
2992
- * // path: "id",
2993
- * // negate: false,
2994
- * // operator: "cs",
2995
- * // value: 456,
2996
- * // },
2997
- * // ];
2998
- * ```
2999
- *
3000
- * @returns a FilterDefinitions object
3001
- */
3002
- get filters() {
3003
- if (!this._filters) {
3004
- const filters = [];
3005
- this._params.forEach((value, key) => {
3006
- if (SUPPORTED_OPERATORS.some(
3007
- (f) => key === f || value.split(".").includes(f)
3008
- )) {
3009
- const filter = this.parseFilterString(`${key}.${value}`, void 0);
3010
- if (filter !== null) filters.push(filter);
3011
- }
3012
- });
3013
- this._filters = filters;
3014
- }
3015
- return this._filters;
3016
- }
3017
- parseFilterString(filter, prefix) {
3018
- if (filter.startsWith("and(") && filter.endsWith(")")) {
3019
- const andFilters = filter.slice(4, -1).split(",").map((s) => this.parseFilterString(s, prefix)).filter(isNotNull);
3020
- if (andFilters.length === 0) return null;
3021
- else return { and: andFilters };
3022
- }
3023
- const split = filter.split(".");
3024
- if ([split[0], split[1]].includes("or")) {
3025
- let foreignTable;
3026
- if (split[1] === "or") {
3027
- foreignTable = split[0];
3028
- }
3029
- const orFilters = filter.slice(4 + (foreignTable ? foreignTable.length + 1 : 0), -1).split(",").reduce((prev, curr, idx, filters) => {
3030
- if (curr.startsWith("and(")) {
3031
- prev = [...prev, [curr, filters[idx + 1]].join()];
3032
- } else if (!curr.endsWith(")")) {
3033
- prev = [...prev, curr];
3034
- }
3035
- return prev;
3036
- }, []).map((s) => this.parseFilterString(s, foreignTable)).filter(isNotNull);
3037
- if (orFilters.length === 0) return null;
3038
- else return { or: orFilters };
3039
- }
3040
- const operatorIdx = findLastIndex(
3041
- split,
3042
- (s) => SUPPORTED_OPERATORS.includes(s)
3043
- );
3044
- if (operatorIdx === -1)
3045
- throw new Error(
3046
- `Could not find a valid operator in ${split.join(
3047
- "."
3048
- )}. Supported are ${SUPPORTED_OPERATORS.join(",")}.`
3049
- );
3050
- const negate = split[operatorIdx - 1] === "not";
3051
- const pathOrAlias = [
3052
- prefix,
3053
- ...split.slice(0, negate ? operatorIdx - 1 : operatorIdx)
3054
- ].filter(Boolean).join(".").replace(/\s/g, "");
3055
- let path = pathOrAlias;
3056
- let alias;
3057
- for (const p of this.paths) {
3058
- if (p.path === pathOrAlias) {
3059
- alias = p.alias;
3060
- break;
3061
- }
3062
- if (p.alias === pathOrAlias) {
3063
- path = p.path;
3064
- alias = p.alias;
3065
- break;
3066
- }
3067
- }
3068
- if (this.opts && Array.isArray(this.opts.exclusivePaths) && !this.opts.exclusivePaths.includes(path)) {
3069
- return null;
3070
- }
3071
- const operator = split[operatorIdx];
3072
- const value = split.slice(operatorIdx + 1).join(".");
3073
- return {
3074
- path,
3075
- alias,
3076
- negate,
3077
- operator,
3078
- value: parseValue(value)
3079
- };
3080
- }
3081
- };
3082
-
3083
- // src/parser/PostgrestParser.ts
3084
- var PostgrestParser = class extends PostgrestQueryParser {
3085
- constructor(fb, opts) {
3086
- super(new URL(fb["url"]).searchParams.toString(), opts);
3087
- this.opts = opts;
3088
- this._url = new URL(fb["url"]);
3089
- const headers = fb["headers"];
3090
- this._headers = Object.fromEntries(headers.entries());
3091
- this._body = isObject(fb["body"]) ? { ...fb["body"] } : void 0;
3092
- this.method = fb["method"];
3093
- this.searchParams = this._url.searchParams;
3094
- this.queryKey = sortSearchParams(this._url.searchParams).toString();
3095
- this.select = this._url.searchParams.get("select")?.toString() ?? "*";
3096
- this.table = this._url.toString().split("/rest/v1/").pop().split("?").shift();
3097
- if (this._body) {
3098
- this.bodyKey = encodeObject(this._body);
3099
- }
3100
- const preferHeaders = (this._headers["Prefer"] ?? "").split(",").reduce((prev, curr) => {
3101
- const s = curr.split("=");
3102
- return {
3103
- ...prev,
3104
- [s[0]]: s[1]
3105
- };
3106
- }, {});
3107
- this.count = preferHeaders["count"] ?? null;
3108
- this.schema = fb["schema"];
3109
- this.isHead = this.method === "HEAD";
3110
- const limit = this._url.searchParams.get("limit");
3111
- this.limit = limit ? Number(limit) : void 0;
3112
- const offset = this._url.searchParams.get("offset");
3113
- this.offset = offset ? Number(offset) : void 0;
3114
- this._url.searchParams.forEach((value, key) => {
3115
- const split = key.split(".");
3116
- if (split[split.length === 2 ? 1 : 0] === "order") {
3117
- const orderByDefs = value.split(",");
3118
- orderByDefs.forEach((def) => {
3119
- const [column, ascending, nullsFirst] = def.split(".");
3120
- this.orderBy.push({
3121
- ascending: ascending === "asc",
3122
- column,
3123
- nullsFirst: nullsFirst === "nullsfirst",
3124
- foreignTable: split.length === 2 ? split[0] : void 0
3125
- });
3126
- });
3127
- }
3128
- });
3129
- this.orderByKey = this.orderBy.map(
3130
- ({ column, ascending, nullsFirst, foreignTable }) => `${foreignTable ? `${foreignTable}.` : ""}${column}:${ascending ? "asc" : "desc"}.${nullsFirst ? "nullsFirst" : "nullsLast"}`
3131
- ).join("|");
3132
- }
3133
- _url;
3134
- _headers;
3135
- _body;
3136
- method;
3137
- select;
3138
- queryKey;
3139
- bodyKey;
3140
- count;
3141
- schema;
3142
- table;
3143
- isHead;
3144
- limit;
3145
- offset;
3146
- orderBy = [];
3147
- orderByKey;
3148
- searchParams;
3149
- };
3150
-
3151
- // src/parser/lib/remove-first-path-element.ts
3152
- var removeFirstPathElement = (p) => {
3153
- const aliasWithoutFirstElement = p.alias ? p.alias.split(".").slice(1).join(".") : void 0;
3154
- const pathWithoutFirstEelment = p.path.split(".").slice(1).join(".");
3155
- return {
3156
- declaration: p.declaration.split(".").slice(1).join("."),
3157
- path: pathWithoutFirstEelment,
3158
- alias: aliasWithoutFirstElement && (aliasWithoutFirstElement.split(".").length > 1 || aliasWithoutFirstElement !== pathWithoutFirstEelment) ? aliasWithoutFirstElement : void 0
3159
- };
3160
- };
3161
-
3162
- // src/parser/lib/group-paths-recursive.ts
3163
- var isNestedPath = (p) => Array.isArray(p.paths);
3164
- var groupPathsRecursive = (paths) => {
3165
- const grouped = paths.reduce((prev, curr) => {
3166
- const levels = curr.path.split(".").length;
3167
- if (levels === 1) {
3168
- prev.push(curr);
3169
- return prev;
3170
- }
3171
- const firstLevelDeclaration = curr.declaration.split(".")[0];
3172
- const indexOfNested = prev.findIndex(
3173
- (p) => isNestedPath(p) && p.declaration === firstLevelDeclaration
3174
- );
3175
- const pathWithoutCurrentLevel = removeFirstPathElement(curr);
3176
- if (indexOfNested !== -1) {
3177
- prev[indexOfNested].paths.push(pathWithoutCurrentLevel);
3178
- return prev;
3179
- }
3180
- prev.push({
3181
- declaration: firstLevelDeclaration,
3182
- path: curr.path.split(".")[0],
3183
- paths: [pathWithoutCurrentLevel],
3184
- ...curr.alias ? { alias: curr.alias.split(".")[0] } : {}
3185
- });
3186
- return prev;
3187
- }, []);
3188
- return grouped.map(
3189
- (p) => isNestedPath(p) ? { ...p, paths: groupPathsRecursive(p.paths) } : p
3190
- );
3191
- };
3192
-
3193
- // src/parser/filter/denormalize.ts
3194
- var denormalize = (paths, obj) => {
3195
- const groups = groupPathsRecursive(paths);
3196
- return groups.reduce((prev, curr) => {
3197
- let value = obj[curr.path];
3198
- if (!isNestedPath(curr)) {
3199
- if (typeof value === "undefined") {
3200
- const array = Object.entries(obj).reduce((prev2, [k, v]) => {
3201
- if (new RegExp(`^${curr.path}.\\d+$`).test(k)) {
3202
- prev2.push(v);
3203
- }
3204
- return prev2;
3205
- }, []);
3206
- if (array.length > 0) {
3207
- value = array;
3208
- }
3209
- }
3210
- if (typeof value === "undefined") {
3211
- let isArray3 = false;
3212
- const jsonValue = Object.entries(obj).reduce(
3213
- (prev2, [k, v]) => {
3214
- if (k.startsWith(`${curr.path}.`)) {
3215
- const key = k.slice(curr.path.length + 1);
3216
- const maybeIdx = key.match(/^\b\d+\b/);
3217
- if (maybeIdx && isFlatNestedArray(prev2)) {
3218
- isArray3 = true;
3219
- prev2 = {
3220
- ...prev2,
3221
- [maybeIdx[0]]: {
3222
- ...prev2[maybeIdx[0]] ? prev2[maybeIdx[0]] : {},
3223
- [key.slice(maybeIdx[0].length + 1)]: v
3224
- }
3225
- };
3226
- } else {
3227
- prev2[maybeIdx ? maybeIdx[0] : key] = v;
3228
- }
3229
- }
3230
- return prev2;
3231
- },
3232
- {}
3233
- );
3234
- if (Object.keys(jsonValue).length > 0) {
3235
- if (isArray3) {
3236
- value = Object.values(jsonValue).map((v) => unflatten(v));
3237
- } else {
3238
- value = unflatten(jsonValue);
3239
- }
3240
- }
3241
- }
3242
- if (typeof value === "undefined") {
3243
- return prev;
3244
- }
3245
- return {
3246
- ...prev,
3247
- [curr.alias || curr.path]: value
3248
- };
3249
- }
3250
- if (value === null || Array.isArray(value) && value.length === 0) {
3251
- return {
3252
- ...prev,
3253
- [curr.alias || curr.path]: value
3254
- };
3255
- }
3256
- let isArray2 = false;
3257
- const flatNestedObjectOrArray = Object.entries(obj).reduce((prev2, [k, v]) => {
3258
- const isNested = k.startsWith(`${curr.path}.`) || k.includes("!") && k.startsWith(`${removeFirstAlias(curr.declaration)}.`);
3259
- if (!isNested) return prev2;
3260
- const flatKey = k.slice(
3261
- (k.includes("!") ? removeFirstAlias(curr.declaration) : curr.path).length + 1
3262
- );
3263
- const maybeIdx = flatKey.match(/^\b\d+\b/);
3264
- if (maybeIdx && isFlatNestedArray(prev2)) {
3265
- isArray2 = true;
3266
- const key = flatKey.slice(maybeIdx[0].length + 1);
3267
- return {
3268
- ...prev2,
3269
- [maybeIdx[0]]: {
3270
- ...prev2[maybeIdx[0]] ? prev2[maybeIdx[0]] : {},
3271
- [key]: v
3272
- }
3273
- };
3274
- }
3275
- return {
3276
- ...prev2,
3277
- [flatKey]: v
3278
- };
3279
- }, {});
3280
- if (Object.keys(flatNestedObjectOrArray).length === 0) return prev;
3281
- if (isArray2 && isFlatNestedArray(flatNestedObjectOrArray)) {
3282
- return {
3283
- ...prev,
3284
- [curr.alias || curr.path]: Object.values(flatNestedObjectOrArray).map(
3285
- (v) => denormalize(curr.paths, v)
3286
- )
3287
- };
3288
- }
3289
- return {
3290
- ...prev,
3291
- [curr.alias || curr.path]: denormalize(
3292
- curr.paths,
3293
- flatNestedObjectOrArray
3294
- )
3295
- };
3296
- }, {});
3297
- };
3298
- var isFlatNestedArray = (obj) => true;
3299
- var removeFirstAlias = (key) => {
3300
- const split = key.split(":");
3301
- if (split.length === 1) return key;
3302
- split.shift();
3303
- return split.join(":");
3304
- };
3305
-
3306
- // src/parser/lib/query-types.ts
3307
- var isAndFilter = (f) => Array.isArray(f.and);
3308
- var isOrFilter = (f) => Array.isArray(f.or);
3309
- var isFilterDefinition = (f) => !isAndFilter(f) && !isOrFilter(f);
3310
-
3311
- // src/parser/lib/extract-paths-from-filter.ts
3312
- var extractPathsFromFilters = (f, p) => {
3313
- return f.reduce((prev, filter) => {
3314
- if (isAndFilter(filter)) {
3315
- prev.push(...extractPathsFromFilters(filter.and, p));
3316
- } else if (isOrFilter(filter)) {
3317
- prev.push(...extractPathsFromFilters(filter.or, p));
3318
- } else if (isFilterDefinition(filter)) {
3319
- const relatedPath = p.find((p2) => p2.path === filter.path);
3320
- const pathElements = filter.path.split(".");
3321
- const aliasElements = filter.alias?.split(".");
3322
- const declaration = pathElements.map(
3323
- (el, idx) => `${aliasElements && aliasElements[idx] !== el ? `${aliasElements[idx]}:` : ""}${el}`
3324
- ).join(".");
3325
- prev.push({
3326
- path: filter.path,
3327
- alias: filter.alias,
3328
- declaration: relatedPath ? relatedPath.declaration : declaration
3329
- });
3330
- }
3331
- return prev;
3332
- }, []);
3333
- };
3334
-
3335
- // src/parser/lib/filter-filter-definitions-by-paths.ts
3336
- var filterFilterDefinitionsByPaths = (f, paths) => {
3337
- return f.reduce((prev, filter) => {
3338
- if (isAndFilter(filter)) {
3339
- const filters = filterFilterDefinitionsByPaths(filter.and, paths);
3340
- if (filters.length > 0) {
3341
- prev.push({ and: filters });
3342
- }
3343
- } else if (isOrFilter(filter)) {
3344
- const filters = filterFilterDefinitionsByPaths(filter.or, paths);
3345
- if (filters.length > 0) {
3346
- prev.push({ or: filters });
3347
- }
3348
- } else if (isFilterDefinition(filter) && paths.includes(filter.path)) {
3349
- prev.push(filter);
3350
- }
3351
- return prev;
3352
- }, []);
3353
- };
3354
-
3355
- // src/parser/lib/get.ts
3356
- var get = (obj, path, defaultValue = void 0) => {
3357
- const travel = (regexp) => String.prototype.split.call(path, regexp).filter(Boolean).reduce(
3358
- (res, key) => res !== null && res !== void 0 ? res[key] : res,
3359
- obj
3360
- );
3361
- const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/);
3362
- return result === void 0 || result === obj ? defaultValue : result;
3363
- };
3364
-
3365
- // src/parser/postgrest-filter.ts
3366
- var PostgrestFilter = class _PostgrestFilter {
3367
- constructor(params) {
3368
- this.params = params;
3369
- this._filterPaths = extractPathsFromFilters(
3370
- this.params.filters,
3371
- this.params.paths
3372
- );
3373
- }
3374
- _fn;
3375
- _selectFn;
3376
- _filtersFn;
3377
- _filterPaths;
3378
- static fromQuery(query, opts) {
3379
- const parser = new PostgrestQueryParser(query, opts);
3380
- return new _PostgrestFilter({
3381
- filters: parser.filters,
3382
- paths: parser.paths
3383
- });
3384
- }
3385
- static fromBuilder(fb, opts) {
3386
- const parser = new PostgrestQueryParser(
3387
- fb["url"].searchParams.toString(),
3388
- opts
3389
- );
3390
- return new _PostgrestFilter({
3391
- filters: parser.filters,
3392
- paths: parser.paths
3393
- });
3394
- }
3395
- denormalize(obj) {
3396
- return denormalize([...this.params.paths, ...this._filterPaths], obj);
3397
- }
3398
- apply(obj) {
3399
- if (!this._fn) {
3400
- this._fn = (obj2) => this.applyFilters(obj2) && this.hasPaths(obj2);
3401
- }
3402
- return this._fn(obj);
3403
- }
3404
- applyFilters(obj) {
3405
- if (!this._filtersFn) {
3406
- const filterFns = this.params.filters.map((d) => this.buildFilterFn(d));
3407
- this._filtersFn = (obj2) => filterFns.every((fn) => isObject(obj2) && fn(obj2));
3408
- }
3409
- return this._filtersFn(obj);
3410
- }
3411
- hasFiltersOnPaths(paths) {
3412
- return filterFilterDefinitionsByPaths(this.params.filters, paths).length > 0;
3413
- }
3414
- applyFiltersOnPaths(obj, paths) {
3415
- const filterFns = filterFilterDefinitionsByPaths(
3416
- this.params.filters,
3417
- paths
3418
- ).map((d) => this.buildFilterFn(d));
3419
- const filtersFn = (obj2) => filterFns.every((fn) => isObject(obj2) && fn(obj2));
3420
- return filtersFn(obj);
3421
- }
3422
- hasPaths(obj) {
3423
- if (!this._selectFn) {
3424
- this._selectFn = (obj2) => this.params.paths.every(
3425
- (p) => this.hasPathRecursive(obj2, p.alias ?? p.path)
3426
- );
3427
- }
3428
- return this._selectFn(obj);
3429
- }
3430
- hasPathRecursive(obj, basePath, objectPath) {
3431
- const v = get(obj, basePath);
3432
- if (!objectPath && typeof v !== "undefined") return true;
3433
- if (objectPath && Array.isArray(v)) {
3434
- return v.every((i) => typeof get(i, objectPath) !== "undefined");
3435
- }
3436
- const pathElements = basePath.replace(/->>|->/g, ".").split(".");
3437
- const currentPathElement = pathElements.pop();
3438
- if (pathElements.length === 0) return v === null;
3439
- return this.hasPathRecursive(
3440
- obj,
3441
- pathElements.join("."),
3442
- [currentPathElement, objectPath].filter(Boolean).join(".")
3443
- );
3444
- }
3445
- applyFilterFn(obj, path, {
3446
- filterFn,
3447
- value,
3448
- negate
3449
- }) {
3450
- const pathElements = path.replace(/->>|->/g, ".").split(".");
3451
- const v = get(obj, pathElements[0]);
3452
- if (typeof v === "undefined") {
3453
- if (Array.isArray(obj)) {
3454
- return obj.every(
3455
- (o) => this.applyFilterFn(o, path, { filterFn, value, negate })
3456
- );
3457
- }
3458
- return false;
3459
- }
3460
- if (pathElements.length > 1) {
3461
- return this.applyFilterFn(
3462
- v,
3463
- pathElements.slice(1).join("."),
3464
- {
3465
- filterFn,
3466
- value,
3467
- negate
3468
- }
3469
- );
3470
- }
3471
- const res = filterFn(parseValue(v), value);
3472
- if (negate) return !res;
3473
- return res;
3474
- }
3475
- buildFilterFn(def) {
3476
- if ("or" in def) {
3477
- return (obj) => def.or.some((d) => this.buildFilterFn(d)(obj));
3478
- }
3479
- if ("and" in def) {
3480
- return (obj) => def.and.every((d) => this.buildFilterFn(d)(obj));
3481
- }
3482
- const { operator, path, value, negate, alias } = def;
3483
- const filterFn = OPERATOR_MAP[operator];
3484
- if (!filterFn)
3485
- throw new Error(
3486
- `Unable to build filter function for ${JSON.stringify(
3487
- def
3488
- )}. Operator ${operator} is not supported.`
3489
- );
3490
- return (obj) => this.applyFilterFn(obj, alias ?? path, { filterFn, value, negate });
3491
- }
3492
- };
3493
-
3494
- // src/parser/lib/binary-search.ts
3495
- function binarySearch(arr, el, compare) {
3496
- let m = 0;
3497
- let n = arr.length - 1;
3498
- while (m <= n) {
3499
- const k = n + m >> 1;
3500
- const cmp = compare(el, arr[k]);
3501
- if (cmp > 0) {
3502
- m = k + 1;
3503
- } else if (cmp < 0) {
3504
- n = k - 1;
3505
- } else {
3506
- return k;
3507
- }
3508
- }
3509
- return m;
3510
- }
3511
-
3512
- // src/parser/lib/cache-data-types.ts
3513
- var isPostgrestPaginationCacheData = (q) => {
3514
- if (!Array.isArray(q)) return false;
3515
- return q.length === 0 || Array.isArray(q[0]);
3516
- };
3517
- var isPostgrestHasMorePaginationCacheData = (q) => {
3518
- if (!Array.isArray(q)) return false;
3519
- if (q.length === 0) return true;
3520
- const firstPage = q[0];
3521
- return Array.isArray(
3522
- firstPage.data
3523
- ) && typeof firstPage.hasMore === "boolean";
3524
- };
3525
-
3526
- // src/parser/lib/find-filters.ts
3527
- var findFilters = (f, by) => {
3528
- const filters = [];
3529
- f.forEach((filter) => {
3530
- if (isAndFilter(filter)) {
3531
- filters.push(...findFilters(filter.and, by));
3532
- }
3533
- if (isOrFilter(filter)) {
3534
- filters.push(...findFilters(filter.or, by));
3535
- }
3536
- if (isFilterDefinition(filter)) {
3537
- if ((typeof by.path === "undefined" || filter.path === by.path) && (typeof by.alias === "undefined" || filter.alias === by.alias) && (typeof by.value === "undefined" || filter.value === by.value) && (typeof by.negate === "undefined" || filter.negate === by.negate) && (typeof by.operator === "undefined" || filter.operator === by.operator)) {
3538
- filters.push(filter);
3539
- }
3540
- }
3541
- });
3542
- return filters;
3543
- };
3544
-
3545
- // src/parser/lib/if-date-get-time.ts
3546
- var ifDateGetTime2 = (v) => {
3547
- if (v instanceof Date) return v.getTime();
3548
- if (typeof v === "string") {
3549
- const t = new Date(v).getTime();
3550
- if (!isNaN(t)) return t;
3551
- }
3552
- return v;
3553
- };
3554
-
3555
- // src/parser/lib/sorted-comparator.ts
3556
- var buildSortedComparator = (orderBy) => {
3557
- return (a, b) => {
3558
- for (const { column, ascending, nullsFirst, foreignTable } of orderBy) {
3559
- const aValue = ifDateGetTime2(
3560
- get(
3561
- a,
3562
- `${foreignTable ? `${foreignTable}.` : ""}${column}`,
3563
- null
3564
- )
3565
- );
3566
- const bValue = ifDateGetTime2(
3567
- get(
3568
- b,
3569
- `${foreignTable ? `${foreignTable}.` : ""}${column}`,
3570
- null
3571
- )
3572
- );
3573
- if (aValue === bValue) continue;
3574
- if (aValue === null || aValue === void 0) {
3575
- return nullsFirst ? -1 : 1;
3576
- }
3577
- if (bValue === null || bValue === void 0) {
3578
- return nullsFirst ? 1 : -1;
3579
- }
3580
- if (ascending) {
3581
- return aValue < bValue ? -1 : 1;
3582
- }
3583
- return aValue < bValue ? 1 : -1;
3584
- }
3585
- return 0;
3586
- };
3587
- };
3588
-
3589
- // src/parser/lib/find-index-ordered.ts
3590
- var findIndexOrdered = (input, currentData, orderBy) => binarySearch(currentData, input, buildSortedComparator(orderBy));
3591
-
3592
- // src/parser/lib/get-table.ts
3593
- var getTable = (query) => query["url"].pathname.split("/").pop();
3594
-
3595
- // src/parser/lib/is-postgrest-builder.ts
3596
- var isPostgrestBuilder = (q) => {
3597
- return typeof q.throwOnError === "function";
3598
- };
3599
-
3600
- // src/parser/lib/parse-order-by-key.ts
3601
- var parseOrderByKey = (v) => {
3602
- return v.split("|").map((orderBy) => {
3603
- const [tableDef, orderDef] = orderBy.split(":");
3604
- const [foreignTableOrCol, maybeCol] = tableDef.split(".");
3605
- const [dir, nulls] = orderDef.split(".");
3606
- return {
3607
- ascending: dir === "asc",
3608
- nullsFirst: nulls === "nullsFirst",
3609
- foreignTable: maybeCol ? foreignTableOrCol : void 0,
3610
- column: maybeCol ? maybeCol : foreignTableOrCol
3611
- };
3612
- });
3613
- };
3614
-
3615
- // src/parser/lib/remove-alias-from-declaration.ts
3616
- var removeAliasFromDeclaration = (d) => d.split(".").map((el) => el.split(":").pop()).join(".");
3617
-
3618
- // src/parser/lib/response-types.ts
3619
- var isAnyPostgrestResponse = (q) => {
3620
- if (!q) return false;
3621
- return typeof q.data === "object" || Array.isArray(q.data);
3622
- };
3623
- var isPostgrestPaginationResponse = (q) => {
3624
- return Array.isArray(q);
3625
- };
3626
- var isPostgrestHasMorePaginationResponse = (q) => {
3627
- if (!q) return false;
3628
- return Array.isArray(q.data) && typeof q.hasMore === "boolean";
3629
- };
3630
-
3631
- // src/parser/lib/set-filter-value.ts
3632
- var setFilterValue = (searchParams, path, op, value) => {
3633
- const filters = searchParams.getAll(path);
3634
- searchParams.delete(path);
3635
- for (const f of filters) {
3636
- if (f.startsWith(`${op}.`)) {
3637
- continue;
3638
- }
3639
- searchParams.append(path, f);
3640
- }
3641
- searchParams.append(path, `${op}.${value}`);
3642
- };
1
+ import {
2
+ PostgrestFilter,
3
+ binarySearch,
4
+ buildSortedComparator,
5
+ denormalize,
6
+ extractPathsFromFilters,
7
+ filterFilterDefinitionsByPaths,
8
+ findFilters,
9
+ findIndexOrdered,
10
+ get,
11
+ getTable,
12
+ groupPathsRecursive,
13
+ ifDateGetTime,
14
+ isAndFilter,
15
+ isAnyPostgrestResponse,
16
+ isFilterDefinition,
17
+ isNestedPath,
18
+ isOrFilter,
19
+ isPostgrestBuilder,
20
+ isPostgrestHasMorePaginationCacheData,
21
+ isPostgrestHasMorePaginationResponse,
22
+ isPostgrestPaginationCacheData,
23
+ isPostgrestPaginationResponse,
24
+ parseOrderByKey,
25
+ removeAliasFromDeclaration,
26
+ removeFirstPathElement,
27
+ setFilterValue
28
+ } from "../chunk-U5UNPBKB.js";
29
+ import {
30
+ OPERATOR_MAP,
31
+ PostgrestParser,
32
+ PostgrestQueryParser,
33
+ SUPPORTED_OPERATORS,
34
+ encodeObject,
35
+ findLastIndex,
36
+ isISODateString,
37
+ isNotNull,
38
+ isObject,
39
+ parseSelectParam,
40
+ parseValue,
41
+ sortSearchParams
42
+ } from "../chunk-TKWR5AAY.js";
43
+ import "../chunk-3PJTNH2L.js";
44
+ import "../chunk-P4UZ7IXC.js";
3643
45
  export {
3644
46
  OPERATOR_MAP,
3645
47
  PostgrestFilter,
@@ -3658,7 +60,7 @@ export {
3658
60
  get,
3659
61
  getTable,
3660
62
  groupPathsRecursive,
3661
- ifDateGetTime2 as ifDateGetTime,
63
+ ifDateGetTime,
3662
64
  isAndFilter,
3663
65
  isAnyPostgrestResponse,
3664
66
  isFilterDefinition,
@@ -3680,58 +82,4 @@ export {
3680
82
  setFilterValue,
3681
83
  sortSearchParams
3682
84
  };
3683
- /*! Bundled license information:
3684
-
3685
- xregexp/src/xregexp.js:
3686
- (*!
3687
- * XRegExp 5.1.1
3688
- * <xregexp.com>
3689
- * Steven Levithan (c) 2007-present MIT License
3690
- *)
3691
-
3692
- xregexp/src/addons/build.js:
3693
- (*!
3694
- * XRegExp.build 5.1.1
3695
- * <xregexp.com>
3696
- * Steven Levithan (c) 2012-present MIT License
3697
- *)
3698
-
3699
- xregexp/src/addons/matchrecursive.js:
3700
- (*!
3701
- * XRegExp.matchRecursive 5.1.1
3702
- * <xregexp.com>
3703
- * Steven Levithan (c) 2009-present MIT License
3704
- *)
3705
-
3706
- xregexp/src/addons/unicode-base.js:
3707
- (*!
3708
- * XRegExp Unicode Base 5.1.1
3709
- * <xregexp.com>
3710
- * Steven Levithan (c) 2008-present MIT License
3711
- *)
3712
-
3713
- xregexp/src/addons/unicode-categories.js:
3714
- (*!
3715
- * XRegExp Unicode Categories 5.1.1
3716
- * <xregexp.com>
3717
- * Steven Levithan (c) 2010-present MIT License
3718
- * Unicode data by Mathias Bynens <mathiasbynens.be>
3719
- *)
3720
-
3721
- xregexp/src/addons/unicode-properties.js:
3722
- (*!
3723
- * XRegExp Unicode Properties 5.1.1
3724
- * <xregexp.com>
3725
- * Steven Levithan (c) 2012-present MIT License
3726
- * Unicode data by Mathias Bynens <mathiasbynens.be>
3727
- *)
3728
-
3729
- xregexp/src/addons/unicode-scripts.js:
3730
- (*!
3731
- * XRegExp Unicode Scripts 5.1.1
3732
- * <xregexp.com>
3733
- * Steven Levithan (c) 2010-present MIT License
3734
- * Unicode data by Mathias Bynens <mathiasbynens.be>
3735
- *)
3736
- */
3737
85
  //# sourceMappingURL=index.js.map