imagescript 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +8 -3
  2. package/THIRD_PARTY_NOTICES.md +131 -0
  3. package/dist/animation.d.ts +7 -0
  4. package/dist/animation.js +22 -12
  5. package/dist/codecs/crc.js +5 -0
  6. package/dist/codecs/gif.js +30 -52
  7. package/dist/codecs/jpeg.js +9 -27
  8. package/dist/codecs/png.js +22 -10
  9. package/dist/codecs/tga.js +3 -1
  10. package/dist/codecs/tiff.js +7 -2
  11. package/dist/codecs/vp8.js +3 -1
  12. package/dist/codecs/vp8l.js +126 -58
  13. package/dist/codecs/webp.js +11 -9
  14. package/dist/codecs/zlib.js +81 -69
  15. package/dist/frame.d.ts +1 -0
  16. package/dist/frame.js +4 -2
  17. package/dist/gif.d.ts +1 -0
  18. package/dist/gif.js +2 -2
  19. package/dist/image.d.ts +42 -7
  20. package/dist/image.js +224 -113
  21. package/dist/index.js +4 -4
  22. package/dist/render/bidi.js +350 -0
  23. package/dist/render/buffer.js +362 -0
  24. package/dist/render/color.js +164 -0
  25. package/dist/render/colr.js +523 -0
  26. package/dist/render/font.js +173 -241
  27. package/dist/render/hinting.js +12 -4
  28. package/dist/render/layout.js +1553 -0
  29. package/dist/render/linebreak.js +210 -0
  30. package/dist/render/segment.js +106 -0
  31. package/dist/render/shape.js +984 -0
  32. package/dist/render/shapers/arabic.js +284 -0
  33. package/dist/render/shapers/hangul.js +142 -0
  34. package/dist/render/shapers/hebrew.js +49 -0
  35. package/dist/render/shapers/index.js +52 -0
  36. package/dist/render/shapers/indic.js +579 -0
  37. package/dist/render/shapers/khmer.js +104 -0
  38. package/dist/render/shapers/machine.js +129 -0
  39. package/dist/render/shapers/myanmar.js +121 -0
  40. package/dist/render/shapers/syllabic.js +100 -0
  41. package/dist/render/shapers/thai.js +125 -0
  42. package/dist/render/shapers/use.js +235 -0
  43. package/dist/render/svg.js +101 -22
  44. package/dist/render/text.js +373 -103
  45. package/dist/render/unicode-data.js +63 -0
  46. package/dist/render/unicode.js +58 -0
  47. package/dist/text-layout.d.ts +4 -1
  48. package/dist/text-layout.js +2 -2
  49. package/dist/util/alpha.js +43 -0
  50. package/dist/util/blur.js +80 -5
  51. package/dist/util/bytes.js +31 -0
  52. package/dist/util/limits.js +34 -0
  53. package/dist/util/options.js +7 -0
  54. package/dist/util/resample.js +359 -79
  55. package/dist/util/rotate.js +43 -0
  56. package/dist/version.js +1 -1
  57. package/licenses/HarfBuzz.txt +42 -0
  58. package/licenses/Unicode-3.0.txt +39 -0
  59. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ /*!
2
+ * Generated by scripts/unicode.js from the Unicode Character Database 18.0.0, don't edit. The data is
3
+ * Copyright © 1991-2026 Unicode, Inc., Unicode License v3 (see THIRD_PARTY_NOTICES.md and
4
+ * licenses/Unicode-3.0.txt)
5
+ */
6
+ export const UNICODE_VERSION = '18.0.0';
7
+ export const generalCategory = {
8
+ names: ["Cn", "Cc", "Cf", "Co", "Cs", "Ll", "Lm", "Lo", "Lt", "Lu", "Mc", "Me", "Mn", "Nd", "Nl", "No", "Pc", "Pd", "Pe", "Pf", "Pi", "Po", "Ps", "Sc", "Sk", "Sm", "So", "Zl", "Zp", "Zs"],
9
+ data: 'AB8BAAAdAAIVAAAXAAIVAAAWAAASAAAVAAAZAAAVAAARAAEVAAkNAAEVAAIZAAEVABkJAAAWAAAVAAASAAAYAAAQAAAYABkFAAAWAAAZAAASAAAZACABAAAdAAAVAAMXAAAaAAAVAAAYAAAaAAAHAAAUAAAZAAACAAAaAAAYAAAaAAAZAAEPAAAYAAAFAAEVAAAYAAAPAAAHAAATAAIPAAAVABYJAAAZAAYJABcFAAAZAAcFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAEFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAEFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAEJAAAFAAAJAAAFAAAJAAIFAAEJAAAFAAAJAAAFAAEJAAAFAAIJAAEFAAMJAAAFAAEJAAAFAAIJAAIFAAEJAAAFAAEJAAAFAAAJAAAFAAAJAAAFAAEJAAAFAAAJAAEFAAAJAAAFAAEJAAAFAAIJAAAFAAAJAAAFAAEJAAEFAAAHAAAJAAIFAAMHAAAJAAAIAAAFAAAJAAAIAAAFAAAJAAAIAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAEFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAEFAAAJAAAIAAAFAAAJAAAFAAIJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAYFAAEJAAAFAAEJAAEFAAAJAAAFAAMJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAEQFAAEHABkFABEGAAMYAAsGAA0YAAQGAAYYAAAGAAAYAAAGABAYAG8MAAAJAAAFAAAJAAAFAAAGAAAYAAAJAAAFAgAGAAIFAAAVAAAJBAEYAAAJAAAVAAIJAQAJAQEJAAAFABAJAQgJACIFAAAJAAEFAAIJAAIFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAQFAAAJAAAFAAAZAAAJAAAFAAEJAAEFADIJAC8FAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAaAAQMAAELAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAEJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAEFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFASUJAQEGAAUVACgFAAAVAAARAAEGAAEaAAAXASwMAAARAAAMAAAVAAEMAAAVAAEMAAAVAAIMBhoHBAMHAAEVCwUCAAIZAAEVAAAXAAEVAAEaAAoMAAAVAAACAAIVAB8HAAAGAAkHABQMAAkNAAMVAAEHAAAMAGIHAAAVAAAHAAYMAAACAAAaAAUMAAEGAAEMAAAaAAMMAAEHAAkNAAIHAAEaAAAHAA0VAQACAAAHAAAMAB0HABoMAlgHAAoMAAAHDgkNACAHAAgMAAEGAAAaAAIVAAAGAgAMAAEXABUHAAMMAAAGAAgMAAAGAAIMAAAGAAQMAg4VARgHAAIMAgAVAQoHBRcHAAAYAAYHAAECBQgMACgHAAAGABcMAAACAB8MAAAKADUHAAAMAAAKAAAMAAAHAAIKAAcMAAMKAAAMAAEKAAAHAAYMAAkHAAEMAAEVAAkNAAAVAAAGAA4HAAAMAAEKAQcHAgEHAhUHAQYHAQAHAwMHAgAMAAAHAAIKAAMMAgEKAgEKAAAMAAAHCAAKBAEHAQIHAAEMAgkNAAEHAAEXAAUPAAAaAAAXAAAHAAAVAAAMAgEMAAAKAQUHBAEHAhUHAQYHAQEHAQEHAQEHAgAMAQIKAAEMBAEMAgIMAwAMBwMHAQAHBwkNAAEMAAIHAAAMAAAVCgEMAAAKAQgHAQIHARUHAQYHAQEHAQQHAgAMAAAHAAIKAAQMAQEMAAAKAQEKAAAMAgAHDwEHAAEMAgkNAAAVAAAXBwAHAAUMAQAMAAEKAQcHAgEHAhUHAQYHAQEHAQQHAgAMAAAHAAAKAAAMAAAKAAMMAgEKAgEKAAAMBQMMAAAKBAEHAQIHAAEMAgkNAAAaAAAHAAUPCgAMAAAHAQUHAwIHAQMHAwEHAQAHAQEHAwEHAwIHAwsHBAEKAAAMAAEKAwIKAQIKAAAMAgAHBgAKDgkNAAIPAAUaAAAXAAAaBQAMAAIKAAAMAAcHAQIHARYHAQ8HAgAMAAAHAAIMAAMKAQIMAQMMBwEMAQIHAQEHAgEHAAEMAgkNBwAVAAYPAAAaAAAHAAAMAAEKAAAVAAcHAQIHARYHAQkHAQQHAgAMAAAHAAAKAAAMAAQKAQAMAAEKAQEKAAEMBwEKBQIHAQEHAAEMAgkNAQEHAAAKDAEMAAEKAAgHAQIHASgHAAEMAAAHAAIKAAMMAQIKAQIKAAAMAAAHAAAaBAIHAAAKAAYPAAIHAAEMAgkNAAgPAAAaAAUHAQAMAAEKAREHAxcHAQgHAQAHAgYHAwAMBAIKAAIMAQAMAQcKBgkNAgEKAAAVDC8HAAAMAAEHAAYMBAAXAAUHAAAGAAcMAAAVAAkNAAEVJQEHAQAHAQQHARcHAQAHAQkHAAAMAAEHAAgMAAAHAgQHAQAGAQYMAQkNAgMHIAAHAAIaAA4VAAAaAAAVAAIaAAEMAAUaAAkNAAkPAAAaAAAMAAAaAAAMAAAaAAAMAAAWAAASAAAWAAASAAEKAAcHASMHBA0MAAAKAAQMAAAVAAEMAAQHAAoMASMMAQcaAAAMAAUaAQEaAAQVAAMaAAEVJSoHAAEKAAMMAAAKAAUMAAAKAAEMAAEKAAEMAAAHAAkNAAUVAAUHAAEKAAEMAAMHAAIMAAAHAAIKAAEHAAYKAAIHAAMMAAwHAAAMAAEKAAEMAAUKAAAMAAAHAAAKAAkNAAIKAAAMAAEaACUJAQAJBQAJAioFAAAVAAAGAAIFAMgCBwEDBwIGBwEABwEDBwIoBwEDBwIgBwEDBwIGBwEABwEDBwIOBwE4BwEDBwJCBwICDAAIFQATDwMPBwAJGgZVCQIFBQIAEQDrBAcAABoAABUAEAcAAB0AGQcAABYAABIDSgcAAhUAAg4ABwcHEQcAAgwAAAoJEgcAAQwAAAoAARUJEQcAAQwMDAcBAgcBAQwMMwcAAQwAAAoABgwABwoAAAwAAQoACgwAAhUAAAYAAhUAABcAAAcAAAwCCQ0GCQ8GBRUAABEAAxUAAgwAAAIAAAwACQ0GIgcAAAYANAcHBAcAAQwAIQcAAAwAAAcFRQcKHgcBAgwAAwoAAQwAAgoEAQoAAAwABQoAAgwEABoDARUACQ0AHQcCBAcLKwcEGQcGCQ0AAA8DIRoAFgcAAQwAAQoAAAwCARUANAcAAAoAAAwAAAoABgwBAAwAAAoAAAwAAQoABwwABQoACQwCAAwACQ0GCQ0GBhUAAAYABRUCDQwAAAsAMQwPAwwAAAoALgcAAAwAAAoABAwAAAoAAAwABAoAAAwAAQoABwcBARUACQ0ABhUACRoACAwACBoAAhUAAQwAAAoAHQcAAAoAAwwAAQoAAQwAAAoAAgwAAQcACQ0AKwcAAAwAAAoAAQwAAgoAAAwAAAoAAgwAAQoIAxUAIwcABwoABwwAAQoAAQwDBBUACQ0DAgcACQ0AHQcABQYAARUACAUAAAkAAAUFKgkCAgkABxUIAgwAABUADAwAAAoABgwAAwcAAAwABQcAAAwAAQcAAAoAAQwAAAcFKwUAPgYADAUAAAYAIQUAJAYAPwwAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkACAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkAAAUAAAkACAUABwkABQUCBQkCBwUABwkABwUABwkABQUCBQkCBwUBAAkBAAkBAAkBAAkABwUABwkADQUCBwUABwgABwUABwgABwUABwgABAUBAQUAAwkAAAgAABgAAAUAAhgAAgUBAQUAAwkAAAgAAhgAAwUCAQUAAwkBAhgABwUABAkAAhgCAgUBAQUAAwkAAAgAARgBCh0ABAIABREAARUAABQAABMAABYAARQAABMAABYAABQABxUAABsAABwABAIAAB0ACBUAABQAABMAAxUAARAAAhUAABkAABYAABIAChUAABkAABUAABAACRUAAB0ABAIBCQIAAA8AAAYCBQ8AAhkAABYAABIAAAYACQ8AAhkAABYAABIAEAYAJBcLDAwAAwsAAAwAAgsACwwPARoAAAkAAxoAAAkAARoAAAUAAgkAAQUAAgkAAAUAABoAAAkAARoAABkABAkABRoAAAkAABoAAAkAABoAAAkAABoAAwkAABoAAAUAAwkAAAUAAwcAAAUAARoAAQUAAQkABBkAAAkAAwUAABoAABkAARoAAAUAABoADw8AIg4AAAkAAAUAAw4AAA8AARoEBBkABBoAARkAAxoAABkAARoAABkAARoAABkABhoAABkAHhoAARkAARoAABkAABoAABkAHhoAiwIZAAcaAAAWAAASAAAWAAASABMaAAEZAAYaAAAWAAASAFAaAAAZAB0aABgZACcaAAUZAEcaFgoaFTsPAE0aABUPALYBGgAAGQAIGgAAGQA1GgAHGQBuGgAAGQD3ARoAABYAABIAABYAABIAABYAABIAABYAABIAABYAABIAABYAABIAABYAABIAHQ8AKxoABBkAABYAABIAHhkAABYAABIAABYAABIAABYAABIAABYAABIAABYAABIADxkA/wEaAIIBGQAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgA+GQAAFgAAEgAAFgAAEgAfGQAAFgAAEgCBAhkALxoAFBkAARoABRkAJhoCiQEaAC8JAC8FAAAJAAAFAAIJAAEFAAAJAAAFAAAJAAAFAAAJAAAFAAMJAAAFAAAJAAEFAAAJAAUFAAEGAAIJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAEFAAUaAAAJAAAFAAAJAAAFAAIMAAAJAAAFBQMVAAAPAAEVACUFAQAFBQAFAjcHBwAGAAAVDgAMABYHCQYHAQYHAQYHAQYHAQYHAQYHAQYHAQYHAR8MAAEVAAAUAAATAAAUAAATAAIVAAAUAAATAAAVAAAUAAATAAgVAAARAAEVAAARAAAVAAAUAAATAAEVAAAUAAATAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAQVAAAGAAkVAAERAAMVAAARAAAVAAAWAAwVAAEaAAIVAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAARAgEVAAAWAAASHBkaAVgaDNUBGhoPGgAAHQACFQAAGgAABgAABwAADgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgABGgAAFgAAEgAAFgAAEgAAFgAAEgAAFgAAEgAAEQAAFgABEgAAGgAIDgADDAABCgAAEQAEBgABGgACDgAABgAABwAAFQABGgFVBwIBDAABGAABBgAABwAAEQBZBwAAFQACBgAABwUqBwFdBwEBGgADDwAJGgAfBwAlGgkAGgAPBwAeGgEJDwAdGgAHDwAAGgAODwAfGgAJDwAmGgAODwC/AhoAvzMHAD8aAJSkAQcAAAYA9ggHAzYaCScHAAUGAAEVAIsCBwAABgACFQAPBwAJDQABBxQACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAABwAADAACCwAAFQAJDAAAFQAABgAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQABBgABDABFBwAJDgABDAAFFQgWGAAIBgABGAAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQACBQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAABgAHBQAACQAABQAACQAABQABCQAABQAACQAABQAACQAABQAACQAABQAACQAABQAABgABGAAACQAABQAACQAABQAABwAACQAABQAACQACBQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAECQAABQAECQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQADCQAABQAACQAABQABCQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQAACQAABQABCQQACQ4DBgAACQAABQAABwABBgAABQAGBwAADAACBwAADAADBwAADAAWBwABCgABDAAACgADGgAADAMFDwABGgAAFwAAGgYzBwADFQgBCgAxBwAPCgABDAgBFQAJDQYRDAAFBwACFQAABwAAFQABBwAADAAJDQAbBwAHDAABFQAWBwAKDAABCgsAFQAcBwMCDAAACgAuBwAADAABCgADDAABCgABDAACCgAMFQEABgAJDQQBFQAEBwAADAAABgAIBwAJDQAEBwEoBwAFDAABCgABDAABCgABDAkCBwAADAAHBwAADAAACgIJDQIDFQAPBwAABgAFBwACGgAABwAACgAADAAACgAxBwAADAAABwACDAABBwABDAAEBwABDAAABwAADAAABxgBBwAABgABFQAKBwAACgABDAABCgABFQAABwABBgAACgAADAoFBwIFBwIFBwkGBwEGBwEqBQAAGAADBgAIBQAABgABGAABCQJPBQAiBwABCgAADAABCgAADAABCgAAFQAACgAADAIJDQajVwcMFgcEMAcE/w8EAP8xAwDtAgcCaQcmBgUMBAUFAAcAAAwACQcAABkADAcBBAcBAAcBAQcBAQcBawcAEBgADxoA6gIHAAASAAAWAA8aAD8HAAEaADUHAAcaIAsHAAAXAAIaAA8MAAYVAAAWAAASAAAVBg8MAAAVAAERAAEQAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAAWAAASAAEVAAAWAAASAAMVAAIQAAIVAQMVAAARAAAWAAASAAAWAAASAAAWAAASAAIVAAAZAAARAAIZAQAVAAAXAAEVBAQHAYYBBwIAAgECFQAAFwACFQAAFgAAEgAAFQAAGQAAFQAAEQABFQAJDQABFQACGQABFQAZCQAAFgAAFQAAEgAAGAAAEAAAGAAZBQAAFgAAGQAAEgAAGQAAFgAAEgAAFQAAFgAAEgABFQAJBwAABgAsBwABBgAeBwMFBwIFBwIFBwICBwMBFwAAGQAAGAAAGgABFwEAGgADGQABGgoCAgABGgILBwEZBwESBwEBBwEOBwINByJ6BwUCFQQsDwMIGgA0DgADDwAQGgABDwACGgEMGgMAGi8sGgAADIIBHAcDMAcPAAwAGg8EHwcAAw8JEwcAAA4ABwcAAA4FJQcABAwFHQcBABUAIwcEBwcAABUABA4qJwkAJwUATQcCCQ0GIwkEIwUEJwcIMwcLABUACgkBDgkBBgkBAQkBCgUBDgUBBgUBAQUDMwcMtgIHCRUHCgcHGAUGASkGAQ0GQAUHAgAHASsHAQEHAwAHAhYHAQAVAAcPABYHAAEaAAYPAB4HCAgPMBIHAQEHBQQPABUHAAUPAwAVABkHBQAVABkHJjcHBAEPAAEHAA8PAi0PAAAHAAIMAQEMBQMMAAMHAQIHARwHAgIMBAAMAAgPBwgVBxwHAAEPAAAVABwHAAIPIAcHAAAaABsHAAEMBAQPAAYVCTUHAwYVABUHAgcPABIHBQcPABEHBwMVDAYPUEgHNzIJDTIFBwUPACMHAAMMCAkNBgkNAAMHAAAGAAAHABUJAwQMAAARAAAGABUFCAEZ0AEeDwEpBwEBDAAAEQIBBxACBwAABgABBwEBGAAEDAAAFQAHGgAVBwEPDAAcBwAJDwAABwgVBwAKDAADDwAEFRYRBwADDAADFSYUBwAGDxQWBwkACgAADAAACgA0BwAODAAGFQQTDwAJDQAADAABBwABDAAABwkCDAAACgAsBwACCgADDAABCgABDAABFQAAAgADFQAADAoAAgIYBwcJDQYCDAAjBwAEDAAACgAHDAEJDQADFQAABwABCgAABwgiBwAADAABFQAABwkBDAAACgAvBwACCgAIDAABCgADBwADFQADDAAAFQAACgAADAAJDQAABwAAFQAABwACFQETDwsRBwEYBwACCgACDAABCgAADAAACgABDAAFFQAADAABBwAADD4GBwEABwEDBwEOBwEJBwAAFQYuBwAADAACCgAHDAUJDQYBDAABCgEHBwIBBwIVBwEGBwEBBwEEBwEBDAAABwABCgAADAADCgIBCgICCgIABwYACgUEBwABCgIGDAMEDAsJBwEABwIABwElBwEABwACCgAFDAEACgIACgEDCgEBCgAADAAACgAADAAABwAADAAABwABFQEBFQgBDB00BwACCgAHDAABCgACDAAACgAADAADBwAEFQAJDQABFQEAFQAADAACBx4vBwACCgAFDAAACgAADAADCgABDAAACgABDAABBwAAFQAABwgJDaYBLgcAAgoAAwwCAwoAAQwAAAoAAQwAFhUAAwcAAQwiLwcAAgoABwwAAQoAAAwAAAoAAQwAAhUAAAcLCQ0GDBUTKgcAAAwAAAoAAAwAAQoABQwAAAoAAAwAAAcAABUGCQ0GEw0cGgcCAAwAAAoAAAwAAQoAAwwAAAoABAwECQ0AAQ8AAhUAABoABge5ASsHAAIKAAgMAAAKAAEMAAAVZB8JAB8FAAkNAAgPDAcHAgAHAgcHAQEHARcHAAUKAQEKAgEMAAAKAAAMAAAHAAAKAAAHAAAKAAAMAAIVCQkNRgcHAiYHAAIKAAMMAgEMAAMKAAAMAAAHAAAVAAAHAAAKGwAHAAkMACcHAAUMAAAKAAAHAAMMAAcVAAAMCAAHAAUMAAEKAAIMAC0HAAwMAAAKAAEMAAIVAAAHAAQVDUgHBwkVAAAHVQAMAAAKAAIMAAAKAAAMAAAKWCAHAAAVDgkNBggHASQHAAAKAAYMAQUMAAAKAAAMAAAHAAQVCgkNABIPAwEVAB0HAhUMAQAKAAYMAAAKAAEMAAAKAAEMSQYHAQEHASUHAAUMAwAMAQEMAQYMAAAHAAAMCAkNBgUHAQEHAR8HAAQKAQEMAQEKAAAMAAAKAAAMAAAHBwkNBigHAAAGAAEHBAkNBgAMAAAH7gESBwABDAABCgABFQcBDAAABwAACgAMBwEhBwABCgAEDAMBCgAADAAACgAADAAMFQAJDQAADFUABw8UDwAHGgADFwAQGg0AFQCZBwdmbw4ABBUACg4AwwEHDLYCDokSYAcAARUNrwgHAA8CAAAMAAUHAA4MCpofBwXGBAe5NR0HAAsMAAIKAAIMAAkNxg24BAcHHgcBCQ0EARUATgcBCQ0GHQcCBAwAABUKLwcABgwABBUAAxoAAwYAABUAABoKCQ0BBg8BFAcFEgewAwIGACcHAAEGAAIVAAkNxgEfCQAfBQAWDwADFQUYCQIYBSxKBwQADAAABwA2CgcDDAAMBkABBgAAFQAABgAADAsBCgABBgACDgnaOQckIQdfcgcNkQcHDjIHnTwDBgEGBgEBBgGoAgcJAAcdAgcCAAcOBAcHiwMHhBJqBwUMBwMIBwcJBwIAGgABDAAAFQADAtwe7wEaAAkNAAIaA7MDGgYWGgECGggCGQAPGgANGQItDAIWDAlzGjz1ARoKJhoAAQwAOxoAAQoAAgwAAhoABQoABwIABwwAARoABgwAHRoAAwwAkwEaAAIMAAAaCgIKAAcaAAEMAAEaAAAKAB8aAAEKPhMPDBMPDFYaCRgPhwEZCQAZBQAZCQAGBQERBQAZCQAZBQAACQEBCQIACQIBCQIDCQEHCQADBQEABQEGBQEKBQAZCQAZBQABCQEDCQIHCQEGCQEZBQABCQEDCQEECQEACQMGCQEZBQAZCQAZBQAZCQAZBQAZCQAZBQAZCQAZBQAZCQAZBQAZCQAcBQEYCQAAGQAYBQAAGQAFBQAYCQAAGQAYBQAAGQAFBQAYCQAAGQAYBQAAGQAFBQAYCQAAGQAYBQAAGQAFBQAYCQAAGQAYBQAAGQAFBQAACQAABQIxDQD/AxoANgwAAxoAMQwABxoAAAwADRoAAAwAARoABBUPBAwBDgxQHBnjBwkFAAAHADQFAAAJAAYFAAAJAAAFAAAJAAEFAAAJAAIFAAAJABUFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAIFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAAJAAAFAAEHDgYFNjIGAAYMARAMAgYMAQEMAQQMBT0GIQAMcCwHAwYMAAYGAgkNBAAHAAAawAIdBwAADBErBwADDAAJDQUAF9ADGgcAAAYAAwwACQ3WAR0HAAEMAAAHAAkNBAAVwAEeBwECBwAADAABBwAADAAGBwABDAAEBwAADAgABwAABuABBgcBAwcBAQcBDgcBxAEHAggPAAYMKSEJACEFAAYMAAAGBAkNBAEVkQY6DwAAGgACDwAAFwADD0wsDwAAGgAOD8IBAwcBGgcBAQcBAAcCAAcBCQcBAwcBAAcBAAcGAAcEAAcBAAcBAAcBAgcBAQcBAAcCAAcBAAcBAAcBAAcBAAcBAQcBAAcCAwcBBgcBAwcBAwcBAAcBCQcBEAcFAgcBBAcBEAc0ARmOAisaBGMaDA4aAg4aAQ4aASQaCgwPAKEBGjccGg0rGgQIGgcBGg4FGpoB+gEaAAQYANkFGgIQGgMMGgPbARoECxoEGxoENxoICRoGJxoIHRoCCxoEARoOCBkn1wIaCA0aAgwaA0YaAQAaAxEaAQwaAwsaBZIBGgFbGgAJDQAAGoUI380CByCeIgcBjS0HArA6Bw/tBAeiE50EB+ILyiYHBalCB4a3Ar9YB8GHKAACHl8CgAHvAQyQ/AP9/wMDAv3/AwM='
10
+ };
11
+ export const combiningClass = {
12
+ names: ["0", "1", "10", "103", "107", "11", "118", "12", "122", "129", "13", "130", "132", "14", "15", "16", "17", "18", "19", "20", "202", "21", "214", "216", "218", "22", "220", "222", "224", "226", "228", "23", "230", "232", "233", "234", "24", "240", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "6", "7", "8", "84", "9", "91"],
13
+ data: 'gAYUIAAAIQADGgAAIQAAFwAEGgABFAADGgABFAAKGgAEAQADGgAHIAAAJQAAIAACGgACIAABGgECIAADGgAAIAAAIQABGgAAIAAAIgABIwAAIgABIwAAIgAMIJMCBCCJAgAaAAMgAAAaAAIgAAAbAAAaAAUgAAUaAAEgAAAaAAEgAAAbAAAeAAAgAAACAAAFAAAHAAAKAAANAAAOAAAPAAAQAAARAAESAAATAAAVAAAZAQAfAQAkAAAmAQAgAAAaAQARAAACAAAVRgcgAAArAAAsAAAtMAAoAAApAAAqAAArAAAsAAAtAAAuAAAvAAEgAAEaAAQgAAAaAAEgAAAaEAAwZQYgAgMgAAAaAAAgAgEgAQAaAAEgAAAaIwAxHgAgAAAaAAEgAAAaAAEgAAIaAAAgAAEaAAAgAAAaAAIgAAAaAAAgAAAaAAAgAAAaAAAgAAAaAAEgoAEGIAAAGgAAIAkAGhgDIAEIIAECIAEEICsCGjsBIAACGgADICoEIAAEGgANIAEAGgABIAAAGgABIAAAGgACIAACGgAAKAAAKQAAKgACIAAAGgABIAABGgAEIDwAMxAANgMAIAAAGgABIGcAMxAANjAAID0AMxAANm4AMxAANm4AMxAANn8ANm4AMxAANgcANQAAN2UAMxAANm0BNhAANnwANm0BAwAANg0DBGwBBgAANg0DCEwBGhsAGgEAGgEAFzcACQAACwEADAUDCwIACwEBIAAANgEBID4AGnAAMwEBNlIAGs8FAiC0BwE2HgA2nQEANgoAIMsBAB6PAQAbAAAgAAAa2wEAIAAAGkcANhQHIAIAGjAEIAAFGgABIAAAGgEBGgABIAABGgAEIAAAGgARIAAAGgAHIAAAGgADIAAAIwABIAABGgAAIEMAMw8ANiYAIAAAGgAGIDYBNjoAMwsBNkMAM5gBAiABAAEABBoAASAAAxoAACABBgEEABoGACADASDGAQEgAAAaAAYgAAAaAAEgAAAjAAAWAAAaAAAUACQgAAAhAAEeAAAaAAAYAAAgAAAiAAAaAAAgAAAa0AUBIAABAQADIAACAQABIAQAIAMBAQAAIAAAGgAAIAABAQADGgAAIP4XAiCNAQA2YB8gqgQAGAAAHgAAIQAAGwABHGkBNNTrAQAgBAkgIAEgUAEglAIANiUANpcBADYbESA5AholADZfADMMADbvAQAgAQEgAAAaAgEgBQEgAQAgNAA29gEANrCeAQAngQYGIAAGGgABIM0HABriAQAalQEEIJINABoBACAoACAAAAEAABoEADalAQAgAAAavQQDIEEEIL0CASAeACAAARoAASAgAhoAACAAABoAACAAABoAAiAAARoBAhpGARoAAiAAABoAACAAAxoxACAAABoAACAAABrAAQA2KQA2DgA2OQA2AAAzRQIgMAE2PgAzTAA2CQAzagA2AAAzsgEAMwAANlABMxAANhgGIAMEIFkCNnEANgMAMxcAIGMANgAAM/sBADYAADN+ADZ2ADYAADNzADaNAgA2AAAzggIBNgQAM5wBADZTADYSADZRADalAwA2ggIAMwEBNlEANqkDATbsgwEANsATBAE7BiC5CQEyrJkBAAGIKQEaPAEXAAIBAwAdAAQXCAcaAgQgAAEaHgMglAECIAsCFwgBAQIAFyABF/4aBiABECACBiABASABBCBkACCgAQYg9wIAID0DIPwDASEAABoAACD+AQAgAAAa8wEAIAIAIAcBIAUAINoDBhptBSAAADM='
14
+ };
15
+ export const bidiClass = {
16
+ names: ["L", "AL", "AN", "B", "BN", "CS", "EN", "ES", "ET", "FSI", "LRE", "LRI", "LRO", "NSM", "ON", "PDF", "PDI", "R", "RLE", "RLI", "RLO", "S", "WS"],
17
+ data: 'AAgEAAAVAAADAAAVAAAWAAADAA0EAAIDAAAVAAAWAAEOAAIIAAQOAAAHAAAFAAAHAAEFAAkGAAAFAAUOGgUOGgMOAAUEAAADABkEAAAFAAAOAAMIAAMOAQEOAAAEAAEOAAEIAAEGAAAOAQIOAAAGAQQOFwAOHwAOwQMBDgcNDgINDgUIDgEQDgBvDQQBDggADgUBDgEADm4ADowBBg2AAgAOAgEOAAAIAAARACwNAAARAAANAAARAAENAAARAAENAAARAAINADURAAUCAAEOAAABAAEIAAABAAAFAAABAAEOAAoNAC8BABQNAAkCAAAIAAECAAIBAAANAGQBAAYNAAACAAAOAAUNAAEBAAENAAAOAAMNAAEBAAkGABYBAAANAB0BABoNAFoBAAoNAA4BACoRAAgNAAERAAMOAAIRAAANABcRAAMNAAARAAgNAAARAAINAAARAAQNACoRAAINAAMRAC8BAAECAAQBAAgNACkBABcNAAACAB8NNwANAQANBAcNBAANAwYNCgENHQANOgANBAMNCAANFAENDgEIBwAIAgANAgENOQANBAENBAENAgINAwANHgENAwANCwENOQANBAQNAQENBAANFAENDQAICAUNAQANOgANAgANAQMNCAANBQMNCwENHgANPQANDAANJQUOAAAIAAAOBQANAwANNwANAQINBQINAQMNBwENCwENFAYOAgANOgANDwENFAENHAENOQENBAMNCAANFAENHQANSAANBwINAQANWgANAgYNBAAIBwcNYgANAggNCwYNSQENGwANAQANAQANAAMOMw0NAQQNAQENBQoNASMNCQANZgMNAQUNAQENAgENGQENBAINEAMNDQANAgENBgANDwANvwUCDTAJDmYADv8EABYaAQ51Ag0dAQ0eAQ0eAQ1AAQ0BBg0IAA0CCg0HAAgBAA0SCQ4GCg4AAg0AAAQAAA11AQ0iAA12Ag0EAQ0JAA0GAg0EAA4DAQ6YASEOFwENAgANOgANAQYNAQANAQANAgcNBgkNAgANMEANDwMNMAANAQMNMQgNDAENIAMNAgENAQINOAANAQENAwANAQINOgcNAgENmAECDQEMDQEGDQQADQYADQMBDcYBPw29AwAOAQIOCwIODQIODQIODQEOAQoWAAIEAQARABcOAAAWAAADAAAKAAASAAAPAAAMAAAUAAAF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'
18
+ };
19
+ export const lineBreak = {
20
+ names: ["XX", "AI", "AK", "AL", "AP", "AS", "B2", "BA", "BB", "BK", "CB", "CJ", "CL", "CM", "CP", "CR", "EB", "EM", "EX", "GL", "H2", "H3", "HH", "HL", "HY", "ID", "IN", "IS", "JL", "JT", "JV", "LF", "NL", "NS", "NU", "OP", "PO", "PR", "QU", "RI", "SA", "SG", "SP", "SY", "VF", "VI", "WJ", "ZW", "ZWJ"],
21
+ data: 'AAgNAAAHAAAfAAEJAAAPABENAAAqAAASAAAmAAADAAAlAAAkAAADAAAmAAAjAAAOAAADAAAlAAAbAAAYAAAbAAArAAkiAAEbAAIDAAASABoDAAAjAAAlAAAOABwDAAAjAAAHAAAMAAADAAUNAAAgABkNAAATAAAjAAAkAAIlAAADAAEBAAADAAABAAAmAAADAAAWAAEDAAAkAAAlAAEBAAAIAAADAAABAAAbAAIBAAAmAAIBAAAjABYDAAABAB4DAAABAM4DAwAAAQAACAACAQAACAAAAQABAwAAAQAGAwADAQAAAwAAAQAAAwAACAAfAwBbDQAGEwAMDQAHAwIDAwAAGwAAAwQCAwAAGwACAwEAAwETAwHfAQMABg0ApQEDASUDATADAAAbAAAWAAMDAAAlASwNAAAWAAANAAADAAENAAADAAENAAASAAINBhoXBAMXAAEDCwUiAAIDAAIkAAEbAAEDAAoNAAASAAANAAISACoDABQNAAkiAAAkAAEiAAIDAAANAGIDAAASAAADAAYNAAAiAAADAAUNAAEDAAENAAADAAMNAAEDAAkiABMDAQEDAAANAB0DABoNAlgDAAoNAAADDgkiACADAAgNAAMDAAAbAAASAAADAgANAAElABUDAAMNAAADAAgNAAADAAINAAADAAQNAg4DARgDAAINAgADAQoDBR8DAAEiBQgNACkDABcNAAAiACANADUDAAINAAADABENAAADAAYNAAkDAAENAAEHAAkiABADAAINAQcDAgEDAhUDAQYDAQADAwMDAgANAAADAAYNAgENAgINAAADCAANBAEDAQIDAAENAgkiAAEDAAEkAAQDAAAkAAADAAAlAAEDAAANAgINAQUDBAEDAhUDAQYDAQEDAQEDAQEDAgANAQQNBAENAgINAwANBwMDAQADBwkiAAENAAIDAAANAAADCgINAQgDAQIDARUDAQYDAQEDAQQDAgANAAADAAcNAQINAQINAgADDwEDAAENAgkiAAADAAAlBwADAAUNAQINAQcDAgEDAhUDAQYDAQEDAQQDAgANAAADAAYNAgENAgINBQQNBAEDAQIDAAENAgkiAAcDCgANAAADAQUDAwIDAQMDAwEDAQADAQEDAwEDAwIDAwsDBAQNAwINAQMNAgADBgANDgkiAAgDAAAlAAADBQQNAAcDAQIDARYDAQ8D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ASgFAA0NCQIHAAANAAcHAAENAgkFAgAZAAIHAGIoGAQoAAoDAAQNAAEHAAIDAAENCgUDAgUDAgUDCQYDAQYDAT0DAnIDAAcNAAAHAAENAgkiBgAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVAAAUABoVDBYeBDAdBP8PKYAy/wMZAAYDDAQDBQAXAAANAAkXAAADAAwXAQQXAQAXAQEXAQEXAQkXAO0DAwAADAAAIwCPAQMgCwMAACQAAgMADw0AAgwAASEAARIAACMAAAwAABoGABMAAA0AABMAAA0AABMAAA0AARMAAA0AABMAAA0AABMAAA0AARMAAA0ABBkAACMAAAwAACMAAAwAACMAAAwAACMAAAwAACMAAAwAACMAAAwAACMAAAwAACMAAAwAARkAACMAAAwABhkAAgwBASEAARIAABkAACMAAAwAACMAAAwAACMAAAwABxkBABkAACUAACQAABkEBAMBhgEDAgAuAQASAAEZAAAlAAAkAAEZAAAjAAAMAAEZAAAMAAAZAAAMAAoZAAEhAAIZAAASABoZAAAjAAAZAAAMABwZAAAjAAAZAAAMAAAZAAAjAAEMAAAjAAEMAAAhAAAZAAkLACwZAAEhAB4ZAwUZAgUZAgUZAgIZAwAkAAAlAAIZAAElAQYDCgINAAAKAAABAgsDARkDARIDAQEDAQ4DAg0DInoDBQIHBCwDA1cDAQwDAwADLywDAAANggEcAwMwAw8ADQAaAwQjAwkdAwUlAwAEDQUdAwEABwAjAwQHAwAABwAEAyqdAQMCCSIGIwMEIwMEJwMIMwMLCwMBDgMBBgMBAQMBCgMBDgMBBgMBAQMDMwMMtgIDCRUDCgcDGAUDASkDAQ0DQAUDAgADASsDAQEDAwADAhYDAQAHAEYDCAgDMBIDAQEDBSADAwAHABkDBRoDJjcDBBMDAi4DAAINAQENBQMNAAMDAQIDARwDAgINBAANAAgDBwcHAAADBz8DICQDAAENBAQDAAUHAAAaCTUDAwYHABUDAhoDBRkDBwMDDAYDUEgDNzIDDTIDBykDAAMNCAkiBgkiABsDAwQNAAAWABYDCAED0AEeAwEpAwEBDQAAFgIBAxAFAwEBAwAEDQAABwAdAwEPDQAnAwgVAwAKDQAIAxYRAwADDQADAyYbAxQWAwkCDQABBAAyAgANDQAALQABBwAEGQQTGQAJBQAADQABAgABDQAAAgkAEwACDQAsAwAKDQABAwAAIgADBwAADQoAIgIYAwcJIgYCDQAjAwANDQEJIgADBwAAAwABDQAAAwgiAwAADQAAAwAACAAAAwkCDQAvAwANDQADAwABBwAAAwAABwADDQAAAwABDQAJIgAAAwAACAAAAwACBwETAwsRAwEYAwALDQABBwAAAwABBwAAAwAADQABAwAADT4GAwEAAwEDAwEOAwEJAwAABwYuAwALDQUJIgYDDQEHAgIBAgIVAgEGAgEBAgEEAgEBDQAABwAGDQIBDQIBDQAALQIABQYADQUABwABBQABAgABDQIGDQMEDQsJBQEABQIABQEBBQAjAgEAGQAIDQEADQIADQEDDQEDDQAALQAABAAADQACGQEBGQgBDR00AwARDQADAwADBwAAAwAJIgABBwEAAwAADQACAx4vAwATDQADAwgJIqYBLgMABg0CCA0AAAgAAQcAARIAAgMADgcAAwMAAQ0iLwMAEA0AAQcAAQMLCSIGDAgTKgMADA0AAQMGCSIGEyIcGigCDigECSIAASgAAgcAByi5ASsDAA4NAAADZD8DAAkiAAgDDAADAAYCAgACAgcCAQECARcCAAUNAQENAgINAAAtAAAEAAANAAAEAAENAAIHCQkFRgcDAiYDAAYNAgYNAAADAAAIAAADAAANGwADAAkNACcDAAYNAAADAAMNAAAIAAADAAMHAAAIAAADAAANCAADAAoNAC0DAA8NAAIHAAADAAIIAAEHDUgDBwkIAAADVQcNWCEDDgkiBggDASQDAAcNAQcNAAADAAQHCgkiABIDAwAIAAASAB0DAhUNAQ0NSQYDAQEDASUDAAUNAwANAQENAQYNAAADAAANCAkiBgUDAQEDAR8DAAQNAQENAQQNAAADBwkiBisDBAkiBgANAAAD7gERBQAABwADDQABBwcBDQAABAAADQAMAgEhAgAGDQMDDQAALQABBwAKGQAJBQAADVUAAw8cAwADJAAQAw0ABwCZBwNmbwMABAcAzgEDDLYCA4kSYgMN1wQDAAIjAAIMACMDAAAMAAIDAAAjAAAMAAAjAAAMAO4BAwAAIwABDACyAQMAACMABhMAACMAAAwAAhMAACMAAAwAACMAAAwAAA0ABQMADg0Kmh8DBc0DAwAAIwAADAB2A7k1HQUAEQ0ACQXGDbgEAwceAwEJIgQBBwBOAwEJIgYdAwIEDQAABwovAwAGDQACBwAJAwAABwAAAwoJIgEGAwEUAwUSA7ADLQMAAQcACSLGAVYDAAEHAAEDBRgDAhgDLEoDBAANAAADADYNBwMNAAwDQAMhAAATCwENAAEhAAIZCf81GQDaAwMkAAMAIBlfchkNkQcZDjIZnTwDAwEGAwEBAwGoAhkJAAsdAgsCAAsOBAsHiwMZhBJqAwUMAwMIAwcJAwIAAwABDQAABwADDdwe7wEDAAkiAAIDA7MDAwYWAwECAwggAwItDQIWDQlzAzz1AQMKJgMAAQ0AOwMABA0AAgMAFQ0AAQMABg0AHQMAAw0AkwEDAAINAAADCgINAAcDAAENAAEDAAANAB8DAAENPhMDDBMDDFYDCRgDhwFUAwFGAwEBAwIAAwIBAwIDAwELAwEAAwEGAwFAAwEDAwIHAwEGAwEbAwEDAwEEAwEAAwMGAwHUAgMBowIDAjEiAP8DAwA2DQADAwAxDQAHAwAADQANAwAADQABAwADBwAAAw8EDQEODVAcA+MHgQEDDgYDNjIDAAYNARANAgYNAQENAQQNBT0DIQANcCwDAwYNAAYDAgkiBAEDwAIdAwAADRErAwADDQAJIgUAJdADGwMAAw0ACSLWAR0DAAENAAADAAkiBAADwAEeAwECAwAADQABAwAADQAGAwABDQAEAwAADQgBA+ABBgMBAwMBAQMBDgMBxAEDAggDAAYNKUMDAAYNAAADBAkiBAEjkQY6AwAAJAACAwAAJAADA0w8A8IBAwMBGgMBAQMBAAMCAAMBCQMBAwMBAAMBAAMGAAMEAAMBAAMBAAMBAgMBAQMBAAMCAAMBAAMBAAMBAAMBAAMBAQMBAAMCAwMBBgMBAwMBAwMBAAMBCQMBEAMFAgMBBAMBEAM0AQOOAv8BGQAMAQACAwAdAQABAwA5AQAFAwA8AQAAAwA3GQAZJwCEAxkAABAAFRkAAQMAFhkAAQMABBkAAAMABBkAAhAAARkAABAAARkAAhAALRkABBEAQRkAARAAARkAChAAFBkAEhAAAhkAABAAAxkAAhAAABkAAhAABhkAABAAABkAABAADRkAAAMAABkAAAMAABkAAAMABBkAABAAAxkAAAMAABkAAQMATBkABgMADxkADQMADBkAFwMAKRkAARAAAxkAABAAFBkAABAAAxkAARAAPBkABwMAFxkABQMAShkAAhAAAhkABBAAJQMAAiYAAiEAAwMAIhkAABAADxkAAhAACBkAABAAChkAABAAMhkAcwMAAhkAAwMABBkAVAMABRkAAAMAFBkAGgMENwMICQMGJwMIHQMCCwMEAQMOCAMnCwMAABAAARkAABAABxkABxAABRkAABAACBkACRAAARkAAhAANxkAABAAPBkAARAAABkAARAAABkAABAAEBkAAhAAABkADBAAIRkAVwMAahkAAhAAKRkAChAABBkAkgEDAVsDAAkiAAADBf0HGQL9/wMZAv3/AxmDgCgADR5fDYAB7wEN'
22
+ };
23
+ export const eastAsianWidth = {
24
+ names: ["N", "A", "F", "H", "Na", "W"],
25
+ data: 'IF4EIgABAAEEAAABAAEEAAEBAQABAQAEAAEBAAAEAAQBAQQBAQMBBgABCQABBgEBBQMBBAABAQIBAQEBAgABAQEBAwMBAQABAQABAgABDwABAQABBwABCgEBAwABBQIBBAABBgMBAQABAwMBAQABBAEBEgEBAwABYgABAQABAQABAQABAQABAQABAQABAQABdAABDwABYgABAgABAQIBAQABAgABBwMBAQABAQABIG8BIRABAQYBBxABAQYBNwABDj8BAQABrhlfBbAdAAECAwEBAQECAQECAgEBAwEIAAEBAQEBAAEFAAECAAE1AAEKAAEBAwEkAAMCAAFWAAEBAAEDAAEJAAECAAEKAQEDAAEEAAEnAQEGAwEBCwEECQEPAAEGCQEeAQEYAAEBAAESAAEYAAEBAQEDAQECAAEDAAEBAAEDAAEEAAECAwECAAEBAAEBBQEBAAEFAwEEAQEKAAEDAAEFAAENAQECAwECAQECAQESAQECAQENAAEDAAELAAEZAAFSAAEHAQUNAQW+AQMFAwAFAgAFbIkBAQFgAQQjAQwPAQIDAQoBAQEGAQgBAQIBAQQBAQIBAQQCAQIAAQIDARADAQkAAQ0BBQYBAQIAAQQBAQQBBQYAAQEAAREHBQgAAQEAAQULBQwBAQECAQEDAQEBAQEAAQ8ABQoFBQMABQoBAQEABQgBBREBBQAAAQQBBQAHAQAABQAEAQAABQAMAQEAAQQBAQAABQAGAQABBQAAAQAABQADAQAABQABAQAABQABAQUABQQBBRwABRQAAQ4ABQEABQQCBQEABR4JARUCBRgABQ4ABSYHBJcDAQSUAwEFMwAFBAAFAAMBpgYZBQFYBQzVAQUaDwUAAAIAPQUCVQUCZgUFKgUBXQUBVQUJLwUBJwUABwEAvOQBBQM2BZkJHAWDBaNXBdwQ/zEBAP8DBYAGDwEACQUWIgUBEgUBAwWVAV8CAF0DAwUDAgUDAgUDAgIDAwYCAQYDDgAB4t8BBAULBgUJ2jkFJCEFX3IFDZEHBQ4yBZ08AwUBBgUBAQUBqAIFCQAFHQIFAgAFDgQFB4sDBYRAVgUJFgWNOQAFygEABTAKAQUdAQI5AQYdAQAABQABAQAJBQARAQEABVECBQ0rBQQIBQcBBQ4FBZoBIAUMCAUBRQUBFQUMKgUEBAUMEAUDAAUDRgUBAAUBugEFAj4FDQMFARcFEgAFGgEFDQAFVlQFMEUFBgAFAwIFAgQFAgMFCwEFBwgF3QEABQULBQQABZsCLgUBCQUBuAEFcAwFA0YFAQAFAxEFAQwFAwsFhQr9/wMFAv3/AwWCgijvAQGQ/AP9/wMBAv3/AwE='
26
+ };
27
+ export const script = {
28
+ names: ["Zzzz", "Adlm", "Aghb", "Ahom", "Arab", "Armi", "Armn", "Avst", "Bali", "Bamu", "Bass", "Batk", "Beng", "Berf", "Bhks", "Bopo", "Brah", "Brai", "Bugi", "Buhd", "Cakm", "Cans", "Cari", "Cham", "Cher", "Chrs", "Copt", "Cpmn", "Cprt", "Cyrl", "Deva", "Diak", "Dogr", "Dsrt", "Dupl", "Egyp", "Elba", "Elym", "Ethi", "Gara", "Geor", "Glag", "Gong", "Gonm", "Goth", "Gran", "Grek", "Gujr", "Gukh", "Guru", "Hang", "Hani", "Hano", "Hatr", "Hebr", "Hira", "Hluw", "Hmng", "Hmnp", "Hung", "Ital", "Java", "Jurc", "Kali", "Kana", "Kawi", "Khar", "Khmr", "Khoj", "Kits", "Knda", "Krai", "Kthi", "Lana", "Laoo", "Latn", "Lepc", "Limb", "Lina", "Linb", "Lisu", "Lyci", "Lydi", "Mahj", "Maka", "Mand", "Mani", "Marc", "Medf", "Mend", "Merc", "Mero", "Mlym", "Modi", "Mong", "Mroo", "Mtei", "Mult", "Mymr", "Nagm", "Nand", "Narb", "Nbat", "Newa", "Nkoo", "Nshu", "Ogam", "Olck", "Onao", "Orkh", "Orya", "Osge", "Osma", "Ougr", "Palm", "Pauc", "Pcun", "Perm", "Phag", "Phli", "Phlp", "Phnx", "Plrd", "Prti", "Rjng", "Rohg", "Runr", "Samr", "Sarb", "Saur", "Seal", "Sgnw", "Shaw", "Shrd", "Sidd", "Sidt", "Sind", "Sinh", "Sogd", "Sogo", "Sora", "Soyo", "Sund", "Sunu", "Sylo", "Syrc", "Tagb", "Takr", "Tale", "Talu", "Taml", "Tang", "Tavt", "Tayo", "Telu", "Tfng", "Tglg", "Thaa", "Thai", "Tibt", "Tirh", "Tnsa", "Todr", "Tols", "Toto", "Tutg", "Ugar", "Vaii", "Vith", "Wara", "Wcho", "Xpeo", "Xsux", "Yezi", "Yiii", "Zanb", "Zinh", "Zyyy"],
29
+ data: 'AECxAQAZSwAFsQEAGUsALrEBAABLAA6xAQAASwAEsQEAFksAALEBAB5LAACxAQDAA0sAJrEBAARLAASxAQABDwATsQEAb7ABAAMuAACxAQACLgIDLgAAsQEAAC4EAC4AALEBAAAuAACxAQACLgEALgETLgE+LgANGgAPLgCEAR0AAbABAKgBHQElBgE3BgE4NgYaNgQFNgsEBAAAsQEABQQAALEBAA0EAACxAQACBAAAsQEAHwQAALEBAAkEAAqwAQAZBAAAsAEAawQAALEBACEEAA2RAQE7kQECApEBAC8EADGdAQ46aAICaAAtfwIOfwEbVQIAVQEKkQEFIQQFSgQAALEBABwEAFAeAAOwAQAOHgABsQEAGR4AAwwBBwwCAQwCFQwBBgwBAAwDAwwCCAwCAQwCAwwIAAwEAQwBBAwCGAwCAjEBBTEEATECFTEBBjEBATEBATEBATECADEBBDEEATECAjEDADEHAzEBADEHEDEKAi8BCC8BAi8BFS8BBi8BAS8BBC8CCS8BAi8BAi8CAC8PAy8CCy8HBi8BAm4BB24CAW4CFW4BBm4BAW4BBG4CCG4CAW4CAm4FBG4EAW4BBG4CEW4KAZYBAQWWAQMClgEBA5YBAwGWAQEAlgEBAZYBAwGWAQMClgEDC5YBBASWAQMClgEBA5YBAgCWAQYAlgEOFJYBBQyaAQECmgEBFpoBAQ+aAQIImgEBApoBAQOaAQcBmgEBApoBAQGaAQIDmgECCZoBBwiaAQAMRgECRgEWRgEJRgEERgIIRgECRgEDRgcBRgUCRgEDRgIJRgECRgwMXAECXAEyXAECXAEFXAQPXAIZXAECiQEBEYkBAxeJAQEIiQEBAIkBAgaJAQMAiQEEBYkBAQCJAQEHiQEGCYkBAgKJAQw5ngEEALEBABueASUBSgEASgEESgEXSgEASgEWSgIESgEASgEGSgEJSgIDSiBHnwEBI58BBCafAQEjnwEBDp8BAQafAQADsQEAAZ8BJZ8BYgAlKAEAKAUAKAIqKAAAsQEAAygA/wEyAEgmAQMmAgYmAQAmAQMmAigmAQMmAiAmAQMmAgYmAQAmAQMmAg4mATgmAQMmAkImAh8mAxkmBlUYAgUYAv8EFQAcagNKfgACsQEACn4HFZwBCQCcAQAUNAABsQEJExMMDJIBAQKSAQEBkgEMXUMCCUMGCUMGAV4AAbEBAABeAACxAQATXgZYXgcqXgVFFQoeTQELTQQLTQQATQMLTQAdlAECBJQBCyuVAQQZlQEGCpUBAwGVAQAfQwAbEgIBEgA+SQEcSQIKSQYJSQYNSQJAsAEPTAgBMQgAP44BADMLCAMLADdMAw5MAwJMAC9rAAodBSooAgIoAAeOAQgCsAEAALEBAAywAQAAsQEABrABAAOxAQAAsAEABbEBAACwAQACsQEAAbABAACxAQUlSwAELgAAHQAwSwAELgADSwAELgAMSwAAHQBFSwAALgA/sAEA/wFLABUuAgUuAiUuAgUuAgcuAQAuAQAuAQAuAR4uAjQuAQ4uAQ0uAgUuARIuAgIuAQguAQuxAQABsAEAVrEBAQqxAQAASwIKsQEAAEsAD7EBAA9LACSxAQsgsAEPJbEBAAAuAAKxAQABSwAFsQEAAEsAGrEBAABLABCxAQAoSwACsQEEmQWxARYKsQEVnwexAQD/AREA8wSxAQKJAbEBAF8pAB9LAHMaBQYaACUoAQAoBQAoAjebAQcBmwEOAJsBABYmCQYmAQYmAQYmAQYmAQYmAQYmAQYmAQYmAR8dAF2xAQIDsQEcGTMBWDMM1QEzGhSxAQAAMwAAsQEAADMAGLEBAAgzAAOwAQABMgAHsQEAAzMAA7EBAVU3AgGwAQABsQEAAjcAALEBAFlAAAGxAQACQAUqDwFdMgEPsQEAHw8AJbEBCQCxAQAPQAAeMgE/sQEAHjIAULEBAC5AAACxAQBXQACnAbEBAL8zMwA/sQEA/6MBMwCMCa4BAzauAQkvUACrAqcBFF8dAFcJCCGxAQBlSwACsQEAUksEAEsODksALJABAwmxAQY3dghFgQEIC4EBBh8eAC0/AACxAQAAPwAjfAsAfAAcMgNNPQEAsQEACT0EAT0AHmIBNhcJDRcCCRcCAxcAH2IAQpgBGASYAQAWYAoFJgIFJgIFJgkGJgEGJgEqSwAAsQEACEsAAC4AA0sAAbEBAAFLAk8YAC1gAglgBqNXMgwWMgQwMoRC7QIzAmkzJgZLDAQGBRk2AQQ2AQA2AQE2AQE2AQk2AO0DBAABsQEAjwEEIA8EAA+wAQAJsQEGDbABAAEdACKxAQESsQEBA7EBBAQEAYYBBAIAsQEBH7EBABlLAAWxAQAZSwAKsQEACUAAALEBACxAAAGxAQAeMgMFMgIFMgIFMgICMgMGsQEBBrEBCgSxAQILTwEZTwESTwEBTwEOTwINTyJ6TwUCsQEELLEBAwixAQBOLgEMsQEDAC4vLLEBAACwAYIBHFEDMBYPALABABqxAQQjPAkCPAAaLAUqdQUdpgEBAKYBACOrAQQNqwEqTyEAL4QBAB1wAglwBiNvBCNvBCckCDMCCwACAAqoAQEOqAEBBqgBAQGoAQEKqAEBDqgBAQaoAQEBqAEDM6IBDLYCTgkVTgoHThgFSwEpSwENS0AFHAIAHAErHAEBHAMAHAIAHAAVBQEIBQAfcgAeZggIZjASNQEBNQUENQAbeQMAeQAZUgUAUgAZhwEmH1sAF1oEE1oCLVoAA0IBAUIFB0IBAkIBHEICAkIECUIHCEIHH4ABAB9lICZWBAtWCTUHAwYHABV7Agd7ABJ3BQd3ABF4BwN4DAZ4UEhtNzI7DTI7BwU7ACd9CAl9BiUnAxwnCAEn0AEeBAEprQEBAq0BAgGtARAFBAElBAEPBAAniwEIKYoBFhlxJhsZFBYlCU0QBCMQCQAQAEJICgBIAhiMAQcJjAEGNBQBERQIJlMJX4UBAROJAQsRRAEuRD4GYQEAYQEDYQEOYQEKYQY6iAEFCYgBBgMtAQctAgEtAhUtAQYtAQEtAQQtAQCwAQAILQIBLQICLQIALQYALQUGLQIGLQMELQsJpQEBAKUBAgClAQElpQEBCaUBAQClAQIApQEBA6UBAQmlAQEBpQEIAaUBHVtnAQRnHkegAQgJoAGmATWGAQIlhgEiRF0LCV0GDF4TOZMBBgmTAQYTYhwaAwIOAwQWA7kBOyBkUqkBDACpAQAGHwIAHwIHHwEBHwEdHwEBHwILHwkJH0YHZAItZAIKZBtHrwEIUo0BDQ8VADhzBwoeVQeFAVghjwEOCY8BBggOASwOAQ0OChwOAx9XAhVXAQ1XSQYrAQErASsrAwArAQErAQgrCAkrBgUqAQEqASQqAQEqAQUqBwkqBiujAQQJowEGAQzuARhUBxBBAShBAxxBVQBQDzGWAQ0AlgEAmQesAWbDAqwBDFesAQCjAXQAOqwBiRJiGw3VCCMKmh8jBcYEOLk1OTDGDbgECQceXwEJXwQBXwBOoQEBCaEBBh0KAgUKCkU5Cgk5AQY5ARQ5BRI5sAM5R8YBWlgFGA0CGA0sSnoEOHoHEHpAAJcBAABpAAEzAABFCwYzCf81lwEA2gNFJABFACCXAV9ylwENkQc+DjI+nTwDQAEGQAEBQAEAQACeAjcAAkAAADcABEAJADcdAjcCAEAOBEAHiwNphBJqIgUMIgMIIgcJIgIDIgADsQHcHvwBsQEDswOxAQYWsQEBArEBCCCxAQItsAECFrABCXOxATz1AbEBCiaxAQABsAEAPbEBAAKwAQAQsQEAB7ABAAGxAQAGsAEAHbEBAAOwAQBRsQEARS4KCrEBAAGwAQAksQE+E7EBDBOxAQxWsQEJGLEBhwFUsQEBRrEBAQGxAQIAsQECAbEBAgOxAQELsQEBALEBAQaxAQFAsQEBA7EBAgexAQEGsQEBG7EBAQOxAQEEsQEBALEBAwaxAQHUArEBAaMCsQECMbEBAIsFgwEPBIMBAQ6DAVAcsQHjB4EBSw4GSzYlSwABLgAKSwAGKQEQKQIGKQEBKQEEKQU9HSEAHXAsOgMNOgIJOgQBOsACHqQBETmqAQUAqgHQAylj1gEqbAQAbMABHpkBARWZAQgBmQHgAQYmAQMmAQEmAQ4mAcQBWQIPWSlLAQQJAQQBAZEGQ7EBTDyxAcIBAwQBGgQBAQQBAAQCAAQBCQQBAwQBAAQBAAQGAAQEAAQBAAQBAAQBAgQBAQQBAAQCAAQBAAQBAAQBAAQBAAQBAQQBAAQCAwQBBgQBAwQBAwQBAAQBCQQBEAQFAgQBBAQBEAQ0AQSOAiuxAQRjsQEMDrEBAg6xAQEOsQEBJLEBCq4BsQE3GbEBAAA3AAGxAQ0rsQEECLEBBwGxAQ4FsQGaAdkHsQECELEBAwyxAQPbAbEBBAuxAQQbsQEEN7EBCAmxAQYnsQEIHbEBAguxAQQBsQEOCLEBJ9cCsQEIDbEBAgyxAQNGsQEBALEBAxGxAQEMsQEDC7EBBZIBsQEBZrEBhQjfzQIzIJ4iMwGNLTMCsDozD+0EM6ITnQQz4gvKJjMFqUIzhrcCv1iCAcGHKACxAR5fsQGAAe8BsAE='
30
+ };
31
+ export const graphemeBreak = {
32
+ names: ["XX", "CN", "CR", "EX", "L", "LF", "LV", "LVT", "PP", "RI", "SM", "T", "V", "ZWJ"],
33
+ data: 'AAkBAAAFAAEBAAACABEBXyABDQAB0gRvA5MCBgOHAiwDAQADAQEDAQEDAQIDNgUICgoDAQABLhQDEAADZQYDAAAIAQUDAgEDAQMDIQAIAQADHhoDWwoDOggDCQADGAMDAQgDAQIDAQQDKwIDNAEIBQgDKhcDAAAIAB8DAAAKNgADAAAKAAADAQIKAAcDAAMKAAADAAEKAQYDCgEDHQADAAEKOAADAQADAAEKAAMDAgEKAgEKAAADCQADCgEDGgADAgEDAAAKOAADAQIKAAEDBAEDAgIDAwADHgEDAwADCwEDAAAKOAADAQIKAAQDAQEDAAAKAQEKAAADFAEDFgUDAQADAAEKOAADAQEDAAAKAAMDAgEKAgEKAAADBQQDCgEDHgADOwADAAAKAAADAAEKAwIKAQIKAAADCQADKAADAAIKAAADNwADAQIDAAMKAQIDAQMDBwEDCwEDHQADAAEKOAADAQAKAAEDAAAKAAADAAEKAQIDAQMDBwEDCwEDDwAKDAEDAAEKNwEDAQADAAEKAAMDAQIKAQIKAAADAAAICAADCgEDHQADAAEKRgADBAADAAEKAAIDAQADAQYKAAADEgEKPQADAQAKAAYDDAcDYgADAQAKAAgDCwYDSQEDGwADAQADAQADBAEKMQ0DAAAKAAQDAQEDBQoDASMDCQADZgMDAAAKAAUDAQEDAAEKAAEDFwEKAAEDBAIDEAMDDQADAQAKAAEDBgADDwADYl8EAEcMAFcL3QICA7IHAwMcAgMdAQMeAQNAAQMAAAoABgMABwoAAAMAAQoACgMJAAMtAgMAAAEAAAN1AQMiAAN2AgMAAwoAAQMAAgoEAQoAAAMABQoAAgPbAQEDAAEKAAADOQAKAAADAAAKAAYDAQADAQADAgcDAAUKAAkDAgADMEADDwMDAAAKLwkDAAMKAAIDJggDDAEDAAAKHgAKAAMDAAEKAAUDOAADAAAKAAEDAAIKAAADAAAKAAQDMAcKAAcDAAEKAAEDmAECAwEMAwAACgAGAwQAAwYAAwIACgABA8YBPwOLBAABAAADAAANAAEBGAYBMQ8BYCAD/hcCA40BAANgHwOqBAUDaQED1OsBAwMBCQMgAQNQAQOQAgADAwADBAADFwEKAAEDAAAKBAADUwEKMg8KAAEDGhEDDQADJgcDGQoDAAAKAAADDBwEAwIDAAAKLwADAAEKAAMDAAEKAAEDAAEKAAADJAADQwUDAAEKAAEDAAEKAAEDDAADCAADAAAKLgADMwADAQIDAgEDBQEDAQADKQAKAAEDAAEKBQAKAAAD7AEBCgAAAwABCgAAAwABCgEACgAAAxIABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwAABgAaBwwWDAQwC6JGAAPhBQ8DEA8DzwEAAZ4BAQNQCwGBBAAD4gEAA5UBBAOGDQIDAQEDBQMDKAIDBAADpQEBA70EAwNBBAO9AgEDHgQDIA8DRgoDMQMDegAKAAADAAAKNQ4DKQADAgEDCgIDAAAKLQIKAAMDAAEKAAEDAgAIBAADCgAIMgIDJAQDAAAKAAcDEAEKLAADDAEDAAAKMAIKAAgDAAAKAAADAQEIBQMDAQAKAAADXAIKAAIDAAEKAAMDBgADAgADnQEAAwACCgAHAxUBAwABCjcBAwEAAwAACgAAAwADCgIBCgIBCgAAAwkAAwoBCgIGAwMEA0MAAwABCgAFAwEAAwIAAwECAwAACgEBCgACAwAACAAAAw4BA1ICCgAHAwABCgACAwAACgAAAxcAA1EAAwABCgAFAwAACgAAAwABCgAAAwAACgABAwAACgABA+sBAAMAAQoAAwMCAwoAAQMAAAoAAQMbAQNSAgoABwMAAQoAAAMAAAoAAQNqAAMAAAoAAAMAAQoABwNlAAMAAAoAAAMCAwMAAAoABAOAAgIKAAgDAAAKAAED9QEAAwAECgEBCgIDAwAACAAACgAACAAACgAAA40BAgoAAwMCAQMAAwoAAAMDAAocCQMoBQMAAAoBAwMIAAMJBQMAAQoAAgMoBQgADAMAAAoAAQPGAQADAAAKAAIDAAAKAAADAAAKxwEACgAGAwEFAwAACgAAA1IVAwEACgAGAwAACgABAwAACgABA3oFAwMAAwEBAwEGAwAACAAAA0IECgEBAwEBCgAAAwAACgAAA1gAA4ICAQMAAQoJAQMAAAgAAAowAQoABAMDAQoAAgMXAAPVKQ8BAAADBg4DyFkLAwACCgACA8ATBAM7BgOsBAAMAwMM5AMAAwE2CgcDA1EAAwsBA6uZAQEDAQMB3CQtAwIWA+ADAQM8BAMDBQMABwEABwMCBgMeAwOUAQIDCwIDCAEDAgADIAED/g42AwQxAwgAAw4AAxYEAwEOA9AKBgMBEAMCBgMBAQMBBANkAAOgAQYD9wIAAz0DA/wDAwP+AQED8wEAAwIAAwcBAwUAA9oDBgNtBgObERkJ+wMEA4CYMB8BAF8DAH8BAO8BAwCPHAE='
34
+ };
35
+ export const conjunctBreak = {
36
+ names: ["None", "Consonant", "Extend", "Linker"],
37
+ data: 'gAZvApMCBgKHAiwCAQACAQECAQECAQICRgoCMBQCEAACZQYCAgUCAgECAQMCIwACHhoCWwoCOggCCQACGAMCAQgCAQICAQQCKwICOwgCKhcCAR8CEiQBAAACAQACBAcCBAADAwYCAAcBAgECFAcBAQACExMBAQYBAQABAwMBAgACAQACAgMCCAADCQACBAEBAQABAgECDAEBDAACAgECOQACBAECBAECAgICAwACHgECAwACCwECEhMBAQYBAQEBAQQBAgACBAQCAQECBAADFAECFQABAAUCAQACExMBAQYBAQEBAQQBAgACAQECAQMCCAADBQQCBAEBAQABAgECDQABEAACOwACAQACDAACCQACKAACAwACEBMBAQ8BAgACAQICBQICAQICAAADBwECAQIBBwECHQACOgACAgECAQACAwICAQMCBwECCwECHAECEyUBAAECAQACAgMCCAADCQACCgECHQACSAACBAACAgICAQACCAACUQACAgYCDAcCYgACAggCCwYCSQECGwACAQACAQACNw0CAQQCAQECBQoCASMCCQACOSoBAgMCAQUCAQADAAACAgECAAABEAUBAgECAAMBAAICAAABAwEBBwIBAAMCAAwBAAACAgECBgACAAABDgACvwUCArIHAwIcAgIdAQIeAQIMMwEAAQIBBgIIAAICCAIAAAMAAAIJAAItAgIBAAJ1AQIiAAJ2AgIEAQIJAAIGAgLbAQECAgACBDQBAQACAQYCAQADAQACAgcCBgkCAgACMEACDwMCBwEBBiABAAkCBAECAAADAAcBHggCDAECAR0BAQMCAgICAAADAAECAAEBCwIBKAACAQECAwACAQQCOAcCAgECmAECAgEMAgEGAgQAAgYAAgABAwEBAsYBPwKNBAACwgEgAv4XAgKNAQACYB8CqgQFAmkBAtTrAQMCAQkCIAECUAECkAIAAgMAAgQAAhkBAgUAApcBAQIaEQINAAImBwIZCgIBAAIsAgIGAgEDIwEAAAICAwICAQICAAMfBAEAAAIBCAEKBAEqBQICAQICAQIMAAIIAAITDwEBAgEGAAEBAAIBAQEwAAIBAgICAQIFAQIBAAIeCgEBAQIIAAPJARoBCgACAgACBAACsJ4BAALhBQ8CEA8C7gIBAt0EAALiAQAClQEEAoUNAAEAAgIBAQIFAwIAAwEBAgEBHAECAgIEAAOlAQECvQQDAkEEAr0CAQIeBAIgDwJGCgIxAwJ7AAI2DgIpAAICAQIKAgIxAwICAQIHAAI9AgIAIwEABAIBBQIAAAMAAAIPAAECAAErAAIMAQI0CAIBAAIIAwICAAJfAgICAwIGAAICAAKdAQACAwcCFQECOQECAQACAQACDAACCQACDgYCAwQCCwkBAQABAgABASUBAgACAgUCAQACAgACAQICBAECAAADAQACDgECVQcCAgICAQACFwACUQACAgUCAQACAgACAQECAQEC6wEAAgIDAgYBAgEBAhsBAlUHAgIAAgEBAmoAAgEAAgIHAmUAAgEAAgIDAgEEAoMCCAIBAQLFAQYBAgABAgcBAQEBARcBAAACCgICAAADBAACkAEDAgIBAgQAAh8AAQAJAgAnAQAFAgEAAwADAggAAwgAAQAFAgICAgAnAQYMAgEAAgAAA3AAAVUAAgECAgEAAskBBgIBBQIBAAJSFQICBgIBAQIBAQJ6BQIDAAIBAQIBBgIBAAJIAQIDAAIBAAJYAAIAAAGBAgECCwECAgwBASEBAgQCBQECAAADFwAC5SkAAgYOAshZCwIDAgLAEwQCOwYCmAgAAj8DAlEAAgsBAquZAQEC4SQtAgIWAuADAQI8BAIDBQIIBwICBgIeAwKUAQICCwICCAECAgACIAEC/g42AgQxAggAAg4AAhYEAgEOAtAKBgIBEAICBgIBAQIBBAJkAAKgAQYC9wIAAj0DAvwDAwL+AQEC8wEAAgIAAgcBAgUAAtoDBgJtBgKwFQQCoJgwXwKAAe8BAg=='
38
+ };
39
+ export const extendedPictographic = {
40
+ names: ["No", "Extended_Pictographic"],
41
+ data: 'qQEAAQQAAY0/AAEMAAHYAQABFgABWgUBDwEB7wIBAQwAAaYBAAEZCgEEAgHHAQAB5wEBAQoAAQkAAToDAQEEAQkAAQIAAQIBAQIAAQQAAQIAAQEBAQIAAQMAAQMBAQgCAQUAAQEAAQULAQsBAQIAAQEBAQEAARIAAQIBARIFAQEAAQEBAQMBAQUAAQIBAQQBAQsBAQUBAQIAAQUBAQEAAQEBARQBAQUFAQEDAQIAAQQAAQIAAQIFAQEAAQIAAQEAAQEAAQYAAQMAAQYAAQoBAQ8AAQIAAQQAAQEAAQQCAQEAAQsBATACAQkAAQ4AAQ4AAfQCAQHPAwIBEwEBMwABBAAB2gkAAQwAAdkEAAEBAAHq+gYAAScDAWQLAQ8BAQ8AAQ4BASUJAXABAQwBAQ4AAQIJARQ2ARsOAQoAARQAAQIIAQEDAQkWAQa7AQECbwECAQEBAgECUgECAgEBAwEF/QEBAT4BCwUBARcBBwEBAgcBDAABAgMBAgABBAEBDQEBAgABCAEBCQABBQIBDAIBCAIBAgABAQABBAABBgABAwABBlUBMEUBBQcBAhABAwABAQUBAgwB3AEUARsDATgHAQoFASgHAR4BAQwDAQINAQkmAQwuAQEJAQG4AQFYBwEOkQEBgAL9BwE='
42
+ };
43
+ export const joiningType = {
44
+ names: ["X", "ALAPH", "C", "D", "DALATH_RISH", "L", "R", "T", "U"],
45
+ data: 'gAwFCAIACAIACBQAAwAACAADBgAAAwAABgAAAwAABgAEAwADBgAMAwAAAgAGAwAABgABAyMBAwECBgAACAACBgAPAwARBgAlAwAABgABAwAIBgAAAwAABgAAAwAABgABAwABBgEABgcACBABBgoCAwIAAw8ABwAAAQECAwABBAACBgADAwAABgAIAwAABgAAAwAABAAAAwAABgABAwAABB0ABgAKAwACBgAOAwABBgADAwAABgAAAwABBgACAwABBgAFA0ogAw8AAkUABgAEAwABBgAAAwAABgAJAwAABgAAAwACBgcAAwAACAADAwAACAAABgAAAwABBgUSBgACAgAAAwABCAAEAwAABgAAAwABCA4JAwACBgAACAAABgABAwABBgAFAwAABgAOAxkACKMeAAgAAAMCAAIDAAgRWAMHBAgAAQcAIQMBAAPhDgAIAAACIQAINgMI1o8CMQMAAAUAAAjMxAEEAwAABgAACAAABgAACAABBgABCAAABQAEBgADAwAABQAEAwAABgACAwAABgABCAAABgYDAwAABpABAAMAAAYAAAMAAgYAAgMAAAYAAQMAAAYAAAMAAQYAAAMAAAYXAwYAAQMAAAjQAgAFACADAAAGAAADngMABgABAwEBAxEVBUECAwAABgAQAwAACAsCAwAABhsDAwABBgALAy4AAwAACAABAwACBgAACAAAAwABBgABAwAABgABAwAACAAAAwABBgAAAwADCAAABgAAAwAABfEBAAgPAAiysANDAwcABw=='
46
+ };
47
+ export const indicCategory = {
48
+ names: ["X/END", "A/SMVD", "As/END", "C/BASE_C", "CM/BASE_C", "CS/BASE_C", "DOTTEDCIRCLE/BASE_C", "H/ABOVE_C", "H/BELOW_C", "H/END", "M/AFTER_MAIN", "M/AFTER_POST", "M/AFTER_SUB", "M/BEFORE_SUB", "M/BELOW_C", "M/PRE_M", "MH/END", "ML/END", "MPst/AFTER_POST", "MR/END", "MW/END", "MY/END", "N/END", "PLACEHOLDER/BASE_C", "PT/END", "Ra/BASE_C", "Repha/END", "Robatic/END", "SM/BEFORE_SUB", "SM/SMVD", "SMPst/SMVD", "Symbol/SMVD", "V/BASE_C", "VAbv/ABOVE_C", "VBlw/BELOW_C", "VPre/PRE_C", "VPst/POST_C", "VS/END", "Xgroup/END", "Ygroup/END", "ZWJ/END", "ZWNJ/END"],
49
+ data: 'LQAXAgkXZgAXEQEeIwAXqBADHQAQIAAaAwAAGQAIAwABDAAAFgAAHwAADAAADwAMDAAACAAADwAADAEBAQABHQACDAAHAwABIAABDAIJFwIFIAAHAwAAFwACHQEHIAIBIAIBIAATAwEFAwAAGQEAAwMDAwIAFgAAHwAACwAADwAACwADDAIBDwIBCwAACAAAAwgACwQBAwEAAwABIAABDAIJFwAAGQAAAwoAFwEAHQICHQEFIAQBIAIBIAATAwEFAwAAGQEBAwEBAwEBAwIAFgEACwAADwAAEgABCwQBCwIBCwAACAMADgcDAwEAAwcJFwABHQABAwEABAsCHQEIIAECIAEBIAATAwEFAwAAGQEBAwEEAwIAFgAAHwAACwAADwAECwAADAEBDAAACwEBCwAACBIBIAABCwIJFwkAAwAAAQAAFgAAAQACFgEAHAABHQEHIAIBIAIBIAATAwEFAwAAGQEBAwEEAwIAFgAAHwAACwAACgAACwADDAIADwAACgIBCwAACAUBCgAAFgAACgAACwQBAwEAAwABIAABDAIJFwEAAxAAHQIFIAMCIAECIAAAAwMBAwEAAwEBAwMBAwMCAwMBAwAAGQAIAwQBCwAADAABCwMCDwECCwAABwkACw4JFxAEHQAHIAECIAECIAATAwEFAwAAGQAIAwIAFgAAHwAEDQABDAECDQECDQAABwcBDQECAwIAAwIBIAABDQIJFxAAFwACHQEHIAECIAECIAATAwEFAwAAGQACAwEEAwIAFgAAHwAEDQABDAEADQABDAEBDAAADQAABwcBDAYBAwEBIAABDQIJFwEBBQAAHQwDHQAAFwAHIAECIAECIAAaAwAAGQAJAwABDAAAHwAGCwECDwECCwAABwAAGgUCAwAACwcCIAABCwIJFwoFA4AFAwMAABkAFQMAABkABAMACSAAASQAASEAASIAACMAAAEAAiEAAAEAABYAAB0AAAkAAAIAABUAABMAABQAABAAAAMACxcCAAMBAQMAAyAAASQAASIAABkAAgMAARUAABEAAAMAACQAARgAAQMAASQABBgAAgMAAyEADAMAABQAACQAACMAASEABh0AAAMAAB0ACRcAAh0AACHiDRkDAAAZAAcDABAgAgAkAAMhAAIiAAAhAAEkAAIjAAEkAAAmAAEnAAEbAAAmAAAbAAQmAAAJAAAnBQAXAgAfAAAnAgkX5gkCAQEUAQADHwAAAQADHwABAwAAAQABBQACAQAAF5EGACkAACgCBRcMABdRAB4NAh7HCgAGLgMX4YUCEQEABR8GACAAAAzgAQQDAAAhAQgDAAkXAAQDYQ8DAQIDAAIXAwADAAAYAAEWAAEDgKcBDyXxKQIdNwEWkwcTFw=='
50
+ };
51
+ export const useCategory = {
52
+ names: ["O", "B", "CGJ", "CMAbv", "CMBlw", "CS", "FAbv", "FBlw", "FMAbv", "FMBlw", "FMPst", "FPst", "G", "GB", "H", "HM", "HN", "HR", "HVM", "IS", "J", "MAbv", "MBlw", "MPre", "MPst", "N", "R", "RK", "SB", "SE", "SMAbv", "SUB", "Sk", "VAbv", "VBlw", "VMAbv", "VMBlw", "VMPre", "VMPst", "VPre", "VPst", "WJ", "ZWNJ"],
53
+ data: 'LQANAgkBIQAcAQAdHQAcAQAdIgANDAApBAEKIwAN9wQAAvAFAAGJAyABAAgjBgABAgAjQhgBAAIEpAECIwAAJgA1AQAAIQAAKAAABAAAAQAAKAAAJwAAKAADIgADIQADKAAADgAAJwAAKAEAIwAAJAIAIQABIgAJAQABIgIJAQINAQAADQAAIwABJgEHAQIBAQIVAQEGAQEAAQMDAQIABAAAAQAAKAAAJwAAKAADIgIBJwIBJwAADgkAKAQBAQECAQABIgILAQoAAQEACAIBIwAAJgEFAQQBAQIVAQEGAQEBAQEBAQEBAQIABAEAKAAAJwAAKAABIgQBIQIBIQAADgMAJAcDAQEAAQcJAQAAIwAAAwABDQEAFgsBIwAAJgEIAQECAQEVAQEGAQEBAQEEAQIABAAAAQAAKAAAJwAAKAADIgAAIQECIQEBKAAADhIBAQABIgIJAQkAAQAAIwAAAwAAIwACAwEAIwABJgEHAQIBAQIVAQEGAQEBAQEEAQIABAAAAQAAKAAAIQAAKAADIgIBJwIBJwAADgUEIQQBAQECAQABIgIJAQEAARAAIwIFAQMCAQEDAQMBAQEAAQEBAQMBAQMCAQMLAQQBKAAAIQABKAMCJwECJwAADgkAKA4JARAAIwACJgAAIwAHAQECAQEWAQEPAQIABAAAAQACIQADKAECIQECIQAADgcAIQAAIgECAQUBAQABIgIJARAAAQAAIwABJgEHAQECAQEWAQEJAQEEAQIABAAAAQAAKAABIQADKAECIQECIQAADgcBKAcAAQEBAQABIgIJAQEBBQAAJgwBIwABJgAIAQECAQEoAQABIQAAAQACKAADIgECJwECJwAADgAAGggAKAcCAQABIgIJAREAIwABJgERAQMXAQEIAQEAAQIGAQMAEgQCKAABIQAAIgEAIgEAKAAFJwAAKAYJAQIBKIwCAQECAgERASIGEwEBAAkBAAkBAAMEACgAACcABwEBIwEEAAQAACIAASEAACIAAyEAAyIAACMBACIAACEAASMAACIBASMABAEACh8BIx8JAAk5KgEAASgAASEAASIAACcAAyEAACMAACQAACYAABMAACEAABgAABcAARYACgEBAA0CAA0BBQEAASgAASIAAwEAAhYAAAEAACgAASYAAQEAASgABCYAAgEAAyEADAEAABYAACgAACcAASEA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JgAADgAAAQIAJxsAAQAAIQABIgAFIQAAIgAnAQAACQAAIgADIwAAJgAABQADHwAADQUADQEAEwgAAQAAIQABIgACIQABKAACIgAnAQAFGgALBwAAIwAAJgAAAwAAEwMAAWwAAVUAIQAAKAABIgAAIQAAKAAAIQAAKJgBCAEBJAEAACgAASEABCIBAyEAASMAACYAAA4AAAEPHAEFHQECFR8BBh8AACIAACcAACIAACEAACgAASNJBgEBAQEBJQEABCEAACIDACEBASEBACEAASMAAAQAACEAACIAABMAABoAABYICQEGBQEBAQEBHwEABCgBASEBASgAACMAACYAABMICQFGACMAAAHuAREBAAANAAAhAAAiAAAnAAAoCQEjAAAaAAAmAAwBASEBAAEoAAEhAAIiAwEnAAAhAAAoAAATDQkBAAADpSGvCAwABhQAABwAAB0AAhQAAwwAABEABQwADg8Kmh8MhTodAQALIQABFwAAGAAAIwAAFgAAIgAJAYYTCQE2LwEABiOJBAImACcBAAEoAwkBhgNKAQQABAE2IgcDJFEAAZs21QMBKQABgF5qAQUMAQMIAQcJAQMBBNQpBymFHywBAwYjAAYBAgkBBAEBwAIdAQAAIxErAQADIwAJAdYDGwEAAyEACQHWAR0BAAEiAAoBhQZDAQAGAwAAAQQJAaatMP8BKQDvAQIAjxwp'
54
+ };
55
+ export const brackets = [40, 41, 1, 41, 40, 2, 91, 93, 1, 93, 91, 2, 123, 125, 1, 125, 123, 2, 3898, 3899, 1, 3899, 3898, 2, 3900, 3901, 1, 3901, 3900, 2, 5787, 5788, 1, 5788, 5787, 2, 8261, 8262, 1, 8262, 8261, 2, 8317, 8318, 1, 8318, 8317, 2, 8333, 8334, 1, 8334, 8333, 2, 8968, 8969, 1, 8969, 8968, 2, 8970, 8971, 1, 8971, 8970, 2, 9001, 9002, 1, 9002, 9001, 2, 10088, 10089, 1, 10089, 10088, 2, 10090, 10091, 1, 10091, 10090, 2, 10092, 10093, 1, 10093, 10092, 2, 10094, 10095, 1, 10095, 10094, 2, 10096, 10097, 1, 10097, 10096, 2, 10098, 10099, 1, 10099, 10098, 2, 10100, 10101, 1, 10101, 10100, 2, 10181, 10182, 1, 10182, 10181, 2, 10214, 10215, 1, 10215, 10214, 2, 10216, 10217, 1, 10217, 10216, 2, 10218, 10219, 1, 10219, 10218, 2, 10220, 10221, 1, 10221, 10220, 2, 10222, 10223, 1, 10223, 10222, 2, 10627, 10628, 1, 10628, 10627, 2, 10629, 10630, 1, 10630, 10629, 2, 10631, 10632, 1, 10632, 10631, 2, 10633, 10634, 1, 10634, 10633, 2, 10635, 10636, 1, 10636, 10635, 2, 10637, 10640, 1, 10638, 10639, 2, 10639, 10638, 1, 10640, 10637, 2, 10641, 10642, 1, 10642, 10641, 2, 10643, 10644, 1, 10644, 10643, 2, 10645, 10646, 1, 10646, 10645, 2, 10647, 10648, 1, 10648, 10647, 2, 10712, 10713, 1, 10713, 10712, 2, 10714, 10715, 1, 10715, 10714, 2, 10748, 10749, 1, 10749, 10748, 2, 11810, 11811, 1, 11811, 11810, 2, 11812, 11813, 1, 11813, 11812, 2, 11814, 11815, 1, 11815, 11814, 2, 11816, 11817, 1, 11817, 11816, 2, 11861, 11862, 1, 11862, 11861, 2, 11863, 11864, 1, 11864, 11863, 2, 11865, 11866, 1, 11866, 11865, 2, 11867, 11868, 1, 11868, 11867, 2, 11874, 11875, 1, 11875, 11874, 2, 12296, 12297, 1, 12297, 12296, 2, 12298, 12299, 1, 12299, 12298, 2, 12300, 12301, 1, 12301, 12300, 2, 12302, 12303, 1, 12303, 12302, 2, 12304, 12305, 1, 12305, 12304, 2, 12308, 12309, 1, 12309, 12308, 2, 12310, 12311, 1, 12311, 12310, 2, 12312, 12313, 1, 12313, 12312, 2, 12314, 12315, 1, 12315, 12314, 2, 65113, 65114, 1, 65114, 65113, 2, 65115, 65116, 1, 65116, 65115, 2, 65117, 65118, 1, 65118, 65117, 2, 65288, 65289, 1, 65289, 65288, 2, 65339, 65341, 1, 65341, 65339, 2, 65371, 65373, 1, 65373, 65371, 2, 65375, 65376, 1, 65376, 65375, 2, 65378, 65379, 1, 65379, 65378, 2];
56
+ export const mirrors = [40, 41, 41, 40, 60, 62, 62, 60, 91, 93, 93, 91, 123, 125, 125, 123, 171, 187, 187, 171, 3898, 3899, 3899, 3898, 3900, 3901, 3901, 3900, 5787, 5788, 5788, 5787, 8249, 8250, 8250, 8249, 8261, 8262, 8262, 8261, 8317, 8318, 8318, 8317, 8333, 8334, 8334, 8333, 8712, 8715, 8713, 8716, 8714, 8717, 8715, 8712, 8716, 8713, 8717, 8714, 8725, 10741, 8733, 121616, 8735, 11262, 8736, 10659, 8737, 10651, 8738, 10656, 8740, 10990, 8764, 8765, 8765, 8764, 8771, 8909, 8773, 8780, 8780, 8773, 8786, 8787, 8787, 8786, 8788, 8789, 8789, 8788, 8804, 8805, 8805, 8804, 8806, 8807, 8807, 8806, 8808, 8809, 8809, 8808, 8810, 8811, 8811, 8810, 8814, 8815, 8815, 8814, 8816, 8817, 8817, 8816, 8818, 8819, 8819, 8818, 8820, 8821, 8821, 8820, 8822, 8823, 8823, 8822, 8824, 8825, 8825, 8824, 8826, 8827, 8827, 8826, 8828, 8829, 8829, 8828, 8830, 8831, 8831, 8830, 8832, 8833, 8833, 8832, 8834, 8835, 8835, 8834, 8836, 8837, 8837, 8836, 8838, 8839, 8839, 8838, 8840, 8841, 8841, 8840, 8842, 8843, 8843, 8842, 8847, 8848, 8848, 8847, 8849, 8850, 8850, 8849, 8856, 10680, 8866, 8867, 8867, 8866, 8870, 10974, 8872, 10980, 8873, 10979, 8875, 10981, 8880, 8881, 8881, 8880, 8882, 8883, 8883, 8882, 8884, 8885, 8885, 8884, 8886, 8887, 8887, 8886, 8888, 10204, 8905, 8906, 8906, 8905, 8907, 8908, 8908, 8907, 8909, 8771, 8912, 8913, 8913, 8912, 8918, 8919, 8919, 8918, 8920, 8921, 8921, 8920, 8922, 8923, 8923, 8922, 8924, 8925, 8925, 8924, 8926, 8927, 8927, 8926, 8928, 8929, 8929, 8928, 8930, 8931, 8931, 8930, 8932, 8933, 8933, 8932, 8934, 8935, 8935, 8934, 8936, 8937, 8937, 8936, 8938, 8939, 8939, 8938, 8940, 8941, 8941, 8940, 8944, 8945, 8945, 8944, 8946, 8954, 8947, 8955, 8948, 8956, 8950, 8957, 8951, 8958, 8954, 8946, 8955, 8947, 8956, 8948, 8957, 8950, 8958, 8951, 8968, 8969, 8969, 8968, 8970, 8971, 8971, 8970, 9001, 9002, 9002, 9001, 10088, 10089, 10089, 10088, 10090, 10091, 10091, 10090, 10092, 10093, 10093, 10092, 10094, 10095, 10095, 10094, 10096, 10097, 10097, 10096, 10098, 10099, 10099, 10098, 10100, 10101, 10101, 10100, 10179, 10180, 10180, 10179, 10181, 10182, 10182, 10181, 10184, 10185, 10185, 10184, 10187, 10189, 10189, 10187, 10197, 10198, 10198, 10197, 10204, 8888, 10205, 10206, 10206, 10205, 10210, 10211, 10211, 10210, 10212, 10213, 10213, 10212, 10214, 10215, 10215, 10214, 10216, 10217, 10217, 10216, 10218, 10219, 10219, 10218, 10220, 10221, 10221, 10220, 10222, 10223, 10223, 10222, 10627, 10628, 10628, 10627, 10629, 10630, 10630, 10629, 10631, 10632, 10632, 10631, 10633, 10634, 10634, 10633, 10635, 10636, 10636, 10635, 10637, 10640, 10638, 10639, 10639, 10638, 10640, 10637, 10641, 10642, 10642, 10641, 10643, 10644, 10644, 10643, 10645, 10646, 10646, 10645, 10647, 10648, 10648, 10647, 10651, 8737, 10656, 8738, 10659, 8736, 10660, 10661, 10661, 10660, 10664, 10665, 10665, 10664, 10666, 10667, 10667, 10666, 10668, 10669, 10669, 10668, 10670, 10671, 10671, 10670, 10680, 8856, 10688, 10689, 10689, 10688, 10692, 10693, 10693, 10692, 10703, 10704, 10704, 10703, 10705, 10706, 10706, 10705, 10708, 10709, 10709, 10708, 10712, 10713, 10713, 10712, 10714, 10715, 10715, 10714, 10728, 10729, 10729, 10728, 10741, 8725, 10744, 10745, 10745, 10744, 10748, 10749, 10749, 10748, 10795, 10796, 10796, 10795, 10797, 10798, 10798, 10797, 10804, 10805, 10805, 10804, 10812, 10813, 10813, 10812, 10852, 10853, 10853, 10852, 10873, 10874, 10874, 10873, 10875, 10876, 10876, 10875, 10877, 10878, 10878, 10877, 10879, 10880, 10880, 10879, 10881, 10882, 10882, 10881, 10883, 10884, 10884, 10883, 10885, 10886, 10886, 10885, 10887, 10888, 10888, 10887, 10889, 10890, 10890, 10889, 10891, 10892, 10892, 10891, 10893, 10894, 10894, 10893, 10895, 10896, 10896, 10895, 10897, 10898, 10898, 10897, 10899, 10900, 10900, 10899, 10901, 10902, 10902, 10901, 10903, 10904, 10904, 10903, 10905, 10906, 10906, 10905, 10907, 10908, 10908, 10907, 10909, 10910, 10910, 10909, 10911, 10912, 10912, 10911, 10913, 10914, 10914, 10913, 10918, 10919, 10919, 10918, 10920, 10921, 10921, 10920, 10922, 10923, 10923, 10922, 10924, 10925, 10925, 10924, 10927, 10928, 10928, 10927, 10929, 10930, 10930, 10929, 10931, 10932, 10932, 10931, 10933, 10934, 10934, 10933, 10935, 10936, 10936, 10935, 10937, 10938, 10938, 10937, 10939, 10940, 10940, 10939, 10941, 10942, 10942, 10941, 10943, 10944, 10944, 10943, 10945, 10946, 10946, 10945, 10947, 10948, 10948, 10947, 10949, 10950, 10950, 10949, 10951, 10952, 10952, 10951, 10953, 10954, 10954, 10953, 10955, 10956, 10956, 10955, 10957, 10958, 10958, 10957, 10959, 10960, 10960, 10959, 10961, 10962, 10962, 10961, 10963, 10964, 10964, 10963, 10965, 10966, 10966, 10965, 10974, 8870, 10979, 8873, 10980, 8872, 10981, 8875, 10988, 10989, 10989, 10988, 10990, 8740, 10999, 11000, 11000, 10999, 11001, 11002, 11002, 11001, 11262, 8735, 11778, 11779, 11779, 11778, 11780, 11781, 11781, 11780, 11785, 11786, 11786, 11785, 11788, 11789, 11789, 11788, 11804, 11805, 11805, 11804, 11808, 11809, 11809, 11808, 11810, 11811, 11811, 11810, 11812, 11813, 11813, 11812, 11814, 11815, 11815, 11814, 11816, 11817, 11817, 11816, 11861, 11862, 11862, 11861, 11863, 11864, 11864, 11863, 11865, 11866, 11866, 11865, 11867, 11868, 11868, 11867, 11874, 11875, 11875, 11874, 12296, 12297, 12297, 12296, 12298, 12299, 12299, 12298, 12300, 12301, 12301, 12300, 12302, 12303, 12303, 12302, 12304, 12305, 12305, 12304, 12308, 12309, 12309, 12308, 12310, 12311, 12311, 12310, 12312, 12313, 12313, 12312, 12314, 12315, 12315, 12314, 65113, 65114, 65114, 65113, 65115, 65116, 65116, 65115, 65117, 65118, 65118, 65117, 65124, 65125, 65125, 65124, 65288, 65289, 65289, 65288, 65308, 65310, 65310, 65308, 65339, 65341, 65341, 65339, 65371, 65373, 65373, 65371, 65375, 65376, 65376, 65375, 65378, 65379, 65379, 65378, 121616, 8733, 121603, 121604, 121604, 121603, 121605, 121606, 121606, 121605, 121608, 121609, 121609, 121608];
57
+ export const decompositions = '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';
58
+ export const ARABIC_SHAPING_FIRST = 1569;
59
+ export const arabicShaping = [0, 0, 0, 65152, 0, 0, 65154, 65153, 0, 0, 65156, 65155, 0, 0, 65158, 65157, 0, 0, 65160, 65159, 65163, 65164, 65162, 65161, 0, 0, 65166, 65165, 65169, 65170, 65168, 65167, 0, 0, 65172, 65171, 65175, 65176, 65174, 65173, 65179, 65180, 65178, 65177, 65183, 65184, 65182, 65181, 65187, 65188, 65186, 65185, 65191, 65192, 65190, 65189, 0, 0, 65194, 65193, 0, 0, 65196, 65195, 0, 0, 65198, 65197, 0, 0, 65200, 65199, 65203, 65204, 65202, 65201, 65207, 65208, 65206, 65205, 65211, 65212, 65210, 65209, 65215, 65216, 65214, 65213, 65219, 65220, 65218, 65217, 65223, 65224, 65222, 65221, 65227, 65228, 65226, 65225, 65231, 65232, 65230, 65229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65235, 65236, 65234, 65233, 65239, 65240, 65238, 65237, 65243, 65244, 65242, 65241, 65247, 65248, 65246, 65245, 65251, 65252, 65250, 65249, 65255, 65256, 65254, 65253, 65259, 65260, 65258, 65257, 0, 0, 65262, 65261, 64488, 64489, 65264, 65263, 65267, 65268, 65266, 65265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64337, 64336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64477, 0, 0, 0, 0, 64360, 64361, 64359, 64358, 64352, 64353, 64351, 64350, 64340, 64341, 64339, 64338, 0, 0, 0, 0, 0, 0, 0, 0, 64344, 64345, 64343, 64342, 64356, 64357, 64355, 64354, 64348, 64349, 64347, 64346, 0, 0, 0, 0, 0, 0, 0, 0, 64376, 64377, 64375, 64374, 64372, 64373, 64371, 64370, 0, 0, 0, 0, 64380, 64381, 64379, 64378, 64384, 64385, 64383, 64382, 0, 0, 64393, 64392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64389, 64388, 0, 0, 64387, 64386, 0, 0, 64391, 64390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64397, 64396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64395, 64394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64364, 64365, 64363, 64362, 0, 0, 0, 0, 64368, 64369, 64367, 64366, 0, 0, 0, 0, 0, 0, 0, 0, 64400, 64401, 64399, 64398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64469, 64470, 64468, 64467, 0, 0, 0, 0, 64404, 64405, 64403, 64402, 0, 0, 0, 0, 64412, 64413, 64411, 64410, 0, 0, 0, 0, 64408, 64409, 64407, 64406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64415, 64414, 64418, 64419, 64417, 64416, 0, 0, 0, 0, 0, 0, 0, 0, 64428, 64429, 64427, 64426, 0, 0, 0, 0, 0, 0, 64421, 64420, 64424, 64425, 64423, 64422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64481, 64480, 0, 0, 64474, 64473, 0, 0, 64472, 64471, 0, 0, 64476, 64475, 0, 0, 64483, 64482, 0, 0, 0, 0, 0, 0, 64479, 64478, 64510, 64511, 64509, 64508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64486, 64487, 64485, 64484, 0, 0, 0, 0, 0, 0, 64431, 64430, 0, 0, 64433, 64432];
60
+ export const arabicLigatures = [[65169, [[65250, 64520], [65252, 64671], [65184, 64668], [65188, 64669], [65192, 64670]]], [65170, [[65198, 64618], [65254, 64621], [65266, 64623]]], [65175, [[65250, 64526], [65252, 64676], [65184, 64673], [65188, 64674], [65192, 64675]]], [65176, [[65198, 64624], [65254, 64627], [65266, 64629]]], [65179, [[65250, 64530]]], [65183, [[65252, 64680]]], [65187, [[65252, 64682]]], [65191, [[65252, 64684]]], [65203, [[65252, 64688]]], [65207, [[65252, 64816]]], [65235, [[65266, 64562]]], [65247, [[65182, 64575], [65184, 64713], [65186, 64576], [65188, 64714], [65190, 64577], [65192, 64715], [65250, 64578], [65252, 64716], [65264, 64579], [65266, 64580], [65260, 64717], [65154, 65269], [65156, 65271], [65160, 65273], [65166, 65275]]], [65248, [[65264, 64646], [65154, 65270], [65156, 65272], [65160, 65274], [65166, 65276]]], [65251, [[65184, 64718], [65188, 64719], [65192, 64720], [65252, 64721]]], [65255, [[65250, 64590], [65252, 64725], [65184, 64722], [65188, 64723]]], [65256, [[65266, 64655]]], [65267, [[65184, 64730], [65188, 64731], [65192, 64732], [65252, 64733]]], [65268, [[65198, 64657], [65254, 64660]]]];
61
+ export const arabicLigatures3 = [[65247, [[65252, 65188, 64904], [65248, 65258, 61953], [65252, 65184, 61969]]]];
62
+ export const arabicMarkLigatures = [[1617, [[1612, 64606], [1614, 64608], [1615, 64609], [1616, 64610], [1611, 62190]]]];
63
+ export const vowelConstraints = [[2309, 2374], [2309, 2366], [2352, 2381, 2311], [2313, 2369], [2319, 2373], [2319, 2374], [2319, 2375], [2309, 2377], [2310, 2373], [2309, 2378], [2310, 2374], [2309, 2379], [2310, 2375], [2309, 2380], [2310, 2376], [2309, 2373], [2309, 2362], [2309, 2363], [2310, 2362], [2309, 2383], [2309, 2390], [2309, 2391], [2437, 2494], [2443, 2499], [2444, 2530], [2565, 2622], [2674, 2623], [2674, 2624], [2675, 2625], [2675, 2626], [2674, 2631], [2565, 2632], [2675, 2635], [2565, 2636], [2693, 2750], [2693, 2757], [2693, 2759], [2693, 2760], [2693, 2761], [2693, 2763], [2693, 2750, 2757], [2693, 2764], [2693, 2750, 2760], [2757, 2750], [2821, 2878], [2831, 2903], [2835, 2903], [2949, 3010], [3090, 3157], [3090, 3148], [3135, 3157], [3142, 3157], [3146, 3157], [3209, 3262], [3218, 3276], [3211, 3262], [3335, 3415], [3337, 3415], [3342, 3398], [3346, 3390], [3346, 3415], [3461, 3535], [3461, 3536], [3461, 3537], [3467, 3551], [3469, 3544], [3471, 3551], [3473, 3530], [3473, 3545], [3473, 3546], [3473, 3548], [3473, 3549], [3473, 3550], [3476, 3551], [69637, 69688], [69643, 69694], [69647, 69698], [71296, 71341], [71302, 71346], [71296, 71348], [71296, 71349], [70144, 70188], [70208, 70190], [70150, 70188], [70144, 70193], [70144, 70195], [70144, 70188, 70193], [70188, 70192], [70188, 70193], [70320, 70368], [70320, 70373], [70320, 70374], [70320, 70375], [70320, 70376], [70785, 70832], [70826, 70837], [70826, 70838], [70795, 70842], [70797, 70842], [71168, 71225], [71168, 71226], [71169, 71225], [71169, 71226]];
@@ -0,0 +1,58 @@
1
+ const decoded = new WeakMap();
2
+ const fromBase64 = Uint8Array.fromBase64;
3
+ function base64(text) {
4
+ if (fromBase64)
5
+ return fromBase64(text);
6
+ const binary = atob(text), bytes = new Uint8Array(binary.length);
7
+ for (let i = 0; i < binary.length; i++)
8
+ bytes[i] = binary.charCodeAt(i);
9
+ return bytes;
10
+ }
11
+ function decode(property) {
12
+ let ranges = decoded.get(property);
13
+ if (ranges)
14
+ return ranges;
15
+ const numbers = varints(property.data);
16
+ const count = numbers.length / 3;
17
+ ranges = { starts: new Uint32Array(count), ends: new Uint32Array(count), values: new Uint8Array(count) };
18
+ for (let i = 0, next = 0; i < count; i++) {
19
+ const start = next + numbers[i * 3];
20
+ ranges.starts[i] = start;
21
+ ranges.ends[i] = start + numbers[i * 3 + 1];
22
+ ranges.values[i] = numbers[i * 3 + 2];
23
+ next = ranges.ends[i] + 1;
24
+ }
25
+ decoded.set(property, ranges);
26
+ return ranges;
27
+ }
28
+ export function valueIndex(property, codepoint) {
29
+ const { starts, ends, values } = decode(property);
30
+ let lo = 0, hi = starts.length - 1;
31
+ while (lo <= hi) {
32
+ const mid = lo + hi >> 1;
33
+ if (ends[mid] < codepoint)
34
+ lo = mid + 1;
35
+ else if (starts[mid] > codepoint)
36
+ hi = mid - 1;
37
+ else
38
+ return values[mid];
39
+ }
40
+ return 0;
41
+ }
42
+ export function value(property, codepoint) {
43
+ return property.names[valueIndex(property, codepoint)];
44
+ }
45
+ export function varints(data) {
46
+ const bytes = base64(data), numbers = [];
47
+ for (let i = 0, value = 0, shift = 1; i < bytes.length; i++) {
48
+ value += (bytes[i] & 127) * shift;
49
+ if (bytes[i] & 128)
50
+ shift *= 128;
51
+ else {
52
+ numbers.push(value);
53
+ value = 0;
54
+ shift = 1;
55
+ }
56
+ }
57
+ return numbers;
58
+ }
@@ -41,6 +41,9 @@ export declare class TextLayout {
41
41
  verticalAlign: VerticalAlign;
42
42
  /** Whether to break lines at newline characters */
43
43
  wrapHardBreaks: boolean;
44
- /** @param options See {@link TextLayoutOptions} */
44
+ /**
45
+ * Creates a layout, missing options take their defaults
46
+ * @param options See {@link TextLayoutOptions}
47
+ */
45
48
  constructor(options?: TextLayoutOptions);
46
49
  }
@@ -9,10 +9,10 @@ export class TextLayout {
9
9
  wrapHardBreaks;
10
10
  constructor(options = {}) {
11
11
  const { maxWidth, maxHeight, wrapStyle, verticalAlign, horizontalAlign, wrapHardBreaks } = options;
12
- this.maxWidth = maxWidth || Infinity;
12
+ this.maxWidth = maxWidth === undefined || maxWidth === 0 ? Infinity : Number(maxWidth);
13
13
  if (isNaN(this.maxWidth) || this.maxWidth < 1)
14
14
  throw new RangeError('Invalid maxWidth');
15
- this.maxHeight = maxHeight || Infinity;
15
+ this.maxHeight = maxHeight === undefined || maxHeight === 0 ? Infinity : Number(maxHeight);
16
16
  if (isNaN(this.maxHeight) || this.maxHeight < 1)
17
17
  throw new RangeError('Invalid maxHeight');
18
18
  this.wrapStyle = wrapStyle || 'word';
@@ -0,0 +1,43 @@
1
+ export const littleEndian = new Uint8Array(new Uint32Array([1]).buffer)[0] === 1;
2
+ const words = (bitmap) => new Int32Array(bitmap.buffer, bitmap.byteOffset, bitmap.length >> 2);
3
+ export function isOpaque(bitmap) {
4
+ const pixels = words(bitmap);
5
+ let all = -1;
6
+ for (let i = 0; i < pixels.length; i++)
7
+ all &= pixels[i];
8
+ return all >>> 24 === 255;
9
+ }
10
+ export function premultiply8(bitmap, out) {
11
+ const src = words(bitmap), dst = words(out);
12
+ for (let i = 0; i < src.length; i++) {
13
+ const p = src[i], a = p >>> 24;
14
+ if (a === 255) {
15
+ dst[i] = p;
16
+ continue;
17
+ }
18
+ let rb = Math.imul(p & 0xff00ff, a) + 0x800080;
19
+ rb = (rb + (rb >>> 8 & 0xff00ff)) >>> 8 & 0xff00ff;
20
+ const g = (p >> 8 & 255) * a + 128;
21
+ dst[i] = rb | (g + (g >> 8) & 0xff00) | a << 24;
22
+ }
23
+ }
24
+ let unpremultiplied;
25
+ export function unpremultiply8(bitmap) {
26
+ if (!unpremultiplied) {
27
+ unpremultiplied = new Uint8ClampedArray(65536);
28
+ for (let i = 256; i < 65536; i++)
29
+ unpremultiplied[i] = (i & 255) * (255 / (i >> 8));
30
+ }
31
+ const table = unpremultiplied, pixels = words(bitmap);
32
+ for (let i = 0; i < pixels.length; i++) {
33
+ const p = pixels[i], a = p >>> 24;
34
+ if (a === 255)
35
+ continue;
36
+ if (a === 0) {
37
+ pixels[i] = 0;
38
+ continue;
39
+ }
40
+ const o = a << 8;
41
+ pixels[i] = table[o | p & 255] | table[o | p >> 8 & 255] << 8 | table[o | p >> 16 & 255] << 16 | a << 24;
42
+ }
43
+ }
package/dist/util/blur.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { littleEndian, isOpaque, premultiply8, unpremultiply8 } from "./alpha.js";
1
2
  function boxSizes(sigma) {
2
3
  const n = 3;
3
4
  let lower = Math.floor(Math.sqrt(12 * sigma * sigma / n + 1));
@@ -13,14 +14,19 @@ function boxPass(src, dst, count, length, lineStride, step, radius) {
13
14
  for (let line = 0; line < count; line++) {
14
15
  const base = line * lineStride;
15
16
  const first = base, end = base + last;
16
- let r = 0, g = 0, b = 0, a = 0;
17
- for (let k = -radius; k <= radius; k++) {
18
- const o = k < 0 ? first : Math.min(end, base + k * step);
17
+ let r = (radius + 1) * src[first], g = (radius + 1) * src[first + 1], b = (radius + 1) * src[first + 2], a = (radius + 1) * src[first + 3];
18
+ const inside = Math.min(radius, length - 1);
19
+ for (let k = 1, o = base + step; k <= inside; k++, o += step) {
19
20
  r += src[o];
20
21
  g += src[o + 1];
21
22
  b += src[o + 2];
22
23
  a += src[o + 3];
23
24
  }
25
+ const beyond = radius - inside;
26
+ r += beyond * src[end];
27
+ g += beyond * src[end + 1];
28
+ b += beyond * src[end + 2];
29
+ a += beyond * src[end + 3];
24
30
  for (let i = 0, o = base; i < length; i++, o += step) {
25
31
  dst[o] = r * scale;
26
32
  dst[o + 1] = g * scale;
@@ -39,8 +45,11 @@ function boxPassRows(src, dst, width, height, radius) {
39
45
  const scale = 1 / (2 * radius + 1);
40
46
  const sum = new Float64Array(stride);
41
47
  const row = (y) => (y < 0 ? 0 : y >= height ? height - 1 : y) * stride;
42
- for (let k = -radius; k <= radius; k++) {
43
- const o = row(k);
48
+ const inside = Math.min(radius, height - 1), last = (height - 1) * stride;
49
+ for (let x = 0; x < stride; x++)
50
+ sum[x] = (radius + 1) * src[x] + (radius - inside) * src[last + x];
51
+ for (let k = 1; k <= inside; k++) {
52
+ const o = k * stride;
44
53
  for (let x = 0; x < stride; x++)
45
54
  sum[x] += src[o + x];
46
55
  }
@@ -119,6 +128,72 @@ export function gaussianBlur(pixels, width, height, sigma) {
119
128
  boxPassRows(tmp, pixels, width, height, radius);
120
129
  }
121
130
  }
131
+ function boxRowWords(src, dst, s, length, radius, mult) {
132
+ const last = length - 1;
133
+ const first = src[s], end = src[s + last];
134
+ let rb = (radius + 1) * (first & 0xff00ff), ga = (radius + 1) * (first >>> 8 & 0xff00ff);
135
+ for (let k = 1; k <= radius; k++) {
136
+ const p = src[s + (k < last ? k : last)];
137
+ rb += p & 0xff00ff;
138
+ ga += p >>> 8 & 0xff00ff;
139
+ }
140
+ for (let x = 0; x < length; x++) {
141
+ dst[s + x] = (Math.imul(rb & 0xffff, mult) + 32768 >>> 16) | (Math.imul(ga & 0xffff, mult) + 32768 >>> 16) << 8
142
+ | (Math.imul(rb >>> 16, mult) + 32768 >>> 16) << 16 | (Math.imul(ga >>> 16, mult) + 32768 >>> 16) << 24;
143
+ const add = x + radius + 1, remove = x - radius;
144
+ const entering = add < last ? src[s + add] : end, leaving = remove > 0 ? src[s + remove] : first;
145
+ rb += (entering & 0xff00ff) - (leaving & 0xff00ff);
146
+ ga += (entering >>> 8 & 0xff00ff) - (leaving >>> 8 & 0xff00ff);
147
+ }
148
+ }
149
+ function boxColumnsWords(src, dst, width, height, radius, mult, rbs, gas) {
150
+ for (let x = 0; x < width; x++) {
151
+ const p = src[x];
152
+ rbs[x] = (radius + 1) * (p & 0xff00ff);
153
+ gas[x] = (radius + 1) * (p >>> 8 & 0xff00ff);
154
+ }
155
+ for (let k = 1; k <= radius; k++) {
156
+ const o = Math.min(k, height - 1) * width;
157
+ for (let x = 0; x < width; x++) {
158
+ const p = src[o + x];
159
+ rbs[x] += p & 0xff00ff;
160
+ gas[x] += p >>> 8 & 0xff00ff;
161
+ }
162
+ }
163
+ for (let y = 0; y < height; y++) {
164
+ const o = y * width, add = Math.min(height - 1, y + radius + 1) * width, remove = Math.max(0, y - radius) * width;
165
+ for (let x = 0; x < width; x++) {
166
+ const rb = rbs[x], ga = gas[x];
167
+ dst[o + x] = (Math.imul(rb & 0xffff, mult) + 32768 >>> 16) | (Math.imul(ga & 0xffff, mult) + 32768 >>> 16) << 8
168
+ | (Math.imul(rb >>> 16, mult) + 32768 >>> 16) << 16 | (Math.imul(ga >>> 16, mult) + 32768 >>> 16) << 24;
169
+ const entering = src[add + x], leaving = src[remove + x];
170
+ rbs[x] = rb + (entering & 0xff00ff) - (leaving & 0xff00ff);
171
+ gas[x] = ga + (entering >>> 8 & 0xff00ff) - (leaving >>> 8 & 0xff00ff);
172
+ }
173
+ }
174
+ }
175
+ export function boxBlurRGBA(bitmap, width, height, sigma) {
176
+ const sizes = boxSizes(sigma);
177
+ if (!littleEndian || !(sigma >= 2) || Math.max(...sizes) > 257)
178
+ return false;
179
+ const opaque = isOpaque(bitmap);
180
+ if (!opaque)
181
+ premultiply8(bitmap, bitmap);
182
+ const pixels = new Int32Array(bitmap.buffer, bitmap.byteOffset, width * height);
183
+ const tmp = new Int32Array(pixels.length), rbs = new Int32Array(width), gas = new Int32Array(width);
184
+ for (const size of sizes) {
185
+ const radius = (size - 1) / 2;
186
+ if (radius < 1)
187
+ continue;
188
+ const mult = Math.round(65536 / size);
189
+ for (let y = 0; y < height; y++)
190
+ boxRowWords(pixels, tmp, y * width, width, radius, mult);
191
+ boxColumnsWords(tmp, pixels, width, height, radius, mult, rbs, gas);
192
+ }
193
+ if (!opaque)
194
+ unpremultiply8(bitmap);
195
+ return true;
196
+ }
122
197
  export function premultiply(rgba) {
123
198
  const out = new Float32Array(rgba.length);
124
199
  for (let i = 0; i < rgba.length; i += 4) {
@@ -0,0 +1,31 @@
1
+ export class ByteWriter {
2
+ buffer;
3
+ length = 0;
4
+ constructor(capacity = 1024) {
5
+ this.buffer = new Uint8Array(Math.max(16, capacity));
6
+ }
7
+ reserve(size) {
8
+ if (this.length + size <= this.buffer.length)
9
+ return;
10
+ const buffer = new Uint8Array(Math.max(this.buffer.length * 2, this.length + size));
11
+ buffer.set(this.buffer.subarray(0, this.length));
12
+ this.buffer = buffer;
13
+ }
14
+ byte(value) {
15
+ this.reserve(1);
16
+ this.buffer[this.length++] = value;
17
+ }
18
+ bytes(...values) {
19
+ this.reserve(values.length);
20
+ for (const value of values)
21
+ this.buffer[this.length++] = value;
22
+ }
23
+ array(values) {
24
+ this.reserve(values.length);
25
+ this.buffer.set(values, this.length);
26
+ this.length += values.length;
27
+ }
28
+ finish() {
29
+ return this.buffer.slice(0, this.length);
30
+ }
31
+ }
@@ -0,0 +1,34 @@
1
+ export class LimitError extends RangeError {
2
+ }
3
+ export const MAX_PIXELS = 0x3fff * 0x3fff;
4
+ export function checkPixels(width, height, limit, count = 1) {
5
+ if (!(width * height * count <= limit))
6
+ throw new LimitError(`Image too large: ${count > 1 ? `${count} frames of ` : ''}${width}x${height} pixels exceed the limit of ${limit} (the decode options' maxPixels)`);
7
+ }
8
+ export const MAX_BYTES_PER_PIXEL = 8;
9
+ export function checkBytes(bytes, limit) {
10
+ if (!(bytes <= limit * MAX_BYTES_PER_PIXEL))
11
+ throw new LimitError(`Image too large: ${bytes} bytes of samples exceed what the limit of ${limit} pixels allows (the decode options' maxPixels)`);
12
+ }
13
+ export class PixelBudget {
14
+ left;
15
+ limit;
16
+ constructor(limit) {
17
+ this.limit = this.left = limit;
18
+ }
19
+ take(width, height) {
20
+ this.left -= width * height;
21
+ if (!(this.left >= 0))
22
+ throw new LimitError(`Image too large: its frames exceed the limit of ${this.limit} pixels (the decode options' maxPixels)`);
23
+ }
24
+ }
25
+ export async function decoding(decode) {
26
+ try {
27
+ return await decode();
28
+ }
29
+ catch (err) {
30
+ if (err instanceof RangeError && !(err instanceof LimitError))
31
+ throw new Error('Image: damaged or truncated image data', { cause: err });
32
+ throw err;
33
+ }
34
+ }
@@ -1,3 +1,10 @@
1
1
  export function isOptions(value) {
2
2
  return typeof value === 'object' && value !== null && !ArrayBuffer.isView(value);
3
3
  }
4
+ export function finite(value, name) {
5
+ const number = Number(value);
6
+ if (!Number.isFinite(number))
7
+ throw new RangeError(`Invalid ${name}: ${value}`);
8
+ return number;
9
+ }
10
+ export const color = (value, name = 'color') => finite(value, name);