iconv-tiny 1.0.1 → 1.2.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 (130) hide show
  1. package/README.md +157 -35
  2. package/dist/iconv-tiny.min.mjs +87 -0
  3. package/dist/iconv-tiny.mjs +779 -8
  4. package/package.json +16 -86
  5. package/dist/aliases.mjs +0 -6
  6. package/dist/encodings/ATARIST.d.mts +0 -7
  7. package/dist/encodings/ATARIST.mjs +0 -7
  8. package/dist/encodings/CP037.d.mts +0 -7
  9. package/dist/encodings/CP037.mjs +0 -7
  10. package/dist/encodings/CP1006.d.mts +0 -7
  11. package/dist/encodings/CP1006.mjs +0 -7
  12. package/dist/encodings/CP1026.d.mts +0 -7
  13. package/dist/encodings/CP1026.mjs +0 -7
  14. package/dist/encodings/CP1250.d.mts +0 -7
  15. package/dist/encodings/CP1250.mjs +0 -7
  16. package/dist/encodings/CP1251.d.mts +0 -7
  17. package/dist/encodings/CP1251.mjs +0 -7
  18. package/dist/encodings/CP1252.d.mts +0 -7
  19. package/dist/encodings/CP1252.mjs +0 -7
  20. package/dist/encodings/CP1253.d.mts +0 -7
  21. package/dist/encodings/CP1253.mjs +0 -7
  22. package/dist/encodings/CP1254.d.mts +0 -7
  23. package/dist/encodings/CP1254.mjs +0 -7
  24. package/dist/encodings/CP1255.d.mts +0 -7
  25. package/dist/encodings/CP1255.mjs +0 -7
  26. package/dist/encodings/CP1256.d.mts +0 -7
  27. package/dist/encodings/CP1256.mjs +0 -7
  28. package/dist/encodings/CP1257.d.mts +0 -7
  29. package/dist/encodings/CP1257.mjs +0 -7
  30. package/dist/encodings/CP1258.d.mts +0 -7
  31. package/dist/encodings/CP1258.mjs +0 -7
  32. package/dist/encodings/CP424.d.mts +0 -7
  33. package/dist/encodings/CP424.mjs +0 -7
  34. package/dist/encodings/CP437.d.mts +0 -7
  35. package/dist/encodings/CP437.mjs +0 -7
  36. package/dist/encodings/CP500.d.mts +0 -7
  37. package/dist/encodings/CP500.mjs +0 -7
  38. package/dist/encodings/CP737.d.mts +0 -7
  39. package/dist/encodings/CP737.mjs +0 -7
  40. package/dist/encodings/CP775.d.mts +0 -7
  41. package/dist/encodings/CP775.mjs +0 -7
  42. package/dist/encodings/CP850.d.mts +0 -7
  43. package/dist/encodings/CP850.mjs +0 -7
  44. package/dist/encodings/CP852.d.mts +0 -7
  45. package/dist/encodings/CP852.mjs +0 -7
  46. package/dist/encodings/CP855.d.mts +0 -7
  47. package/dist/encodings/CP855.mjs +0 -7
  48. package/dist/encodings/CP856.d.mts +0 -7
  49. package/dist/encodings/CP856.mjs +0 -7
  50. package/dist/encodings/CP857.d.mts +0 -7
  51. package/dist/encodings/CP857.mjs +0 -7
  52. package/dist/encodings/CP860.d.mts +0 -7
  53. package/dist/encodings/CP860.mjs +0 -7
  54. package/dist/encodings/CP861.d.mts +0 -7
  55. package/dist/encodings/CP861.mjs +0 -7
  56. package/dist/encodings/CP862.d.mts +0 -7
  57. package/dist/encodings/CP862.mjs +0 -7
  58. package/dist/encodings/CP863.d.mts +0 -7
  59. package/dist/encodings/CP863.mjs +0 -7
  60. package/dist/encodings/CP864.d.mts +0 -7
  61. package/dist/encodings/CP864.mjs +0 -7
  62. package/dist/encodings/CP865.d.mts +0 -7
  63. package/dist/encodings/CP865.mjs +0 -7
  64. package/dist/encodings/CP866.d.mts +0 -7
  65. package/dist/encodings/CP866.mjs +0 -7
  66. package/dist/encodings/CP869.d.mts +0 -7
  67. package/dist/encodings/CP869.mjs +0 -7
  68. package/dist/encodings/CP874.d.mts +0 -7
  69. package/dist/encodings/CP874.mjs +0 -7
  70. package/dist/encodings/CP875.d.mts +0 -7
  71. package/dist/encodings/CP875.mjs +0 -7
  72. package/dist/encodings/ISO-8859-1.d.mts +0 -7
  73. package/dist/encodings/ISO-8859-1.mjs +0 -7
  74. package/dist/encodings/ISO-8859-10.d.mts +0 -7
  75. package/dist/encodings/ISO-8859-10.mjs +0 -7
  76. package/dist/encodings/ISO-8859-11.d.mts +0 -7
  77. package/dist/encodings/ISO-8859-11.mjs +0 -7
  78. package/dist/encodings/ISO-8859-13.d.mts +0 -7
  79. package/dist/encodings/ISO-8859-13.mjs +0 -7
  80. package/dist/encodings/ISO-8859-14.d.mts +0 -7
  81. package/dist/encodings/ISO-8859-14.mjs +0 -7
  82. package/dist/encodings/ISO-8859-15.d.mts +0 -7
  83. package/dist/encodings/ISO-8859-15.mjs +0 -7
  84. package/dist/encodings/ISO-8859-16.d.mts +0 -7
  85. package/dist/encodings/ISO-8859-16.mjs +0 -7
  86. package/dist/encodings/ISO-8859-2.d.mts +0 -7
  87. package/dist/encodings/ISO-8859-2.mjs +0 -7
  88. package/dist/encodings/ISO-8859-3.d.mts +0 -7
  89. package/dist/encodings/ISO-8859-3.mjs +0 -7
  90. package/dist/encodings/ISO-8859-4.d.mts +0 -7
  91. package/dist/encodings/ISO-8859-4.mjs +0 -7
  92. package/dist/encodings/ISO-8859-5.d.mts +0 -7
  93. package/dist/encodings/ISO-8859-5.mjs +0 -7
  94. package/dist/encodings/ISO-8859-6.d.mts +0 -7
  95. package/dist/encodings/ISO-8859-6.mjs +0 -7
  96. package/dist/encodings/ISO-8859-7.d.mts +0 -7
  97. package/dist/encodings/ISO-8859-7.mjs +0 -7
  98. package/dist/encodings/ISO-8859-8.d.mts +0 -7
  99. package/dist/encodings/ISO-8859-8.mjs +0 -7
  100. package/dist/encodings/ISO-8859-9.d.mts +0 -7
  101. package/dist/encodings/ISO-8859-9.mjs +0 -7
  102. package/dist/encodings/KOI8-R.d.mts +0 -7
  103. package/dist/encodings/KOI8-R.mjs +0 -7
  104. package/dist/encodings/KOI8-U.d.mts +0 -7
  105. package/dist/encodings/KOI8-U.mjs +0 -7
  106. package/dist/encodings/KZ1048.d.mts +0 -7
  107. package/dist/encodings/KZ1048.mjs +0 -7
  108. package/dist/encodings/MAC-CYRILLIC.d.mts +0 -7
  109. package/dist/encodings/MAC-CYRILLIC.mjs +0 -7
  110. package/dist/encodings/MAC-GREEK.d.mts +0 -7
  111. package/dist/encodings/MAC-GREEK.mjs +0 -7
  112. package/dist/encodings/MAC-ICELAND.d.mts +0 -7
  113. package/dist/encodings/MAC-ICELAND.mjs +0 -7
  114. package/dist/encodings/MAC-LATIN2.d.mts +0 -7
  115. package/dist/encodings/MAC-LATIN2.mjs +0 -7
  116. package/dist/encodings/MAC-ROMAN.d.mts +0 -7
  117. package/dist/encodings/MAC-ROMAN.mjs +0 -7
  118. package/dist/encodings/MAC-TURKISH.d.mts +0 -7
  119. package/dist/encodings/MAC-TURKISH.mjs +0 -7
  120. package/dist/encodings/NEXTSTEP.d.mts +0 -7
  121. package/dist/encodings/NEXTSTEP.mjs +0 -7
  122. package/dist/encodings/US-ASCII.d.mts +0 -7
  123. package/dist/encodings/US-ASCII.mjs +0 -7
  124. package/dist/encodings/index.d.mts +0 -65
  125. package/dist/encodings/index.mjs +0 -64
  126. package/dist/iconv-tiny.bundle.mjs +0 -79
  127. package/dist/sbe.mjs +0 -14
  128. package/types/aliases.d.mts +0 -1
  129. package/types/iconv-tiny.d.mts +0 -82
  130. package/types/sbe.d.mts +0 -8
package/README.md CHANGED
@@ -1,19 +1,34 @@
1
- # iconv-tiny
1
+ ```
2
+ ╔══──--∙·. .·∙-──────────────────────══════╗
3
+ ║ ▪ ▄▄· ▐ ▄ ▌ ▐·▄▄▄▄▄▄ ▪ ▐ ▄·▄· ▄▌ ║
4
+ │ ██ ▐█ ▌▪▪ •█▌▐█▪█·▐▌ •██ ██ •█▌▐█ █▪█▌ ║
5
+ │ ▐█·██ ▄▄ ▄█▀▄ ▐█▐▐▌ ▐ █ •▄•▐█.▪▐█·▐█▐▐▌ ▐█▪ │
6
+ │ ▐█▌▐█ █▌▐█▌.▐▌█▌▐█▌ ▐█▌ ▐█▌·▐█ █▌▐█▌ ▐█·. │
7
+ │ ▀▀▀·▀▀▀ ▀█▄▀▪▀ █▪. ▀ ▀▀▀ ▀▀ ▀ █▪ ▀ • │
8
+ └──────--∙· ·∙-───────────────by─ViP-DeLeTe──┘
9
+ ```
2
10
 
3
11
  [![ci](https://github.com/vip-delete/iconv-tiny/actions/workflows/ci.yaml/badge.svg)](https://github.com/vip-delete/iconv-tiny/actions/workflows/ci.yaml)
4
12
  [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
5
13
 
6
- Pure JS ESM Encodings Set for Browser and NodeJS. Auto-Generated from Unicode.org.
14
+ Pure JS character encoding conversion as an ECMAScript Module (ESM). Auto-Generated from http://www.unicode.org/Public/MAPPINGS.
15
+
16
+ ## About
17
+
18
+ [**iconv-tiny.mjs**](dist/iconv-tiny.mjs) is written from scratch and designed to address all issues and implement all features in the [**iconv-lite**](https://github.com/ashtuchkin/iconv-lite) backlog.
19
+ <br/>
20
+ It is an ES-module and should work in all modern browsers and NodeJS that supports ESM, `TextDecoder`, and `TextEncoder`.
7
21
 
8
- **Features**
9
- 1. No dependencies.
10
- 2. One file per encoding.
11
- 3. Extension points to add custom encodings and add/modify symbol mappings (overrides).
12
- 4. Graphic Mode ☺. IBM PC memory-mapped symbols for 0-31 control codes.
13
- 5. Custom defaultChar or a callback for encode and decode functions.
14
- 6. Native TextDecoder for supported encodings (ISO-8859-* and CP125*)
15
- 7. Typescript friendly.
16
- 8. Tiny: ~400 bytes per encoding, ~24KB of full bundle.mjs, ~9KB in gzip.
22
+ ## Features
23
+
24
+ 1. Zero dependencies.
25
+ 1. Browser support **out-of-the-box**.
26
+ 1. Tree shaking and other ESM-related benefits.
27
+ 1. Table mappings and default characters overrides.
28
+ 1. Native `TextDecoder` for some encodings.
29
+ 1. `encodeInto(Uint8Array)` and `byteLength(string)`
30
+ 1. Typescript friendly.
31
+ 1. Tiny: 1 file, ~12KB in gzip.
17
32
 
18
33
  ## Installation
19
34
 
@@ -21,49 +36,156 @@ Pure JS ESM Encodings Set for Browser and NodeJS. Auto-Generated from Unicode.or
21
36
  npm install iconv-tiny
22
37
  ```
23
38
 
24
- or import from CDN without installation:
25
- ```javascript
26
- import { IconvTiny, aliases, encodings } from "https://unpkg.com/iconv-tiny@1.0.0/dist/iconv-tiny.bundle.mjs";
27
- const iconvTiny = new IconvTiny(encodings, aliases);
28
- const buf = iconvTiny.encode("Le malheur est notre plus grand maître.", "cp1252")
29
- ...
39
+ or use CDN:
40
+
41
+ ```html
42
+ <script type="importmap">
43
+ {
44
+ "imports": {
45
+ "iconv-tiny": "https://unpkg.com/iconv-tiny@1.2.0/dist/iconv-tiny.mjs"
46
+ }
47
+ }
48
+ </script>
30
49
  ```
31
50
 
32
- ## Supported encodings:
51
+ ## Basic API
33
52
 
34
- 1. ISO-8859: 1,2,3,4,5,6,7,8,9,10,11,13,14,15,16
35
- 2. CP: 037, 424, 437, 500, 737, 775, 850, 852, 855, 856, 857, 860, 861, 862, 863, 864, 865, 866, 869, 874, 875, 1006, 1026, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258
36
- 3. MAC: CYRILLIC, GREEK, ICELAND, LATIN2, ROMAN, TURKISH
37
- 4. ATARIST, KOI8-R, KOI8-U, KZ1048, NEXTSTEP, US-ASCII
53
+ API is very close to **iconv-lite** API, see [iconv-tiny.d.mts](dist/iconv-tiny.d.mts).
38
54
 
39
- **iconv-tiny** output is identical to **iconv-lite** output, see [tests/regression.test.mjs](tests/regression.test.mjs).
55
+ ```javascript
56
+ import { IconvTiny, aliases, encodings, canonicalize } from "iconv-tiny";
57
+
58
+ // Create iconv
59
+ const iconv = new IconvTiny(encodings, aliases);
60
+
61
+ // Convert from an Uint8Array to a js string.
62
+ str = iconv.decode(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]), "win1251");
63
+
64
+ // Convert from a js string to an Uint8Array.
65
+ buf = iconv.encode("Sample input string", "win1251"); // Uint8Array
40
66
 
41
- ## Example
67
+ // Check if encoding is supported
68
+ aliases.split(/,| /).map(canonicalize).includes(canonicalize("us-ascii"));
69
+ ```
70
+
71
+ or import encodings individually to enable ESM bundlers to remove unused encodings and reduce the final bundle size.
42
72
 
43
73
  ```javascript
44
- import { CP1251 } from "iconv-tiny/encodings/CP1251";
74
+ import { CP1251 } from "iconv-tiny";
75
+
45
76
  const cp1251 = CP1251.create();
46
77
  const buf = cp1251.encode("Век живи — век учись.");
47
78
  const str = cp1251.decode(buf);
48
- console.log(buf); // [ 194, 229, 234, 32, 230, 232, ... ]
49
- console.log(str); // Век живи — век учись.
79
+ ```
80
+
81
+ ## Streaming API
82
+
83
+ ```javascript
84
+ import { UTF16LE } from "iconv-tiny";
85
+
86
+ // Create encoding
87
+ const utf16 = UTF16LE.create();
88
+
89
+ // Create decoder, it works like TextDecoder with {stream: true} option.
90
+ const decoder = utf16.newDecoder();
91
+
92
+ // Decode a fragment
93
+ const part = decoder.decode(new Uint8Array([0x3d, 0xd8, 0x0a]));
94
+
95
+ // Decode the next fragment
96
+ const str = decoder.decode(new Uint8Array([0xde])); // 😊
97
+
98
+ // Finish stream decoding
99
+ const tail = decoder.decode();
50
100
  ```
51
101
 
52
102
  See more [examples](examples).
53
103
 
54
- ## Performance is comparable to that of iconv-lite.
104
+ ## Supported encodings:
105
+
106
+ 1. **ISO-8859**: 1,2,3,4,5,6,7,8,9,10,11,13,14,15,16
107
+ 1. **EBCDIC**: Cp037, Cp500, Cp875, Cp1026
108
+ 1. **DOS**: Cp437, Cp737, Cp775, Cp850, Cp852, Cp855, Cp857, Cp860, Cp861, Cp862, Cp863, Cp864, Cp865, Cp866, Cp869, Cp874
109
+ 1. **WINDOWS**: Cp1250, Cp1251, Cp1252, Cp1253, Cp1254, Cp1255, Cp1256, Cp1257, Cp1258
110
+ 1. **MAC**: CYRILLIC, GREEK, ICELAND, LATIN2, ROMAN, TURKISH
111
+ 1. **MISC**: ATARIST, Cp424, CP856, Cp1006, KOI8-R, KOI8-U, KZ1048, NEXTSTEP
112
+ 1. **OTHER**: US-ASCII
113
+ 1. **UNICODE**: UTF-8, UTF-16, UTF-32
114
+
115
+ All encodings are generated automatically from http://www.unicode.org/Public/MAPPINGS with a few additional mappings for **CP875** (0xE1 -> 0x20AF, 0xEC -> 0x037A, 0xFC -> 0x20AC) and **CP1255** (0xCA -> 0x05BA), see [mappings](scripts/mappings/)
116
+
117
+ **iconv-tiny** output is identical to **iconv-lite** output, see [tests/regression.test.mjs](tests/regression.test.mjs).
118
+
119
+ ## Encoding/decoding speed
120
+
121
+ Comparison with iconv-lite module (Core i7-7500U CPU @ 2.7GHz, Node v24.2.0). Note: your results may vary, so please always check on your hardware.
122
+
123
+ ```
124
+ operation iconv-lite@0.6.3 iconv-tiny@1.2.0
125
+ ------------------------------------------------------
126
+ encode('win1251') ~598 Mb/s ~622 Mb/s
127
+ decode('win1251') ~218 Mb/s ~263 Mb/s
128
+ ```
129
+
130
+ **iconv-lite** is NodeJS oriented and use specific API like `Buffer` and native NodeJS encodings.
131
+ <br/>
132
+ **iconv-tiny** is Browser oriented and use `Uint8Array` and native `TextDecoder`, and `TextEncoder`. Also it supports `encodeInto(Uint8Array)` and `byteLength(string)`.
133
+
134
+ ## BOM Handling
135
+
136
+ 1. UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE:
137
+ - Decoding: BOM is stripped by default, unless overridden by `stripBOM: false` option.
138
+ - Encoding: No BOM added, unless overridden by `addBOM: true` option.
139
+ 1. UTF-16 is an alias of UTF-16LE
140
+ 1. UTF-32 is an alias of UTF-32LE
141
+
142
+ ## Testing
55
143
 
56
144
  ```
57
- Encode 256KB text 10000 times:
58
- iconv-lite: 5232 ms, 477.829 MB/s.
59
- iconv-tiny: 5198 ms, 480.954 MB/s.
145
+ $ git clone https://github.com/vip-delete/iconv-tiny.git
146
+ $ cd iconv-tiny
147
+ $ npm test
148
+
149
+ $ # To view performance:
150
+ $ node tests\perf-test-cp1251.mjs
151
+ $ node tests\perf-test-unicode.mjs
152
+
153
+ $ # To view test coverage:
154
+ $ npm run coverage
155
+
156
+ ----------------|---------|----------|---------|---------|-------------------
157
+ File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
158
+ ----------------|---------|----------|---------|---------|-------------------
159
+ All files | 100 | 100 | 98.21 | 100 |
160
+ commons.mjs | 100 | 100 | 88.88 | 100 |
161
+ iconv-tiny.mjs | 100 | 100 | 100 | 100 |
162
+ sbcs.mjs | 100 | 100 | 100 | 100 |
163
+ unicode.mjs | 100 | 100 | 100 | 100 |
164
+ ----------------|---------|----------|---------|---------|-------------------
165
+ ```
166
+
167
+ ## Commands
60
168
 
61
- Decode 256KB array 10000 times:
62
- iconv-lite: 18008 ms, 138.827 MB/s.
63
- iconv-tiny: 21008 ms, 119.002 MB/s.
64
- iconv-tiny: 12412 ms, 201.418 MB/s. <-- using native TextDecoder
169
+ Build:
170
+
171
+ ```
172
+ npm run build
173
+ ```
174
+
175
+ UI Demo:
176
+
177
+ ```
178
+ npm run dev
179
+ ```
180
+
181
+ Compile (optional, you need JDK 21 or higher installed):
182
+
183
+ ```
184
+ npm run compile
65
185
  ```
66
186
 
67
187
  ## Demo
68
188
 
69
189
  https://vip-delete.github.io/iconv-tiny/
190
+
191
+ <img src="demo.png" width="50%">
@@ -0,0 +1,87 @@
1
+ /**
2
+ * iconv-tiny v1.2.0
3
+ * (c) 2025-present vip.delete
4
+ * @license MIT
5
+ **/
6
+ let ns;
7
+ const k=new TextDecoder("UTF-16LE",{fatal:!0});class l{constructor(a){this.h=a}getName(){return this.h}decode(a,b){b=this.newDecoder(b);return b.decode(a)+b.decode()}encode(a,b){return this.newEncoder(b).encode(a)}}class m{constructor(a){this.g=a}decode(a){return this.g.decode(a,{stream:!!a})}}
8
+ class p{encode(a){if(!a)return new Uint8Array(0);const b=new Uint8Array(this.g(a));({written:a}=this.encodeInto(a,b));return b.subarray(0,a)}byteLength(a){let b=0;const c=new Uint8Array(4096);do{const {read:d,written:e}=this.encodeInto(a,c);a=a.slice(d);b+=e}while(a.length);return b}};class q{constructor(a,b){this.g=a;if(typeof b!=="function"){const c=b?.length?b.charCodeAt(0):65533;b=()=>c}this.h=b}decode(a){if(!a)return"";var b=this.g;const c=this.h,d=a.length,e=new Uint16Array(d);for(let g=0;g<d;g++){const h=a[g],n=b[h];e[g]=n===65533?c(h,g)??n:n}a:if(a=e.length,a<=192)var f=String.fromCharCode(...e);else{try{f=k.decode(e);break a}catch{}f=[];for(b=0;b<a;b+=1024)f.push(String.fromCharCode(...e.subarray(b,b+1024)));f=f.join("")}return f}}
9
+ class r extends p{constructor(a,b){super();this.h=a;if(typeof b!=="function"){const c=b?.length?b.charCodeAt(0):63;b=()=>c}this.i=b}encodeInto(a,b){const c=this.h,d=this.i,e=Math.min(a.length,b.length);for(let f=0;f<e;f++){const g=a.charCodeAt(f),h=c[g];b[f]=h===65533?d(g,f)??63:h}return{read:e,written:e}}g(a){return a.length}byteLength(a){return this.g(a)}}
10
+ class t extends l{constructor(a,b){super(a);this.i=b;this.g=null;try{new TextDecoder(this.h),this.j=!0}catch{this.j=!1}}newDecoder(a){return this.j&&(a?.native??!1)?new m(new TextDecoder(this.h)):new q(this.i,a?.defaultCharUnicode)}newEncoder(a){if(!this.g){this.g=(new Uint16Array(65536)).fill(65533);for(let b=0;b<256;b++){const c=this.i[b];c!==65533&&(this.g[c]=b)}}return new r(this.g,a?.defaultCharByte)}}
11
+ class u{constructor(a,b,c){this.g=a;this.h=b;this.i=c}create(a){var b=this.h,c=this.i??"";const d=(new Uint16Array(256)).fill(65533);for(var e=0;e<256-b.length;)d[e]=e++;let f=0;for(;e<256;)d[e++]=b.charCodeAt(f++);for(b=0;b<c.length;)d[c.charCodeAt(b)]=c.charCodeAt(b+1),b+=2;a=a?.overrides??[];for(c=0;c<a.length-1;)b=a[c++],e=a[c++],d[Number(b)]=typeof e==="number"?e:e.charCodeAt(0);return new t(this.g,d)}};const v=(a,b,c,d)=>{a=a.charCodeAt(b);c[d]=a;c[d+1]=a>>8;return 0},w=(a,b,c,d)=>{a=a.charCodeAt(b);c[d]=a>>8;c[d+1]=a;return 0},x=(a,b,c,d)=>{a=a.codePointAt(b);c[d]=a;c[d+1]=a>>8;c[d+2]=a>>16;c[d+3]=a>>24;return a>65535?1:0},y=(a,b,c,d)=>{a=a.codePointAt(b);c[d]=a>>24;c[d+1]=a>>16;c[d+2]=a>>8;c[d+3]=a;return a>65535?1:0},z=(a,b)=>(a[b]|a[b+1]<<8|a[b+2]<<16|a[b+3]<<24)>>>0,A=(a,b)=>(a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3])>>>0,B=(a,b,c)=>{c>1114111&&(c=65533);if(c>65535){c-=65536;const d=55296|c>>10;
12
+ c=56320|c&1023;a[b]=d;a[b+1]=d>>8;a[b+2]=c;a[b+3]=c>>8;return 4}a[b]=c;a[b+1]=c>>8;return 2};class C extends m{constructor(a){super(new TextDecoder("UTF-8",{ignoreBOM:a}))}}class D extends p{constructor(a){super();this.h=a;this.i=new TextEncoder}encodeInto(a,b){let c=0;if(this.h){if(b.length<3)return{read:0,written:0};b[0]=239;b[1]=187;b[2]=191;c+=3;this.h=0}const {read:d,written:e}=this.i.encodeInto(a,b.subarray(c));return{read:d,written:e+c}}g(a){return(this.h?4:0)+a.length*4}}
13
+ class E extends p{constructor(a,b,c){super();this.i=a;this.h=1<<b+1;this.j=b?c?y:x:c?w:v}encodeInto(a,b){const c=this.h,d=this.j;let e=0;if(this.i){if(b.length<c)return{read:0,written:0};d("",0,b,e);e+=c;this.i=0}const f=Math.min(a.length,b.length-e&~(c-1));for(let g=0;g<f;g++,e+=c)g+=d(a,g,b,e);return{read:f,written:e}}g(a){return(this.i?this.h:0)+a.length*this.h}byteLength(a){return this.h===4?super.byteLength(a):this.g(a)}}const F=["LE","BE",""],G=[16,32,8];
14
+ class H extends m{constructor(a,b){super(new TextDecoder("UTF-16"+F[b],{ignoreBOM:a}))}}
15
+ class I{constructor(a,b){this.j=a;this.h=new Uint8Array(4);this.g=0;this.i=b?A:z}decode(a){if(!a)return this.g?String.fromCharCode(65533):"";const b=new Uint8Array(a.length+4);let c=0,d=0;if(this.g){for(;this.g<4&&c<a.length;)this.h[this.g++]=a[c++];if(this.g<4)return"";d+=B(b,d,this.i(this.h,0))}const e=a.length-3;for(;c<e;c+=4)d+=B(b,d,this.i(a,c));(this.g=a.length-c)&&this.h.set(a.subarray(c));return(new TextDecoder("UTF-16",{ignoreBOM:this.j})).decode(b.subarray(0,d))}}
16
+ const J=[H,I,C],K=[E,E,D];class L extends l{constructor(a,b){super("UTF-"+G[a]+F[b]);this.g=a;this.i=b}newDecoder(a){return new J[this.g](!(a?.stripBOM??1),this.i)}newEncoder(a){return new K[this.g](a?.addBOM??0,this.g,this.i)}}class M{constructor(a,b){this.h=a;this.g=b}create(){return new L(this.h,this.g)}};const N=a=>a.toLowerCase().replace(/[^a-z0-9]/gu,"").replace(/(?<!\d)0+/gu,"");
17
+ class O{constructor(a,b){a??={};this.g=new Map;this.cache=new Map;b=(b??"").split(",").map(c=>c.split(" ").map(N));for(const c of Object.keys(a)){const d=a[c];if(d?.create){const e=N(c);this.g.set(e,d);b.filter(f=>f.includes(e)).forEach(f=>f.forEach(g=>this.g.set(g,d)))}}}decode(a,b,c){return this.getEncoding(b,c).decode(a,c)}encode(a,b,c){return this.getEncoding(b,c).encode(a,c)}getEncoding(a,b){a=N(a);const c=a+(b?.overrides??"");var d=this.cache.get(c);if(!d){d=this.g.get(a);if(!d)throw Error(`Encoding "${a}" not supported`);
18
+ d=d.create(b);this.cache.set(c,d)}return d}};ns={canonicalize:N,IconvTiny:O,SBCS:u,Unicode:M};
19
+ export const {canonicalize,IconvTiny,SBCS,Unicode}=ns;
20
+
21
+ export const
22
+ ISO_8859_1=new SBCS("ISO-8859-1",""),
23
+ ISO_8859_2=new SBCS("ISO-8859-2","Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"),
24
+ ISO_8859_3=new SBCS("ISO-8859-3","ŭŝ˙","¡Ħ¢˘¥�¦Ĥ©İªŞ«Ğ¬Ĵ®�¯Ż±ħ¶ĥ¹ıºş»ğ¼ĵ¾�¿żÃ�ÅĊÆĈÐ�ÕĠØĜÝŬÞŜã�åċæĉð�õġøĝ"),
25
+ ISO_8859_4=new SBCS("ISO-8859-4","ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"),
26
+ ISO_8859_5=new SBCS("ISO-8859-5","ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"),
27
+ ISO_8859_6=new SBCS("ISO-8859-6","���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"),
28
+ ISO_8859_7=new SBCS("ISO-8859-7","΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�","¡‘¢’¤€¥₯ªͺ®�¯―"),
29
+ ISO_8859_8=new SBCS("ISO-8859-8","��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�","¡�ª×º÷"),
30
+ ISO_8859_9=new SBCS("ISO-8859-9","ışÿ","ÐĞÝİÞŞðğ"),
31
+ ISO_8859_10=new SBCS("ISO-8859-10","ĸ","¡Ą¢Ē£Ģ¤Ī¥Ĩ¦Ķ¨Ļ©ĐªŠ«Ŧ¬Ž®Ū¯Ŋ±ą²ē³ģ´īµĩ¶ķ¸ļ¹đºš»ŧ¼ž½―¾ū¿ŋÀĀÇĮÈČÊĘÌĖÑŅÒŌ×ŨÙŲàāçįèčêęìėñņòō÷ũùų"),
32
+ ISO_8859_11=new SBCS("ISO-8859-11","กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"),
33
+ ISO_8859_13=new SBCS("ISO-8859-13","æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’","¡”¥„¨ØªŖ¯Æ´“¸øºŗ"),
34
+ ISO_8859_14=new SBCS("ISO-8859-14","ŷÿ","¡Ḃ¢ḃ¤Ċ¥ċ¦Ḋ¨ẀªẂ«ḋ¬Ỳ¯Ÿ°Ḟ±ḟ²Ġ³ġ´Ṁµṁ·Ṗ¸ẁ¹ṗºẃ»Ṡ¼ỳ½Ẅ¾ẅ¿ṡÐŴ×ṪÞŶðŵ÷ṫ"),
35
+ ISO_8859_15=new SBCS("ISO-8859-15","","¤€¦Š¨š´Ž¸ž¼Œ½œ¾Ÿ"),
36
+ ISO_8859_16=new SBCS("ISO-8859-16","ęțÿ","¡Ą¢ą£Ł¤€¥„¦Š¨šªȘ¬Ź®ź¯Ż²Č³ł´Žµ”¸ž¹čºș¼Œ½œ¾Ÿ¿żÃĂÅĆÐĐÑŃÕŐ׌ØŰÝĘÞȚãăåćðđñńõő÷śøű"),
37
+ CP037=new SBCS("CP037","œ\t†\x7F—Ž\v\f\r…‡’€‚ƒ„\nˆ‰Š‹Œ‘“”•–˜™š›ž \xA0âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ"),
38
+ CP500=new SBCS("CP500","œ\t†\x7F—Ž\v\f\r…‡’€‚ƒ„\nˆ‰Š‹Œ‘“”•–˜™š›ž \xA0âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ"),
39
+ CP875=new SBCS("CP875","œ\t†\x7F—Ž\v\f\r…‡’€‚ƒ„\nˆ‰Š‹Œ‘“”•–˜™š›ž ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩΪΫ|,%_>?¨ΆΈΉ\xA0ΊΌΎΏ`:#@'=\"΅abcdefghiαβγδεζ°jklmnopqrηθικλμ´~stuvwxyzνξοπρσ£άέήϊίόύϋώςτυφχψ{ABCDEFGHI­ωΐΰ‘―}JKLMNOPQR±½�·’¦\\₯STUVWXYZ²§ͺ�«¬0123456789³©€�»Ÿ"),
40
+ CP1026=new SBCS("CP1026","œ\t†\x7F—Ž\v\f\r…‡’€‚ƒ„\nˆ‰Š‹Œ‘“”•–˜™š›ž \xA0âäàáãå{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁÃÅ[Ñş,%_>?øÉÊËÈÍÎÏÌı:ÖŞ'=ÜØabcdefghi«»}`¦±°jklmnopqrªºæ¸Æ¤µöstuvwxyz¡¿]$@®¢£¥·©§¶¼½¾¬|¯¨´×çABCDEFGHI­ô~òóõğJKLMNOPQR¹û\\ùúÿü÷STUVWXYZ²Ô#ÒÓÕ0123456789³Û\"Ùڟ"),
41
+ CP437=new SBCS("CP437","ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xA0"),
42
+ CP737=new SBCS("CP737","ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■\xA0"),
43
+ CP775=new SBCS("CP775","ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■\xA0"),
44
+ CP850=new SBCS("CP850","ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■\xA0"),
45
+ CP852=new SBCS("CP852","ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■\xA0"),
46
+ CP855=new SBCS("CP855","ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■\xA0"),
47
+ CP857=new SBCS("CP857","ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■\xA0"),
48
+ CP860=new SBCS("CP860","ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xA0"),
49
+ CP861=new SBCS("CP861","ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xA0"),
50
+ CP862=new SBCS("CP862","אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xA0"),
51
+ CP863=new SBCS("CP863","ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xA0"),
52
+ CP864=new SBCS("CP864","°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ�\xA0­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�","%٪"),
53
+ CP865=new SBCS("CP865","ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xA0"),
54
+ CP866=new SBCS("CP866","АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■\xA0"),
55
+ CP869=new SBCS("CP869","������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■\xA0"),
56
+ CP874=new SBCS("CP874","€����…�����������‘’“”•–—��������\xA0กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"),
57
+ CP1250=new SBCS("CP1250","€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź\xA0ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"),
58
+ CP1251=new SBCS("CP1251","ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ\xA0ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"),
59
+ CP1252=new SBCS("CP1252","","€€�‚‚ƒƒ„„……††‡‡ˆˆ‰‰ŠŠ‹‹ŒŒ�ŽŽ��‘‘’’““””••––——˜˜™™šš››œœ�žžŸŸ"),
60
+ CP1253=new SBCS("CP1253","€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›����\xA0΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"),
61
+ CP1254=new SBCS("CP1254","ışÿ","€€�‚‚ƒƒ„„……††‡‡ˆˆ‰‰ŠŠ‹‹ŒŒ�Ž���‘‘’’““””••––——˜˜™™šš››œœ�ž�ŸŸÐĞÝİÞŞðğ"),
62
+ CP1255=new SBCS("CP1255","€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›����\xA0¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"),
63
+ CP1256=new SBCS("CP1256","€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں\xA0،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"),
64
+ CP1257=new SBCS("CP1257","€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛�\xA0�¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"),
65
+ CP1258=new SBCS("CP1258","ư₫ÿ","€€�‚‚ƒƒ„„……††‡‡ˆˆ‰‰Š�‹‹ŒŒ�Ž���‘‘’’““””••––——˜˜™™š�››œœ�ž�ŸŸÃĂÌ̀ÐĐÒ̉ÕƠÝƯÞ̃ãăì́ðđọ̀õơ"),
66
+ MAC_CYRILLIC=new SBCS("MAC-CYRILLIC","АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»…\xA0ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"),
67
+ MAC_GREEK=new SBCS("MAC-GREEK","Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»…\xA0ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"),
68
+ MAC_ICELAND=new SBCS("MAC-ICELAND","ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"),
69
+ MAC_LATIN2=new SBCS("MAC-LATIN2","ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»…\xA0ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"),
70
+ MAC_ROMAN=new SBCS("MAC-ROMAN","ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"),
71
+ MAC_TURKISH=new SBCS("MAC-TURKISH","ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"),
72
+ ATARIST=new SBCS("ATARIST","ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáíóúñѪº¿⌐¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ijIJאבגדהוזחטיכלמנסעפצקרשתןךםףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²³¯"),
73
+ CP424=new SBCS("CP424","œ\t†\x7F—Ž\v\f\r…‡’€‚ƒ„\nˆ‰Š‹Œ‘“”•–˜™š›ž אבגדהוזחט¢.<(+|&יךכלםמןנס!$*);¬-/עףפץצקרש¦,%_>?pתrs\xA0uvw‗`:#@'=\"�abcdefghi«»���±°jklmnopqr���¸�¤µ~stuvwxyz�����®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­�����}JKLMNOPQR¹�����\\÷STUVWXYZ²�����0123456789³����Ÿ"),
74
+ CP856=new SBCS("CP856","אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■\xA0"),
75
+ CP1006=new SBCS("CP1006","۰۱۲۳۴۵۶۷۸۹،؛­؟ﺁﺍﺎﺎﺏﺑﭖﭘﺓﺕﺗﭦﭨﺙﺛﺝﺟﭺﭼﺡﺣﺥﺧﺩﮄﺫﺭﮌﺯﮊﺱﺳﺵﺷﺹﺻﺽﺿﻁﻅﻉﻊﻋﻌﻍﻎﻏﻐﻑﻓﻕﻗﻙﻛﮒﮔﻝﻟﻠﻡﻣﮞﻥﻧﺅﻭﮦﮨﮩﮪﺀﺉﺊﺋﻱﻲﻳﮰﮮﹼﹽ"),
76
+ KOI8_R=new SBCS("KOI8-R","─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥\xA0⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"),
77
+ KOI8_U=new SBCS("KOI8-U","─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥\xA0⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"),
78
+ KZ1048=new SBCS("KZ1048","ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ\xA0ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"),
79
+ NEXTSTEP=new SBCS("NEXTSTEP","\xA0ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝÞµ×÷©¡¢£⁄¥ƒ§¤’“«‹›fifl®–†‡·¦¶•‚„”»…‰¬¿¹ˋ´ˆ˜¯˘˙¨²˚¸³˝˛ˇ—±¼½¾àáâãäåçèéêëìÆíªîïðñŁØŒºòóôõöæùúûıüýłøœßþÿ��"),
80
+ US_ASCII=new SBCS("US-ASCII","�".repeat(128)),
81
+ UTF8=new Unicode(2,2),
82
+ UTF16LE=new Unicode(0,0),
83
+ UTF16BE=new Unicode(0,1),
84
+ UTF32LE=new Unicode(1,0),
85
+ UTF32BE=new Unicode(1,1),
86
+ encodings={ISO_8859_1,ISO_8859_2,ISO_8859_3,ISO_8859_4,ISO_8859_5,ISO_8859_6,ISO_8859_7,ISO_8859_8,ISO_8859_9,ISO_8859_10,ISO_8859_11,ISO_8859_13,ISO_8859_14,ISO_8859_15,ISO_8859_16,CP037,CP500,CP875,CP1026,CP437,CP737,CP775,CP850,CP852,CP855,CP857,CP860,CP861,CP862,CP863,CP864,CP865,CP866,CP869,CP874,CP1250,CP1251,CP1252,CP1253,CP1254,CP1255,CP1256,CP1257,CP1258,MAC_CYRILLIC,MAC_GREEK,MAC_ICELAND,MAC_LATIN2,MAC_ROMAN,MAC_TURKISH,ATARIST,CP424,CP856,CP1006,KOI8_R,KOI8_U,KZ1048,NEXTSTEP,US_ASCII,UTF8,UTF16LE,UTF16BE,UTF32LE,UTF32BE},
87
+ aliases="ISO-8859-1 819 88591 cp819 csisolatin1 ibm819 isoir100 l1 latin1,ISO-8859-2 88592 912 cp912 csisolatin2 ibm912 isoir101 l2 latin2,ISO-8859-3 88593 913 cp913 csisolatin3 ibm913 isoir109 l3 latin3,ISO-8859-4 88594 914 cp914 csisolatin4 ibm914 isoir110 l4 latin4,ISO-8859-5 88595 915 cp915 csisolatincyrillic cyrillic ibm915 isoir144,ISO-8859-6 1089 88596 arabic asmo708 cp1089 csisolatinarabic ecma114 ibm1089 isoir127,ISO-8859-7 813 88597 cp813 csisolatingreek ecma118 elot928 greek greek8 ibm813 isoir126 suneugreek,ISO-8859-8 88598 916 cp916 csisolatinhebrew hebrew ibm916 isoir138,ISO-8859-9 88599 920 cp920 csisolatin5 ibm920 isoir148 l5 latin5,ISO-8859-10 csisolatin6 isoir157 l6 latin6,ISO-8859-11 xiso885911,ISO-8859-13 885913,ISO-8859-14 isoceltic isoir199 l8 latin8,ISO-8859-15 885915 923 cp923 csiso885915 csisolatin csisolatin9 ibm923 iso885915fdis l9 latin latin9,ISO-8859-16 csiso885916 iso8859162001 isoir226 l10 latin10,CP037 37 cpibm37 csebcdiccpca csebcdiccpnl csebcdiccpus csebcdiccpwt csibm37 ebcdiccpca ebcdiccpnl ebcdiccpus ebcdiccpwt ibm37,CP500 500 csibm500 ebcdiccpbh ebcdiccpch ibm500,CP875 875 ibm875 xibm875,CP1026 1026 ibm1026,CP437 437 cspc8codepage437 ibm437 windows437,CP737 737 ibm737 xibm737,CP775 775 ibm775,CP850 850 cspc850multilingual ibm850,CP852 852 cspcp852 ibm852,CP855 855 cspcp855 ibm855,CP857 857 csibm857 ibm857,CP860 860 csibm860 ibm860,CP861 861 cpis csibm861 ibm861,CP862 862 csibm862 cspc862latinhebrew ibm862,CP863 863 csibm863 ibm863,CP864 864 csibm864 ibm864,CP865 865 csibm865 ibm865,CP866 866 csibm866 ibm866,CP869 869 cpgr csibm869 ibm869,CP874 874 ibm874 xibm874,CP1250 cp5346 win1250 windows1250,CP1251 ansi1251 cp5347 win1251 windows1251,CP1252 cp5348 ibm1252 win1252 windows1252,CP1253 cp5349 win1253 windows1253,CP1254 cp5350 win1254 windows1254,CP1255 win1255 windows1255,CP1256 win1256 windows1256,CP1257 cp5353 win1257 windows1257,CP1258 win1258 windows1258,MAC-CYRILLIC xmaccyrillic,MAC-GREEK xmacgreek,MAC-ICELAND xmaciceland,MAC-LATIN2 maccentraleurope xmaccentraleurope,MAC-ROMAN xmacroman,MAC-TURKISH xmacturkish,ATARIST,CP424 424 csibm424 ebcdiccphe ibm424,CP856 856 ibm856 xibm856,CP1006 1006 ibm1006 xibm1006,KOI8-R cskoi8r koi8,KOI8-U cskoi8u,KZ1048 cskz1048 rk1048 strk10482002,NEXTSTEP we8nextstep,US-ASCII 646 ansix34 ascii ascii7 cp367 csascii default ibm367 iso646irv iso646us isoir6 us,UTF8 unicode11utf8,UTF16LE utf16,UTF16BE,UTF32LE utf32,UTF32BE";