indickit 0.0.0-stage → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +238 -2
- package/dist/normalize.js +183 -0
- package/dist/phonetic.js +805 -0
- package/dist/segment.js +175 -0
- package/dist/stem.js +40 -0
- package/dist/types/js/normalize.d.ts +26 -0
- package/dist/types/js/phonetic.d.ts +28 -0
- package/dist/types/js/segment.d.ts +22 -0
- package/dist/types/js/stem.d.ts +24 -0
- package/package.json +41 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Micah
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,239 @@
|
|
|
1
|
-
#
|
|
1
|
+
# indickit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Small, exact utilities for text in the languages of India, in Go and
|
|
4
|
+
TypeScript. They fix the places where ordinary string code goes wrong on
|
|
5
|
+
Indian text: a search that misses a word because it is spelled, encoded or
|
|
6
|
+
inflected another way, and a letter count that cuts a letter in two.
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
stem किताब किताबें किताबों → किताब
|
|
10
|
+
phonetic राम ರಾಮ രാമ ராம رام Ram → rn
|
|
11
|
+
segment ಲಕ್ಷ್ಮಿ → ಲ ಕ್ಷ್ಮಿ
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Each utility gives the same output in Go and in TypeScript, and each was
|
|
15
|
+
measured on data that its rules were never built on.
|
|
16
|
+
|
|
17
|
+
## Which one you need
|
|
18
|
+
|
|
19
|
+
| You want to | Use |
|
|
20
|
+
|---|---|
|
|
21
|
+
| store text so that one look has one encoding | `normalize` |
|
|
22
|
+
| let a search for किताब also find किताबों | `normalize`, then `stem` |
|
|
23
|
+
| let a search for हिन्दी also find हिंदी, and keep words whole | `fold` |
|
|
24
|
+
| find a person's name typed in another script | `phonetic` |
|
|
25
|
+
| count letters, cut at a length, or move a cursor | `segment` |
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
Go:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
go get github.com/micahchoo/indickit
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
JavaScript or TypeScript, from GitHub (no npm account needed):
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
npm install github:micahchoo/indickit#v0.4.2
|
|
39
|
+
bun add github:micahchoo/indickit#v0.4.2
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
In a browser, with no build step:
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
import { normalize } from "https://cdn.jsdelivr.net/gh/micahchoo/indickit@v0.4.2/dist/normalize.js";
|
|
46
|
+
import { stem } from "https://cdn.jsdelivr.net/gh/micahchoo/indickit@v0.4.2/dist/stem.js";
|
|
47
|
+
import { match } from "https://cdn.jsdelivr.net/gh/micahchoo/indickit@v0.4.2/dist/phonetic.js";
|
|
48
|
+
import { segment } from "https://cdn.jsdelivr.net/gh/micahchoo/indickit@v0.4.2/dist/segment.js";
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Each utility is its own file, so a page loads only the rules it uses.
|
|
52
|
+
|
|
53
|
+
## Recipes
|
|
54
|
+
|
|
55
|
+
### Store text
|
|
56
|
+
|
|
57
|
+
Two strings can look the same and differ in their bytes: an invisible
|
|
58
|
+
joiner, an old Malayalam chillu, a ज़ typed as one code point or two.
|
|
59
|
+
`normalize` gives them one encoding, and it never changes what a reader
|
|
60
|
+
sees. Store text after `normalize`.
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import { normalize } from "indickit/normalize";
|
|
64
|
+
|
|
65
|
+
normalize("ಸಿಕಾರ್\u200c", "kn"); // "ಸಿಕಾರ್": a ZWNJ at the end draws nothing
|
|
66
|
+
normalize("അവന്\u200d", "ml"); // "അവൻ": the old chillu becomes the atomic one
|
|
67
|
+
normalize("र्\u200dय", "mr"); // "र्\u200dय": eyelash ra; this ZWJ is visible, so it stays
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Search words in their other forms
|
|
71
|
+
|
|
72
|
+
Give every word of a document a key, and give the query the same key. The
|
|
73
|
+
key for a word is `stem(normalize(word, lang), lang)`:
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
import { normalize } from "indickit/normalize";
|
|
77
|
+
import { stem } from "indickit/stem";
|
|
78
|
+
|
|
79
|
+
stem(normalize("किताबों", "hi"), "hi"); // "किताब"
|
|
80
|
+
stem(normalize("ஆண்டில்", "ta"), "ta"); // "ஆண்ட"
|
|
81
|
+
stem(normalize("ஆண்டு", "ta"), "ta"); // "ஆண்ட"
|
|
82
|
+
stem(normalize("ಸರ್ಕಾರಕ್ಕೆ", "kn"), "kn"); // "ಸರ್ಕಾರ"
|
|
83
|
+
stem(normalize("حکومتوں", "ur"), "ur"); // "حکومت"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
In 13 languages, a search with stems finds 6–15 points more of the right
|
|
87
|
+
sentences than an exact search. It also finds some wrong ones: a stem
|
|
88
|
+
merges forms by their endings, not by their meaning.
|
|
89
|
+
|
|
90
|
+
Use `stem` or `fold`, not both: `fold` before `stem` loses 10 points in
|
|
91
|
+
Assamese. `fold` alone merges accepted spellings of one word (हिन्दी and
|
|
92
|
+
हिंदी) and keeps the word whole, for a search that must not merge forms:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import { fold } from "indickit/normalize";
|
|
96
|
+
|
|
97
|
+
fold("हिन्दी", "hi"); // "हिंदी"
|
|
98
|
+
fold("गाँव", "hi"); // "गांव"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Find a name in any script
|
|
102
|
+
|
|
103
|
+
One person's name is typed in Devanagari on one form, in Malayalam on a
|
|
104
|
+
second, and in English on a third. `phonetic` gives each spelling a key;
|
|
105
|
+
equal keys mean "this sounds like the same name".
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { match } from "indickit/phonetic";
|
|
109
|
+
|
|
110
|
+
match("Mohanlal", "മോഹൻലാൽ"); // true
|
|
111
|
+
match("Mohan", "மோகன்"); // true
|
|
112
|
+
match("राम", "काम"); // false: Rām is not kām
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
To search a list of names, store every key of each name, and look up every
|
|
116
|
+
key of the query. A name can have more than one key: Tamil writes both k
|
|
117
|
+
and h with க, so மோகன், Mohan, has two.
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
import { nameKeys, RULES_VERSION } from "indickit/phonetic";
|
|
121
|
+
|
|
122
|
+
for (const key of nameKeys("सचिन तेंदुलकर")) db.insert({ key, personId, rules: RULES_VERSION });
|
|
123
|
+
// later
|
|
124
|
+
const hits = nameKeys(query).flatMap((key) => db.find({ key }));
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Equal keys mean "sounds alike", not "the same person". Before you merge two
|
|
128
|
+
records, weigh the evidence: a shared rare name says more than a shared
|
|
129
|
+
common one.
|
|
130
|
+
|
|
131
|
+
### Count and cut letters
|
|
132
|
+
|
|
133
|
+
A cursor, a backspace, a letter count and a cut at a length limit must
|
|
134
|
+
treat ಕ್ಷ್ಮಿ as one letter. `Intl.Segmenter` splits it in Kannada and
|
|
135
|
+
Gurmukhi; `segment` keeps it whole.
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import { segment, count } from "indickit/segment";
|
|
139
|
+
|
|
140
|
+
segment("ಲಕ್ಷ್ಮಿ"); // ["ಲ","ಕ್ಷ್ಮಿ"]
|
|
141
|
+
segment("ਪ੍ਰੀਤ"); // ["ਪ੍ਰੀ","ਤ"]
|
|
142
|
+
segment("ਕ੍ਕ"); // ["ਕ੍","ਕ"]: Gurmukhi shows this virama, so these are two letters
|
|
143
|
+
count("ಕನ್ನಡ"); // 3
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### The same in Go
|
|
147
|
+
|
|
148
|
+
```go
|
|
149
|
+
import (
|
|
150
|
+
"github.com/micahchoo/indickit/normalize"
|
|
151
|
+
"github.com/micahchoo/indickit/phonetic"
|
|
152
|
+
"github.com/micahchoo/indickit/segment"
|
|
153
|
+
"github.com/micahchoo/indickit/stem"
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
normalize.Text("അവന്\u200d", "ml") // "അവൻ"
|
|
157
|
+
stem.Stem(normalize.Text("किताबों", "hi"), "hi") // किताब
|
|
158
|
+
phonetic.Match("Mohanlal", "മോഹൻലാൽ") // true
|
|
159
|
+
segment.Segment("ಲಕ್ಷ್ಮಿ") // [ಲ ಕ್ಷ್ಮಿ]
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Reference
|
|
163
|
+
|
|
164
|
+
| Go | TypeScript | Returns |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
| `normalize.Text(s, lang)` | `normalize(text, lang?)` | one encoding; the look never changes |
|
|
167
|
+
| `normalize.Fold(s, lang)` | `fold(text, lang?)` | `normalize`, then one spelling of each word |
|
|
168
|
+
| `stem.Stem(word, lang)` | `stem(word, lang)` | the search key of a word |
|
|
169
|
+
| `stem.Languages()` | `LANGUAGES` | the languages with a stem table |
|
|
170
|
+
| `phonetic.Keys(word)` | `keys(word)` | the keys of one word |
|
|
171
|
+
| `phonetic.NameKeys(name)` | `nameKeys(name)` | the keys of a whole name; index these |
|
|
172
|
+
| `phonetic.Match(a, b)` | `match(a, b)` | same word count, and each pair of words shares a key |
|
|
173
|
+
| `phonetic.Words(name)` | `words(name)` | the words, split as the others split them |
|
|
174
|
+
| `segment.Segment(s)` | `segment(text)` | the letters, in order; joined, they give the text back |
|
|
175
|
+
| `segment.Count(s)` | `count(text)` | how many letters a reader sees |
|
|
176
|
+
|
|
177
|
+
Three things hold for all of them:
|
|
178
|
+
|
|
179
|
+
- **Language codes** are ISO 639: `hi`, `ta`, `as`, and so on. `phonetic`
|
|
180
|
+
needs none: it reads the script. `normalize` and `fold` use the code for
|
|
181
|
+
a few rules that belong to one language (Assamese ৰ, for example). `stem`
|
|
182
|
+
needs it, and returns the word unchanged for a language with no table.
|
|
183
|
+
- **Keys are not text.** A stem (ஆண்ட), a `phonetic` key (`rn`) and the
|
|
184
|
+
output of `fold` are for comparing, not for showing or storing as text.
|
|
185
|
+
Do not stem a stem: `stem` may cut it again, as other stemmers do.
|
|
186
|
+
- **Rules change, and stored keys go stale.** Each utility exports
|
|
187
|
+
`RULES_VERSION` (Go: `RulesVersion`). Store it beside the keys you save,
|
|
188
|
+
and compute them again when it changes. Before 1.0, a minor version may
|
|
189
|
+
change the rules.
|
|
190
|
+
|
|
191
|
+
## How good it is
|
|
192
|
+
|
|
193
|
+
Each result is on data that no rule was chosen on. The details, the
|
|
194
|
+
other tools tried and each weak spot are in `docs/`.
|
|
195
|
+
|
|
196
|
+
| Utility | Result | Best other tool | Browser file | Details |
|
|
197
|
+
|---|---|---|---|---|
|
|
198
|
+
| `normalize` | makes 88.1% of look-alike spellings equal, and changes the look of no word | Indic NLP Library: 82.4%, and changes 0.68% of words | 13 KB | [docs/normalize.md](docs/normalize.md) |
|
|
199
|
+
| `stem` | finds 6–15 points more of the right sentences than exact search, in 13 languages | ahead in 5 languages, level in 2, a trade in 4, behind in Nepali | 3 KB | [docs/stem.md](docs/stem.md) |
|
|
200
|
+
| `phonetic` | finds the right person 84% of the time, in 21 languages | romanize + Soundex: 23% in Tamil, 70% in Hindi; cannot read Urdu | 4 KB | [docs/phonetic.md](docs/phonetic.md) |
|
|
201
|
+
| `segment` | cuts 0.05% of Kannada words wrongly | `Intl.Segmenter`: 50.3% | 9 KB | [docs/segment.md](docs/segment.md) |
|
|
202
|
+
|
|
203
|
+
(Browser files are gzipped.)
|
|
204
|
+
|
|
205
|
+
## Limits
|
|
206
|
+
|
|
207
|
+
- **Only HarfBuzz was tested** for "looks the same" (`normalize`,
|
|
208
|
+
`segment`). Windows and Apple draw text with their own engines.
|
|
209
|
+
- **Tamil is the weakest language** for `phonetic` (76%), and `stem` is
|
|
210
|
+
behind Snowball's recall in Tamil.
|
|
211
|
+
- **Some languages have no table.** `stem` covers 13 languages; Bodo,
|
|
212
|
+
Dogri, Kashmiri, Konkani, Maithili, Manipuri, Odia, Santali and Sindhi
|
|
213
|
+
are not among them.
|
|
214
|
+
- **Go reads invalid UTF-8 as U+FFFD**, so for such input the output does
|
|
215
|
+
not join back into the original bytes.
|
|
216
|
+
|
|
217
|
+
Each utility's own weak spots are at the end of its file in `docs/`.
|
|
218
|
+
|
|
219
|
+
## How it is built
|
|
220
|
+
|
|
221
|
+
Every table and switch of a utility is in its rules file
|
|
222
|
+
(`normalize/rules.json`, `stem/rules.json`, `phonetic/rules.json`,
|
|
223
|
+
`segment/rules.json`); the Go and TypeScript code is a short loop over it.
|
|
224
|
+
Both are checked against a conformance file of inputs with the outputs that
|
|
225
|
+
a reference implementation gave them: 345,276 inputs for `normalize`,
|
|
226
|
+
418,665 for `stem`, 195,994 for `phonetic`, 858,654 for `segment`
|
|
227
|
+
(`*/testdata/conformance.jsonl.gz`). A change that makes any one disagree
|
|
228
|
+
on any input fails the build.
|
|
229
|
+
|
|
230
|
+
## Credits and licence
|
|
231
|
+
|
|
232
|
+
MIT. The test words are Wikidata labels (CC0). The rules were tuned on
|
|
233
|
+
Wikidata and PIB Parallel (Press Information Bureau releases), and checked
|
|
234
|
+
on AI4Bharat's Aksharantar and on Wikipedia text; none of them ships here.
|
|
235
|
+
`normalize` and `segment` were checked in fonts by Google (Noto), Ek Type
|
|
236
|
+
(Anek), SIL, SMC and others. `stem`'s endings were mined from PIB text;
|
|
237
|
+
Wiktionary's inflection tables (CC BY-SA), Universal Dependencies
|
|
238
|
+
treebanks and FLORES+ (CC BY-SA) were used only to measure them. It was
|
|
239
|
+
compared with Snowball, Lucene and the Indic NLP Library.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// normalize/rules.json
|
|
2
|
+
var rules_default = {
|
|
3
|
+
version: "2026-10-05",
|
|
4
|
+
max_passes: 8,
|
|
5
|
+
chillu: { map: { ണ: "ൺ", ന: "ൻ", ര: "ർ", ല: "ൽ", ള: "ൾ", ക: "ൿ" }, virama: "്", joiner: "", not_before: "റ" },
|
|
6
|
+
ra: { virama: "্", assamese: "ৰ", bengali: "র", assamese_langs: ["as"] },
|
|
7
|
+
khanda_ta: { from: "ত্", to: "ৎ", not_before: [[2433, 2435], [2492, 2519], [2530, 2531]] },
|
|
8
|
+
invisible: { "": "n", "": "j", "": "s", "": "w", "\uFEFF": "f", "": "h" },
|
|
9
|
+
width: [3, 3],
|
|
10
|
+
scripts: [["Devanagari", [[2304, 2431], [43232, 43263]]], ["Bengali", [[2432, 2559]]], ["Gurmukhi", [[2560, 2687]]], ["Gujarati", [[2688, 2815]]], ["Oriya", [[2816, 2943]]], ["Tamil", [[2944, 3071]]], ["Telugu", [[3072, 3199]]], ["Kannada", [[3200, 3327]]], ["Malayalam", [[3328, 3455]]], ["MeeteiMayek", [[43744, 43775], [43968, 44031]]], ["OlChiki", [[7248, 7295]]], ["Arabic", [[1536, 1791], [1872, 1919], [64336, 65023], [65136, 65279]]]],
|
|
11
|
+
classes: [[1536, 1541, "U"], [1544, 1544, "U"], [1547, 1547, "U"], [1552, 1562, "M"], [1568, 1568, "A"], [1569, 1569, "U"], [1570, 1573, "R"], [1574, 1574, "A"], [1575, 1575, "R"], [1576, 1576, "A"], [1577, 1577, "R"], [1578, 1582, "A"], [1583, 1586, "R"], [1587, 1599, "A"], [1600, 1600, "K"], [1601, 1607, "A"], [1608, 1608, "R"], [1609, 1610, "A"], [1611, 1631, "M"], [1646, 1647, "A"], [1648, 1648, "M"], [1649, 1651, "R"], [1652, 1652, "U"], [1653, 1655, "R"], [1656, 1671, "A"], [1672, 1689, "R"], [1690, 1727, "A"], [1728, 1728, "R"], [1729, 1730, "A"], [1731, 1739, "R"], [1740, 1740, "A"], [1741, 1741, "R"], [1742, 1742, "A"], [1743, 1743, "R"], [1744, 1745, "A"], [1746, 1747, "R"], [1749, 1749, "R"], [1750, 1756, "M"], [1757, 1757, "U"], [1759, 1764, "M"], [1767, 1768, "M"], [1770, 1773, "M"], [1774, 1775, "R"], [1786, 1788, "A"], [1791, 1791, "A"], [1872, 1880, "A"], [1881, 1883, "R"], [1884, 1898, "A"], [1899, 1900, "R"], [1901, 1904, "A"], [1905, 1905, "R"], [1906, 1906, "A"], [1907, 1908, "R"], [1909, 1911, "A"], [1912, 1913, "R"], [1914, 1919, "A"], [2304, 2307, "B"], [2308, 2324, "I"], [2325, 2361, "C"], [2362, 2363, "M"], [2364, 2364, "N"], [2366, 2380, "M"], [2381, 2381, "V"], [2382, 2383, "M"], [2389, 2391, "M"], [2392, 2399, "C"], [2400, 2401, "I"], [2402, 2403, "M"], [2418, 2423, "I"], [2424, 2431, "C"], [2433, 2435, "B"], [2437, 2444, "I"], [2447, 2448, "I"], [2451, 2452, "I"], [2453, 2472, "C"], [2474, 2480, "C"], [2482, 2482, "C"], [2486, 2489, "C"], [2492, 2492, "N"], [2494, 2500, "M"], [2503, 2504, "M"], [2507, 2508, "M"], [2509, 2509, "V"], [2510, 2510, "D"], [2519, 2519, "M"], [2524, 2525, "C"], [2527, 2527, "C"], [2528, 2529, "I"], [2530, 2531, "M"], [2544, 2545, "C"], [2556, 2556, "B"], [2561, 2563, "B"], [2565, 2570, "I"], [2575, 2576, "I"], [2579, 2580, "I"], [2581, 2600, "C"], [2602, 2608, "C"], [2610, 2611, "C"], [2613, 2614, "C"], [2616, 2617, "C"], [2620, 2620, "N"], [2622, 2626, "M"], [2631, 2632, "M"], [2635, 2636, "M"], [2637, 2637, "V"], [2649, 2652, "C"], [2654, 2654, "C"], [2672, 2672, "B"], [2689, 2691, "B"], [2693, 2701, "I"], [2703, 2705, "I"], [2707, 2708, "I"], [2709, 2728, "C"], [2730, 2736, "C"], [2738, 2739, "C"], [2741, 2745, "C"], [2748, 2748, "N"], [2750, 2757, "M"], [2759, 2761, "M"], [2763, 2764, "M"], [2765, 2765, "V"], [2784, 2785, "I"], [2786, 2787, "M"], [2809, 2809, "C"], [2813, 2815, "N"], [2817, 2819, "B"], [2821, 2828, "I"], [2831, 2832, "I"], [2835, 2836, "I"], [2837, 2856, "C"], [2858, 2864, "C"], [2866, 2867, "C"], [2869, 2873, "C"], [2876, 2876, "N"], [2878, 2884, "M"], [2887, 2888, "M"], [2891, 2892, "M"], [2893, 2893, "V"], [2901, 2903, "M"], [2908, 2909, "C"], [2911, 2911, "C"], [2912, 2913, "I"], [2914, 2915, "M"], [2929, 2929, "C"], [2946, 2946, "B"], [2949, 2954, "I"], [2958, 2960, "I"], [2962, 2964, "I"], [2965, 2965, "C"], [2969, 2970, "C"], [2972, 2972, "C"], [2974, 2975, "C"], [2979, 2980, "C"], [2984, 2986, "C"], [2990, 3001, "C"], [3006, 3010, "M"], [3014, 3016, "M"], [3018, 3020, "M"], [3021, 3021, "V"], [3031, 3031, "M"], [3072, 3076, "B"], [3077, 3084, "I"], [3086, 3088, "I"], [3090, 3092, "I"], [3093, 3112, "C"], [3114, 3129, "C"], [3132, 3132, "N"], [3134, 3140, "M"], [3142, 3144, "M"], [3146, 3148, "M"], [3149, 3149, "V"], [3157, 3158, "M"], [3160, 3162, "C"], [3165, 3165, "D"], [3168, 3169, "I"], [3170, 3171, "M"], [3200, 3203, "B"], [3205, 3212, "I"], [3214, 3216, "I"], [3218, 3220, "I"], [3221, 3240, "C"], [3242, 3251, "C"], [3253, 3257, "C"], [3260, 3260, "N"], [3262, 3268, "M"], [3270, 3272, "M"], [3274, 3276, "M"], [3277, 3277, "V"], [3285, 3286, "M"], [3293, 3293, "D"], [3294, 3294, "C"], [3296, 3297, "I"], [3298, 3299, "M"], [3315, 3315, "B"], [3328, 3332, "B"], [3333, 3340, "I"], [3342, 3344, "I"], [3346, 3348, "I"], [3349, 3386, "C"], [3387, 3388, "V"], [3390, 3396, "M"], [3398, 3400, "M"], [3402, 3404, "M"], [3405, 3405, "V"], [3412, 3414, "D"], [3415, 3415, "M"], [3423, 3425, "I"], [3426, 3427, "M"], [3450, 3455, "D"], [7258, 7287, "C"], [7288, 7293, "B"], [43250, 43251, "B"], [43262, 43262, "I"], [43263, 43263, "M"], [43744, 43745, "I"], [43746, 43754, "C"], [43755, 43759, "M"], [43765, 43765, "B"], [43766, 43766, "V"], [43968, 43981, "C"], [43982, 43983, "I"], [43984, 43984, "C"], [43985, 43985, "I"], [43986, 43994, "C"], [44003, 44010, "M"], [44013, 44013, "V"], [64336, 64433, "U"], [64467, 64829, "U"], [64848, 64911, "U"], [64914, 64967, "U"], [65008, 65019, "U"], [65136, 65140, "U"], [65142, 65276, "U"]],
|
|
12
|
+
features: ["script", "char", "left1", "left2", "left3", "right1", "right2", "right3"],
|
|
13
|
+
tree: [0, { b: [7, { $: [6, { $: [2, { "?": [5, { "$?KUjns": 1 }], A: [1, { fw: [5, { $: [3, { AKU: 1 }], "?AKRUjns": 1 }], h: [5, { $: [3, { AKU: 1 }], "?AKUjns": 1, R: [4, { "?AMR^s": 1 }] }], j: [5, { Kj: 1 }], n: [5, { $: [3, { AKU: 1 }], "?Uns": 1, M: [4, { "MR^": 1 }] }], s: [5, { $: [3, { AKU: 1 }], "?AKRUjns": 1, M: [4, { "MR^": 1 }] }] }], K: [5, { $Ujns: 1, AR: [1, { fhsw: 1 }] }], U: [5, { "$?jns": 1, AR: [1, { fhnsw: 1 }], M: [1, { ns: 1 }] }], j: [1, { fhjsw: 1, n: [5, { $: [4, { "?AKMRUjn": 1 }], "?MUjns": 1, K: [3, { A: 1 }] }] }], n: [1, { fhw: [5, { "$?AKRUjns": 1 }], j: [5, { $: [4, { "?AKMRUjn": 1 }], "?KUjns": 1 }], ns: 1 }], s: [1, { fhw: [5, { "$?AKRUjns": 1 }], j: [5, { $: [3, { "?KUjn": 1 }], "?": [3, { "?R": 1 }], Kj: 1, U: [3, { R: 1 }] }], n: [5, { "$?Uns": 1, A: [3, { RU: 1 }], M: [3, { AUn: 1 }], R: [3, { R: 1 }] }], s: 1 }], M: [3, { A: [1, { fhsw: [5, { "$?ARjns": 1 }], j: [5, { j: 1 }], n: [5, { "$?ns": 1 }] }], M: [4, { A: [1, { fhsw: 1 }], M: [5, { $jns: 1 }], R: [1, { fhnsw: 1 }], "U^": 1 }], R: [5, { "$?Ujns": 1, AR: [1, { fhnsw: 1 }] }], U: [5, { "$?jns": 1 }], n: 1, "^": [5, { $hjns: 1 }] }], R: [5, { $s: [3, { AKMRUn: 1 }], AR: [1, { fhnsw: 1 }], "?KUjn": 1, M: [1, { n: [3, { A: 1 }], s: 1 }] }], h: 1, "^": [1, { fhnsw: 1 }] }], "?": [2, { "?^": 1, j: [1, { fhjsw: 1, n: [5, { "?M": 1 }] }], n: [1, { fhw: [5, { "?AR": 1 }], j: [5, { "?": 1 }], ns: 1 }], s: [1, { fhw: [5, { "?AR": 1 }], j: [3, { "?": 1 }], n: [3, { "?R": 1, A: [5, { M: 1 }] }], s: 1 }], A: [1, { fhw: [5, { ARjns: 1 }], j: [5, { R: [3, { A: 1 }], j: 1 }], n: [5, { Mns: 1 }], s: 1 }], M: [3, { A: [1, { fhsw: [5, { jns: 1 }], j: [5, { j: 1 }], n: [5, { ns: 1 }] }], M: [1, { fhsw: 1 }], R: [5, { jns: 1 }], U: 1 }], R: [5, { AR: [1, { fhnsw: 1 }], Ujns: 1, M: [1, { ns: 1 }] }], U: [5, { jns: 1 }] }], A: [5, { "?": 1, j: [1, { fhjsw: 1, n: [2, { KRUn: 1, M: [3, { R: 1 }] }] }], n: [1, { fhnsw: 1, j: [2, { KRUjn: 1, M: [3, { R: 1 }] }] }], s: [1, { fhsw: 1, n: [2, { RUn: 1, M: [3, { R: 1 }] }] }], R: [1, { fsw: 1, h: [3, { "?KMRU^fjn": 1, A: [2, { KMRjn: 1 }] }], j: [2, { j: 1 }], n: [2, { Rn: 1, Ms: [3, { R: 1 }] }] }], A: [1, { fhsw: 1, j: [2, { A: [3, { U: 1 }], j: 1 }], n: [2, { RUn: 1, s: [3, { Rn: 1 }], M: [3, { R: 1 }] }] }], K: [1, { fhsw: 1, jn: [2, { jn: 1 }] }], M: [1, { s: [2, { ARjns: 1 }], n: [2, { Rn: 1 }], fhjw: [2, { j: 1 }] }], U: [1, { fhnsw: 1, j: [2, { Rjn: 1, s: [3, { R: 1 }] }] }] }], U: [1, { fhw: [5, { "?AKRjns": 1 }], j: [2, { "?K^j": 1, s: [5, { K: 1 }], A: [5, { j: 1 }], R: [5, { jns: 1 }], M: [4, { A: 1 }] }], n: [2, { "?KR^n": 1, j: [5, { K: 1 }], Ms: [3, { R: 1 }], A: [5, { ns: 1 }] }], s: 1 }], K: [1, { fhsw: 1, j: [5, { "?Kjs": 1, n: [3, { "?": 1 }], A: [2, { Aj: 1 }] }], n: [2, { "?^n": 1, A: [5, { n: 1 }] }] }], R: [1, { fw: [5, { AKRUjns: 1, M: [2, { j: 1 }] }], h: [5, { AKUjn: 1, s: [4, { "?KMR^n": 1, A: [3, { AKM: 1 }] }], M: [2, { j: 1 }], R: [3, { "AMR^jn": 1, K: [4, { K: 1 }] }] }], n: [2, { "U^n": 1, A: [5, { n: 1 }], M: [5, { n: 1, ARjs: [3, { R: 1 }] }], R: [5, { ARjns: 1, M: [3, { MR: 1 }] }], s: [3, { R: [5, { AR: 1 }], "U^n": 1 }], K: [5, { jn: 1 }], j: [5, { KU: 1 }] }], s: [5, { AKRUjns: 1, M: [2, { Ajns: 1, R: [3, { AMR: 1 }] }] }], j: [2, { A: [5, { j: 1 }], M: [5, { j: 1, n: [3, { R: 1 }] }], j: 1, KRU: [5, { jn: 1 }], n: [5, { KU: 1 }] }] }], M: [1, { fw: [5, { ARUj: 1, Mn: [2, { j: 1 }] }], h: [5, { AUj: 1, R: [2, { A: [4, { "MR^": 1 }], KMRjn: 1, s: [3, { KMR: 1 }] }], Mn: [2, { j: 1 }] }], j: [5, { A: [2, { A: [3, { A: 1 }], j: 1 }], j: 1, MRn: [2, { j: 1 }], U: [2, { Rjn: 1, Ms: [3, { R: 1 }] }] }], s: [5, { ARUjns: 1, M: [2, { ARjns: 1 }] }], n: [5, { M: [2, { Ajn: 1, Rs: [3, { A: 1 }] }], Un: 1, s: [2, { A: [4, { "MR^": 1 }], Un: 1 }], AR: [2, { Rn: 1, Ms: [3, { R: 1 }] }], j: [2, { RUn: 1, M: [3, { R: 1 }] }] }] }], j: [1, { fhsw: 1, j: [5, { A: [2, { Aj: 1 }], js: 1 }], n: [2, { A: [5, { n: 1 }], Rn: 1 }] }], n: [1, { fw: [5, { AKRjns: 1, M: [2, { j: 1 }] }], h: [5, { AKjns: 1, R: [2, { Ajn: 1 }], M: [2, { j: 1 }] }], j: [5, { Kj: 1, AMR: [2, { j: 1 }], ns: [2, { R: 1 }] }], n: [2, { AM: [5, { ns: 1 }], KRn: 1, j: [3, { j: 1 }], s: [3, { R: 1 }] }], s: 1 }], s: [1, { fhsw: 1, j: [2, { A: [5, { j: 1 }], R: [5, { jns: 1 }], j: 1 }], n: [2, { A: [5, { ns: 1 }], Rn: 1 }] }], h: 1 }], R: [1, { fw: [5, { "?ARUhj": 1, n: [6, { "?AKRUjn": 1 }], s: [6, { "?AKRUjns": 1 }], K: [6, { AKR: 1 }], M: [2, { j: 1 }] }], h: [5, { "?AUhj": 1, n: [6, { "?AKRUjn": 1 }], s: [6, { "?AKUjns": 1, R: [4, { "?AKMR^n": 1 }] }], R: [3, { A: [4, { "?AKMUhjs": 1, R: [2, { ARjns: 1 }], "^": [2, { AMRjn: 1 }], n: [6, { A: 1 }] }], "?KMRUjns": 1, "^": [2, { "R^jns": 1 }] }], K: [6, { AKR: 1 }], M: [2, { j: 1 }] }], j: [5, { "?": [3, { "?R^": 1 }], U: [2, { Rjn: 1, s: [3, { R: 1 }] }], j: 1, n: [2, { "?^j": 1, U: [6, { A: 1 }], R: [6, { "?ARU": 1 }], K: [6, { AKR: 1 }], n: [6, { AR: 1 }], M: [3, { K: 1, R: [6, { AR: 1 }] }], s: [3, { "^s": 1 }] }], R: [2, { A: [3, { K: 1 }], j: 1 }], s: [2, { A: [3, { A: [4, { K: 1 }] }], R: [6, { "?U": 1 }], j: 1 }], AM: [2, { j: 1 }], K: [2, { A: [3, { A: 1 }], j: 1, n: [6, { AKR: 1 }], s: [3, { A: [4, { K: 1 }] }] }] }], n: [5, { "?Un": 1, j: [2, { "?KRU^jn": 1, M: [3, { KR: 1 }], s: [4, { "^": 1 }] }], s: [2, { "?U^ns": 1, R: [6, { "?ARU": 1, M: [3, { M: 1 }] }], A: [6, { "?n": 1 }], M: [6, { n: 1, AR: [3, { R: 1 }] }] }], A: [2, { "?RUn": 1, s: [3, { "?RUns": 1, M: [4, { R: 1 }] }], M: [3, { R: 1 }] }], R: [2, { "?R^n": 1, s: [3, { "?R^ns": 1, M: [4, { R: 1 }] }], M: [3, { R: 1 }] }], M: [2, { A: [6, { n: 1 }], R: [3, { "A^": 1, M: [4, { R: 1 }], R: [4, { "^": 1 }] }], j: [6, { Kn: 1 }], n: 1, s: [6, { n: 1, MR: [3, { R: 1 }] }] }], K: [2, { jn: 1 }] }], s: [5, { "?AKRUhjns": 1, M: [2, { AKjns: 1, R: [4, { "AR^": 1 }] }] }] }], A: [1, { fw: [5, { "?ARUfj": 1, ns: [6, { "?AKRUjns": 1 }], K: [6, { AKR: 1, M: [2, { j: 1 }] }], M: [2, { "^j": 1, ns: [3, { "^": 1 }] }] }], h: [5, { "?AUfj": 1, n: [6, { "?AKRUjns": 1 }], s: [6, { "?AKUjns": 1, R: [3, { "?AKMU^jns": 1, R: [4, { "AM^": 1 }] }] }], R: [3, { A: [2, { A: [6, { ARU: 1 }], KRjn: 1, s: [4, { "AMR^": 1 }], M: [4, { "AM^": 1 }] }], "?KMRU^fjns": 1 }], K: [6, { AKR: 1, M: [2, { j: 1 }] }], M: [2, { "^j": 1, ns: [3, { "^": 1 }] }] }], j: [5, { "?": [2, { "?Rjn": 1, s: [3, { "?": 1 }] }], U: [3, { "?MR^": 1, A: [2, { Rj: 1 }] }], j: 1, n: [2, { "?j": 1, U: [6, { A: 1 }], R: [6, { "?ARUn": 1 }], K: [6, { AKR: 1 }], n: [6, { AR: 1 }], M: [3, { K: [4, { K: 1 }], R: [6, { AR: 1 }], U: 1 }], s: [3, { "^s": 1 }] }], s: [2, { "?": [3, { "?": 1 }], A: [3, { U: [6, { A: 1 }], j: 1 }], M: [3, { K: [4, { K: 1 }] }], R: [6, { "?Un": 1 }], j: 1 }], A: [2, { j: 1, s: [3, { K: [4, { M: 1 }], j: 1 }], A: [3, { U: 1 }] }], R: [2, { A: [3, { A: [4, { M: 1 }] }], j: 1 }], K: [2, { A: [3, { A: [6, { R: 1 }] }], j: 1, n: [6, { AKR: 1 }] }], M: [2, { j: 1 }] }], n: [5, { "?Un": 1, A: [2, { "?U^n": 1, s: [3, { "?U^ns": 1, R: [4, { "AKMR^": 1 }], M: [4, { R: 1 }] }], R: [3, { "AKMR^": 1, n: [6, { R: 1 }] }], M: [3, { R: 1 }] }], j: [2, { "?KRUjn": 1, M: [3, { "KRU^": 1 }], s: [3, { "R^s": 1 }] }], s: [2, { "?U^n": 1, R: [6, { "?RUn": 1, A: [3, { AKMRn: 1 }] }], A: [6, { "?Un": 1 }], M: [6, { n: 1, AR: [3, { R: 1 }] }], s: [3, { "^s": 1 }] }], R: [2, { "?R^n": 1, s: [3, { "?R^ns": 1, M: [4, { R: 1 }] }], M: [3, { R: 1 }] }], M: [2, { A: [6, { n: 1 }], "U^n": 1, j: [6, { Kn: 1 }], s: [3, { A: [6, { n: 1 }], R: [4, { AR: 1 }], "U^": 1 }], R: [4, { R: [3, { A: 1 }], "^": 1 }] }], K: [2, { jn: 1 }] }], s: [5, { "?AKRUfjns": 1, M: [2, { A: [4, { "AR^": 1, M: [6, { AR: 1 }] }], "KU^jns": 1, R: [3, { "AM^": 1, R: [6, { R: 1 }] }] }] }] }], "?": [1, { fhw: [5, { "?ARUj": 1, ns: [6, { "?AR": 1 }], M: [2, { j: 1 }] }], j: [2, { "?j": 1, n: [5, { "?": 1 }], s: [3, { "?": 1 }], A: [5, { R: [3, { A: [4, { "A^": 1 }] }], j: 1 }], M: [5, { j: 1 }], R: [5, { "?Uj": 1, n: [6, { "?AR": 1 }], s: [6, { "?": 1 }] }], "^": [6, { "?": 1 }] }], n: [2, { "?RU^n": 1, j: [5, { "?": 1 }], s: [3, { "?R^": 1, M: [4, { R: 1 }] }], A: [5, { n: 1, s: [6, { "?M": 1 }] }], M: [3, { A: [5, { n: 1 }], R: 1 }] }], s: 1 }], U: [1, { f: [5, { "?AKRj": 1, ns: [6, { AR: 1 }], M: [2, { j: 1 }] }], h: [5, { "?AKj": 1, n: [6, { AR: 1 }], s: [6, { AKR: 1 }], R: [6, { AR: 1, M: [2, { jn: 1 }] }], M: [2, { j: 1 }] }], j: [5, { "?j": 1, n: [2, { R: [6, { AR: 1 }], K: 1, M: [3, { R: 1 }] }], AM: [2, { j: 1 }], R: [2, { A: [3, { A: [4, { "^": 1 }] }], j: 1, s: [3, { A: [4, { A: 1 }] }] }], K: [2, { jn: 1 }] }], n: [2, { "?^n": 1, j: [5, { K: 1 }], s: [3, { "R^": 1 }], A: [5, { n: 1, s: [6, { M: 1 }] }], R: [3, { "AKR^": 1, M: [6, { AR: 1 }] }], K: [5, { jn: 1 }], M: [3, { R: 1, A: [5, { n: 1 }] }] }], s: 1, w: [5, { "?AKRj": 1, n: [6, { AKR: 1 }], s: [6, { AR: 1 }], M: [2, { j: 1 }] }] }], M: [5, { j: [1, { fhjsw: 1, n: [2, { K: [6, { AR: 1 }], "R^n": 1, M: [3, { R: 1, M: [4, { R: 1 }] }] }] }], n: [1, { fhw: [6, { ARU: 1 }], ns: 1, j: [2, { K: [6, { AR: 1 }], R: [6, { ARU: 1 }], "^jn": 1, M: [3, { R: [6, { ARU: 1 }] }] }] }], s: [1, { fw: [6, { ARU: 1 }], h: [6, { AU: 1, R: [2, { AKR: 1, M: [3, { MR: 1 }] }] }], j: [2, { M: [3, { R: [6, { U: 1 }] }], R: [6, { U: 1 }] }], s: 1, n: [6, { M: [2, { R: [4, { "^": 1 }] }], Un: 1, A: [2, { Rn: 1, M: [3, { R: 1 }] }], R: [2, { R: 1, M: [3, { R: 1 }] }] }] }], A: [1, { f: [6, { AKRUn: 1, M: [2, { A: [3, { A: 1 }], MRjn: 1, s: [4, { "AR^": 1 }] }] }], hw: [6, { AKRU: 1, M: [2, { A: [3, { A: 1 }], MRjn: 1, s: [4, { "AR^": 1 }] }], n: [2, { jn: 1 }] }], j: [2, { j: 1, s: [3, { A: [6, { K: 1 }] }], A: [3, { A: [4, { M: 1 }] }] }], s: 1, n: [2, { "R^n": 1, M: [3, { R: 1 }], s: [3, { "R^": 1, M: [4, { R: 1 }] }] }] }], K: [2, { AK: [1, { s: 1 }], Ms: [1, { fhw: [6, { AR: 1 }], s: 1 }], j: 1, n: [6, { AR: 1, K: [1, { ns: 1 }] }] }], R: [1, { fsw: 1, h: [2, { A: [6, { ARU: 1 }], M: [3, { AR: 1 }], "R^jn": 1, s: [3, { A: [4, { AR: 1 }], "MR^": 1 }] }], j: [2, { A: [3, { A: [6, { U: 1 }], M: [4, { A: 1 }] }], j: 1 }], n: [2, { "R^n": 1, M: [3, { R: 1 }], s: [3, { "R^": 1, M: [4, { R: 1 }] }] }] }], M: [1, { s: [2, { ARjns: 1 }], n: [2, { R: [3, { A: [4, { A: 1 }], M: [6, { A: 1 }], R: [4, { "^": 1 }], "^": 1 }], j: [6, { Un: 1, M: [3, { M: 1 }] }], n: 1, s: [6, { n: 1, R: [3, { R: 1 }] }] }], fhjw: [2, { j: 1 }] }], U: [1, { fhnsw: 1 }], "?": 1, f: [1, { fhsw: 1 }] }], n: [1, { fw: [5, { "?ARUj": 1, ns: [6, { AR: 1 }], M: [2, { j: 1 }] }], h: [5, { "?AUj": 1, R: [2, { A: [6, { A: 1 }], Rjns: 1 }], ns: [6, { AR: 1 }], M: [2, { j: 1 }] }], j: [5, { "?Uj": 1, n: [2, { Rj: 1 }], AMR: [2, { j: 1 }] }], n: [5, { "?Un": 1, s: [2, { A: [6, { M: 1 }], R: [6, { AR: 1 }] }], A: [2, { Rn: 1, Ms: [3, { R: 1 }] }], R: [2, { Rn: 1, s: [3, { R: 1 }] }], j: [2, { Rn: 1 }], M: [6, { M: 1 }] }], s: 1 }], K: [1, { fhw: [5, { "?ARUj": 1, K: [6, { K: [3, { A: [4, { "AK^": 1 }], "KM^": 1 }], A: 1, M: [2, { j: 1 }] }], ns: [6, { A: 1, K: [4, { A: [2, { A: 1 }], K: 1, "^": [2, { K: 1 }] }] }], M: [2, { j: 1 }] }], j: [5, { A: [2, { A: [3, { A: 1 }], K: [4, { K: 1 }], Mj: 1 }], K: [2, { A: [3, { A: [6, { K: 1 }] }], Mj: 1, n: [6, { A: 1, K: [4, { "K^": 1 }] }], s: [3, { M: 1 }] }], MR: [2, { j: 1 }], "?Uj": 1, s: [2, { K: [3, { M: 1 }] }], n: [2, { K: [6, { A: 1, K: [4, { "K^": 1 }] }], "R^": 1 }] }], n: [2, { A: [5, { n: 1 }], K: [5, { j: [3, { AKM: 1 }], n: 1 }], "?RU^n": 1, j: [3, { AM: [5, { K: 1 }], K: [6, { M: 1 }] }], M: [3, { R: 1 }], s: [3, { "R^": 1 }] }], s: 1 }], s: [1, { fw: [6, { ARs: 1, M: [5, { R: 1 }] }], h: [3, { ARs: 1, "^": [2, { "^jns": 1 }] }], j: [5, { AR: [2, { j: 1 }], j: 1, n: [6, { s: 1 }] }], n: [2, { A: [5, { n: 1 }], "R^n": 1, s: [3, { "R^s": 1 }] }], s: 1 }], j: [1, { fw: [6, { ARUjn: 1, M: [5, { A: 1 }] }], h: [2, { A: [6, { ARjn: 1 }], "R^jn": 1, s: [4, { A: [5, { A: 1 }], "R^": 1 }] }], j: [5, { j: 1, s: [6, { A: [2, { A: 1 }], j: 1 }], n: [2, { "R^": 1 }], AR: [2, { j: 1 }] }], n: [2, { A: [5, { n: 1 }], "R^n": 1, s: [3, { "R^": 1 }], j: [5, { jns: 1 }] }], s: 1 }], h: 1 }], "1": [2, { "?": [5, { "$?Ihs": 1, C: [6, { $BCDNV: 1, M: [7, { $: [4, { "?^": 1 }], "?": 1, C: [3, { "?CI^": 1 }], I: [3, { "?C": 1 }], B: [4, { "C^": 1 }] }] }], jn: [6, { "$?CIhjn": 1 }], B: [1, { jn: 1 }] }], B: [3, { "?^": 1, C: [4, { "?": 1, BINn: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], C: [1, { fhjsw: [5, { CIjs: 1 }], n: [5, { n: 1 }] }], D: [1, { fhjsw: [5, { js: 1 }], n: [5, { n: 1 }] }], M: [6, { "?": 1, C: [1, { fhjsw: [5, { CIjs: 1 }], n: [5, { n: 1 }] }], M: [1, { fhjsw: [5, { C: 1 }] }] }], V: [6, { "?": 1, C: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], M: [1, { fhjsw: 1 }] }], "^": [1, { fhjsw: [5, { CIs: 1, j: [6, { C: 1 }] }], n: [5, { n: [6, { C: 1 }] }] }] }], I: [4, { "?": 1, CI: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], M: [1, { fhjsw: [5, { Cs: 1, j: [6, { C: 1 }] }], n: [5, { n: [6, { C: 1 }] }] }], "^": [1, { fhjsw: [5, { CIjs: 1 }], n: [5, { n: 1 }] }], n: [1, { fhjsw: [5, { js: 1 }], n: [5, { n: 1 }] }] }], M: [1, { fhjsw: [5, { $CIs: 1, j: [6, { $CIn: 1 }] }], n: [4, { C: [5, { n: [6, { CIn: 1 }] }], N: [5, { n: 1 }] }] }], BV: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], N: [6, { "?V": 1, C: [1, { fjsw: [5, { Cjs: 1 }], h: [7, { CIMV: 1 }], n: [5, { n: 1 }] }], I: [5, { I: 1 }], M: [1, { fhjsw: 1 }] }], j: [7, { C: [1, { j: [4, { M: 1 }] }], B: 1 }], n: [4, { M: [1, { fhjsw: [5, { Cs: 1, j: [6, { C: 1 }] }], n: [5, { n: [6, { C: 1 }] }] }], V: 1 }] }], C: [4, { "?": [5, { "$?CIs": 1, j: [6, { "$?CI": 1, B: [1, { j: 1 }], M: [1, { jn: 1 }] }], n: [6, { "$?CIN": 1, B: [1, { j: 1 }], M: [1, { jn: 1 }] }], B: [1, { jn: 1 }], M: [1, { jn: [3, { "?": [7, { C: 1 }], CI: 1 }] }] }], B: [5, { "$?CIs": 1, j: [6, { "$?CIn": 1 }], n: [6, { "$?CINn": 1 }] }], C: [1, { fhsw: [5, { "$?CDIhs": 1, j: [3, { BDNjn: [6, { C: 1 }], C: [6, { CDI: 1 }], I: [6, { CI: 1 }], M: [6, { "?CDI": 1 }] }], n: [6, { "$?CDINhs": 1, j: [7, { $CIV: 1 }], n: [7, { $CIVn: 1 }] }] }], j: [3, { "?": [7, { $BI: 1, C: [6, { C: 1 }] }], B: [5, { Cs: 1, j: [6, { C: 1 }], n: [6, { CNj: 1 }] }], C: [5, { CDIs: 1, j: [6, { CDI: 1 }], n: [6, { CDIN: 1 }] }], D: [5, { Cs: 1, jn: [6, { C: 1 }] }], I: [5, { CIs: 1, j: [6, { CI: 1 }], n: [6, { CIN: 1 }] }], M: [5, { "?CDIs": 1, M: [6, { "?": 1 }], j: [6, { "?CDI": 1 }], n: [6, { "?CDIN": 1 }] }], Njn: [5, { Cs: 1, j: [6, { C: 1 }], n: [6, { CN: 1 }] }], V: [5, { M: [7, { "?": 1 }], j: [6, { "?CIs": 1 }] }], h: [6, { $: 1 }] }], n: [5, { "$?CDIhs": 1, M: [3, { "?": [7, { $: 1 }], M: [6, { "?": 1 }], V: [7, { "?": 1 }] }], j: [3, { BDNjn: [6, { C: 1 }], C: [6, { CDI: 1 }], I: [6, { CI: 1 }], M: [6, { "?CDI": 1 }] }], n: [6, { "$?CDINhs": 1, M: [7, { "?": 1 }], j: [7, { $CIV: 1 }], n: [7, { $CIVn: 1 }] }] }] }], D: [5, { "$?CIs": 1, jn: [6, { "$?CI": 1 }] }], I: [5, { "$?CDIs": 1, j: [6, { "$?CDI": 1, n: [7, { $I: 1 }], j: [7, { CI: 1 }] }], n: [6, { "$?CDINjn": 1 }] }], M: [5, { "$?CDIhs": 1, j: [6, { "$?CDIhs": 1, M: [1, { jn: [7, { "?": 1 }] }], j: [7, { $CI: 1 }], n: [7, { $CIn: 1 }] }], n: [6, { "$?CDINhjs": 1, M: [1, { jn: [7, { "?": 1 }] }], n: [7, { $CIVjn: 1 }] }], M: [1, { jn: [6, { C: [3, { "?": 1 }], "?": 1 }] }] }], N: [5, { "$?CDIs": 1, j: [6, { "$?CDI": 1, n: [7, { $C: 1 }], j: [7, { C: 1 }] }], n: [6, { "$?CDINj": 1, n: [7, { $C: 1 }] }] }], V: [5, { C: [3, { BCDn: 1, j: [1, { fhnsw: 1 }] }], j: [6, { "$?CDIh": 1, j: [7, { C: 1 }], n: [7, { $CIn: 1 }] }], n: [6, { "$?CDINhj": 1, n: [7, { $CIVjn: 1 }] }], "$?DIhs": 1 }], "^": [5, { "$?CDIs": 1, j: [6, { "$?CDIs": 1, M: [1, { jn: [3, { "?": 1 }] }], j: [7, { "$?CIj": 1 }], n: [7, { $CDIn: 1 }] }], n: [6, { "$?CDINs": 1, M: [1, { jn: [3, { "?": 1 }] }], j: [7, { "$?BCIVj": 1 }], n: [7, { $BCDIVjn: 1 }] }], B: [1, { jn: [3, { "?": 1 }] }], M: [1, { jn: [3, { "?": [7, { $C: 1 }], C: [7, { "?": 1 }], "^": [6, { "?": 1 }] }] }] }], h: [5, { Cs: 1, jn: [6, { C: 1 }] }], j: [5, { $CIs: 1, j: [6, { $CIjn: 1 }], n: [6, { $CINjn: 1 }] }], n: [5, { $CIs: 1, j: [6, { $CIn: 1 }], n: [6, { $CINn: 1 }] }], s: [5, { $CIs: 1, j: [6, { $CI: 1 }], n: [6, { $CIN: 1 }] }], w: 1 }], I: [5, { "$?DI": 1, Cs: [3, { "?BCDIMN^jnsw": 1, V: [1, { fhnsw: 1 }] }], j: [6, { $: [3, { "?BCDIMN^jns": 1 }], "?DINjn": 1, C: [3, { "?BCDIMN^jnsw": 1, V: [4, { C: [1, { j: 1 }], "M^": 1 }] }] }], n: [6, { $: [3, { "?BCDIMN^jns": 1 }], "?DINjn": 1, C: [3, { "?BCDIMN^jnsw": 1, V: [1, { fhnsw: 1, j: [7, { $: 1 }] }] }] }] }], V: [3, { "?M": 1, C: [1, { fhsw: [5, { n: [4, { "?BDINjn": 1, CM: [6, { CIj: 1 }], "^": [6, { Cn: 1 }] }], $s: 1 }], j: [4, { "?": [5, { j: 1 }], BNn: [5, { j: [7, { $: 1 }] }], C: [5, { j: [7, { $j: 1 }] }], I: [5, { j: [7, { $C: 1 }] }], M: [5, { j: [7, { $n: 1 }] }], "V^": [5, { j: [6, { n: 1 }] }] }], n: [5, { $: 1, n: [6, { $CDIj: 1, n: [7, { $CDIjn: 1 }] }], s: [4, { "?BCDIMN^jn": 1 }] }] }], D: [5, { jns: 1 }], I: [5, { n: [6, { CIn: 1 }], s: 1, j: [7, { C: [6, { Cn: 1 }], BI: 1 }] }], N: [1, { fhnsw: [5, { ns: 1 }], j: [4, { C: [5, { j: [6, { n: 1 }] }] }] }], j: [5, { j: [7, { $CIVjn: 1 }], ns: 1 }], n: [5, { j: [7, { $BCIn: 1 }], ns: 1 }], "^": [5, { Ins: 1, j: [7, { C: 1 }] }] }], h: [4, { "?CIM^": 1, V: [1, { fhsw: 1, j: [6, { $: 1 }], n: [6, { $M: 1 }] }] }], j: [5, { "$?DIfhsw": 1, C: [3, { "?BCDIMN^fhjns": 1, V: [6, { $BCDIfhs: 1, "?": [7, { $I: 1 }], N: [7, { $CVn: 1, M: [4, { M: 1 }] }], V: [7, { $jn: 1, C: [4, { M: 1 }] }], j: [7, { CIV: 1 }], n: [7, { $BCIn: 1 }], M: [4, { M: 1 }] }] }], jn: [6, { "$?CDIjns": 1, B: [3, { IM: 1 }], V: [3, { "IV^j": 1 }] }], B: [1, { j: [3, { C: [4, { "?": 1 }], n: [4, { M: 1 }] }], n: [3, { C: [4, { "?": 1 }] }] }], M: [1, { j: [3, { C: [4, { "?": [6, { I: 1 }], "CMV^": [6, { "?": 1 }] }], "B^": 1, Mn: [4, { N: 1 }] }], n: [3, { C: [4, { "?": [6, { I: 1 }], "CM^": [6, { "?": 1 }], V: [7, { "?": 1 }] }], "B^": 1, Mn: [4, { N: 1 }] }] }], V: [1, { j: [3, { DMn: 1 }], n: [3, { D: 1 }] }], N: [3, { IM: 1, N: [4, { N: 1 }] }] }], n: [5, { "$?CDINfhsw": 1, j: [6, { "$?CDIVjns": 1, B: [3, { CIM: 1 }] }], n: [6, { "$?CDIVjn": 1, B: [3, { CIM: 1 }] }], M: [1, { j: [3, { C: [4, { "?": [6, { I: 1 }], "CMV^": [6, { "?": 1 }] }] }], n: [3, { C: [4, { "?": [6, { I: 1 }], "CMV^": [6, { "?": 1 }] }], Mn: [4, { N: 1 }], "^": 1 }] }], V: [1, { fhw: [3, { Mn: 1 }], ns: [3, { "M^n": 1 }] }], B: [1, { fhnsw: [3, { n: [4, { M: 1 }] }] }] }], s: [5, { "$?CDINfhjsw": 1, B: [1, { fhnsw: 1, j: [4, { "?": 1, "^": [3, { "?": 1 }] }] }], V: [1, { fhnsw: 1 }], n: [6, { "$?BCDIVjns": 1, M: [1, { fhnsw: 1 }] }], M: [1, { fhsw: 1, j: [3, { C: [4, { "?": [6, { I: 1 }], "CMV^": [6, { "?": 1 }] }] }], n: [7, { "$?BCDIhjns": 1, N: [4, { "C^": 1 }], V: [3, { C: 1 }], M: [6, { M: 1 }] }] }] }], D: [5, { $CIs: 1, jn: [6, { $CIjns: 1, V: [1, { j: 1 }] }], V: [1, { jn: 1 }] }], M: [5, { "$?DIhs": 1, C: [3, { CDINVjn: 1, M: [1, { fhjsw: 1, n: [6, { $CN: 1 }] }], "^": [6, { $CV: 1 }] }], jn: [6, { "$?CDINVhjns": 1 }], B: [1, { jn: [4, { "?": 1 }] }] }], N: [5, { "$?DI": 1, C: [4, { "?BCDIMN^jn": 1, V: [1, { fhnsw: 1, j: [7, { C: 1 }] }] }], j: [6, { "$?DI": 1, C: [4, { "?BCDIMN^jn": 1, V: [7, { $BMNV: 1 }] }], j: [7, { $: 1 }], n: [7, { "$?Cn": 1 }], N: [3, { N: 1 }] }], n: [6, { "$?DIN": 1, C: [4, { "?BCDIMN^jn": 1, V: [1, { fhnsw: 1 }] }], M: [1, { n: [4, { j: 1 }] }], j: [7, { $V: 1 }], n: [7, { "$?CVn": 1, M: [1, { n: 1 }] }] }], s: [4, { "?BCDIMN^jns": 1, V: [1, { fhnsw: 1, j: [7, { $: 1 }] }] }], M: [1, { jn: [6, { "?": 1 }] }] }], fw: 1, "^": [6, { "$?BDfhsw": 1, C: [5, { "?CDIfhjns": 1, V: [1, { n: 1 }] }], I: [5, { "?CIjnsw": 1 }], V: [7, { $BIjn: 1, C: [5, { Ijns: 1 }] }], j: [7, { "$?BCDIVj": 1 }], n: [7, { "$?BCIVjn": 1 }], M: [5, { C: [7, { "?": 1 }], s: 1 }], N: [7, { BCV: 1 }] }] }], "0": [2, { "?": [3, { "?": [5, { "$?CIsw": 1, jn: [6, { "$?CIjnsw": 1 }] }], "BCIMNV^fjns": 1 }], B: [3, { "?NV^n": 1, C: [5, { $CIfjsw: 1, "?": [6, { "?C": 1 }], n: [6, { $BCIVfjnsw: 1, "?": [7, { "?C": 1 }], M: [1, { fhnsw: 1 }] }], M: [1, { fhnsw: 1 }] }], I: [1, { fhjsw: [5, { $Cjs: 1 }], n: [5, { n: 1 }] }], M: [1, { fhsw: [5, { $CIMjs: 1 }], j: [5, { $CIjs: 1 }], n: [5, { n: 1 }] }], B: [4, { C: 1, M: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }] }], j: [4, { Cn: 1 }] }], C: [5, { $CIfhsw: 1, "?": [6, { $: [3, { "?BCIMVs": 1 }], "?I": 1, C: [7, { M: [3, { "?": [4, { C: 1 }], "I^": 1 }], "$?": 1 }] }], j: [6, { $CIfhsw: 1, "?": [3, { "?": [4, { "?CI": 1, M: [7, { $: 1 }] }], BIs: 1, C: [4, { CMVj: 1 }], MV: [7, { "$?": 1 }], "^": [7, { "?C": 1 }] }], B: [1, { j: [3, { "?": 1 }] }], M: [1, { j: 1, n: [4, { "?": 1, "M^": [3, { "?": 1 }], h: [3, { M: 1 }] }] }], V: [1, { j: [3, { "?": 1, C: [4, { "?": 1 }] }] }], j: [7, { $CIn: 1, M: [1, { j: 1 }], j: [3, { BCIM: 1 }] }], n: [7, { "$?CI": 1, M: [1, { jn: 1 }], n: [3, { "BCIM^": 1 }], j: [3, { "I^": 1 }] }] }], n: [6, { $CINfhsw: 1, "?": [7, { "$?I": 1, C: [3, { "?IV^": 1, C: [4, { C: 1 }] }] }], B: [1, { j: [3, { "?": 1 }] }], M: [1, { j: [3, { "?BCIMN^fhjns": 1, V: [4, { C: 1 }] }], n: 1 }], V: [7, { C: [1, { j: [3, { "?": 1 }] }], "?": [1, { j: 1 }], N: 1 }], j: [7, { "$?BCIVn": 1, M: [1, { jn: 1 }], j: [3, { BCIM: 1 }] }], n: [7, { "$?BCIV": 1, M: [1, { jn: 1 }], n: [3, { "BCIM^": 1 }], j: [3, { "BI^": 1 }] }] }], B: [1, { j: [4, { "?BCIMV^js": 1, N: [3, { M: 1 }] }], n: 1 }], M: [1, { j: [3, { "?": [4, { "?": [7, { C: 1 }], "CM^": 1 }], C: [4, { "?": [7, { $: 1 }], "C^": [6, { "?": 1 }] }], "IV^": [6, { "?": 1 }], M: [7, { "?": 1 }], N: [7, { M: 1 }] }], n: [3, { "?": [7, { $: [6, { $B: 1 }], CMV: 1 }], C: [4, { "?": [7, { $: 1 }], "C^": [6, { "?": 1 }] }], IV: [6, { "?": 1 }], M: [7, { "?": 1 }] }] }], V: [1, { jn: [6, { "?": 1 }] }] }], I: [4, { "?N": [5, { $Cs: 1, jn: [6, { $C: 1 }] }], Bjn: 1, C: [3, { "?Nns": 1, B: [5, { $Cs: 1, jn: [6, { $C: 1 }] }], C: [5, { $CIs: 1, jn: [6, { $CI: 1 }] }], I: [7, { $BIVj: 1, C: [6, { B: [5, { Cs: 1 }], CIMV: 1 }], M: [5, { CIjns: 1 }] }], M: [5, { "$?CIfs": 1, j: [6, { "$?CIfn": 1, j: [7, { $C: 1 }], M: [1, { jn: 1 }] }], n: [6, { "$?CIfn": 1, j: [7, { $Cn: 1 }], M: [1, { jn: 1 }] }] }], V: [5, { $: 1, CIs: [1, { fhnsw: 1 }], j: [1, { j: [6, { C: 1 }] }], n: [7, { $I: 1, C: [6, { CI: 1 }] }] }], j: [7, { $MV: 1, C: [5, { Cs: 1, jn: [6, { C: 1 }] }] }] }], IMs: [5, { $CIs: 1, jn: [6, { $CI: 1 }] }], V: [5, { $CIs: 1, jn: [6, { $CINn: 1 }] }], "^": [5, { $CIhs: 1, j: [6, { "$?CIh": 1, M: [1, { j: 1 }], j: [7, { $CI: 1 }], n: [7, { $BCn: 1 }] }], n: [6, { "$?CIh": 1, j: [7, { $CI: 1 }], n: [7, { $BCn: 1 }], M: [1, { jn: 1 }] }], "?": [7, { "$?MV": 1 }], V: [1, { jn: 1 }] }] }], M: [5, { "?": [7, { $BMV: 1, "?": [4, { "?IM^": 1, C: [6, { "?": 1 }] }], C: [4, { "CMV^": 1 }] }], j: [6, { "?": [7, { "$?CI": 1 }], $CINVfhns: 1, j: [7, { "$?BCIjn": 1 }], M: [1, { j: 1, n: [3, { h: 1 }] }] }], n: [6, { "?": [7, { "$?CI": 1 }], $CINVfhns: 1, j: [7, { "$?BCIjn": 1 }], M: [1, { j: [3, { C: 1 }], n: 1 }] }], $Ifhs: 1, C: [6, { "$?BCIMNfhjns": 1, V: [4, { "?BCINV^hjns": 1, M: [1, { fhjns: 1 }] }] }], B: [1, { j: [3, { C: [4, { M: [6, { n: 1 }] }] }], n: [6, { n: 1 }] }] }], j: [5, { $Ifhsw: 1, "?": [3, { "?BINV^fjns": 1, C: [6, { $: [4, { "?BCIMVs": 1 }], C: [7, { "$?": 1, M: [4, { "I^": 1 }] }], "?I": 1 }], M: [6, { "$?CI": 1 }] }], C: [3, { "?BCIMN^fhjnsw": 1, V: [4, { B: [6, { C: 1 }], I: [7, { Mn: 1 }], MV: 1, N: [6, { $BCs: 1 }], j: [6, { $: 1 }] }] }], j: [6, { "$?CIn": 1, j: [7, { "$?CIjn": 1 }], M: [1, { j: 1, n: [3, { I: [7, { C: 1 }] }] }], B: [3, { Mn: 1 }], V: [3, { V: 1 }] }], n: [6, { "$?CI": 1, j: [7, { "$?BCIjn": 1, M: [1, { jn: 1 }] }], n: [4, { "?BI^jn": 1, C: [7, { $CIVn: 1, j: [3, { M: 1 }] }], M: [7, { $jn: 1 }], V: [7, { $C: 1 }] }], M: [1, { j: [3, { CIn: 1 }], n: 1 }], B: [3, { IMn: 1 }], V: [3, { Vn: 1 }] }], M: [1, { j: [3, { "BCIMN^hjn": 1 }], n: [3, { C: [4, { "?": [6, { C: 1 }], CIV: [6, { "?": 1 }], M: [7, { "?": 1 }] }], I: [4, { "^": [7, { C: 1 }] }], "B^hn": 1, M: [4, { h: 1 }], j: [4, { V: 1 }] }] }], B: [1, { j: [3, { C: [4, { "?": 1 }], "BV^": 1, n: [4, { C: 1 }] }], n: [3, { C: [4, { "?": 1 }] }] }], V: [1, { j: [3, { C: [4, { "?": 1 }], "BM^": 1 }], n: [4, { "?": 1 }] }], N: [3, { "IM^": 1 }] }], n: [5, { $CINfhsw: 1, "?": [3, { "?INV^fjns": 1, B: [6, { "?C": 1, $: [4, { M: 1 }] }], C: [7, { "$?BM": 1, C: [4, { IM: 1 }] }], M: [6, { "$?CI": 1 }] }], j: [6, { "$?CIV": 1, j: [7, { "$?BCIjn": 1, M: [1, { jn: 1 }] }], n: [7, { n: [4, { "?CIM^jn": 1 }], "$?CIV": 1, j: [4, { "BM^jn": 1, C: [3, { M: 1 }] }] }], M: [1, { jn: 1 }], B: [3, { CIMn: 1 }] }], n: [6, { "$?CIV": 1, n: [7, { "$?CIV": 1, j: [4, { "BM^j": 1, C: [3, { M: 1 }] }], n: [4, { "CIM^n": 1 }] }], j: [7, { "$?BCIjn": 1, M: [1, { jn: 1 }] }], M: [1, { j: [4, { BC: [3, { C: 1 }], "M^": 1 }], n: 1 }], B: [3, { CIM: 1 }] }], M: [1, { j: [4, { "?Nfjs": 1, Bhn: [3, { C: 1 }], C: [3, { CIMNjn: 1 }], I: [3, { Cj: 1 }], "M^": [3, { CI: 1 }], V: [6, { "?": 1 }] }], n: 1, fhsw: [3, { "B^h": 1, j: [4, { V: 1 }] }] }], B: [1, { fhsw: [3, { "B^": 1, n: [4, { C: 1 }] }], n: [3, { "BV^": 1, n: [4, { C: 1 }] }], j: [3, { V: 1 }] }], V: [6, { C: [1, { fhnsw: [3, { M: 1 }] }], N: 1 }] }], s: [1, { fnsw: 1, h: [4, { "?BCIMNV^fhnsw": 1, j: [6, { "$?BCIMNjn": 1 }] }], j: [5, { "$?CINfhjsw": 1, n: [6, { "$?BCIVjs": 1, n: [7, { $Cjn: 1 }] }], M: [3, { C: [4, { I: [6, { "?": 1 }] }] }] }] }], fw: 1, V: [3, { C: [1, { fhsw: [5, { "$?hs": 1, n: [6, { "$?CIh": 1, j: [7, { $CIj: 1 }], n: [7, { $CIjn: 1 }] }], M: [4, { V: 1 }] }], j: [4, { B: [5, { j: [7, { C: 1 }] }], CIV: [5, { j: [6, { jn: 1 }] }], "M^": [5, { j: [6, { Ij: 1 }] }] }], n: [5, { "$?BMhs": 1, n: [6, { "$?BCIMh": 1, j: [7, { $CIMj: 1 }], n: [7, { $CIjn: 1 }] }] }] }], B: [5, { ns: 1, j: [7, { C: 1 }] }], M: 1, N: [4, { C: [1, { fhnsw: [5, { ns: 1 }], j: [5, { j: [7, { $: 1 }] }] }], I: [5, { ns: 1 }], M: 1 }], V: [5, { Mns: 1, j: [6, { C: 1 }] }], j: [5, { j: [7, { $C: 1 }], ns: 1 }], n: [5, { ns: 1 }], I: [5, { ns: 1, j: [7, { CV: 1 }] }], "^": [5, { $ns: 1, j: [7, { $V: 1 }] }] }], N: [5, { $I: 1, C: [3, { "CM^": 1 }], j: [6, { "$?Ins": 1, C: [3, { "CM^": 1 }], M: [1, { j: 1 }], V: [3, { M: 1 }] }], n: [6, { "$?Ins": 1, C: [3, { "CM^": 1 }], M: [1, { jn: 1 }], V: [3, { M: 1, C: [7, { N: 1 }] }] }], s: [3, { "CIM^": 1, V: [4, { N: 1 }] }], B: [1, { jn: 1 }] }], h: [1, { fhnsw: 1, j: [5, { $Cjs: 1, n: [6, { $C: 1 }] }] }], "^": [1, { fhnsw: 1, j: [5, { "?CIfjs": 1, n: [6, { "?CIfjns": 1 }] }] }] }], "3": [6, { $: [5, { $s: [2, { "?CMNhjns": 1, B: [1, { fhjsw: 1 }], I: [3, { "?BCIM^jn": 1 }], V: [1, { fhnsw: 1 }] }], "?h": 1, C: [2, { "?CIMN^ns": 1, j: [3, { "?BCIMN^jn": 1, V: [4, { MN: 1 }] }], B: [1, { fhjsw: 1 }], V: [3, { M: 1 }] }], I: [2, { "?CIM^jns": 1, B: [1, { fhjsw: 1 }] }], j: [2, { "?CMNhjns": 1, B: [1, { fhjsw: 1 }], I: [3, { "?BCIM^jn": 1 }], V: [1, { j: 1 }] }], n: [2, { "?CIMNhjns": 1, B: [1, { n: 1 }], V: [1, { fhnsw: 1 }] }], M: [1, { j: [2, { C: [3, { "?": 1 }], jn: [3, { CI: 1 }] }], n: [2, { C: [3, { "?": 1 }], j: [3, { I: 1 }], ns: 1 }], fhsw: [2, { s: 1 }] }], B: [1, { j: [2, { C: 1, j: [3, { C: 1 }] }], fhnsw: [2, { s: 1 }] }], V: [1, { j: [2, { j: 1 }], n: [2, { j: [3, { C: 1 }], s: 1 }], fhsw: [2, { s: 1 }] }], N: [2, { ns: 1 }] }], "?": [5, { "?I": 1, j: [2, { "?CIM^jns": 1, B: [4, { "^": 1 }] }], ns: [2, { "?CIM^j": 1, B: [4, { "^": 1 }] }], M: [1, { j: [2, { jn: 1, s: [7, { $: 1 }], C: [4, { C: 1 }] }], n: [2, { jns: 1, C: [3, { C: 1 }] }], fhsw: [2, { s: 1 }] }], C: [2, { "?CIM^jns": 1 }] }], C: [5, { "?": [2, { "?CIM^jns": 1, B: [4, { "^": 1 }] }], C: [2, { "?CIMN^hns": 1, j: [3, { "?BCIMN^hjns": 1, V: [4, { M: 1 }] }], B: [1, { fhjsw: 1 }], V: [3, { M: 1 }] }], j: [2, { "?CMN^hjns": 1, I: [3, { "?BCIMN^jns": 1, V: [1, { jw: 1 }] }], V: [3, { C: [1, { j: [7, { "?": 1 }] }], IM: 1 }], B: [1, { fhjsw: 1 }] }], n: [2, { "?CMN^hjns": 1, I: [3, { "?BCIMN^jns": 1, V: [1, { fhnsw: 1 }] }], V: [1, { fhnsw: 1, j: [3, { M: 1 }] }], B: [1, { n: 1 }] }], s: [1, { fhsw: 1, j: [2, { "?BCMN^jns": 1, I: [3, { "?BCIM^jns": 1 }], V: [3, { M: 1 }] }], n: [2, { "?CIMNV^jns": 1 }] }], M: [1, { j: [2, { C: [3, { "?": 1 }], j: [3, { "CIMN^j": 1 }], n: [4, { "?BINjns": 1, C: [3, { CMNj: 1 }], M: [3, { C: 1 }], "^": [3, { CI: 1 }] }] }], n: [2, { C: [7, { C: [3, { "?": 1 }], "?": 1 }], j: [3, { C: [7, { "?": 1 }], "IV^": 1 }], "V^ns": 1 }], fhsw: [2, { "^s": 1, V: [4, { V: 1 }], n: [3, { "^": 1 }] }] }], I: [2, { "?CIMN^jns": 1, B: [1, { fhjsw: 1 }] }], B: [1, { j: [2, { C: 1, j: [3, { BC: 1 }] }], fhnsw: [2, { s: 1, n: [3, { B: 1 }] }] }], V: [1, { j: [2, { j: [3, { CM: 1 }] }], n: [2, { j: [4, { "?MNVj": 1, "I^": [3, { C: 1 }] }], s: 1, n: [3, { M: 1 }] }], fhsw: [2, { s: 1, n: [3, { M: 1 }] }] }], N: [2, { ns: 1, j: [3, { IM: 1 }] }], h: 1 }], I: [2, { "?I": 1, C: [5, { "?CIjns": 1, B: [1, { j: 1 }] }], j: [5, { "?Ijns": 1, C: [3, { "?BCIM^j": 1 }], B: [1, { j: [3, { C: 1 }] }], M: [1, { j: 1 }], V: [1, { jn: 1 }] }], n: [5, { "?CINjns": 1, M: [1, { j: [4, { "BCIM^j": 1 }], n: 1 }] }], s: [1, { fhnsw: 1, j: [5, { "?CIjns": 1 }] }], B: [3, { CM: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], "^": 1 }], "M^": [5, { "?CIjns": 1 }], V: [1, { fhnsw: [5, { ns: 1 }], j: [5, { j: 1 }] }], N: [4, { I: 1 }] }], n: [3, { "?Bn": 1, C: [5, { C: [2, { CMjns: 1 }], j: [2, { CMn: 1, V: [1, { j: 1 }] }], ns: [1, { fhnsw: 1, j: [2, { CM: 1 }] }], M: [1, { j: [2, { j: 1, n: [4, { "C^": 1 }] }], n: [2, { ns: 1 }], fhsw: [2, { s: 1 }] }], V: [1, { j: [2, { j: 1 }], n: [2, { js: 1 }], fhsw: [2, { s: 1 }] }], B: [1, { jn: 1 }], I: 1 }], M: [5, { js: [1, { fhjsw: 1, n: [2, { Cn: 1 }] }], n: [2, { CIjns: 1 }], CI: 1 }], V: [5, { C: [2, { Cns: 1 }], jns: 1 }], "^": [5, { "?CIjns": 1 }], I: [5, { C: 1 }] }], B: [2, { "?": [5, { "?Cs": 1 }], C: [5, { CIs: 1, M: [1, { jn: [3, { "?": 1 }] }], jn: [1, { j: 1 }] }], j: [3, { "?B^ns": 1, C: [5, { CI: 1, M: [1, { j: 1, n: [4, { "?": 1 }] }], V: [1, { j: 1 }] }], IM: [5, { CI: 1 }], j: [5, { C: 1 }] }], n: [5, { "?CI": 1, M: [1, { j: [4, { "?BCIM^": 1 }], n: 1 }] }], s: [1, { fhnsw: 1, j: [5, { CI: 1, M: [4, { "?": 1 }] }] }], IM: [5, { CIs: 1 }], B: [1, { fhjsw: [5, { CIjs: 1 }], n: [5, { n: 1 }] }], V: [1, { fhsw: [5, { s: 1 }], j: [3, { C: [5, { jn: 1 }] }], n: [5, { n: [3, { C: 1 }], s: 1 }] }], "^": 1 }], M: [5, { C: [2, { "?CMN^hns": 1, j: [3, { "?BCIMN^hjns": 1, V: [4, { C: [7, { "?": 1 }], M: 1, N: [1, { jw: 1 }] }] }], B: [1, { fhjsw: 1 }], I: [3, { "BCIM^jns": 1, V: [7, { $: 1 }] }], V: [3, { M: 1 }] }], s: [2, { "?CIMN^j": 1, V: [1, { fhnsw: 1 }] }], j: [2, { "?In": [1, { jn: 1 }], C: [1, { j: 1, n: [4, { "?": 1 }] }], MNj: [1, { j: 1 }], "^s": 1 }], n: [1, { j: [2, { "?CI": 1, M: [4, { "C^": 1 }], j: [3, { C: 1 }], N: [4, { CM: 1 }] }], n: 1 }], "?": 1, M: [1, { j: [2, { j: [3, { C: 1 }], n: [4, { "C^": 1 }] }], n: [2, { ns: 1 }], fhsw: [2, { s: 1 }] }], V: [1, { j: [2, { j: 1 }], n: [2, { js: 1 }], fhsw: [2, { s: 1 }] }], N: [2, { ns: 1 }], I: [2, { "IM^jns": 1 }] }], j: [2, { "?I^": 1, j: [3, { "?BI^j": 1, C: [1, { j: 1, n: [5, { CV: 1 }], fhsw: [5, { C: 1 }] }], M: [5, { C: 1 }], V: [5, { jns: 1 }] }], n: [5, { CIjns: 1, M: [1, { j: [7, { $: 1 }], n: 1 }] }], s: [1, { fhnsw: 1, j: [5, { C: 1 }] }], V: [1, { fhsw: [5, { n: [7, { $C: 1 }], s: 1 }], j: [5, { j: 1 }], n: [5, { ns: 1 }] }], B: [1, { fhjsw: [5, { js: 1 }], n: [5, { n: 1 }] }], C: [5, { j: [7, { $C: 1, M: [1, { j: 1 }] }], n: [7, { $C: 1, M: [1, { jn: 1 }] }], Cs: 1, B: [1, { j: 1 }] }], M: [5, { Cjns: 1 }] }], V: [5, { C: [2, { "?CIMN^ns": 1, j: [3, { "?BCIMN^jns": 1, V: [4, { M: 1 }] }], B: [1, { fhjsw: 1 }], V: [3, { M: 1 }] }], Is: 1, j: [2, { C: [1, { j: 1 }], "M^": 1 }], n: [2, { C: [1, { j: [4, { "BCIMV^jns": 1 }] }], "M^": 1 }], M: [1, { j: [2, { j: 1, n: [4, { M: 1 }] }], n: [2, { ns: 1 }], fhsw: [2, { s: 1 }] }], N: [2, { ns: 1 }] }], N: [5, { C: [2, { "CIMN^ns": 1, j: [3, { "CIMN^": 1, V: [7, { C: 1 }] }] }], Ins: 1, j: [2, { IM: 1 }] }], s: [5, { jns: 1, C: [2, { j: [3, { CM: 1 }], CMns: 1 }] }], h: 1 }], "2": [2, { "?": [5, { $: [1, { fhjsw: 1, n: [3, { "?": 1 }] }], "?": [6, { $I: 1, "?": [4, { "?CM": 1, "^": [3, { "?^": 1 }] }], C: [3, { "?": 1 }] }], C: [1, { fhjsw: 1, n: [3, { M: [4, { "?^": 1 }], "^": 1 }] }], I: [1, { fhjsw: 1, n: [3, { M: [7, { $: 1 }] }] }], j: [6, { $: [1, { fhjsw: 1, n: [3, { "?": 1 }] }], "?": [7, { $I: 1, "?": [1, { fhjsw: 1, n: [4, { C: 1 }] }], C: [3, { "?": 1, C: [1, { fhjsw: 1 }] }] }], C: [1, { fhjsw: 1, n: [3, { M: [4, { "^": 1 }], "^": 1 }] }], I: [1, { fhjsw: 1 }], M: [1, { j: [7, { I: 1, C: [4, { C: 1 }] }], n: [7, { I: 1 }] }], V: 1 }], n: [6, { $: [3, { "?^": 1, C: [4, { B: 1 }] }], "?": [7, { $I: 1, "?": [4, { "?CM": 1, "^": [3, { "?^": 1 }] }], C: [3, { "?": 1, C: [1, { n: 1 }] }] }], C: [1, { fhjsw: [3, { M: [4, { "^": 1 }], "^": 1 }], n: 1 }], I: [1, { n: 1 }], M: [1, { j: [7, { I: 1 }], n: [7, { I: 1, C: [4, { C: 1 }] }] }], V: 1 }], s: [1, { fhjsw: 1, n: [3, { "?": [4, { "?": 1, "^": [6, { "?": 1 }] }], M: [6, { C: [4, { "^": 1 }], M: 1 }], I: [6, { M: 1 }], "^": 1 }] }], M: [1, { fhsw: [6, { BI: 1, C: [7, { CN: 1 }] }], jn: [6, { M: 1 }] }], V: 1 }], C: [5, { $CIfhs: 1, j: [6, { $CIfhs: 1, "?": [7, { "?": [4, { B: 1 }], M: [3, { C: [4, { C: 1 }], B: 1 }], B: 1 }], j: [7, { $CIj: 1 }], n: [7, { $CIn: 1 }] }], n: [6, { $CINfhs: 1, "?": [7, { "?": [4, { B: 1 }], M: [3, { C: [4, { C: 1 }], B: 1 }], $: [3, { B: 1 }], B: 1 }], j: [7, { $CIj: 1 }], n: [7, { $CIn: 1 }] }], M: [1, { jn: [3, { "?": [4, { "?": [6, { B: 1 }], C: [6, { I: 1 }], N: [7, { $: 1 }] }] }] }], "?": [6, { "?": [4, { B: 1 }], M: [7, { $I: 1 }], B: 1 }] }], I: [5, { $CIs: 1, jn: [6, { $CINns: 1, M: [1, { jn: [4, { "?": 1 }] }], "?": [7, { M: 1 }] }], "?": [6, { M: 1 }] }], M: [5, { $CIfs: 1, jn: [6, { $CINVfjns: 1, "?": [7, { BM: 1, I: [3, { M: 1 }], "?": [3, { "N^": 1 }], C: [3, { B: 1, M: [4, { N: 1 }] }], $: [4, { "^": 1 }] }], M: [1, { jn: [3, { "?": 1 }] }] }], "?": [6, { BM: 1, "?": [3, { C: [7, { "?": 1 }], "N^": 1 }], C: [3, { M: [4, { C: [7, { N: 1 }], N: 1 }], B: 1, "^": [7, { CMV: 1 }] }], I: [3, { M: 1 }], $: [4, { "^": 1 }] }], BM: [1, { jn: [3, { "?": 1 }] }] }], j: [5, { $Ifhs: 1, "?": [3, { "?": [4, { "?BCIM": 1, "^": [6, { "$?": 1 }] }], C: [6, { M: [7, { $I: 1 }], "?": [7, { "$?": 1 }], B: 1 }], M: [6, { C: [4, { B: 1, M: [7, { N: 1 }], "^": [7, { CMV: 1 }] }], "?": [4, { C: [7, { "?": 1 }], "N^": 1 }], BM: 1, I: [4, { M: 1 }] }], I: [6, { M: 1 }], "B^": 1 }], C: [3, { "?": [1, { fhjsw: 1, n: [4, { "?BCMNV^": 1, I: [6, { CIN: 1 }] }] }], "BCIMN^fhjns": 1, V: [6, { "$?BCIV": 1, N: [7, { $CV: 1, M: [4, { M: 1 }] }], M: [4, { M: 1 }] }] }], M: [3, { "?": [4, { "?V": 1, C: [7, { C: 1, M: [6, { C: 1 }] }], M: [1, { jn: [6, { C: 1 }] }] }], "B^h": 1, M: [1, { jn: [4, { "?": 1 }] }], N: [1, { jn: [7, { "?": 1 }] }] }], jn: [6, { $CIjn: 1 }], B: [3, { "B^": 1, "?": [4, { I: 1 }] }], N: [3, { "BIMN^": 1 }], V: [3, { "?BM^": 1 }] }], n: [5, { $CINfhs: 1, "?": [3, { "?": [4, { "?BCIM": 1, "^": [6, { "$?": 1 }] }], C: [6, { $: [4, { B: 1 }], M: [7, { $I: 1 }], "?": [7, { "$?": 1 }], B: 1 }], M: [6, { C: [4, { B: 1, M: [7, { N: 1 }], "^": [7, { CMV: 1 }] }], "?": [4, { C: [7, { "?": 1 }], "N^": 1 }], BM: 1, I: [4, { M: 1 }] }], I: [6, { M: 1 }], "B^": 1 }], M: [3, { "?": [4, { "?V": 1, C: [7, { C: 1, M: [6, { C: 1 }] }], M: [1, { jn: [6, { C: 1 }] }] }], "B^h": 1, M: [1, { jn: [4, { "?": 1 }] }], N: [1, { jn: [7, { "?": 1 }] }] }], j: [6, { $CIjn: 1 }], n: [6, { $CIn: 1 }], B: [3, { "B^": 1, "?": [4, { I: 1 }] }], V: [3, { "?BM^": 1 }] }], s: [3, { "?": [1, { fhjsw: 1, n: [4, { "?BCMNV^": 1, I: [6, { $CIN: 1 }] }] }], "BCIMNV^fhjns": 1 }], B: [1, { fhjsw: [5, { $CIjs: 1, n: [3, { M: [4, { "?": 1 }], "^": 1 }] }], n: [5, { n: 1, Cjs: [3, { M: [4, { "?": 1 }], "^": 1 }] }] }], N: [5, { $CIs: 1, jn: [6, { $CINjns: 1 }], M: [1, { jn: [7, { "?": 1 }] }] }], V: [5, { $: [4, { "?BCIMN^": 1 }], I: 1, j: [7, { $: [4, { "?BIMN^": 1, C: [6, { $CI: 1 }] }], C: [4, { "?BIMNjns": 1, C: [6, { CI: 1 }], "^": [6, { C: 1 }] }], V: [4, { "?BIM^": 1, C: [3, { MN: 1 }] }], I: [6, { CI: 1 }], "?": 1, B: [4, { BIMs: 1, "C^": [6, { C: 1 }] }], N: [4, { BCIMNn: 1 }], M: [3, { M: 1 }] }], n: [4, { "?BIMNjns": 1, "C^": [6, { $CI: 1 }], V: [7, { "?": 1 }] }], s: [4, { "?BCIMN^jns": 1, V: [1, { fhnsw: 1 }] }], C: [3, { M: 1 }] }], "^fh": 1 }], "7": [2, { "?fh": 1, C: [5, { "$?CIhs": 1, j: [6, { "$?CIhs": 1, BV: [1, { j: 1 }], M: [1, { j: [3, { "?NV^": 1, C: [4, { "?MV^hns": 1 }], I: [4, { IV: 1 }], j: [7, { BC: 1 }], n: [4, { "BCIM^j": 1 }], B: [7, { $j: 1 }], M: [4, { MN: 1 }], h: [4, { h: 1 }] }] }], j: [7, { "$?CIjn": 1, M: [1, { j: 1 }] }], n: [7, { "$?CIj": 1, n: [3, { BCMVn: 1 }], M: [1, { jn: 1 }] }] }], n: [6, { "$?CINhs": 1, BV: [1, { j: 1 }], M: [1, { jn: 1 }], j: [7, { "$?BCIVjn": 1, M: [1, { jn: 1 }] }], n: [7, { "$?CIVjn": 1, M: [1, { jn: 1 }] }] }], B: [1, { jn: [3, { "?BCIM^hjns": 1, V: [6, { n: 1 }] }] }], V: [1, { j: [3, { "?": [6, { C: 1 }], V: [6, { "?": 1 }] }], n: [3, { "?": [7, { M: 1 }] }] }], M: [1, { jn: [3, { V: [7, { "?": 1 }] }] }] }], I: [5, { "$?CIs": 1, jn: [6, { "$?CIjn": 1 }], B: [1, { jn: 1 }], V: [1, { j: 1, n: [7, { C: 1 }] }] }], j: [5, { "$?Ifhs": 1, C: [3, { "?BCIMN^fhjns": 1, V: [4, { "BIM^n": 1, N: [6, { $BCMN: 1, V: [7, { "$?n": 1 }] }], V: [6, { $CM: 1, V: [7, { $: 1 }] }], j: [6, { $BCM: 1, V: [7, { $n: 1 }] }] }] }], j: [6, { "$?CIjn": 1, M: [1, { j: 1 }], V: [3, { "^j": 1 }], B: [3, { I: 1 }] }], n: [6, { "$?CIhj": 1, n: [7, { "$?BCIVjn": 1 }], M: [1, { jn: 1 }], V: [3, { "V^jn": 1 }], B: [3, { Ij: 1 }] }], B: [3, { CV: [1, { jn: 1 }], j: [4, { I: 1 }], n: [4, { Ij: 1 }], "^h": 1 }], M: [3, { C: [1, { j: [4, { "?Vs": 1, B: [6, { Ihj: 1 }], C: [6, { "?BIVhj": 1 }], I: [7, { "?Cn": 1 }], M: [7, { "$?Bjn": 1 }], "^": [6, { "?I": 1 }], h: [6, { C: 1 }], j: [6, { CI: 1 }], n: [7, { CIn: 1 }] }], n: [4, { V: [7, { "?": 1 }] }] }], MNj: [1, { j: 1 }], Vn: [1, { jn: 1 }], "^": 1 }], V: [3, { C: [1, { j: 1 }], M: 1, n: [1, { fhjsw: 1, n: [7, { $C: 1 }] }], N: [4, { M: 1 }], j: [4, { "^": 1 }], "^": [1, { fhjsw: 1, n: [7, { $: 1 }] }] }], N: [3, { M: 1 }] }], n: [5, { "$?CINfhs": 1, j: [6, { "$?CIVhj": 1, n: [7, { "$?BCIVjn": 1 }], B: [3, { CIj: 1 }], M: [1, { jn: 1 }] }], n: [6, { "$?CIVhj": 1, n: [7, { "$?CIVjn": 1 }], M: [1, { jn: 1 }], B: [3, { Ij: 1 }] }], M: [1, { jn: 1, fhsw: [3, { "^": 1 }] }], V: [3, { M: 1, n: [7, { $BC: 1, M: [1, { n: 1 }] }], N: [4, { M: 1 }], j: [4, { "^": 1 }], "^": [7, { $C: 1 }] }], B: [3, { V: [1, { jn: 1 }], jn: [4, { Ij: 1 }], "^h": 1 }] }], s: [7, { "$?BCINVhjns": 1, M: [5, { "?BCIMNhjns": 1, V: [1, { fhjsw: 1 }] }] }], B: [4, { "?BIhns": 1, C: [3, { CINVj: 1, M: [7, { $: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], "?": 1, C: [1, { fhjsw: [5, { Cs: 1 }] }], BIMVjn: [1, { fhjsw: [5, { C: 1 }] }] }] }], M: [3, { B: [1, { f: 1 }], CIh: 1 }], N: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], V: [3, { C: [7, { $C: [1, { fhjsw: [5, { Cjs: 1 }], n: [5, { n: 1 }] }], "?": 1 }], Ijn: 1 }], "^": [3, { "C^": 1, I: [5, { $CIs: 1, jn: [6, { $CIjn: 1 }] }] }], j: [3, { CIn: 1 }] }], M: [5, { "$?CIhs": 1, j: [6, { "$?CINVhns": 1, j: [7, { "$?CIjn": 1 }], M: [1, { j: 1 }] }], n: [6, { "$?CINVhns": 1, j: [7, { "$?CIjn": 1 }], M: [1, { jn: 1 }] }], B: [1, { jn: [6, { C: [4, { "?": 1 }], n: 1 }] }], M: [1, { j: [4, { "CM^": 1 }] }] }], V: [3, { C: [5, { $: [1, { fhnsw: 1 }], I: [4, { "?": 1, V: [1, { fhnsw: 1 }] }], j: [1, { fhnsw: [4, { "?": [7, { $C: 1 }], I: [7, { "?": 1 }] }], j: [6, { "$?BIMs": 1, j: [7, { "$?CIjn": 1 }], n: [7, { "$?CIVjn": 1 }] }] }], n: [4, { "?": 1, B: [7, { $Ijn: [1, { fhnsw: 1 }], "?N": 1 }], C: [1, { fhnsw: [6, { CIs: 1 }] }], I: [6, { "?": 1, CIns: [1, { fhnsw: 1 }], j: [7, { "?": 1 }] }], M: [1, { fhsw: [6, { CIs: 1 }], n: [6, { CIMs: 1 }] }], Nhs: [1, { fhnsw: 1 }], V: [1, { fhsw: [6, { "?CIV": 1 }], n: [7, { $CIVjn: 1 }] }], "^": [7, { $: [1, { n: 1 }], "?": 1, j: [1, { fhnsw: 1 }] }], j: [6, { "?": 1, Cj: [1, { fhnsw: 1 }], n: [7, { "?": 1 }], B: [1, { n: 1 }] }], n: [1, { fhnsw: [6, { Cn: 1 }] }] }], s: [1, { fhnsw: 1, j: [4, { "?": 1, I: [7, { "?": 1 }] }] }], "?": [1, { fhnsw: 1, j: [4, { I: 1 }] }], M: [1, { n: 1 }], B: [1, { n: [4, { "M^j": 1 }] }], V: [1, { n: 1, j: [6, { I: 1 }], fhsw: [4, { V: 1 }] }], h: 1 }], BI: [5, { jns: 1 }], M: 1, N: [6, { $: [5, { "$?jns": 1 }], C: [5, { Ins: 1, j: [7, { $BCMN: 1 }], C: [4, { M: 1 }] }], "?I": 1, j: [7, { $I: 1 }], n: [7, { CIj: 1 }] }], V: [5, { $Ijns: 1 }], j: [6, { $: [5, { $Ijns: 1 }], C: [4, { C: [5, { I: 1, ns: [1, { fhnsw: 1 }] }], "^": [5, { n: 1 }], j: 1 }], Ij: 1, n: [7, { $CI: 1 }] }], n: [5, { ns: [1, { fhnsw: 1, j: [6, { C: 1 }] }], j: [4, { Vn: 1 }], $: 1 }], "^": [5, { $jns: 1 }] }], N: [5, { $Cs: 1, j: [6, { $C: 1, M: [1, { j: 1 }], V: [3, { M: 1 }] }], n: [6, { $C: 1, M: [1, { jn: 1 }], V: [3, { M: 1 }] }], V: [1, { j: [4, { C: [3, { C: 1 }], "IMV^": 1 }] }], B: [1, { jn: 1 }] }], "^": [5, { "?BCIMfhjns": 1, V: [1, { fhjsw: 1, n: [7, { $: 1 }] }] }] }], "8": [2, { "?": [3, { "?CIMV^": 1, D: [5, { jns: 1 }] }], j: [5, { "$?DIfhs": 1, C: [3, { "?BCDIM^fhjns": 1, V: [4, { C: [7, { $: [6, { Mn: 1 }], C: [6, { I: 1 }], n: [6, { M: 1 }], "?": 1, B: [1, { h: 1 }], M: [1, { j: 1 }], j: [6, { j: 1 }] }], DIMVjn: 1 }] }], M: [3, { C: [1, { j: 1, n: [7, { C: [6, { "?": 1 }], BD: [4, { n: 1 }], "?": 1 }] }], DM: [1, { j: 1 }], "^hs": 1, j: [1, { j: 1, n: [4, { Is: 1, j: [6, { C: 1 }] }], fhsw: [4, { s: 1 }] }], In: [1, { jn: 1 }] }], V: [3, { C: [1, { j: [6, { $BDIMVjns: 1, C: [7, { I: 1 }] }], n: [6, { $BDIVns: 1, j: [7, { $CDIj: 1 }] }] }], DMn: [1, { jn: 1 }], V: [1, { j: [6, { C: 1 }] }], "^s": 1, j: [4, { s: 1 }] }], j: [6, { $CDIn: 1, M: [3, { Cj: [1, { j: 1 }], "^s": 1 }], j: [7, { $CDIn: 1, j: [3, { j: [4, { BDIMVj: 1 }], BDIMV: 1, C: [1, { jn: 1 }] }], M: [1, { j: 1 }] }], V: [3, { s: 1 }], B: [3, { "M^": 1 }] }], n: [6, { $CDIs: 1, M: [1, { jn: 1, fhsw: [3, { "^s": 1 }] }], j: [7, { j: [3, { j: [4, { BDIMVj: 1 }], BDIMV: 1, C: [1, { jn: 1 }] }], $CDIn: 1, M: [1, { jn: 1 }] }], n: [7, { $CDIn: 1 }], V: [3, { s: 1 }], B: [3, { "M^": 1 }] }], B: [3, { CD: [1, { jn: 1 }], "^n": 1, j: [4, { "M^": 1 }] }] }], n: [5, { "$?CDIfhs": 1, M: [1, { jn: 1, fhsw: [3, { j: [4, { s: 1 }], "^": 1 }] }], j: [6, { $BCDIs: 1, M: [1, { jn: 1, fhsw: [3, { "^s": 1 }] }], j: [7, { j: [3, { j: [4, { BDIMVj: 1 }], BDIMV: 1, C: [1, { jn: 1 }] }], $CDIn: 1, M: [1, { jn: 1 }] }], n: [7, { $CDIn: 1 }], V: [1, { jn: 1 }] }], n: [6, { $BCDIjs: 1, n: [7, { $CDIn: 1 }], MV: [1, { jn: 1 }] }], V: [3, { Mn: [1, { jn: 1 }], V: [1, { n: [6, { C: 1 }] }], "^": 1, j: [4, { s: 1 }] }], B: [3, { "^n": 1, j: [4, { "M^": 1 }] }] }], "^fhs": 1, C: [5, { "$?CDIhs": 1, j: [6, { "$?CDIhs": 1, B: [1, { j: 1 }], M: [1, { j: 1, n: [3, { C: [4, { n: 1 }], D: [7, { n: 1 }] }] }], V: [1, { j: [7, { $BDIMVjns: 1, C: [3, { h: 1 }] }] }], j: [7, { $CDn: 1, M: [1, { j: 1 }], j: [1, { j: 1, n: [4, { Cj: 1 }] }] }], n: [7, { $CDIj: 1, n: [3, { "CV^": 1 }], M: [1, { jn: 1 }] }] }], n: [6, { "$?CDIhs": 1, BV: [1, { j: 1 }], M: [1, { jn: 1 }], n: [7, { MV: [1, { jn: 1 }], $BCDIjn: 1 }], j: [7, { $BCDn: 1, MVj: [1, { jn: 1 }] }] }], B: [1, { j: [3, { "BCDIM^jns": 1, V: [6, { jn: 1 }] }], n: [3, { "BCDIM^jns": 1, V: [6, { n: 1 }] }] }], M: [1, { j: [6, { B: [3, { s: [7, { s: 1 }] }], C: [3, { j: [7, { $: 1 }], V: [7, { C: 1 }], s: [4, { "^": 1 }] }], D: [3, { B: [4, { I: 1 }] }], I: [3, { B: 1, I: [4, { I: 1 }] }], n: [4, { B: 1, "^": [7, { $: 1 }] }], "?": 1, j: [3, { C: [7, { D: 1 }] }] }] }], V: [1, { j: [6, { $: [3, { BCDIMhjns: 1 }], n: [3, { "BCDIM^jns": 1, V: [4, { C: 1 }] }], I: [3, { CDIM: 1 }], Ds: 1 }], n: [6, { $: [3, { BCDIMhjns: 1 }], n: [3, { "BCDI^jns": 1, M: [7, { C: 1 }], V: [4, { C: 1 }] }], I: [3, { CDIM: 1 }], BDs: 1 }] }] }], M: [5, { "$?CDIhs": 1, j: [6, { "$?CDIhns": 1, j: [7, { $BCDIj: 1, M: [1, { j: 1 }] }], M: [1, { j: 1 }], V: [1, { jn: 1 }] }], n: [6, { "$?CDIhns": 1, j: [7, { $BCDIj: 1, M: [1, { jn: 1 }] }], MV: [1, { jn: 1 }] }], M: [1, { j: [6, { $C: 1 }] }], B: [1, { jn: [6, { n: 1 }] }] }], V: [3, { C: [6, { $: [1, { f: [5, { $DIns: 1 }], hsw: [5, { $Ins: 1 }], j: [5, { j: 1 }], n: [5, { $BDIns: 1 }] }], C: [1, { fs: [5, { j: [4, { "?": 1 }], Ins: 1, D: [7, { M: 1 }] }], hw: [5, { j: [4, { "?": 1 }], DIns: 1 }], j: [4, { "?": [7, { $CV: 1 }], V: [7, { h: 1 }] }], n: [5, { j: [4, { "?": 1 }], BIns: 1, D: [7, { MV: 1 }] }] }], D: [1, { fhnsw: [5, { Ins: 1 }], j: [5, { j: 1 }] }], j: [7, { $CDIj: [1, { fhnsw: [5, { ns: 1 }], j: [5, { j: 1 }] }], V: 1 }], n: [5, { j: [1, { j: 1 }], n: [1, { fhsw: [7, { $CDIjns: 1 }], n: 1 }], Ds: [1, { fhnsw: 1 }], I: 1 }], s: [1, { fhnsw: [5, { ns: 1 }], j: [5, { j: 1 }] }], I: [5, { ns: [1, { fhnsw: 1 }], j: [1, { j: 1 }], I: [1, { n: 1 }], "?": 1 }], B: [1, { fhnsw: [5, { Is: 1 }] }], V: [1, { fhsw: [5, { s: 1 }], n: [5, { n: [4, { M: 1 }], s: 1 }] }], M: [1, { fhsw: [5, { s: 1 }], j: [5, { j: 1 }], n: [5, { ns: 1 }] }], "?": 1 }], D: [5, { jns: 1 }], Ijn: [5, { $jns: 1 }], "M^": 1, V: [5, { $jns: 1, C: [7, { C: [1, { hn: 1 }], V: 1 }] }] }], B: [3, { C: [4, { "BCDIM^fhjns": 1, V: [6, { $: [1, { fhjs: 1 }], B: [7, { $: 1 }], C: [5, { C: 1, I: [7, { M: 1 }], j: [1, { fhjsw: 1 }], n: [1, { ns: 1 }], s: [7, { $BDMVj: 1 }] }], DIV: 1, M: [1, { fhjsw: 1 }], j: [5, { Cs: 1, j: [1, { fhjsw: 1 }], n: [1, { ns: 1 }] }], n: [1, { fjs: [5, { js: 1 }], hw: 1, n: [5, { n: 1 }] }], s: [1, { fhns: 1 }] }] }], "DIV^jn": 1, M: [1, { fhjsw: [5, { $CIs: 1, j: [6, { $Cjns: 1 }] }], n: [4, { C: [5, { n: [6, { Cjns: 1 }] }], "^": [5, { n: 1 }] }] }] }], D: [5, { "$?CDIhs": 1, j: [6, { "$?CDIhjns": 1, BMV: [1, { j: 1 }] }], n: [6, { "$?CDIhjns": 1, BV: [1, { j: 1 }], M: [1, { jn: 1 }] }], B: [1, { jn: 1 }], M: [1, { j: 1 }] }], I: [5, { "$?CDIhs": 1, j: [6, { "$?CDIhns": 1, j: [7, { $CDj: 1 }], M: [1, { jn: 1 }] }], n: [6, { "$?CDIhns": 1, j: [7, { $CDj: 1 }] }], BV: [1, { jn: 1 }] }] }], "9": [1, { fhsw: [5, { $CIs: 1, "?": [2, { "?": [4, { "?IMV^": 1, C: [6, { C: 1 }] }], C: [6, { "$?CIV": 1, M: [3, { CM: 1 }] }], "V^s": 1, jn: [6, { $: [4, { "?CIV^": 1 }], "?": [4, { "?IV^": 1, CM: [3, { C: 1 }] }], CV: 1, I: [7, { "$?M": 1 }], M: [7, { $C: 1 }] }], I: [3, { "CIM^": 1, "?": [7, { $C: 1 }] }], M: [6, { $CMV: 1, "?": [4, { "CIMV^": 1 }], I: [7, { "$?M": 1 }] }] }], j: [6, { $CIs: 1, "?": [4, { "?IMV": 1, C: [2, { "?": [3, { C: 1 }], CMV: 1, I: [3, { M: 1 }] }], "^": [7, { "$?CV": 1, I: [2, { C: 1 }] }] }], j: [7, { $CIj: 1 }], M: [2, { "^": 1 }] }], n: [2, { "^ns": 1, j: [3, { j: [4, { j: 1 }], "^": 1 }] }], M: [2, { "^s": 1, j: [3, { "^": 1 }] }], V: [2, { s: 1 }] }], j: [5, { "$?CIjs": 1, n: [6, { "$?CIjns": 1, M: [2, { I: [4, { "?": 1, C: [3, { "?": 1 }], "M^": [7, { "?": 1 }] }], "?": [3, { C: [7, { $: 1 }] }], "^": 1 }] }], M: [2, { I: [4, { "?": 1, C: [3, { "?": 1 }], M: [6, { "?": 1 }] }], "^js": 1, n: [3, { I: [4, { CI: [6, { "?": 1 }] }], "^": 1 }], "?": [3, { C: [6, { "$?": 1 }] }] }], V: [2, { js: 1 }] }], n: [2, { "?": [5, { "$?CIs": 1, j: [6, { "$?CIMVj": 1 }], M: [3, { C: [6, { "$?": 1 }] }] }], C: [5, { "$?CIs": 1, j: [6, { "$?CIMV": 1 }] }], I: [5, { M: [4, { "?": 1, C: [3, { "?": 1 }], M: [6, { "?": 1 }] }], "$?CIjs": 1 }], MV: [5, { "$?CIjs": 1 }], j: [3, { "?": [5, { "$?CIMVj": 1 }], C: [5, { "$?CIMV": 1 }], IMV: 1, "^": [5, { M: 1 }] }], s: [5, { MV: 1 }], "^": [5, { M: 1, j: [6, { M: 1 }] }] }] }], a: 1, "4": [2, { "?": [6, { "$?IMNVjn": 1, C: [5, { "?CIjns": 1 }], B: [5, { "?CIs": 1 }] }], B: [4, { "?Bjn": 1, C: [3, { CIVjn: 1, M: [1, { fhjsw: [5, { CIjs: 1 }], n: [5, { n: 1 }] }] }], I: [3, { BCIj: 1, M: [5, { $C: 1, j: [6, { $: 1 }], s: [6, { C: 1 }] }] }], M: [3, { C: 1, I: [5, { "$?CIjns": 1 }], M: [1, { fsw: 1 }], n: [1, { fj: 1 }] }], N: [5, { $: 1 }], V: [7, { $: [5, { $: 1, C: [1, { fhjsw: 1 }], jns: [6, { $: 1 }] }], BCMV: 1 }], "^": [5, { "$?CIjns": 1 }] }], C: [5, { $: [3, { "?BCIMN^jns": 1, V: [4, { "MNV^jn": 1 }] }], "?": [6, { "$?C": 1, I: [1, { fhnsw: 1 }] }], C: [3, { "?BCIMN^jns": 1, V: [1, { fhnsw: 1, j: [4, { IMNjn: 1 }] }] }], I: [3, { "?BCIM^jn": 1, V: [1, { fhnsw: 1 }] }], j: [6, { $: [3, { "?BCIMN^jns": 1, V: [4, { "MNV^jn": 1 }] }], "?": [3, { "?CIM^": 1, V: [7, { "$?C": 1 }] }], C: [3, { "?BCIMN^jns": 1, V: [4, { C: [1, { j: 1 }], IMNjn: 1 }] }], I: [3, { "?BCIM^jn": 1, V: [1, { j: 1 }] }], BV: [1, { j: [3, { "?": 1 }] }], n: [3, { "CIM^": [7, { $CIn: 1 }], N: 1, V: [4, { N: 1 }], n: [7, { $C: 1 }], B: [4, { M: 1 }] }], j: [3, { M: [7, { $Cjn: 1 }], C: [7, { $CI: 1 }], "?I": 1, "^": [7, { CI: 1 }] }], hs: 1 }], n: [6, { $: [3, { "?BCIMN^jns": 1, V: [4, { "MNV^jn": 1 }] }], "?": [3, { "?CIM^": 1, V: [1, { fhnsw: 1 }] }], C: [3, { "?BCIMN^jns": 1, V: [1, { fhnsw: 1, j: [4, { IMNjn: 1 }] }] }], I: [3, { "?BCIM^jn": 1, V: [1, { fhnsw: 1 }] }], BV: [1, { j: [3, { "?": 1 }] }], N: [3, { "?BCIMN^jn": 1, V: [1, { fhnsw: 1 }] }], n: [3, { CNn: 1, IM: [7, { $CIVn: 1 }], V: [1, { fhnsw: 1 }], B: [4, { M: 1 }], "^": [7, { $BCIVn: 1 }] }], j: [3, { "?CIM^": 1 }], hs: 1 }], s: [3, { "?BCIMN^hjns": 1, V: [1, { fhnsw: 1, j: [4, { C: [7, { "?": 1 }], IMNVjn: 1 }] }] }], B: [1, { jn: [3, { "?": 1 }] }], h: 1 }], I: [4, { "?": [5, { "$?CIs": 1, jn: [6, { "$?CI": 1 }] }], B: [5, { $CIs: 1, jn: [6, { $CI: 1 }] }], C: [3, { "?BINhjn": 1, C: [5, { $CIs: 1, jn: [6, { $CI: 1 }] }], M: [5, { "$?CIs": 1, jn: [6, { "$?CIjn": 1 }] }], V: [1, { fhnsw: [5, { CIs: 1, n: [6, { CI: 1 }] }], j: [5, { j: [6, { CI: 1 }] }] }] }], IV: [5, { $CIs: 1, jn: [6, { $CIn: 1 }] }], M: [5, { "$?CIs": 1, jn: [6, { "$?CIn": 1 }] }], N: [6, { $: [5, { $CIjns: 1 }], "?CINVn": 1, M: [5, { Cs: 1 }], B: [5, { s: 1 }] }], "^": [5, { "$?CIs": 1, jn: [6, { "$?CINjn": 1 }], V: [1, { jn: 1 }] }], jns: 1 }], j: [5, { "$?Ihs": 1, C: [3, { "?BCIMN^hjns": 1, V: [6, { $I: 1, "?": [7, { "$?I": 1 }], B: [7, { CI: 1 }], C: [4, { CIMjn: 1, N: [7, { $V: 1 }] }], M: [4, { C: [7, { "?": 1 }], M: 1 }], N: [7, { $CIVn: 1 }], V: [7, { $Bn: 1, C: [4, { M: 1 }] }], j: [7, { $CVjn: 1 }], n: [7, { BIVn: 1, C: [4, { C: 1 }] }] }] }], j: [6, { "$?CIjn": 1, B: [3, { I: 1 }] }], n: [6, { "$?CIjn": 1, B: [3, { IM: 1 }], V: [3, { Vn: 1 }] }], B: [3, { C: [1, { jn: [6, { "?": 1 }] }], "B^n": 1, j: [4, { I: 1 }] }], M: [3, { I: [1, { j: [4, { "^": 1 }], n: [6, { C: [7, { V: 1 }], I: 1 }] }], N: [1, { jn: [4, { M: 1 }] }], "^": 1 }], V: [3, { C: [1, { j: [4, { "?": 1 }] }], "M^n": 1, V: [4, { "V^": 1 }] }], N: [3, { "IMN^": 1 }] }], n: [5, { "$?CINhs": 1, jn: [6, { "$?BCIVjn": 1 }], M: [3, { I: [1, { j: [4, { M: [6, { C: 1 }] }], n: [6, { C: [4, { M: 1 }], I: 1 }] }], N: [1, { jn: [4, { M: 1 }] }], "^": 1 }], V: [3, { "M^n": 1, V: [4, { "MV^": 1 }] }], B: [3, { "B^n": 1, j: [4, { I: 1 }] }] }], "^hs": 1, M: [5, { "$?CIs": 1, jn: [6, { "$?CINVjns": 1 }], B: [1, { jn: [4, { "?": 1 }] }] }], N: [5, { $CIs: 1, jn: [6, { $CINn: 1 }] }], V: [3, { C: [6, { C: [5, { j: [7, { $: [4, { "?BCIMN^jn": 1 }], C: [4, { "?BCIMN^jns": 1 }], M: [4, { "?": 1 }], B: [4, { "BCIM^": 1 }], N: 1, V: [4, { BCINjn: 1 }], n: [4, { "BCIM^n": 1 }], "?": [4, { CIMn: 1 }], I: [4, { "CIMN^n": 1 }], j: [4, { "CM^": 1 }] }], n: [4, { "?BCIMN^jns": 1, V: [1, { n: 1 }] }], s: [4, { "?BCIMN^jns": 1, V: [1, { fhsw: 1 }] }], h: 1 }], $: [5, { $jns: [4, { "BCIMN^jn": 1 }], "?h": 1 }], j: [4, { BIjn: 1, CM: [5, { jns: 1 }], V: [1, { fhsw: [5, { s: 1 }], j: [5, { j: 1 }], n: [5, { n: 1 }] }] }], n: [4, { "BCIM^n": [5, { jns: 1 }], Nj: 1, V: [1, { fhnsw: [5, { ns: 1 }], j: [5, { j: 1 }] }] }], I: [7, { $: [1, { fhnsw: [5, { ns: 1 }], j: [5, { j: 1 }] }], C: [4, { "CIM^": [5, { jns: 1 }], n: 1 }], IV: [5, { jns: 1 }], M: 1 }], hs: 1, BV: [1, { fhnsw: [5, { s: 1 }] }], "?": [5, { "?jns": 1 }], M: [5, { s: 1 }] }], I: [5, { j: [7, { $C: 1 }], $ns: 1 }], M: 1, N: [6, { C: [7, { M: [5, { Ins: 1 }], $: [5, { jns: 1 }], CN: 1 }], Ij: 1, n: [7, { n: 1 }] }], V: [5, { IVns: 1, j: [6, { C: [7, { $: 1 }], IVn: 1 }] }], j: [5, { j: [7, { $C: 1 }], ns: 1 }], n: [5, { $ns: 1, j: [7, { $C: 1 }] }], "^": [5, { Vns: 1, j: [6, { C: [7, { $: 1 }], V: 1 }] }] }] }], "5": [5, { C: [2, { "?CIM^fhns": 1, V: [4, { "?": 1, C: [3, { C: [6, { "?": 1, M: [7, { "?": 1 }] }], M: 1 }], I: [6, { "?": 1 }], M: [7, { C: [6, { "?": 1 }], "?": 1 }], V: [7, { "?": 1 }], "^": [6, { "?": 1, M: [7, { "?": 1 }] }] }], j: [3, { "?CIM^fhjns": 1, V: [7, { "$?CIVhjns": 1, M: [6, { CMn: 1 }] }] }] }], j: [6, { "$?CIfhs": 1, M: [2, { C: [1, { j: [7, { "$?CIMhjns": 1 }], n: [4, { "?": 1, C: [7, { "?": 1 }], "^": [3, { "?": 1 }] }] }], M: [1, { j: [7, { C: 1 }] }], n: [1, { jn: 1 }], s: 1 }], n: [7, { $CIjn: 1, M: [1, { jn: 1 }] }], V: [2, { M: 1 }], j: [3, { "CM^n": 1 }] }], n: [6, { "$?CIfhs": 1, M: [2, { C: [1, { jn: [7, { "$?CIMhjns": 1 }] }], M: [1, { jn: [7, { C: 1 }] }], jn: [1, { jn: 1 }], s: [1, { fhnsw: 1 }], V: 1 }], n: [7, { $CIjn: 1, M: [1, { jn: 1 }] }], V: [2, { M: 1 }], j: [3, { "CM^n": 1 }] }], "$?Ifhs": 1, M: [2, { j: [1, { j: [6, { $: [3, { C: 1 }], "?CIfhjns": 1, M: [7, { C: 1 }] }], n: [3, { C: [4, { M: [6, { "?": 1 }] }], n: 1 }] }], n: [1, { j: [6, { $: [3, { C: 1 }], "?CIfhjns": 1, M: [7, { C: 1 }] }], n: [6, { "$?CIfhjns": 1, M: [7, { C: 1 }] }] }], s: [1, { fhnsw: 1, j: [7, { "?": 1 }] }], V: 1 }], V: [1, { fhnsw: [2, { s: 1, n: [3, { M: 1 }] }], j: [2, { j: [3, { M: 1 }] }] }] }], "6": [2, { "?fhw": 1, j: [5, { "$?Ifhsw": 1, C: [3, { "?BCIM^fjns": 1, V: [4, { "BMV^jn": 1, C: [7, { C: [6, { "?": 1 }], "?": 1 }] }] }], M: [1, { j: 1, n: [6, { C: [3, { C: [4, { "?": 1 }], "^": 1 }], M: [3, { M: 1 }], "?": 1, n: [4, { C: 1 }] }], fhsw: [3, { "^": 1 }] }], V: [1, { j: [3, { "CM^": 1 }], n: [6, { C: [3, { C: [7, { "?": 1 }], M: 1 }], n: [4, { BIn: 1, CM: [3, { C: 1 }] }], I: [4, { IM: 1 }], j: 1, s: [7, { $: 1 }] }], f: [3, { "^": 1 }] }], n: [6, { $CIjn: 1, M: [1, { jn: 1 }] }], B: [3, { CV: [1, { jn: 1 }], "B^": 1, n: [4, { C: 1 }] }], j: [4, { "BCMV^jn": 1 }] }], n: [5, { "$?CIfhsw": 1, M: [1, { jn: 1, fhsw: [3, { "^": 1 }] }], jn: [6, { $CIVjn: 1, M: [1, { jn: 1 }], B: [3, { C: 1 }] }], B: [3, { "B^": 1, V: [1, { jn: 1 }], n: [4, { C: 1 }] }], V: [1, { fs: [3, { "^": 1 }], jn: [3, { "M^": 1 }], w: [3, { M: 1 }] }] }], s: [5, { "$?BCIMfhjnsw": 1, V: [7, { "$?BCIhjn": 1, M: [1, { fhsw: 1 }], V: [4, { "BCIM^n": 1 }] }] }], C: [5, { "$?CIhs": 1, j: [6, { "$?CIhs": 1, BV: [1, { j: 1 }], M: [1, { j: 1, n: [7, { n: [3, { B: 1 }], "?": 1 }] }], n: [7, { $CIn: 1, M: [1, { jn: 1 }] }], j: [3, { Mn: 1 }] }], n: [6, { "$?CIhjs": 1, BV: [1, { j: 1 }], M: [1, { jn: 1 }], n: [7, { $BCIVn: 1, M: [1, { jn: 1 }] }] }], B: [1, { jn: 1 }], V: [1, { jn: [7, { "?": 1 }] }] }], M: [5, { "$?CIsw": 1, j: [6, { "$?CIVjnw": 1, M: [1, { j: 1, n: [3, { C: [4, { V: 1 }], M: 1 }] }] }], n: [6, { "$?CIVjnw": 1, M: [1, { jn: 1 }] }], B: [1, { jn: [4, { "BCIM^jn": 1 }] }], M: [1, { j: [7, { C: 1 }] }] }], V: [3, { C: [1, { fhsw: [5, { $Is: 1, j: [4, { "?": 1 }], n: [6, { $CIjs: 1, n: [7, { $CIjn: 1 }] }], V: [4, { V: 1 }] }], j: [4, { "?": [6, { $Cn: 1 }], B: [5, { j: [7, { C: 1 }] }], "C^": [7, { "?": 1 }], IM: [5, { j: [6, { Ijn: 1 }] }], V: [5, { j: 1 }], n: [5, { j: [6, { n: 1 }] }] }], n: [5, { $BIVs: 1, j: [4, { "?": 1 }], n: [7, { "$?CIMVj": 1, B: [6, { CI: 1 }], n: [6, { Cjn: 1 }] }] }] }], BIjn: [5, { jns: 1 }], M: 1, V: [6, { $Cn: 1 }], "^": [5, { $jns: 1 }] }], B: [4, { Bjs: 1, C: [3, { BCIVn: 1, M: [6, { $IMjn: 1, B: [1, { fhjsw: 1, n: [7, { C: 1 }] }], C: [5, { C: [7, { $BCIMn: 1 }], Ijns: 1 }], V: [7, { $Ijs: 1, C: [5, { C: 1 }] }] }] }], I: [5, { $Cjns: 1 }], M: [5, { $CIVjns: 1 }], V: [3, { C: [6, { $: [5, { Ij: 1 }], B: [1, { fjs: 1 }], C: [1, { f: [7, { $CMVs: 1 }], h: [7, { $BCMs: 1 }], j: [7, { BCMVs: 1 }], n: [7, { BCs: 1 }], sw: [5, { Cjs: 1 }] }], MV: [1, { fhjsw: 1 }], s: 1, I: [7, { $B: 1, C: [1, { hw: 1 }] }], n: [5, { j: 1, s: [7, { C: 1 }] }] }], In: 1 }], "^n": [5, { $CIjns: 1 }] }], I: [5, { "$?CIs": 1, jn: [6, { "$?CIjn": 1 }], BV: [1, { jn: 1 }] }], "^": [5, { "?BCIMfjns": 1, V: [1, { fhsw: 1 }] }] }] }],
|
|
14
|
+
fold: [{ name: "anusvara", step: "anusvara", blocks: [2304, 2432, 2560, 2688, 2816, 3072, 3200, 3328], virama: 77, anusvara: 2, rows: [[25, 21, 24], [30, 26, 29], [35, 31, 34], [40, 36, 39], [46, 42, 45]] }, { name: "nukta", step: "map", map: { "़": "", "়": "", "਼": "", "઼": "", "଼": "", "": "", "఼": "", "಼": "", "഼": "" } }, { name: "as-bn", step: "map", map: { ৰ: "র", ৱ: "ব" } }, { name: "chandrabindu", step: "map", map: { "ँ": "ं", "ঁ": "ং", "ਁ": "ਂ", "ઁ": "ં", "ଁ": "ଂ", "": "ஂ", "ఁ": "ం", "ಁ": "ಂ", "ഁ": "ം" } }]
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// js/normalize.ts
|
|
18
|
+
var DIGITS = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
19
|
+
var cp = (s) => s.codePointAt(0);
|
|
20
|
+
function compile(r) {
|
|
21
|
+
const invisible = new Map;
|
|
22
|
+
for (const [c, sym2] of Object.entries(r.invisible))
|
|
23
|
+
invisible.set(cp(c), sym2);
|
|
24
|
+
const [LEFT, RIGHT] = r.width;
|
|
25
|
+
const scripts = r.scripts.map(([, ranges], i) => [DIGITS[i], ranges]);
|
|
26
|
+
const classes = new Map;
|
|
27
|
+
for (const [lo, hi, k] of r.classes)
|
|
28
|
+
for (let o = lo;o <= hi; o++)
|
|
29
|
+
classes.set(o, k);
|
|
30
|
+
function scriptOf(c) {
|
|
31
|
+
for (const [d, ranges] of scripts)
|
|
32
|
+
for (const [lo, hi] of ranges)
|
|
33
|
+
if (c >= lo && c <= hi)
|
|
34
|
+
return d;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
function sym(c) {
|
|
38
|
+
return invisible.get(c) ?? classes.get(c) ?? (scriptOf(c) !== undefined ? "?" : undefined);
|
|
39
|
+
}
|
|
40
|
+
function node(t) {
|
|
41
|
+
if (typeof t === "number")
|
|
42
|
+
return t;
|
|
43
|
+
const kids = new Map;
|
|
44
|
+
for (const [values, child] of Object.entries(t[1])) {
|
|
45
|
+
const n = node(child);
|
|
46
|
+
for (const v of values)
|
|
47
|
+
kids.set(v, n);
|
|
48
|
+
}
|
|
49
|
+
return { f: t[0], kids };
|
|
50
|
+
}
|
|
51
|
+
const tree = node(r.tree);
|
|
52
|
+
function deletes(before, c, after) {
|
|
53
|
+
const nearLeft = [...before].reverse().find((x2) => !invisible.has(x2));
|
|
54
|
+
const nearRight = after.find((x2) => !invisible.has(x2));
|
|
55
|
+
let script;
|
|
56
|
+
for (const x2 of [nearLeft, nearRight])
|
|
57
|
+
if (x2 !== undefined && (script = scriptOf(x2)) !== undefined)
|
|
58
|
+
break;
|
|
59
|
+
if (script === undefined)
|
|
60
|
+
return false;
|
|
61
|
+
const x = [script, invisible.get(c)];
|
|
62
|
+
const left = [];
|
|
63
|
+
for (let i = before.length - 1;i >= 0; i--) {
|
|
64
|
+
const s = sym(before[i]);
|
|
65
|
+
if (s === undefined)
|
|
66
|
+
break;
|
|
67
|
+
left.push(s);
|
|
68
|
+
}
|
|
69
|
+
const right = [];
|
|
70
|
+
for (const a of after) {
|
|
71
|
+
const s = sym(a);
|
|
72
|
+
if (s === undefined)
|
|
73
|
+
break;
|
|
74
|
+
right.push(s);
|
|
75
|
+
}
|
|
76
|
+
for (let i = 0;i < LEFT; i++)
|
|
77
|
+
x.push(left[i] ?? "^");
|
|
78
|
+
for (let i = 0;i < RIGHT; i++)
|
|
79
|
+
x.push(right[i] ?? "$");
|
|
80
|
+
let n = tree;
|
|
81
|
+
while (typeof n !== "number")
|
|
82
|
+
n = n.kids.get(x[n.f]) ?? 0;
|
|
83
|
+
return n === 1;
|
|
84
|
+
}
|
|
85
|
+
const chillu = new Map;
|
|
86
|
+
for (const [from, to] of Object.entries(r.chillu.map))
|
|
87
|
+
chillu.set(cp(from), cp(to));
|
|
88
|
+
const ch = { virama: cp(r.chillu.virama), joiner: cp(r.chillu.joiner), notBefore: cp(r.chillu.not_before) };
|
|
89
|
+
const ra = { virama: cp(r.ra.virama), assamese: cp(r.ra.assamese), bengali: cp(r.ra.bengali) };
|
|
90
|
+
const khanda = { from: Array.from(r.khanda_ta.from, cp), to: cp(r.khanda_ta.to), notBefore: r.khanda_ta.not_before };
|
|
91
|
+
function onePass(text, lang) {
|
|
92
|
+
let s = Array.from(text.normalize("NFC"), cp);
|
|
93
|
+
let out = [];
|
|
94
|
+
for (let i = 0;i < s.length; i++) {
|
|
95
|
+
const to = chillu.get(s[i]);
|
|
96
|
+
if (to !== undefined && (i === 0 || s[i - 1] !== ch.virama) && s[i + 1] === ch.virama && s[i + 2] === ch.joiner && s[i + 3] !== ch.notBefore) {
|
|
97
|
+
out.push(to);
|
|
98
|
+
i += 2;
|
|
99
|
+
} else
|
|
100
|
+
out.push(s[i]);
|
|
101
|
+
}
|
|
102
|
+
const [own, other] = r.ra.assamese_langs.includes(lang ?? "") ? [ra.assamese, ra.bengali] : [ra.bengali, ra.assamese];
|
|
103
|
+
s = out;
|
|
104
|
+
out = [];
|
|
105
|
+
for (let i = 0;i < s.length; i++) {
|
|
106
|
+
if (s[i] === ra.virama && s[i + 1] === other) {
|
|
107
|
+
out.push(ra.virama, own);
|
|
108
|
+
i++;
|
|
109
|
+
} else
|
|
110
|
+
out.push(s[i]);
|
|
111
|
+
}
|
|
112
|
+
s = out;
|
|
113
|
+
out = [];
|
|
114
|
+
const k = khanda.from.length;
|
|
115
|
+
for (let i = 0;i < s.length; i++) {
|
|
116
|
+
const next = s[i + k];
|
|
117
|
+
if (khanda.from.every((c, j) => s[i + j] === c) && !(next !== undefined && khanda.notBefore.some(([lo, hi]) => next >= lo && next <= hi))) {
|
|
118
|
+
out.push(khanda.to);
|
|
119
|
+
i += k - 1;
|
|
120
|
+
} else
|
|
121
|
+
out.push(s[i]);
|
|
122
|
+
}
|
|
123
|
+
s = out;
|
|
124
|
+
out = [];
|
|
125
|
+
for (let i = 0;i < s.length; i++) {
|
|
126
|
+
if (invisible.has(s[i]) && deletes(out.slice(-LEFT), s[i], s.slice(i + 1, i + 1 + RIGHT)))
|
|
127
|
+
continue;
|
|
128
|
+
out.push(s[i]);
|
|
129
|
+
}
|
|
130
|
+
return String.fromCodePoint(...out).normalize("NFC");
|
|
131
|
+
}
|
|
132
|
+
function fixed(pass, text, lang) {
|
|
133
|
+
let s = text;
|
|
134
|
+
for (let i = 0;i < r.max_passes; i++) {
|
|
135
|
+
const t = pass(s, lang);
|
|
136
|
+
if (t === s)
|
|
137
|
+
break;
|
|
138
|
+
s = t;
|
|
139
|
+
}
|
|
140
|
+
return s;
|
|
141
|
+
}
|
|
142
|
+
const steps = r.fold.map((st) => {
|
|
143
|
+
if (st.step === "map") {
|
|
144
|
+
const m = new Map;
|
|
145
|
+
for (const [from, to] of Object.entries(st.map))
|
|
146
|
+
m.set(cp(from), to);
|
|
147
|
+
return (s) => Array.from(s.map((c) => m.get(c) ?? String.fromCodePoint(c)).join(""), cp);
|
|
148
|
+
}
|
|
149
|
+
return (s) => {
|
|
150
|
+
const out = [];
|
|
151
|
+
for (let i = 0;i < s.length; i++) {
|
|
152
|
+
const b = st.blocks.find((b2) => s[i] >= b2 && s[i] < b2 + 128);
|
|
153
|
+
if (b !== undefined && i + 2 < s.length && s[i + 1] === b + st.virama && st.rows.some(([n, lo, hi]) => s[i] === b + n && s[i + 2] >= b + lo && s[i + 2] <= b + hi)) {
|
|
154
|
+
out.push(b + st.anusvara);
|
|
155
|
+
i++;
|
|
156
|
+
} else
|
|
157
|
+
out.push(s[i]);
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
const normalize = (text, lang) => fixed(onePass, text, lang);
|
|
163
|
+
const foldPass = (text, lang) => {
|
|
164
|
+
let s = Array.from(normalize(text, lang), cp);
|
|
165
|
+
for (const step of steps)
|
|
166
|
+
s = step(s);
|
|
167
|
+
return String.fromCodePoint(...s);
|
|
168
|
+
};
|
|
169
|
+
return { normalize, fold: (text, lang) => fixed(foldPass, text, lang) };
|
|
170
|
+
}
|
|
171
|
+
var engine = compile(rules_default);
|
|
172
|
+
var RULES_VERSION = rules_default.version;
|
|
173
|
+
function normalize(text, lang) {
|
|
174
|
+
return engine.normalize(text, lang);
|
|
175
|
+
}
|
|
176
|
+
function fold(text, lang) {
|
|
177
|
+
return engine.fold(text, lang);
|
|
178
|
+
}
|
|
179
|
+
export {
|
|
180
|
+
normalize,
|
|
181
|
+
fold,
|
|
182
|
+
RULES_VERSION
|
|
183
|
+
};
|