jexl-lezer 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +274 -5
- package/dist/index.js +272 -3
- package/package.json +1 -1
- package/rollup.config.js +4 -4
package/dist/index.cjs
CHANGED
|
@@ -3,8 +3,277 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var lr = require('@lezer/lr');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
6
|
+
var highlight = require('@lezer/highlight');
|
|
7
|
+
var language = require('@codemirror/language');
|
|
8
|
+
|
|
9
|
+
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
10
|
+
const noSemi = 318,
|
|
11
|
+
noSemiType = 319,
|
|
12
|
+
incdec = 1,
|
|
13
|
+
incdecPrefix = 2,
|
|
14
|
+
questionDot = 3,
|
|
15
|
+
JSXStartTag = 4,
|
|
16
|
+
insertSemi = 320,
|
|
17
|
+
spaces = 322,
|
|
18
|
+
newline = 323,
|
|
19
|
+
LineComment = 5,
|
|
20
|
+
BlockComment = 6,
|
|
21
|
+
Dialect_jsx = 0;
|
|
22
|
+
|
|
23
|
+
/* Hand-written tokenizers for JavaScript tokens that can't be
|
|
24
|
+
expressed by lezer's built-in tokenizer. */
|
|
25
|
+
|
|
26
|
+
const space$1 = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
|
|
27
|
+
8201, 8202, 8232, 8233, 8239, 8287, 12288];
|
|
28
|
+
|
|
29
|
+
const braceR$1 = 125, semicolon$1 = 59, slash$1 = 47, star$1 = 42, plus$1 = 43, minus$1 = 45, lt$1 = 60, comma$1 = 44,
|
|
30
|
+
question$1 = 63, dot$1 = 46, bracketL$1 = 91;
|
|
31
|
+
|
|
32
|
+
const trackNewline = new lr.ContextTracker({
|
|
33
|
+
start: false,
|
|
34
|
+
shift(context, term) {
|
|
35
|
+
return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
|
|
36
|
+
},
|
|
37
|
+
strict: false
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const insertSemicolon = new lr.ExternalTokenizer((input, stack) => {
|
|
41
|
+
let {next} = input;
|
|
42
|
+
if (next == braceR$1 || next == -1 || stack.context)
|
|
43
|
+
input.acceptToken(insertSemi);
|
|
44
|
+
}, {contextual: true, fallback: true});
|
|
45
|
+
|
|
46
|
+
const noSemicolon = new lr.ExternalTokenizer((input, stack) => {
|
|
47
|
+
let {next} = input, after;
|
|
48
|
+
if (space$1.indexOf(next) > -1) return
|
|
49
|
+
if (next == slash$1 && ((after = input.peek(1)) == slash$1 || after == star$1)) return
|
|
50
|
+
if (next != braceR$1 && next != semicolon$1 && next != -1 && !stack.context)
|
|
51
|
+
input.acceptToken(noSemi);
|
|
52
|
+
}, {contextual: true});
|
|
53
|
+
|
|
54
|
+
const noSemicolonType = new lr.ExternalTokenizer((input, stack) => {
|
|
55
|
+
if (input.next == bracketL$1 && !stack.context) input.acceptToken(noSemiType);
|
|
56
|
+
}, {contextual: true});
|
|
57
|
+
|
|
58
|
+
const operatorToken = new lr.ExternalTokenizer((input, stack) => {
|
|
59
|
+
let {next} = input;
|
|
60
|
+
if (next == plus$1 || next == minus$1) {
|
|
61
|
+
input.advance();
|
|
62
|
+
if (next == input.next) {
|
|
63
|
+
input.advance();
|
|
64
|
+
let mayPostfix = !stack.context && stack.canShift(incdec);
|
|
65
|
+
input.acceptToken(mayPostfix ? incdec : incdecPrefix);
|
|
66
|
+
}
|
|
67
|
+
} else if (next == question$1 && input.peek(1) == dot$1) {
|
|
68
|
+
input.advance(); input.advance();
|
|
69
|
+
if (input.next < 48 || input.next > 57) // No digit after
|
|
70
|
+
input.acceptToken(questionDot);
|
|
71
|
+
}
|
|
72
|
+
}, {contextual: true});
|
|
73
|
+
|
|
74
|
+
function identifierChar$1(ch, start) {
|
|
75
|
+
return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
|
|
76
|
+
!start && ch >= 48 && ch <= 57
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const jsx = new lr.ExternalTokenizer((input, stack) => {
|
|
80
|
+
if (input.next != lt$1 || !stack.dialectEnabled(Dialect_jsx)) return
|
|
81
|
+
input.advance();
|
|
82
|
+
if (input.next == slash$1) return
|
|
83
|
+
// Scan for an identifier followed by a comma or 'extends', don't
|
|
84
|
+
// treat this as a start tag if present.
|
|
85
|
+
let back = 0;
|
|
86
|
+
while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
87
|
+
if (identifierChar$1(input.next, true)) {
|
|
88
|
+
input.advance();
|
|
89
|
+
back++;
|
|
90
|
+
while (identifierChar$1(input.next, false)) { input.advance(); back++; }
|
|
91
|
+
while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
92
|
+
if (input.next == comma$1) return
|
|
93
|
+
for (let i = 0;; i++) {
|
|
94
|
+
if (i == 7) {
|
|
95
|
+
if (!identifierChar$1(input.next, true)) return
|
|
96
|
+
break
|
|
97
|
+
}
|
|
98
|
+
if (input.next != "extends".charCodeAt(i)) break
|
|
99
|
+
input.advance();
|
|
100
|
+
back++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
input.acceptToken(JSXStartTag, -back);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
////////////////////////////////////////////
|
|
107
|
+
|
|
108
|
+
const jsHighlight = highlight.styleTags({
|
|
109
|
+
"get set async static": highlight.tags.modifier,
|
|
110
|
+
"for while do if else switch try catch finally return throw break continue default case": highlight.tags.controlKeyword,
|
|
111
|
+
"in of await yield void typeof delete instanceof": highlight.tags.operatorKeyword,
|
|
112
|
+
"let var const using function class extends": highlight.tags.definitionKeyword,
|
|
113
|
+
"pragma import export from": highlight.tags.moduleKeyword,
|
|
114
|
+
"with debugger as new": highlight.tags.keyword,
|
|
115
|
+
TemplateString: highlight.tags.special(highlight.tags.string),
|
|
116
|
+
super: highlight.tags.atom,
|
|
117
|
+
BooleanLiteral: highlight.tags.bool,
|
|
118
|
+
this: highlight.tags.self,
|
|
119
|
+
null: highlight.tags.null,
|
|
120
|
+
Star: highlight.tags.modifier,
|
|
121
|
+
VariableName: highlight.tags.variableName,
|
|
122
|
+
"CallExpression/VariableName TaggedTemplateExpression/VariableName": highlight.tags.function(highlight.tags.variableName),
|
|
123
|
+
VariableDefinition: highlight.tags.definition(highlight.tags.variableName),
|
|
124
|
+
Label: highlight.tags.labelName,
|
|
125
|
+
PropertyName: highlight.tags.propertyName,
|
|
126
|
+
PrivatePropertyName: highlight.tags.special(highlight.tags.propertyName),
|
|
127
|
+
"CallExpression/MemberExpression/PropertyName": highlight.tags.function(highlight.tags.propertyName),
|
|
128
|
+
"FunctionDeclaration/VariableDefinition": highlight.tags.function(highlight.tags.definition(highlight.tags.variableName)),
|
|
129
|
+
"ClassDeclaration/VariableDefinition": highlight.tags.definition(highlight.tags.className),
|
|
130
|
+
"NewExpression/VariableName": highlight.tags.className,
|
|
131
|
+
PropertyDefinition: highlight.tags.definition(highlight.tags.propertyName),
|
|
132
|
+
PrivatePropertyDefinition: highlight.tags.definition(highlight.tags.special(highlight.tags.propertyName)),
|
|
133
|
+
UpdateOp: highlight.tags.updateOperator,
|
|
134
|
+
"LineComment Hashbang": highlight.tags.lineComment,
|
|
135
|
+
BlockComment: highlight.tags.blockComment,
|
|
136
|
+
Number: highlight.tags.number,
|
|
137
|
+
String: highlight.tags.string,
|
|
138
|
+
Escape: highlight.tags.escape,
|
|
139
|
+
ArithOp: highlight.tags.arithmeticOperator,
|
|
140
|
+
LogicOp: highlight.tags.logicOperator,
|
|
141
|
+
BitOp: highlight.tags.bitwiseOperator,
|
|
142
|
+
CompareOp: highlight.tags.compareOperator,
|
|
143
|
+
RegExp: highlight.tags.regexp,
|
|
144
|
+
Equals: highlight.tags.definitionOperator,
|
|
145
|
+
Arrow: highlight.tags.function(highlight.tags.punctuation),
|
|
146
|
+
": Spread": highlight.tags.punctuation,
|
|
147
|
+
"( )": highlight.tags.paren,
|
|
148
|
+
"[ ]": highlight.tags.squareBracket,
|
|
149
|
+
"{ }": highlight.tags.brace,
|
|
150
|
+
"InterpolationStart InterpolationEnd": highlight.tags.special(highlight.tags.brace),
|
|
151
|
+
".": highlight.tags.derefOperator,
|
|
152
|
+
", ;": highlight.tags.separator,
|
|
153
|
+
"@": highlight.tags.meta,
|
|
154
|
+
ClassPath: highlight.tags.labelName,
|
|
155
|
+
|
|
156
|
+
TypeName: highlight.tags.typeName,
|
|
157
|
+
TypeDefinition: highlight.tags.definition(highlight.tags.typeName),
|
|
158
|
+
"type enum interface implements namespace module declare": highlight.tags.definitionKeyword,
|
|
159
|
+
"abstract global Privacy readonly override": highlight.tags.modifier,
|
|
160
|
+
"is keyof unique infer asserts": highlight.tags.operatorKeyword,
|
|
161
|
+
|
|
162
|
+
JSXAttributeValue: highlight.tags.attributeValue,
|
|
163
|
+
JSXText: highlight.tags.content,
|
|
164
|
+
"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": highlight.tags.angleBracket,
|
|
165
|
+
"JSXIdentifier JSXNameSpacedName": highlight.tags.tagName,
|
|
166
|
+
"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": highlight.tags.attributeName,
|
|
167
|
+
"JSXBuiltin/JSXIdentifier": highlight.tags.standard(highlight.tags.tagName)
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
const space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
|
|
171
|
+
8201, 8202, 8232, 8233, 8239, 8287, 12288];
|
|
172
|
+
|
|
173
|
+
const braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,
|
|
174
|
+
question = 63, dot = 46, bracketL = 91;
|
|
175
|
+
|
|
176
|
+
new lr.ContextTracker({
|
|
177
|
+
start: false,
|
|
178
|
+
shift(context, term) {
|
|
179
|
+
return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
|
|
180
|
+
},
|
|
181
|
+
strict: false
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
new lr.ExternalTokenizer((input, stack) => {
|
|
185
|
+
let {next} = input;
|
|
186
|
+
if (next == braceR || next == -1 || stack.context)
|
|
187
|
+
input.acceptToken(insertSemi);
|
|
188
|
+
}, {contextual: true, fallback: true});
|
|
189
|
+
|
|
190
|
+
new lr.ExternalTokenizer((input, stack) => {
|
|
191
|
+
let {next} = input, after;
|
|
192
|
+
if (space.indexOf(next) > -1) return
|
|
193
|
+
if (next == slash && ((after = input.peek(1)) == slash || after == star)) return
|
|
194
|
+
if (next != braceR && next != semicolon && next != -1 && !stack.context)
|
|
195
|
+
input.acceptToken(noSemi);
|
|
196
|
+
}, {contextual: true});
|
|
197
|
+
|
|
198
|
+
new lr.ExternalTokenizer((input, stack) => {
|
|
199
|
+
if (input.next == bracketL && !stack.context) input.acceptToken(noSemiType);
|
|
200
|
+
}, {contextual: true});
|
|
201
|
+
|
|
202
|
+
new lr.ExternalTokenizer((input, stack) => {
|
|
203
|
+
let {next} = input;
|
|
204
|
+
if (next == plus || next == minus) {
|
|
205
|
+
input.advance();
|
|
206
|
+
if (next == input.next) {
|
|
207
|
+
input.advance();
|
|
208
|
+
let mayPostfix = !stack.context && stack.canShift(incdec);
|
|
209
|
+
input.acceptToken(mayPostfix ? incdec : incdecPrefix);
|
|
210
|
+
}
|
|
211
|
+
} else if (next == question && input.peek(1) == dot) {
|
|
212
|
+
input.advance(); input.advance();
|
|
213
|
+
if (input.next < 48 || input.next > 57) // No digit after
|
|
214
|
+
input.acceptToken(questionDot);
|
|
215
|
+
}
|
|
216
|
+
}, {contextual: true});
|
|
217
|
+
|
|
218
|
+
function identifierChar(ch, start) {
|
|
219
|
+
return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
|
|
220
|
+
!start && ch >= 48 && ch <= 57
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
new lr.ExternalTokenizer((input, stack) => {
|
|
224
|
+
if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return
|
|
225
|
+
input.advance();
|
|
226
|
+
if (input.next == slash) return
|
|
227
|
+
// Scan for an identifier followed by a comma or 'extends', don't
|
|
228
|
+
// treat this as a start tag if present.
|
|
229
|
+
let back = 0;
|
|
230
|
+
while (space.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
231
|
+
if (identifierChar(input.next, true)) {
|
|
232
|
+
input.advance();
|
|
233
|
+
back++;
|
|
234
|
+
while (identifierChar(input.next, false)) { input.advance(); back++; }
|
|
235
|
+
while (space.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
236
|
+
if (input.next == comma) return
|
|
237
|
+
for (let i = 0;; i++) {
|
|
238
|
+
if (i == 7) {
|
|
239
|
+
if (!identifierChar(input.next, true)) return
|
|
240
|
+
break
|
|
241
|
+
}
|
|
242
|
+
if (input.next != "extends".charCodeAt(i)) break
|
|
243
|
+
input.advance();
|
|
244
|
+
back++;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
input.acceptToken(JSXStartTag, -back);
|
|
248
|
+
});
|
|
249
|
+
language.syntaxHighlighting(
|
|
250
|
+
language.HighlightStyle.define(
|
|
251
|
+
[
|
|
252
|
+
{ tag: highlight.tags.name, color: "#a8a8a8" },
|
|
253
|
+
{ tag: highlight.tags.propertyName, color: "#966a6a" },
|
|
254
|
+
{ tag: highlight.tags.comment, color: "#4b4949" },
|
|
255
|
+
{ tag: highlight.tags.atom, color: "#a25496" },
|
|
256
|
+
|
|
257
|
+
{ tag: highlight.tags.literal, color: "#7b87b8" },
|
|
258
|
+
{ tag: highlight.tags.unit, color: "#7b87b8" },
|
|
259
|
+
{ tag: highlight.tags.null, color: "#7b87b8" },
|
|
260
|
+
|
|
261
|
+
{ tag: highlight.tags.keyword, color: "#585858" },
|
|
262
|
+
{ tag: highlight.tags.punctuation, color: "#585858" },
|
|
263
|
+
{ tag: highlight.tags.derefOperator, color: "#585858" },
|
|
264
|
+
{ tag: highlight.tags.special(highlight.tags.brace), fontWeight: 700 },
|
|
265
|
+
|
|
266
|
+
{ tag: highlight.tags.operator, color: "white" },
|
|
267
|
+
{ tag: highlight.tags.self, color: "white" },
|
|
268
|
+
{ tag: highlight.tags.function(highlight.tags.punctuation), color: "white" },
|
|
269
|
+
{ tag: highlight.tags.special(highlight.tags.logicOperator), color: "white", fontWeight: "bold" },
|
|
270
|
+
{ tag: highlight.tags.moduleKeyword, color: "white", fontWeight: "bold" },
|
|
271
|
+
{ tag: highlight.tags.controlKeyword, color: "white", fontWeight: "bold" },
|
|
272
|
+
{ tag: highlight.tags.controlOperator, color: "white", fontWeight: "bold" },
|
|
273
|
+
],
|
|
274
|
+
{ all: { color: "#585858" } }
|
|
275
|
+
)
|
|
276
|
+
);
|
|
8
277
|
|
|
9
278
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
10
279
|
const spec_identifier = {__proto__:null,export:18, as:23, from:31, default:34, async:39, function:40, const:50, extends:54, this:58, true:66, false:66, null:78, void:82, typeof:86, super:102, new:136, delete:148, yield:157, await:161, class:166, public:223, private:223, protected:223, readonly:225, instanceof:246, satisfies:249, in:250, import:284, keyof:341, unique:345, infer:351, asserts:387, is:389, abstract:409, implements:411, type:413, let:416, var:418, using:421, interface:427, enum:431, namespace:437, module:439, declare:443, global:447, pragma:466, static:468, for:478, of:487, while:490, with:494, do:498, if:502, else:504, switch:508, case:514, try:520, catch:524, finally:528, return:532, throw:536, break:540, continue:544, debugger:548};
|
|
@@ -17,18 +286,18 @@ const parser = lr.LRParser.deserialize({
|
|
|
17
286
|
goto: "$>p)_PPPPPP)`P)cP*RP+c/yPPPP7bPP8VPP>[PBOPBfPBfPPPBfPDnPBfPBfPBfPDrPDwPEfPJmPPPJqPPPPJqNRPPPNXNyPJqPJqPP!#cJqPPPJqPJqP!%jJqP!)q!*v!+PP!,Q!,Q!,UPPPPPPP!*vPP!,u!.gPJqJq!1s!5^!:X!:X!>ePPPP!>mJqPPPPPPPPPP!BZP!ChPPJq!DyPJqPJqJqJqJqJqPJq!F]P!ItP!MXP!M]!Mg!Mk!MkP!IqP!Mo!MoP##SP##WJqPJq##^#&pDrBfPBfPBfBfP#([BfBf#*nBf#-fBf#/rBfBf#0s#3X#3X#3^#3g#3X#3rPP#3XPBf#4[Bf#8ZBfBf7bPPP#<`PPP#=W#=WP#=WP#={#=WPP#>RP#=xP#=x#>s#=x#?_#?e#?h)c#?k)cPP#?r#?w#@S)cP#@Y#@Y#@YP)cP)cP)cP)cPP)cP#@l#@oP#@o)cP#@sP#@vP)cP)cP)cP)cP)cP)c)cPP#@|#AS#A^#Ad#Aj#Ap#Av#BU#B[#Bf#Bl#Bv#B|#C^#Cd#Dc#Du#D{#ER#Ea#Ev#Gk#Gy#HQ#Il#Iz#Kl#Kz#LQ#LW#L^#Lh#Ln#Lt#MO#Mb#Mh#MzPPPPPPPPPPP#NQPPPPPPP$ W$$_$%w$&O$&WPPP$+rP$+{$/R$5y$5|$6P$7[$7_$7f$7n$7tP$7w$7{$8s$:R$:W$:nPP$:s$:y$:}$;Q$;U$;Y$<U$<z$=p$=t$=w$=z$>QP$>T$>[$>d$>lR!wR!ZpOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pY!sQ'Y-[1c5sQ%ntQ%vwQ%}yQ&c!SS'Q!c-SQ'`!gS'f!p!tU*c$w*S*gQ+g%wQ+t&PQ,Y&]Q-Y'XQ-d'aQ-l'gQ0Q*iQ1m,ZR=R<`%ncOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T,g,j,o-`-h-v-|.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3f4s5{6b6c6f6z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#l[<]!r)W$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^U*v%V<y<zQ+l%yQ,[&`Q,d&iQ0n+_Q0q+aQ1O+mQ1u,aQ3Y.^Q5X0sQ5_0yQ6S1nQ7X3^Q8_5`Q9j7ZT:l9P9Q'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>p!S!lQ!p!s!t!u$w'Q'X'Y'f'g'h*c*g*i*j-S-Y-[-l0Q0T1c5s5u%[$oh#q$]$^$_$s$v$y${%W%X%])r)z)|*O*R*X*_*o*p+^+a+x+{.].v/Z/d/n/o/q0U0W0c0d0e1Y1]1e3]4W4X4c4h4y5T5W5z7V7u8P8V8Z8o9g9u:O:U:d:y;X;b;k;r<r<s<u<v<w<x<{<|<}=O=P=Q=Y=Z=[=]=_=`=e=f=g=h=i=j=k=l=o=p>X>q>r?T?UQ&QyQ'O!cS'U%c-VQ+l%yQ,[&`Q0b*yQ1O+mQ1T+sQ1t,`Q1u,aQ5_0yQ5h1VQ6S1nQ6V1pQ6W1sQ8_5`Q8b5eQ8z6YQ:^8cQ:j8wR=T*S!^mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pR,^&d'f]OPXYrstux!X!^!e!h!m!}#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'['l(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>]>^>c>d>e>f>g>h>i>j>k>l>m>n>o>p[#WWZ#R#U'R'|!b%dl#c#d#g$s%_%b(V(a(b(c*R*V*Y+R+S+U,f,|-z.Q.R.S.U/d/g2]3U3V4Z6p7SQ%qvQ%uwS%zy&PQ&W!QQ']!fQ'_!gQ(j#nS+f%v%wQ+j%yQ,T&ZQ,X&]S-c'`'aQ.`(kQ0w+gQ0}+mQ1P+nQ1S+rQ1h,US1l,Y,ZQ2u-dQ5^0yQ5b0|Q5g1UQ6R1mQ8^5`Q8a5dQ:Y8]R;[:Z!U$uh$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r!^%sw!g!r%u%v%w'P'_'`'a'e'o*b+f+g-P-c-d-k/w/z0w2n2u2|4k4l4o7|:QQ+`%qQ+y&TQ+|&UQ,W&]Q._(jQ1g,TU1k,X,Y,ZQ3_.`Q5|1hS6Q1l1mQ8v6R#f>_#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Uo>`<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=pW%Oh%Q*q>XS&T}&bQ&U!OQ&V!PQ*}%^R+w&R%]$}h#q$]$^$_$s$v$y${%W%X%])r)z)|*O*R*X*_*o*p+^+a+x+{.].v/Z/d/n/o/q0U0W0c0d0e1Y1]1e3]4W4X4c4h4y5T5W5z7V7u8P8V8Z8o9g9u:O:U:d:y;X;b;k;r<r<s<u<v<w<x<{<|<}=O=P=Q=Y=Z=[=]=_=`=e=f=g=h=i=j=k=l=o=p>X>q>r?T?UT)s$p)tV*v%V<y<zW'U!c%c*S-VS(v#t#uQ+Z%lQ+q%|S.X(f(gQ1^+}Q4z0_R8g5m'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>p$i$Xb#T#`%k%m%o'{(R(m(r(z({(|(})O)P)Q)R)S)T)V)X)Z)`)j+[+p-Q-o-t-y-{.j.m.q.s.t.u/X0f2d2g2w3P3e3j3k3l3m3n3o3p3q3r3s3t3u3v3y3z4R5Q5[6s6y7P7`7a7j7k8i9^9b9l9r9s:v;^;g<^>OT#OV#P'mjOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ'S!cR2j-S!W!lQ!c!p!s!t!u$w'Q'X'Y'f'g'h*S*c*g*i*j-S-Y-[-l0Q0T1c5s5uR1`,P!YpOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ&s![S(l#p<dQ+d%tQ,R&WQ,S&YQ-a'^Q-n'jS.i(q=VS0g+P=aQ0u+eQ1b,QQ2[,qQ2^,rQ2f,}Q2s-bQ2v-fS5R0h=mQ5Y0vS5]0x=nQ6r2hQ6v2tQ6{2{Q8[5ZQ9_6tQ9`6wQ9c6|R:s9[$d$Wb#T#`%m%o'{(R(m(r(z({(|(})O)P)Q)R)S)T)V)X)Z)`)j+[+p-Q-o-t-y-{.j.m.q.t.u/X0f2d2g2w3P3e3j3k3l3m3n3o3p3q3r3s3t3u3v3y3z4R5Q5[6s6y7P7`7a7j7k8i9^9b9l9r9s:v;^;g<^>OS(h#k'cQ(x#uS+Y%k.sS.Y(g(iR3W.Z'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#l[<]Q&n!VQ&o!WQ&q!YQ&r!ZQ2S,mQ>g>wQ>h>xQ>i>yQ>j>zQ>k>{R>l>|Q'Z!fQ+]%qQ-_']S.[(j+`Q2q-^W3[._.`0m0oQ6u2rW7T3X3Z3_5VU9f7U7W7YU:x9h9i9kS;i:w:zQ;v;jR<O;wU!qQ'Y-[T5q1c5s!l^OXZ_r!S!X#_#c%_%g&b&d&l&n&o&q(c,j,o.R2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>p]!nQ!p'Y-[1c5sT#l[<]U$ac)W,dS(i#k'cU*n$|(p3xU0a*u.e7fQ5V0nQ7U3YQ9i7XR:z9jQ'n!rS(_#b1}S-j'e'pQ/j*UQ/w*bQ2}-mQ4_/kQ4k/yQ4l/zQ4q0SQ7q4YS7|4m4oS8Q4r4tQ9w7rQ9{7xQ:Q7}Q:V8SS;S9|9}S;n;T;WS;y;o;pS<R;z;{S<V<S<TR<Y<WQ#raQ'm!rS(^#b1}S(`#h+OQ+Q%`Q+b%rQ+h%xU-i'e'n'pQ-}(_Q/i*UQ/x*bQ/{*dQ0t+cQ1i,VS2z-j-mQ3T.VS4^/j/kQ4g/uS4j/w0SQ4n/|Q6O1jQ6}2}Q7p4YQ7t4_U7{4k4q4tQ8O4pQ8t6PS9v7q7rQ9z7xQ:S8QQ:T8RQ:g8uQ;Q9wS;R9{9}Q;Z:VQ;d:hS;m;S;WS;x;n;oS<Q;y;{S<U<R<TQ<X<VQ<Z<YQ=v=rQ>T=zR>U={%x`OPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&i&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#rx!h!r=q$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^R=v>]%xaOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&i&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ%`i!^%rw!g!r%u%v%w'P'_'`'a'e'o*b+f+g-P-c-d-k/w/z0w2n2u2|4k4l4o7|:QS%xx!hQ+c%sQ,V&]W1j,W,X,Y,ZU6P1k1l1mS8u6Q6RQ:h8v!r=r$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^Q=z>YR={>]%ldOPXYrstu!X!^!e!m!}#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&l&n&o&q&u&}'['l(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pY#]WZ#R#U'|!b%dl#c#d#g$s%_%b(V(a(b(c*R*V*Y+R+S+U,f,|-z.Q.R.S.U/d/g2]3U3V4Z6p7SQ,e&i!p=s$U$i)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^R=u'RU'V!c%c*SR2l-V%ncOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T,g,j,o-`-h-v-|.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3f4s5{6b6c6f6z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>p!r)W$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^Q,d&iQ0n+_Q3Y.^Q7X3^R9j7Z!b$Ob#T%k'{(R(m(r)S)T)X)`+p-o-t-y-{.j.m/X0f2w3P3e3u5Q5[6y7P7`9b:v<^!P<j)V)j-Q.s2d2g3j3s3t3y4R6s7a7j7k8i9^9l9r9s;^;g>O!f$Qb#T%k'{(R(m(r)P)Q)S)T)X)`+p-o-t-y-{.j.m/X0f2w3P3e3u5Q5[6y7P7`9b:v<^!T<l)V)j-Q.s2d2g3j3p3q3s3t3y4R6s7a7j7k8i9^9l9r9s;^;g>O!^$Ub#T%k'{(R(m(r)X)`+p-o-t-y-{.j.m/X0f2w3P3e3u5Q5[6y7P7`9b:v<^Q4X/bz>^)V)j-Q.s2d2g3j3y4R6s7a7j7k8i9^9l9r9s;^;g>OQ>q?RR>r?S'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pS$jg$kR4O.{'sfOPWXYZgrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i$k%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.{.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pT$fe$lQ$deS)c$g)gR)o$lT$ee$lT)e$g)g'sgOPWXYZgrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i$k%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.{.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pT$jg$kQ$mgR)n$k%xiOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&i&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>p!s>Y$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^$RkOPXZr!X!^!m!}#_#j#v$i%g&d&g&i&l&n&o&q&u&}'[(w)l*a+T+_,g,j,o-`.^.|/e0R0`1f1{1|2O2Q2T2W2Y3^3}4s5{6b6c6f7Z8r9X>c>d>e>f>g>h>i>j>k>l>m>n>o>p!U$|h$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r#f(p#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?UQ*z%ZQ/Y)wo3x<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=p!U$th$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>rQ*Z$uU*d$w*S*gQ*{%[Q/|*e#f=x#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Un=y<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=pQ>P>_Q>Q>`Q>R>aR>S>b!U$|h$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r#f(p#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Uo3x<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=pbnOr%g&l&n&o&q,j2TS*^$v*RQ,x&xQ,y&zQ4b/of>sX#_,o2W>c>e>g>i>k>m>oa>t!X>d>f>h>j>l>n>p%[$}h#q$]$^$_$s$v$y${%W%X%])r)z)|*O*R*X*_*o*p+^+a+x+{.].v/Z/d/n/o/q0U0W0c0d0e1Y1]1e3]4W4X4c4h4y5T5W5z7V7u8P8V8Z8o9g9u:O:U:d:y;X;b;k;r<r<s<u<v<w<x<{<|<}=O=P=Q=Y=Z=[=]=_=`=e=f=g=h=i=j=k=l=o=p>X>q>r?T?UQ+z&UQ1[+|Q5k1ZR8f5lV*f$w*S*gU*f$w*S*gT5r1c5sS/u*a/eQ4p0RT8R4s:aQ+b%rQ/{*dQ0t+cQ1i,VQ6O1jQ8t6PQ:g8uR;d:h!U$yh$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>rx)z$q)^){*m*|/m0Y0Z3{4`4}5O5P7o8T:W;P=w>V>WS0U*l0V#f<u#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Un<v<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=p!d=Y(n)[*T*].a.d.h/U/b/r0l1X3b4U4a4e5j7[7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?S`=Z3w7b7e7i9m:{;O<PS=g.c3cT=h7d9p!U${h$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r|)|$q)^)}*l*|/^/m0Y0Z3{4`4u4}5O5P7o8T:W;P=w>V>WS0W*m0X#f<w#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Un<x<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=p!h=[(n)[*T*].b.c.h/U/b/r0l1X3`3b4U4a4e5j7[7]7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?Sd=]3w7c7d7i9m9n:{:|;O<PS=i.d3dT=j7e9q!^mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ&_!RR,g&i!^mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pR&_!RQ,O&VR1W+w!_mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ1d,TS5y1g1hU8n5w5x5|S:c8p8qS;`:b:eQ;s;aR;};tQ&f!SR,_&bR6V1pR:j8wS%zy&PR1P+nV1z,c=b=cU1z,c=b=cQ6^1xR6_1yQ:m9PR:n9QQ&l!UQ,j&mQ>e>uQ>f>vQ>m>}R>n?OR,p&rT2U,o2WR,t&sQ,s&sR2_,tQ'r!vR-p'rQrOQ#_XT%jr#_Q!yTR't!yQ!|UR'v!|Q)t$pR/V)tQ#PVR'y#PQ#SWU(P#S(Q-wQ(Q#TR-w(RQ-T'SR2k-TQ.l(rS3g.l3hR3h.mQ-['YR2o-[Y!pQ'Y-[1c5sR'd!pQ.w)^R3|.wU#YW%b*RU(W#Y(X-xQ(X#ZR-x(SQ-W'VR2m-W!`_OXr!S!X#_%g&b&d&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#cZ%_U#m_#c.RR.R(cQ(d#eQ.O(`W.W(d.O3R7QQ3R.PR7Q3SQ)g$gR.})gQ$kgR)m$kQ$ZbU)Y$Z-s<pQ-s<^R<p)jQ/h*UW4[/h4]7s9xU4]/i/j/kS7s4^4_R9x7t$e)y$q(n)[)^*T*]*l*m*w*x*|.c.d.f.g.h/U/^/`/b/m/r0Y0Z0l1X3`3a3b3w3{4U4`4a4e4u4w4}5O5P5j7[7]7^7_7d7e7g7h7i7o7v7y8T8W8Y9m9n9o9y:R:W:X:{:|:};O;P;U;Y;l;q;|<P=w>V>W?R?SQ/p*]U4d/p4f7wQ4f/rR7w4eS*g$w*SR0O*gx){$q)^*l*m*|/m0Y0Z3{4`4}5O5P7o8T:W;P=w>V>W!d.a(n)[*T*].c.d.h/U/b/r0l1X3b4U4a4e5j7[7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?SU/_){.a7ba7b3w7d7e7i9m:{;O<PQ0V*lQ3c.cU4v0V3c9pR9p7d|)}$q)^*l*m*|/^/m0Y0Z3{4`4u4}5O5P7o8T:W;P=w>V>W!h.b(n)[*T*].c.d.h/U/b/r0l1X3`3b4U4a4e5j7[7]7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?SU/a)}.b7ce7c3w7d7e7i9m9n:{:|;O<PQ0X*mQ3d.dU4x0X3d9qR9q7eQ*r%PR0]*rQ5U0lR8X5UQ+V%eR0k+VQ5n1^S8h5n:`R:`8iQ,Q&WR1a,QQ5s1cR8k5sQ1o,[S6T1o8xR8x6VQ0z+jW5a0z5c8`:[Q5c0}Q8`5bR:[8aQ+o%zR1Q+oQ6[1vQ7O3OW8|6[7O8}9YQ8}6]R9Y6hQ2W,oR6k2WWqOXr#_Q&p!XU+X%g>c>dU,i&l>e>fU,k&n>g>hU,l&o>i>jQ,n&qU2R,j>m>nS2U,o2WU6j2T>o>pQ?P>kR?Q>lQ%ioQ&t!]Q&w!_Q&y!`Q&{!aQ'k!rQ+W%fQ+d%tQ+v&QQ,^&fQ,v&vW-g'e'm'n'pQ-n'jQ/}*fQ0u+eS1r,_,bQ2`,uQ2a,xQ2b,yQ2v-fW2x-i-j-m-oQ5Y0vQ5f1TQ5i1XQ5}1iQ6X1tQ6i2SU6x2w2z2}Q6{2{Q8[5ZQ8d5hQ8e5jQ8j5rQ8s6OQ8y6WS9a6y6}Q9c6|Q:]8bQ:f8tQ:k8zQ:u9bQ;]:^Q;c:gQ;h:vR;u;dQ%twQ'^!gQ'j!rU+e%u%v%wQ,}'PU-b'_'`'aS-f'e'oQ/v*bS0v+f+gQ2h-PS2t-c-dQ2{-kS4i/w/zQ5Z0wQ6t2nQ6w2uQ6|2|U7z4k4l4oQ:P7|R;V:QS$rh>XR*s%QU%Ph%Q>XR0[*qQ$qhS(n#q+aS)[$]$^Q)^$_Q*T$sS*]$v*RQ*l$yQ*m${Q*w%WQ*x%XQ*|%]Q.c<uQ.d<wQ.f<{Q.g<}Q.h=PQ/U)rQ/^)zQ/`)|Q/b*OQ/m*XS/r*_/dQ0Y*oQ0Z*pl0l+^+{.]1]1e3]5z7V8o9g:d:y;b;kQ1X+xQ3`=YQ3a=[Q3b=_S3w<r<sQ3{.vS4U/Z4WQ4`/nQ4a/oQ4e/qQ4u0UQ4w0WQ4}0cQ5O0dQ5P0eQ5j1YQ7[=eQ7]=gQ7^=iQ7_=kQ7d<vQ7e<xQ7g<|Q7h=OQ7i=QQ7o4XQ7v4cQ7y4hQ8T4yQ8W5TQ8Y5WQ9m=`Q9n=ZQ9o=]Q9y7uQ:R8PQ:W8VQ:X8ZQ:{=fQ:|=hQ:}=jQ;O=lQ;P9uQ;U:OQ;Y:UQ;l=oQ;q;XQ;|;rQ<P=pQ=w>XQ>V>qQ>W>rQ?R?TR?S?UQ*u%VQ.e<yR7f<z!YoOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ!dPS#aZ#jQ&v!^W'b!m*a0R4sQ'x!}Q(y#vQ)k$iS,b&d&gQ,h&iQ,u&uS,z&}/eQ-^'[Q.o(wQ/R)lQ0i+TQ0o+_Q2P,gQ2r-`Q3Z.^Q4Q.|Q4{0`Q5x1fQ6`1{Q6a1|Q6e2OQ6g2QQ6m2YQ7Y3^Q7l3}Q8q5{Q9T6bQ9U6cQ9W6fQ9k7ZQ:e8rR:r9X#vbOPXZr!X!^!m#_#j#v%g&d&g&i&l&n&o&q&u&}'[(w*a+T+_,g,j,o-`.^/e0R0`1f1{1|2O2Q2T2W2Y3^4s5{6b6c6f7Z8r9X>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ#TWQ#`YQ%ksQ%mtS%ou!eS'{#R(OQ(R#UQ(m#pQ(r#sQ(z#yQ({#zQ(|#{Q(}#|Q)O#}Q)P$OQ)Q$PQ)R$QQ)S$RQ)T$SQ)V$UQ)X$YQ)Z$[Q)`$`W)j$i)l.|3}Q+[%nQ+p%{S-Q'R2iQ-o'lS-t'|-vQ-y(UQ-{(]Q.j(qQ.m(sQ.q<[Q.s<_Q.t<`Q.u<cQ/X)vQ0f+PQ2d,{Q2g-OQ2w-hQ3P-|Q3e.kQ3j<dQ3k<eQ3l<fQ3m<gQ3n<hQ3o<iQ3p<jQ3q<kQ3r<lQ3s<mQ3t<nQ3u.rQ3v<qQ3y<tQ3z=RQ4R<oQ5Q0hQ5[0xQ6s=UQ6y2yQ7P3QQ7`3fQ7a=VQ7j=XQ7k=aQ8i5oQ9^6qQ9b6zQ9l=dQ9r=mQ9s=nQ:v9dQ;^:_Q;g:tQ<^!}R>O>^R#VWR'T!cY!rQ'Y-[1c5sS'P!c-SQ'e!pS'o!s!tS'p!u5uU*b$w*S*gS-P'Q'XS-k'f'gQ-m'hS/z*c*iQ0S*jQ2n-YQ2|-lQ4o0QR4t0TR(t#sQ!dQT-Z'Y-[]!oQ!p'Y-[1c5sQ#k[R'c<]R)_$_T#fZ%_S#eZ%_S%el,fU(`#c#d#gS.P(a(bQ.T(cQ0j+UQ3S.QU3T.R.S.US7R3U3VR9e7Sd#XW#R#U%b'|(V*R+R-z/dr#bZl#c#d#g%_(a(b(c+U.Q.R.S.U3U3V7SS*U$s*YQ/k*VQ1},fQ2e,|Q4Y/gQ6o2]Q7r4ZQ9]6pT=t'R+SV#[W%b*RU#ZW%b*RS'}#R(VU(S#U+R/dS-R'R+ST-u'|-zV'W!c%c*SQ$geR)q$lT)f$g)gR4P.{T*W$s*YT*`$v*RQ0m+^Q1Z+{Q3X.]Q5l1]Q5w1eQ7W3]Q8p5zQ9h7VQ:b8oQ:w9gQ;a:dQ;j:yQ;t;bR;w;k!YpOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ&e!SR,^&b!`lOXr!R!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pR,f&iT%fl,fR1_+}R,]&`Q&OyR+u&PR+k%yZ1w,c1x1y=b=c]&j!U&m>u>v>}?O]&k!U&m>u>v>}?OT2V,o2W",
|
|
18
287
|
nodeNames: "⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression CallExpression TypeArgList CompareOp < declare Privacy static abstract override PropertyDeclaration readonly accessor Optional TypeAnnotation Equals FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow ThinArrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup PragmaDeclaration pragma static PragmaStaticStringClassPath ClassPath Alias ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",
|
|
19
288
|
maxTerm: 382,
|
|
20
|
-
context:
|
|
289
|
+
context: trackNewline,
|
|
21
290
|
nodeProps: [
|
|
22
291
|
["isolate", -8,5,6,13,34,36,48,50,52,""],
|
|
23
292
|
["group", -27,8,16,18,65,203,207,211,212,214,217,220,230,232,238,244,246,248,250,253,259,265,267,269,271,273,275,276,"Statement",-34,12,13,29,32,33,39,48,51,52,54,59,67,69,73,77,79,81,82,104,105,115,116,132,135,137,138,139,140,141,143,144,163,165,167,"Expression",-23,28,30,34,38,40,42,169,171,173,174,176,177,178,180,181,182,184,185,186,197,199,201,202,"Type",-2,85,98,"ClassItem"],
|
|
24
293
|
["openedBy", 22,"<",35,"InterpolationStart",53,"[",57,"{",70,"(",156,"JSXStartCloseTag"],
|
|
25
294
|
["closedBy", -2,23,164,">",37,"InterpolationEnd",47,"]",58,"}",71,")",161,"JSXEndTag"]
|
|
26
295
|
],
|
|
27
|
-
propSources: [
|
|
296
|
+
propSources: [jsHighlight],
|
|
28
297
|
skippedNodes: [0,5,6,279],
|
|
29
298
|
repeatNodeCount: 38,
|
|
30
299
|
tokenData: "$?S?MlR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tu;iuv?yvwBbwxEPxyK`yzLjz{Mt{|!!h|}!#u}!O!%P!O!P!'k!P!Q!1{!Q!R#2a!R![#4p![!]#Ap!]!^#B|!^!_#DW!_!`#Hm!`!a#KX!a!b$!f!b!c$%T!c!};i!}#O$&_#O#P$'i#P#Q$-Q#Q#R$.[#R#S;i#S#T$/i#T#o$0s#o#p$5T#p#q$5y#q#r$7Z#r#s$8g#s$f%Z$f$g+g$g#BY;i#BY#BZ$9q#BZ$IS;i$IS$I_$9q$I_$I|;i$I|$I}$<|$I}$JO$<|$JO$JT;i$JT$JU$9q$JU$KV;i$KV$KW$9q$KW&FU;i&FU&FV$9q&FV;'S;i;'S;=`?s<%l?HT;i?HT?HU$9q?HUO;i(n%d_$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$e&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$e&j(]!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(]!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$e&j(YpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(YpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z?Ml+rq$e&j(Yp(]!b(O?E|OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z?Ml.ST(Z#S$e&j(P?E|O!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c?Ml.n_$e&j(Yp(]!b(P?E|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z8JQ/x`$e&j!m8Bb(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#r(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#r(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7*U3l_(X7!v$e&j(]!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$e&j(]!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$e&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$``$e&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$```7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$``$e&j(]!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(]!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$``(]!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k1'`:j_)Y0Mp$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml;xk$e&j(Yp(]!b$X#t(V;Hz(g$I[OY%ZYZ&cZr%Zrs&}st%Ztu;iuw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![;i![!^%Z!^!_*g!_!c%Z!c!};i!}#O%Z#O#P&c#P#R%Z#R#S;i#S#T%Z#T#o;i#o#p*g#p$g%Z$g;'S;i;'S;=`?s<%lO;i+d=xk$e&j(Yp(]!b$X#tOY%ZYZ&cZr%Zrs&}st%Ztu=muw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![=m![!^%Z!^!_*g!_!c%Z!c!}=m!}#O%Z#O#P&c#P#R%Z#R#S=m#S#T%Z#T#o=m#o#p*g#p$g%Z$g;'S=m;'S;=`?m<%lO=m+d?pP;=`<%l=m?Ml?vP;=`<%l;i(KW@U`$e&j(Yp(]!b#k(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWAc_$e&j#|(Ch(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xBma(z+JY$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sv%ZvwCrwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWC}`$e&j#v(Ch(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7*UEY_([7#h$e&j(YpOYFXYZG_ZrFXrsG_swFXwxHox!^FX!^!_Iq!_#OFX#O#PG_#P#oFX#o#pIq#p;'SFX;'S;=`KY<%lOFX'lF`_$e&j(YpOYFXYZG_ZrFXrsG_swFXwxHox!^FX!^!_Iq!_#OFX#O#PG_#P#oFX#o#pIq#p;'SFX;'S;=`KY<%lOFX&zGdX$e&jOwG_wx6cx!^G_!^!_HP!_#oG_#o#pHP#p;'SG_;'S;=`Hi<%lOG_`HSTOwHPwx7]x;'SHP;'S;=`Hc<%lOHP`HfP;=`<%lHP&zHlP;=`<%lG_'lHx]$``$e&j(YpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!QIvZ(YpOYIqYZHPZrIqrsHPswIqwxJix#OIq#O#PHP#P;'SIq;'S;=`KS<%lOIq!QJpU$``(YpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!QKVP;=`<%lIq'lK]P;=`<%lFX>L^Kk_!i>Dn$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&ULu_!h!Lf$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!nNRb$e&j(Yp(]!b(W%&f#l(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{! Z{!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW! f`$e&j(Yp(]!b#i(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z;$Y!!s`$e&j(Yp(]!bo:JjOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!$Q_!Y+Jf$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z;$Y!%[a$e&j(Yp(]!bo:JjOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`!a!&a!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[!&l_#f(Cl$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml!'vc$e&j(Yp(]!b}=HnOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!)R!P!Q%Z!Q![!+k![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!)[a$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!*a!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!*l_!X!L^$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!+vg$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!+k![!^%Z!^!_*g!_!g%Z!g!h!-_!h#O%Z#O#P&c#P#R%Z#R#S!+k#S#X%Z#X#Y!-_#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!-hg$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!/P|}%Z}!O!/P!O!Q%Z!Q![!0e![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!0e#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!/Yc$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!0e![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!0e#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!0pc$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!0e![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!0e#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml!2Wf$e&j(Yp(]!b#j(ChOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtxz!3lz{#&`{!P!3l!P!Q#'u!Q!^!3l!^!_!Nz!_!`#/e!`!a#0z!a!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l1'`!3wb$e&j(Yp(]!b!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l1&n!5Y`$e&j(]!b!U0MpOY!5PYZ&cZw!5Pwx!6[x!P!5P!P!Q!>S!Q!^!5P!^!_!@T!_!}!5P!}#O!Ce#O#P!=[#P#o!5P#o#p!@T#p;'S!5P;'S;=`!Dn<%lO!5P1%[!6c^$e&j!U0MpOY!6[YZ&cZ!P!6[!P!Q!7_!Q!^!6[!^!_!8t!_!}!6[!}#O!;i#O#P!=[#P#o!6[#o#p!8t#p;'S!6[;'S;=`!=|<%lO!6[1%[!7fd$e&j!U0MpO!^&c!_#W&c#W#X!7_#X#Z&c#Z#[!7_#[#]&c#]#^!7_#^#a&c#a#b!7_#b#g&c#g#h!7_#h#i&c#i#j!7_#j#k!7_#k#m&c#m#n!7_#n#o&c#p;'S&c;'S;=`&w<%lO&c0Mp!8yX!U0MpOY!8tZ!P!8t!P!Q!9f!Q!}!8t!}#O!:T#O#P!;S#P;'S!8t;'S;=`!;c<%lO!8t0Mp!9kW!U0Mp#W#X!9f#Z#[!9f#]#^!9f#a#b!9f#g#h!9f#i#j!9f#j#k!9f#m#n!9f0Mp!:WVOY!:TZ#O!:T#O#P!:m#P#Q!8t#Q;'S!:T;'S;=`!:|<%lO!:T0Mp!:pSOY!:TZ;'S!:T;'S;=`!:|<%lO!:T0Mp!;PP;=`<%l!:T0Mp!;VSOY!8tZ;'S!8t;'S;=`!;c<%lO!8t0Mp!;fP;=`<%l!8t1%[!;n[$e&jOY!;iYZ&cZ!^!;i!^!_!:T!_#O!;i#O#P!<d#P#Q!6[#Q#o!;i#o#p!:T#p;'S!;i;'S;=`!=U<%lO!;i1%[!<iX$e&jOY!;iYZ&cZ!^!;i!^!_!:T!_#o!;i#o#p!:T#p;'S!;i;'S;=`!=U<%lO!;i1%[!=XP;=`<%l!;i1%[!=aX$e&jOY!6[YZ&cZ!^!6[!^!_!8t!_#o!6[#o#p!8t#p;'S!6[;'S;=`!=|<%lO!6[1%[!>PP;=`<%l!6[1&n!>]l$e&j(]!b!U0MpOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!>S#X#Z&}#Z#[!>S#[#]&}#]#^!>S#^#a&}#a#b!>S#b#g&}#g#h!>S#h#i&}#i#j!>S#j#k!>S#k#m&}#m#n!>S#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}1 S!@[Z(]!b!U0MpOY!@TZw!@Twx!8tx!P!@T!P!Q!@}!Q!}!@T!}#O!Bg#O#P!;S#P;'S!@T;'S;=`!C_<%lO!@T1 S!AUe(]!b!U0MpOY'}Zw'}x#O'}#P#W'}#W#X!@}#X#Z'}#Z#[!@}#[#]'}#]#^!@}#^#a'}#a#b!@}#b#g'}#g#h!@}#h#i'}#i#j!@}#j#k!@}#k#m'}#m#n!@}#n;'S'};'S;=`(f<%lO'}1 S!BlX(]!bOY!BgZw!Bgwx!:Tx#O!Bg#O#P!:m#P#Q!@T#Q;'S!Bg;'S;=`!CX<%lO!Bg1 S!C[P;=`<%l!Bg1 S!CbP;=`<%l!@T1&n!Cl^$e&j(]!bOY!CeYZ&cZw!Cewx!;ix!^!Ce!^!_!Bg!_#O!Ce#O#P!<d#P#Q!5P#Q#o!Ce#o#p!Bg#p;'S!Ce;'S;=`!Dh<%lO!Ce1&n!DkP;=`<%l!Ce1&n!DqP;=`<%l!5P1%|!D}`$e&j(Yp!U0MpOY!DtYZ&cZr!Dtrs!6[s!P!Dt!P!Q!FP!Q!^!Dt!^!_!HQ!_!}!Dt!}#O!Kb#O#P!=[#P#o!Dt#o#p!HQ#p;'S!Dt;'S;=`!Lk<%lO!Dt1%|!FYl$e&j(Yp!U0MpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!FP#X#Z(r#Z#[!FP#[#](r#]#^!FP#^#a(r#a#b!FP#b#g(r#g#h!FP#h#i(r#i#j!FP#j#k!FP#k#m(r#m#n!FP#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r0Nb!HXZ(Yp!U0MpOY!HQZr!HQrs!8ts!P!HQ!P!Q!Hz!Q!}!HQ!}#O!Jd#O#P!;S#P;'S!HQ;'S;=`!K[<%lO!HQ0Nb!IRe(Yp!U0MpOY)rZr)rs#O)r#P#W)r#W#X!Hz#X#Z)r#Z#[!Hz#[#])r#]#^!Hz#^#a)r#a#b!Hz#b#g)r#g#h!Hz#h#i)r#i#j!Hz#j#k!Hz#k#m)r#m#n!Hz#n;'S)r;'S;=`*Z<%lO)r0Nb!JiX(YpOY!JdZr!Jdrs!:Ts#O!Jd#O#P!:m#P#Q!HQ#Q;'S!Jd;'S;=`!KU<%lO!Jd0Nb!KXP;=`<%l!Jd0Nb!K_P;=`<%l!HQ1%|!Ki^$e&j(YpOY!KbYZ&cZr!Kbrs!;is!^!Kb!^!_!Jd!_#O!Kb#O#P!<d#P#Q!Dt#Q#o!Kb#o#p!Jd#p;'S!Kb;'S;=`!Le<%lO!Kb1%|!LhP;=`<%l!Kb1%|!LnP;=`<%l!Dt1'`!L|n$e&j(Yp(]!b!U0MpOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X!Lq#X#Z%Z#Z#[!Lq#[#]%Z#]#^!Lq#^#a%Z#a#b!Lq#b#g%Z#g#h!Lq#h#i%Z#i#j!Lq#j#k!Lq#k#m%Z#m#n!Lq#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z1 t# T](Yp(]!b!U0MpOY!NzZr!Nzrs!@Tsw!Nzwx!HQx!P!Nz!P!Q# |!Q!}!Nz!}#O##q#O#P!;S#P;'S!Nz;'S;=`#$q<%lO!Nz1 t#!Vh(Yp(]!b!U0MpOY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X# |#X#Z*g#Z#[# |#[#]*g#]#^# |#^#a*g#a#b# |#b#g*g#g#h# |#h#i*g#i#j# |#j#k# |#k#m*g#m#n# |#n;'S*g;'S;=`+Z<%lO*g1 t##xZ(Yp(]!bOY##qZr##qrs!Bgsw##qwx!Jdx#O##q#O#P!:m#P#Q!Nz#Q;'S##q;'S;=`#$k<%lO##q1 t#$nP;=`<%l##q1 t#$tP;=`<%l!Nz1'`#%Q`$e&j(Yp(]!bOY#$wYZ&cZr#$wrs!Cesw#$wwx!Kbx!^#$w!^!_##q!_#O#$w#O#P!<d#P#Q!3l#Q#o#$w#o#p##q#p;'S#$w;'S;=`#&S<%lO#$w1'`#&VP;=`<%l#$w1'`#&]P;=`<%l!3l?Ml#&mb$e&j(Yp(]!b(Q?E|!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l?Ml#(Q_$e&j(Yp(]!bT?E|OY#'uYZ&cZr#'urs#)Psw#'uwx#,ax!^#'u!^!_#.`!_#O#'u#O#P#*R#P#o#'u#o#p#.`#p;'S#'u;'S;=`#/_<%lO#'u?Lz#)Y]$e&j(]!bT?E|OY#)PYZ&cZw#)Pwx#*Rx!^#)P!^!_#+d!_#O#)P#O#P#*R#P#o#)P#o#p#+d#p;'S#)P;'S;=`#,Z<%lO#)P?Kh#*YX$e&jT?E|OY#*RYZ&cZ!^#*R!^!_#*u!_#o#*R#o#p#*u#p;'S#*R;'S;=`#+^<%lO#*R?E|#*zST?E|OY#*uZ;'S#*u;'S;=`#+W<%lO#*u?E|#+ZP;=`<%l#*u?Kh#+aP;=`<%l#*R?G`#+kW(]!bT?E|OY#+dZw#+dwx#*ux#O#+d#O#P#*u#P;'S#+d;'S;=`#,T<%lO#+d?G`#,WP;=`<%l#+d?Lz#,^P;=`<%l#)P?LY#,j]$e&j(YpT?E|OY#,aYZ&cZr#,ars#*Rs!^#,a!^!_#-c!_#O#,a#O#P#*R#P#o#,a#o#p#-c#p;'S#,a;'S;=`#.Y<%lO#,a?Fn#-jW(YpT?E|OY#-cZr#-crs#*us#O#-c#O#P#*u#P;'S#-c;'S;=`#.S<%lO#-c?Fn#.VP;=`<%l#-c?LY#.]P;=`<%l#,a?HQ#.iY(Yp(]!bT?E|OY#.`Zr#.`rs#+dsw#.`wx#-cx#O#.`#O#P#*u#P;'S#.`;'S;=`#/X<%lO#.`?HQ#/[P;=`<%l#.`?Ml#/bP;=`<%l#'u8Ix#/rb$e&j#|(Ch(Yp(]!b!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l1*U#1Xb$V#t$e&j(Yp(]!b!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l7)t#2lp$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!+k!P!Q%Z!Q![#4p![!^%Z!^!_*g!_!g%Z!g!h!-_!h#O%Z#O#P&c#P#R%Z#R#S#4p#S#U%Z#U#V#7z#V#X%Z#X#Y!-_#Y#b%Z#b#c#6p#c#d#;S#d#l%Z#l#m#>U#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#4{k$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!+k!P!Q%Z!Q![#4p![!^%Z!^!_*g!_!g%Z!g!h!-_!h#O%Z#O#P&c#P#R%Z#R#S#4p#S#X%Z#X#Y!-_#Y#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#6{_$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#8Td$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#9c!R!S#9c!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#9c#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#9nf$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#9c!R!S#9c!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#9c#S#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#;]c$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#<h!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#<h#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#<se$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#<h!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#<h#S#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#>_g$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#?v![!^%Z!^!_*g!_!c%Z!c!i#?v!i#O%Z#O#P&c#P#R%Z#R#S#?v#S#T%Z#T#Z#?v#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#@Ri$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#?v![!^%Z!^!_*g!_!c%Z!c!i#?v!i#O%Z#O#P&c#P#R%Z#R#S#?v#S#T%Z#T#Z#?v#Z#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#A}_!d$b$e&j#z)Lv(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z1'x#CX_`0NY$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Jv#De^g#)`!}-<U(Yp(]!b$j0MpOY*gZr*grs'}sw*gwx)rx!P*g!P!Q#Ea!Q!^*g!^!_#FV!_!`#Gw!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#EjX$g&j(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#F`Z#m(Ch(Yp(]!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#GR!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#G[X#|(Ch(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#HQX#n(Ch(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x#Hxa#Z*!Y$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a#I}!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[#JY_#e(Cl$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Khaf!*r#n(Ch$b#|$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`#Lm!`!a#Mw!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW#Lx_#n(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW#NSa#m(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`!a$ X!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$ d`#m(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$!qa(r(Ct$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$#v!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$$R`$e&j#w(Ch(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z5 |$%`_!y4H^$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Jv$&j_!P?CW$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$'nZ$e&jO!^$(a!^!_$(w!_#i$(a#i#j$(|#j#l$(a#l#m$*o#m#o$(a#o#p$(w#p;'S$(a;'S;=`$,z<%lO$(a(n$(hT^#S$e&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$(|O^#S(n$)R[$e&jO!Q&c!Q![$)w![!^&c!_!c&c!c!i$)w!i#T&c#T#Z$)w#Z#o&c#o#p$,_#p;'S&c;'S;=`&w<%lO&c(n$)|Z$e&jO!Q&c!Q![$*o![!^&c!_!c&c!c!i$*o!i#T&c#T#Z$*o#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$*tZ$e&jO!Q&c!Q![$+g![!^&c!_!c&c!c!i$+g!i#T&c#T#Z$+g#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$+lZ$e&jO!Q&c!Q![$(a![!^&c!_!c&c!c!i$(a!i#T&c#T#Z$(a#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$,bR!Q![$,k!c!i$,k#T#Z$,k#S$,nS!Q![$,k!c!i$,k#T#Z$,k#q#r$(w(n$,}P;=`<%l$(a#1[$-]_!V#)l$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$.g`#t(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z;$Q$/t_$e&j(Yp(]!b(c:JbOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml$1Sk$e&j(Yp(]!b(V;Hz$Z#t(g$I[OY%ZYZ&cZr%Zrs&}st%Ztu$0suw%Zwx(rx}%Z}!O$2w!O!Q%Z!Q![$0s![!^%Z!^!_*g!_!c%Z!c!}$0s!}#O%Z#O#P&c#P#R%Z#R#S$0s#S#T%Z#T#o$0s#o#p*g#p$g%Z$g;'S$0s;'S;=`$4}<%lO$0s+d$3Sk$e&j(Yp(]!b$Z#tOY%ZYZ&cZr%Zrs&}st%Ztu$2wuw%Zwx(rx}%Z}!O$2w!O!Q%Z!Q![$2w![!^%Z!^!_*g!_!c%Z!c!}$2w!}#O%Z#O#P&c#P#R%Z#R#S$2w#S#T%Z#T#o$2w#o#p*g#p$g%Z$g;'S$2w;'S;=`$4w<%lO$2w+d$4zP;=`<%l$2w?Ml$5QP;=`<%l$0s32n$5^X![30j(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$6Ua(y+JY$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$#v#q;'S%Z;'S;=`+a<%lO%Z9'W$7h_!Z8+tsBr$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z1'`$8r_!n0Mp$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml$:S|$e&j(Yp(]!b(O?E|$X#t(V;Hz(g$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%Ztu;iuw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![;i![!^%Z!^!_*g!_!c%Z!c!};i!}#O%Z#O#P&c#P#R%Z#R#S;i#S#T%Z#T#o;i#o#p*g#p$f%Z$f$g+g$g#BY;i#BY#BZ$9q#BZ$IS;i$IS$I_$9q$I_$JT;i$JT$JU$9q$JU$KV;i$KV$KW$9q$KW&FU;i&FU&FV$9q&FV;'S;i;'S;=`?s<%l?HT;i?HT?HU$9q?HUO;i?Ml$=_k$e&j(Yp(]!b(P?E|$X#t(V;Hz(g$I[OY%ZYZ&cZr%Zrs&}st%Ztu;iuw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![;i![!^%Z!^!_*g!_!c%Z!c!};i!}#O%Z#O#P&c#P#R%Z#R#S;i#S#T%Z#T#o;i#o#p*g#p$g%Z$g;'S;i;'S;=`?s<%lO;i",
|
|
31
|
-
tokenizers: [
|
|
300
|
+
tokenizers: [noSemicolon, noSemicolonType, operatorToken, jsx, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, insertSemicolon, new lr.LocalTokenGroup("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOu~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(e~~", 141, 342), new lr.LocalTokenGroup("j~RQYZXz{^~^O(S~~aP!P!Qd~iO(T~~", 25, 325)],
|
|
32
301
|
topRules: {"Script":[0,7],"SingleExpression":[1,277],"SingleClassItem":[2,278]},
|
|
33
302
|
dialects: {jsx: 0, ts: 16025},
|
|
34
303
|
dynamicPrecedences: {"77":1,"79":1,"90":1,"165":1,"195":1},
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,275 @@
|
|
|
1
|
-
import { LRParser, LocalTokenGroup } from '@lezer/lr';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { ContextTracker, ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';
|
|
2
|
+
import { styleTags, tags } from '@lezer/highlight';
|
|
3
|
+
import { syntaxHighlighting, HighlightStyle } from '@codemirror/language';
|
|
4
|
+
|
|
5
|
+
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
6
|
+
const noSemi = 318,
|
|
7
|
+
noSemiType = 319,
|
|
8
|
+
incdec = 1,
|
|
9
|
+
incdecPrefix = 2,
|
|
10
|
+
questionDot = 3,
|
|
11
|
+
JSXStartTag = 4,
|
|
12
|
+
insertSemi = 320,
|
|
13
|
+
spaces = 322,
|
|
14
|
+
newline = 323,
|
|
15
|
+
LineComment = 5,
|
|
16
|
+
BlockComment = 6,
|
|
17
|
+
Dialect_jsx = 0;
|
|
18
|
+
|
|
19
|
+
/* Hand-written tokenizers for JavaScript tokens that can't be
|
|
20
|
+
expressed by lezer's built-in tokenizer. */
|
|
21
|
+
|
|
22
|
+
const space$1 = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
|
|
23
|
+
8201, 8202, 8232, 8233, 8239, 8287, 12288];
|
|
24
|
+
|
|
25
|
+
const braceR$1 = 125, semicolon$1 = 59, slash$1 = 47, star$1 = 42, plus$1 = 43, minus$1 = 45, lt$1 = 60, comma$1 = 44,
|
|
26
|
+
question$1 = 63, dot$1 = 46, bracketL$1 = 91;
|
|
27
|
+
|
|
28
|
+
const trackNewline = new ContextTracker({
|
|
29
|
+
start: false,
|
|
30
|
+
shift(context, term) {
|
|
31
|
+
return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
|
|
32
|
+
},
|
|
33
|
+
strict: false
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const insertSemicolon = new ExternalTokenizer((input, stack) => {
|
|
37
|
+
let {next} = input;
|
|
38
|
+
if (next == braceR$1 || next == -1 || stack.context)
|
|
39
|
+
input.acceptToken(insertSemi);
|
|
40
|
+
}, {contextual: true, fallback: true});
|
|
41
|
+
|
|
42
|
+
const noSemicolon = new ExternalTokenizer((input, stack) => {
|
|
43
|
+
let {next} = input, after;
|
|
44
|
+
if (space$1.indexOf(next) > -1) return
|
|
45
|
+
if (next == slash$1 && ((after = input.peek(1)) == slash$1 || after == star$1)) return
|
|
46
|
+
if (next != braceR$1 && next != semicolon$1 && next != -1 && !stack.context)
|
|
47
|
+
input.acceptToken(noSemi);
|
|
48
|
+
}, {contextual: true});
|
|
49
|
+
|
|
50
|
+
const noSemicolonType = new ExternalTokenizer((input, stack) => {
|
|
51
|
+
if (input.next == bracketL$1 && !stack.context) input.acceptToken(noSemiType);
|
|
52
|
+
}, {contextual: true});
|
|
53
|
+
|
|
54
|
+
const operatorToken = new ExternalTokenizer((input, stack) => {
|
|
55
|
+
let {next} = input;
|
|
56
|
+
if (next == plus$1 || next == minus$1) {
|
|
57
|
+
input.advance();
|
|
58
|
+
if (next == input.next) {
|
|
59
|
+
input.advance();
|
|
60
|
+
let mayPostfix = !stack.context && stack.canShift(incdec);
|
|
61
|
+
input.acceptToken(mayPostfix ? incdec : incdecPrefix);
|
|
62
|
+
}
|
|
63
|
+
} else if (next == question$1 && input.peek(1) == dot$1) {
|
|
64
|
+
input.advance(); input.advance();
|
|
65
|
+
if (input.next < 48 || input.next > 57) // No digit after
|
|
66
|
+
input.acceptToken(questionDot);
|
|
67
|
+
}
|
|
68
|
+
}, {contextual: true});
|
|
69
|
+
|
|
70
|
+
function identifierChar$1(ch, start) {
|
|
71
|
+
return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
|
|
72
|
+
!start && ch >= 48 && ch <= 57
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const jsx = new ExternalTokenizer((input, stack) => {
|
|
76
|
+
if (input.next != lt$1 || !stack.dialectEnabled(Dialect_jsx)) return
|
|
77
|
+
input.advance();
|
|
78
|
+
if (input.next == slash$1) return
|
|
79
|
+
// Scan for an identifier followed by a comma or 'extends', don't
|
|
80
|
+
// treat this as a start tag if present.
|
|
81
|
+
let back = 0;
|
|
82
|
+
while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
83
|
+
if (identifierChar$1(input.next, true)) {
|
|
84
|
+
input.advance();
|
|
85
|
+
back++;
|
|
86
|
+
while (identifierChar$1(input.next, false)) { input.advance(); back++; }
|
|
87
|
+
while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
88
|
+
if (input.next == comma$1) return
|
|
89
|
+
for (let i = 0;; i++) {
|
|
90
|
+
if (i == 7) {
|
|
91
|
+
if (!identifierChar$1(input.next, true)) return
|
|
92
|
+
break
|
|
93
|
+
}
|
|
94
|
+
if (input.next != "extends".charCodeAt(i)) break
|
|
95
|
+
input.advance();
|
|
96
|
+
back++;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
input.acceptToken(JSXStartTag, -back);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
////////////////////////////////////////////
|
|
103
|
+
|
|
104
|
+
const jsHighlight = styleTags({
|
|
105
|
+
"get set async static": tags.modifier,
|
|
106
|
+
"for while do if else switch try catch finally return throw break continue default case": tags.controlKeyword,
|
|
107
|
+
"in of await yield void typeof delete instanceof": tags.operatorKeyword,
|
|
108
|
+
"let var const using function class extends": tags.definitionKeyword,
|
|
109
|
+
"pragma import export from": tags.moduleKeyword,
|
|
110
|
+
"with debugger as new": tags.keyword,
|
|
111
|
+
TemplateString: tags.special(tags.string),
|
|
112
|
+
super: tags.atom,
|
|
113
|
+
BooleanLiteral: tags.bool,
|
|
114
|
+
this: tags.self,
|
|
115
|
+
null: tags.null,
|
|
116
|
+
Star: tags.modifier,
|
|
117
|
+
VariableName: tags.variableName,
|
|
118
|
+
"CallExpression/VariableName TaggedTemplateExpression/VariableName": tags.function(tags.variableName),
|
|
119
|
+
VariableDefinition: tags.definition(tags.variableName),
|
|
120
|
+
Label: tags.labelName,
|
|
121
|
+
PropertyName: tags.propertyName,
|
|
122
|
+
PrivatePropertyName: tags.special(tags.propertyName),
|
|
123
|
+
"CallExpression/MemberExpression/PropertyName": tags.function(tags.propertyName),
|
|
124
|
+
"FunctionDeclaration/VariableDefinition": tags.function(tags.definition(tags.variableName)),
|
|
125
|
+
"ClassDeclaration/VariableDefinition": tags.definition(tags.className),
|
|
126
|
+
"NewExpression/VariableName": tags.className,
|
|
127
|
+
PropertyDefinition: tags.definition(tags.propertyName),
|
|
128
|
+
PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),
|
|
129
|
+
UpdateOp: tags.updateOperator,
|
|
130
|
+
"LineComment Hashbang": tags.lineComment,
|
|
131
|
+
BlockComment: tags.blockComment,
|
|
132
|
+
Number: tags.number,
|
|
133
|
+
String: tags.string,
|
|
134
|
+
Escape: tags.escape,
|
|
135
|
+
ArithOp: tags.arithmeticOperator,
|
|
136
|
+
LogicOp: tags.logicOperator,
|
|
137
|
+
BitOp: tags.bitwiseOperator,
|
|
138
|
+
CompareOp: tags.compareOperator,
|
|
139
|
+
RegExp: tags.regexp,
|
|
140
|
+
Equals: tags.definitionOperator,
|
|
141
|
+
Arrow: tags.function(tags.punctuation),
|
|
142
|
+
": Spread": tags.punctuation,
|
|
143
|
+
"( )": tags.paren,
|
|
144
|
+
"[ ]": tags.squareBracket,
|
|
145
|
+
"{ }": tags.brace,
|
|
146
|
+
"InterpolationStart InterpolationEnd": tags.special(tags.brace),
|
|
147
|
+
".": tags.derefOperator,
|
|
148
|
+
", ;": tags.separator,
|
|
149
|
+
"@": tags.meta,
|
|
150
|
+
ClassPath: tags.labelName,
|
|
151
|
+
|
|
152
|
+
TypeName: tags.typeName,
|
|
153
|
+
TypeDefinition: tags.definition(tags.typeName),
|
|
154
|
+
"type enum interface implements namespace module declare": tags.definitionKeyword,
|
|
155
|
+
"abstract global Privacy readonly override": tags.modifier,
|
|
156
|
+
"is keyof unique infer asserts": tags.operatorKeyword,
|
|
157
|
+
|
|
158
|
+
JSXAttributeValue: tags.attributeValue,
|
|
159
|
+
JSXText: tags.content,
|
|
160
|
+
"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": tags.angleBracket,
|
|
161
|
+
"JSXIdentifier JSXNameSpacedName": tags.tagName,
|
|
162
|
+
"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": tags.attributeName,
|
|
163
|
+
"JSXBuiltin/JSXIdentifier": tags.standard(tags.tagName)
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
|
|
167
|
+
8201, 8202, 8232, 8233, 8239, 8287, 12288];
|
|
168
|
+
|
|
169
|
+
const braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,
|
|
170
|
+
question = 63, dot = 46, bracketL = 91;
|
|
171
|
+
|
|
172
|
+
new ContextTracker({
|
|
173
|
+
start: false,
|
|
174
|
+
shift(context, term) {
|
|
175
|
+
return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
|
|
176
|
+
},
|
|
177
|
+
strict: false
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
new ExternalTokenizer((input, stack) => {
|
|
181
|
+
let {next} = input;
|
|
182
|
+
if (next == braceR || next == -1 || stack.context)
|
|
183
|
+
input.acceptToken(insertSemi);
|
|
184
|
+
}, {contextual: true, fallback: true});
|
|
185
|
+
|
|
186
|
+
new ExternalTokenizer((input, stack) => {
|
|
187
|
+
let {next} = input, after;
|
|
188
|
+
if (space.indexOf(next) > -1) return
|
|
189
|
+
if (next == slash && ((after = input.peek(1)) == slash || after == star)) return
|
|
190
|
+
if (next != braceR && next != semicolon && next != -1 && !stack.context)
|
|
191
|
+
input.acceptToken(noSemi);
|
|
192
|
+
}, {contextual: true});
|
|
193
|
+
|
|
194
|
+
new ExternalTokenizer((input, stack) => {
|
|
195
|
+
if (input.next == bracketL && !stack.context) input.acceptToken(noSemiType);
|
|
196
|
+
}, {contextual: true});
|
|
197
|
+
|
|
198
|
+
new ExternalTokenizer((input, stack) => {
|
|
199
|
+
let {next} = input;
|
|
200
|
+
if (next == plus || next == minus) {
|
|
201
|
+
input.advance();
|
|
202
|
+
if (next == input.next) {
|
|
203
|
+
input.advance();
|
|
204
|
+
let mayPostfix = !stack.context && stack.canShift(incdec);
|
|
205
|
+
input.acceptToken(mayPostfix ? incdec : incdecPrefix);
|
|
206
|
+
}
|
|
207
|
+
} else if (next == question && input.peek(1) == dot) {
|
|
208
|
+
input.advance(); input.advance();
|
|
209
|
+
if (input.next < 48 || input.next > 57) // No digit after
|
|
210
|
+
input.acceptToken(questionDot);
|
|
211
|
+
}
|
|
212
|
+
}, {contextual: true});
|
|
213
|
+
|
|
214
|
+
function identifierChar(ch, start) {
|
|
215
|
+
return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
|
|
216
|
+
!start && ch >= 48 && ch <= 57
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
new ExternalTokenizer((input, stack) => {
|
|
220
|
+
if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return
|
|
221
|
+
input.advance();
|
|
222
|
+
if (input.next == slash) return
|
|
223
|
+
// Scan for an identifier followed by a comma or 'extends', don't
|
|
224
|
+
// treat this as a start tag if present.
|
|
225
|
+
let back = 0;
|
|
226
|
+
while (space.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
227
|
+
if (identifierChar(input.next, true)) {
|
|
228
|
+
input.advance();
|
|
229
|
+
back++;
|
|
230
|
+
while (identifierChar(input.next, false)) { input.advance(); back++; }
|
|
231
|
+
while (space.indexOf(input.next) > -1) { input.advance(); back++; }
|
|
232
|
+
if (input.next == comma) return
|
|
233
|
+
for (let i = 0;; i++) {
|
|
234
|
+
if (i == 7) {
|
|
235
|
+
if (!identifierChar(input.next, true)) return
|
|
236
|
+
break
|
|
237
|
+
}
|
|
238
|
+
if (input.next != "extends".charCodeAt(i)) break
|
|
239
|
+
input.advance();
|
|
240
|
+
back++;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
input.acceptToken(JSXStartTag, -back);
|
|
244
|
+
});
|
|
245
|
+
syntaxHighlighting(
|
|
246
|
+
HighlightStyle.define(
|
|
247
|
+
[
|
|
248
|
+
{ tag: tags.name, color: "#a8a8a8" },
|
|
249
|
+
{ tag: tags.propertyName, color: "#966a6a" },
|
|
250
|
+
{ tag: tags.comment, color: "#4b4949" },
|
|
251
|
+
{ tag: tags.atom, color: "#a25496" },
|
|
252
|
+
|
|
253
|
+
{ tag: tags.literal, color: "#7b87b8" },
|
|
254
|
+
{ tag: tags.unit, color: "#7b87b8" },
|
|
255
|
+
{ tag: tags.null, color: "#7b87b8" },
|
|
256
|
+
|
|
257
|
+
{ tag: tags.keyword, color: "#585858" },
|
|
258
|
+
{ tag: tags.punctuation, color: "#585858" },
|
|
259
|
+
{ tag: tags.derefOperator, color: "#585858" },
|
|
260
|
+
{ tag: tags.special(tags.brace), fontWeight: 700 },
|
|
261
|
+
|
|
262
|
+
{ tag: tags.operator, color: "white" },
|
|
263
|
+
{ tag: tags.self, color: "white" },
|
|
264
|
+
{ tag: tags.function(tags.punctuation), color: "white" },
|
|
265
|
+
{ tag: tags.special(tags.logicOperator), color: "white", fontWeight: "bold" },
|
|
266
|
+
{ tag: tags.moduleKeyword, color: "white", fontWeight: "bold" },
|
|
267
|
+
{ tag: tags.controlKeyword, color: "white", fontWeight: "bold" },
|
|
268
|
+
{ tag: tags.controlOperator, color: "white", fontWeight: "bold" },
|
|
269
|
+
],
|
|
270
|
+
{ all: { color: "#585858" } }
|
|
271
|
+
)
|
|
272
|
+
);
|
|
4
273
|
|
|
5
274
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
6
275
|
const spec_identifier = {__proto__:null,export:18, as:23, from:31, default:34, async:39, function:40, const:50, extends:54, this:58, true:66, false:66, null:78, void:82, typeof:86, super:102, new:136, delete:148, yield:157, await:161, class:166, public:223, private:223, protected:223, readonly:225, instanceof:246, satisfies:249, in:250, import:284, keyof:341, unique:345, infer:351, asserts:387, is:389, abstract:409, implements:411, type:413, let:416, var:418, using:421, interface:427, enum:431, namespace:437, module:439, declare:443, global:447, pragma:466, static:468, for:478, of:487, while:490, with:494, do:498, if:502, else:504, switch:508, case:514, try:520, catch:524, finally:528, return:532, throw:536, break:540, continue:544, debugger:548};
|
package/package.json
CHANGED
package/rollup.config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {lezer} from "@lezer/generator/rollup"
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
|
-
input: "./src/
|
|
4
|
+
input: "./src/jexl.grammar",
|
|
5
5
|
output: [{
|
|
6
6
|
format: "cjs",
|
|
7
7
|
file: "./dist/index.cjs"
|
|
@@ -9,8 +9,8 @@ export default {
|
|
|
9
9
|
format: "es",
|
|
10
10
|
file: "./dist/index.js"
|
|
11
11
|
}],
|
|
12
|
-
external
|
|
12
|
+
external: ["@lezer/lr", "@lezer/highlight"],
|
|
13
13
|
plugins: [
|
|
14
|
-
|
|
14
|
+
lezer()
|
|
15
15
|
]
|
|
16
16
|
}
|