emj 0.0.10 → 0.1.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/README.md +14 -38
- package/lib/characters.d.ts +165 -0
- package/lib/characters.js +169 -0
- package/lib/generator.d.ts +1 -0
- package/lib/generator.js +101 -0
- package/lib/index.d.ts +2 -0
- package/lib/{src/index.js → index.js} +1 -1
- package/lib/limits.d.ts +1 -0
- package/lib/limits.js +5 -0
- package/lib/parser.d.ts +1 -0
- package/lib/parser.js +301 -0
- package/package.json +28 -34
- package/lib/gen/grammar.js +0 -85
- package/lib/src/characters.js +0 -168
- package/lib/src/generator.js +0 -114
- package/lib/src/lexer.js +0 -51
- package/lib/src/mapper.js +0 -51
- package/lib/src/parser.js +0 -66
- package/lib/src/patterns.js +0 -69
- package/lib/src/postprocessor.js +0 -89
- package/lib/src/typer.js +0 -32
- package/lib/src/utilities.js +0 -46
package/lib/parser.js
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parse = void 0;
|
|
4
|
+
const characters_1 = require("./characters");
|
|
5
|
+
const limits_1 = require("./limits");
|
|
6
|
+
const Kind = {
|
|
7
|
+
EOF: 0,
|
|
8
|
+
Invalid: 1,
|
|
9
|
+
Space: 2,
|
|
10
|
+
Start: 3,
|
|
11
|
+
End: 4,
|
|
12
|
+
Indent: 5,
|
|
13
|
+
Outdent: 6,
|
|
14
|
+
Open: 7,
|
|
15
|
+
Close: 8,
|
|
16
|
+
Delimit: 9,
|
|
17
|
+
KeyChar: 10,
|
|
18
|
+
KeyUpper: 11,
|
|
19
|
+
KeyUnicode: 12,
|
|
20
|
+
KeyNibble: 13,
|
|
21
|
+
KeyEmpty: 14,
|
|
22
|
+
ValueChar: 15,
|
|
23
|
+
ValueUpper: 16,
|
|
24
|
+
ValueUnicode: 17,
|
|
25
|
+
ValueNibble: 18,
|
|
26
|
+
ValueEmpty: 19,
|
|
27
|
+
Digit: 20,
|
|
28
|
+
Decimal: 21,
|
|
29
|
+
Exponent: 22,
|
|
30
|
+
Negative: 23,
|
|
31
|
+
True: 24,
|
|
32
|
+
False: 25,
|
|
33
|
+
Null: 26,
|
|
34
|
+
};
|
|
35
|
+
const TOKENS = new Map();
|
|
36
|
+
const define = (emoji, kind, code = 0) => {
|
|
37
|
+
TOKENS.set(emoji.codePointAt(0), kind | (code << 8));
|
|
38
|
+
};
|
|
39
|
+
define(characters_1.characters.document.start, Kind.Start);
|
|
40
|
+
define(characters_1.characters.document.end, Kind.End);
|
|
41
|
+
define(characters_1.characters.document.indent, Kind.Indent);
|
|
42
|
+
define(characters_1.characters.document.outdent, Kind.Outdent);
|
|
43
|
+
define(characters_1.characters.document.arrayOpen, Kind.Open);
|
|
44
|
+
define(characters_1.characters.document.arrayClose, Kind.Close);
|
|
45
|
+
define(characters_1.characters.document.arrayDelimit, Kind.Delimit);
|
|
46
|
+
define(characters_1.characters.keys.modifiers.upperCase, Kind.KeyUpper);
|
|
47
|
+
define(characters_1.characters.keys.modifiers.unicode, Kind.KeyUnicode);
|
|
48
|
+
define(characters_1.characters.keys.other.empty, Kind.KeyEmpty);
|
|
49
|
+
define(characters_1.characters.values.modifiers.upperCase, Kind.ValueUpper);
|
|
50
|
+
define(characters_1.characters.values.modifiers.unicode, Kind.ValueUnicode);
|
|
51
|
+
define(characters_1.characters.values.modifiers.negative, Kind.Negative);
|
|
52
|
+
define(characters_1.characters.values.other.emptyString, Kind.ValueEmpty);
|
|
53
|
+
define(characters_1.characters.values.other.null, Kind.Null);
|
|
54
|
+
define(characters_1.characters.values.booleans.true, Kind.True);
|
|
55
|
+
define(characters_1.characters.values.booleans.false, Kind.False);
|
|
56
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.keys.letters)) {
|
|
57
|
+
define(emoji, Kind.KeyChar, char.charCodeAt(0));
|
|
58
|
+
}
|
|
59
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.keys.numerals)) {
|
|
60
|
+
define(emoji, Kind.KeyChar, char.charCodeAt(0));
|
|
61
|
+
}
|
|
62
|
+
for (const [hex, emoji] of Object.entries(characters_1.characters.keys.unicode)) {
|
|
63
|
+
define(emoji, Kind.KeyNibble, parseInt(hex, 16));
|
|
64
|
+
}
|
|
65
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.values.letters)) {
|
|
66
|
+
define(emoji, Kind.ValueChar, char.charCodeAt(0));
|
|
67
|
+
}
|
|
68
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.values.numerals)) {
|
|
69
|
+
define(emoji, Kind.ValueChar, char.charCodeAt(0));
|
|
70
|
+
}
|
|
71
|
+
for (const [hex, emoji] of Object.entries(characters_1.characters.values.unicode)) {
|
|
72
|
+
define(emoji, Kind.ValueNibble, parseInt(hex, 16));
|
|
73
|
+
}
|
|
74
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.values.numbers)) {
|
|
75
|
+
const kind = char === '.' ? Kind.Decimal : char === 'e' ? Kind.Exponent : Kind.Digit;
|
|
76
|
+
define(emoji, kind, char.charCodeAt(0));
|
|
77
|
+
}
|
|
78
|
+
for (const space of [
|
|
79
|
+
0x9, 0xa, 0xb, 0xc, 0xd, 0x20, 0xa0, 0x1680, 0x2000, 0x2001, 0x2002, 0x2003,
|
|
80
|
+
0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x2028, 0x2029,
|
|
81
|
+
0x202f, 0x205f, 0x3000, 0xfeff, 0xfe0f,
|
|
82
|
+
]) {
|
|
83
|
+
TOKENS.set(space, Kind.Space);
|
|
84
|
+
}
|
|
85
|
+
let source = '';
|
|
86
|
+
let index = 0;
|
|
87
|
+
let at = 0;
|
|
88
|
+
let point = 0;
|
|
89
|
+
let kind = Kind.EOF;
|
|
90
|
+
let code = 0;
|
|
91
|
+
let depth = 0;
|
|
92
|
+
function next() {
|
|
93
|
+
var _a;
|
|
94
|
+
while (index < source.length) {
|
|
95
|
+
at = index;
|
|
96
|
+
point = source.codePointAt(index);
|
|
97
|
+
index += point > 0xffff ? 2 : 1;
|
|
98
|
+
const token = (_a = TOKENS.get(point)) !== null && _a !== void 0 ? _a : Kind.Invalid;
|
|
99
|
+
if (token === Kind.Space)
|
|
100
|
+
continue;
|
|
101
|
+
kind = token & 0xff;
|
|
102
|
+
code = token >> 8;
|
|
103
|
+
return kind;
|
|
104
|
+
}
|
|
105
|
+
at = index;
|
|
106
|
+
kind = Kind.EOF;
|
|
107
|
+
return kind;
|
|
108
|
+
}
|
|
109
|
+
function fail() {
|
|
110
|
+
if (kind === Kind.EOF) {
|
|
111
|
+
throw new SyntaxError('Unexpected end of Emojion input');
|
|
112
|
+
}
|
|
113
|
+
throw new SyntaxError(`Unexpected "${String.fromCodePoint(point)}" in Emojion at position ${at}`);
|
|
114
|
+
}
|
|
115
|
+
function nest() {
|
|
116
|
+
if (++depth > limits_1.MAX_DEPTH) {
|
|
117
|
+
throw new SyntaxError(`Emojion nesting exceeds ${limits_1.MAX_DEPTH} levels at position ${at}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function expect(expected) {
|
|
121
|
+
if (kind !== expected)
|
|
122
|
+
fail();
|
|
123
|
+
next();
|
|
124
|
+
}
|
|
125
|
+
function text(char, upper, unicode, nibble) {
|
|
126
|
+
let out = '';
|
|
127
|
+
let encoded = false;
|
|
128
|
+
for (;;) {
|
|
129
|
+
if (kind === char) {
|
|
130
|
+
out += String.fromCharCode(code);
|
|
131
|
+
next();
|
|
132
|
+
}
|
|
133
|
+
else if (kind === upper) {
|
|
134
|
+
next();
|
|
135
|
+
if (kind !== char || code < 97)
|
|
136
|
+
fail();
|
|
137
|
+
out += String.fromCharCode(code - 32);
|
|
138
|
+
next();
|
|
139
|
+
}
|
|
140
|
+
else if (kind === unicode) {
|
|
141
|
+
next();
|
|
142
|
+
if (kind !== nibble)
|
|
143
|
+
fail();
|
|
144
|
+
let value = 0;
|
|
145
|
+
let nibbles = 0;
|
|
146
|
+
do {
|
|
147
|
+
if (++nibbles > 6)
|
|
148
|
+
fail();
|
|
149
|
+
value = value * 16 + code;
|
|
150
|
+
if (value > 0x10ffff)
|
|
151
|
+
fail();
|
|
152
|
+
next();
|
|
153
|
+
} while (kind === nibble);
|
|
154
|
+
out += String.fromCodePoint(value);
|
|
155
|
+
encoded = true;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
return encoded ? JSON.stringify(out) : '"' + out + '"';
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function digits() {
|
|
163
|
+
if (kind !== Kind.Digit)
|
|
164
|
+
fail();
|
|
165
|
+
let out = '';
|
|
166
|
+
do {
|
|
167
|
+
out += String.fromCharCode(code);
|
|
168
|
+
next();
|
|
169
|
+
} while (kind === Kind.Digit);
|
|
170
|
+
return out;
|
|
171
|
+
}
|
|
172
|
+
function number() {
|
|
173
|
+
let out = '';
|
|
174
|
+
if (kind === Kind.Negative) {
|
|
175
|
+
out = '-';
|
|
176
|
+
next();
|
|
177
|
+
}
|
|
178
|
+
if (kind === Kind.Digit && code === 48) {
|
|
179
|
+
out += '0';
|
|
180
|
+
next();
|
|
181
|
+
if (kind === Kind.Digit)
|
|
182
|
+
fail();
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
out += digits();
|
|
186
|
+
}
|
|
187
|
+
if (kind === Kind.Decimal) {
|
|
188
|
+
next();
|
|
189
|
+
out += '.' + digits();
|
|
190
|
+
}
|
|
191
|
+
if (kind === Kind.Exponent) {
|
|
192
|
+
if (next() === Kind.Negative) {
|
|
193
|
+
out += 'e-';
|
|
194
|
+
next();
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
out += 'e+';
|
|
198
|
+
}
|
|
199
|
+
out += digits();
|
|
200
|
+
}
|
|
201
|
+
return out;
|
|
202
|
+
}
|
|
203
|
+
function members(close) {
|
|
204
|
+
let out = '{';
|
|
205
|
+
while (kind !== close) {
|
|
206
|
+
if (out !== '{')
|
|
207
|
+
out += ',';
|
|
208
|
+
if (kind === Kind.KeyEmpty) {
|
|
209
|
+
out += '""';
|
|
210
|
+
next();
|
|
211
|
+
}
|
|
212
|
+
else if (kind === Kind.KeyChar ||
|
|
213
|
+
kind === Kind.KeyUpper ||
|
|
214
|
+
kind === Kind.KeyUnicode) {
|
|
215
|
+
out += text(Kind.KeyChar, Kind.KeyUpper, Kind.KeyUnicode, Kind.KeyNibble);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
fail();
|
|
219
|
+
}
|
|
220
|
+
out += ':' + value();
|
|
221
|
+
}
|
|
222
|
+
return out + '}';
|
|
223
|
+
}
|
|
224
|
+
function array() {
|
|
225
|
+
if (next() === Kind.Close) {
|
|
226
|
+
next();
|
|
227
|
+
return '[]';
|
|
228
|
+
}
|
|
229
|
+
let out = '[' + value();
|
|
230
|
+
while (kind === Kind.Delimit) {
|
|
231
|
+
next();
|
|
232
|
+
out += ',' + value();
|
|
233
|
+
}
|
|
234
|
+
expect(Kind.Close);
|
|
235
|
+
return out + ']';
|
|
236
|
+
}
|
|
237
|
+
function value() {
|
|
238
|
+
switch (kind) {
|
|
239
|
+
case Kind.Indent: {
|
|
240
|
+
nest();
|
|
241
|
+
next();
|
|
242
|
+
const out = members(Kind.Outdent);
|
|
243
|
+
next();
|
|
244
|
+
depth--;
|
|
245
|
+
return out;
|
|
246
|
+
}
|
|
247
|
+
case Kind.Open: {
|
|
248
|
+
nest();
|
|
249
|
+
const out = array();
|
|
250
|
+
depth--;
|
|
251
|
+
return out;
|
|
252
|
+
}
|
|
253
|
+
case Kind.True:
|
|
254
|
+
next();
|
|
255
|
+
return 'true';
|
|
256
|
+
case Kind.False:
|
|
257
|
+
next();
|
|
258
|
+
return 'false';
|
|
259
|
+
case Kind.Null:
|
|
260
|
+
next();
|
|
261
|
+
return 'null';
|
|
262
|
+
case Kind.ValueEmpty:
|
|
263
|
+
next();
|
|
264
|
+
return '""';
|
|
265
|
+
case Kind.Negative:
|
|
266
|
+
case Kind.Digit:
|
|
267
|
+
return number();
|
|
268
|
+
case Kind.ValueChar:
|
|
269
|
+
case Kind.ValueUpper:
|
|
270
|
+
case Kind.ValueUnicode:
|
|
271
|
+
return text(Kind.ValueChar, Kind.ValueUpper, Kind.ValueUnicode, Kind.ValueNibble);
|
|
272
|
+
}
|
|
273
|
+
return fail();
|
|
274
|
+
}
|
|
275
|
+
const parse = (input) => {
|
|
276
|
+
source = input;
|
|
277
|
+
index = 0;
|
|
278
|
+
depth = 0;
|
|
279
|
+
try {
|
|
280
|
+
next();
|
|
281
|
+
expect(Kind.Start);
|
|
282
|
+
if (kind === Kind.Indent)
|
|
283
|
+
fail();
|
|
284
|
+
const out = kind === Kind.End ||
|
|
285
|
+
kind === Kind.KeyEmpty ||
|
|
286
|
+
kind === Kind.KeyChar ||
|
|
287
|
+
kind === Kind.KeyUpper ||
|
|
288
|
+
kind === Kind.KeyUnicode
|
|
289
|
+
? members(Kind.End)
|
|
290
|
+
: value();
|
|
291
|
+
expect(Kind.End);
|
|
292
|
+
if (kind !== Kind.EOF)
|
|
293
|
+
fail();
|
|
294
|
+
return out;
|
|
295
|
+
}
|
|
296
|
+
finally {
|
|
297
|
+
source = '';
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
exports.parse = parse;
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEM7QUFDMUMscUNBQXFDO0FBRXJDLE1BQU0sSUFBSSxHQUFHO0lBQ1gsR0FBRyxFQUFFLENBQUM7SUFDTixPQUFPLEVBQUUsQ0FBQztJQUNWLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7SUFDUixHQUFHLEVBQUUsQ0FBQztJQUNOLE1BQU0sRUFBRSxDQUFDO0lBQ1QsT0FBTyxFQUFFLENBQUM7SUFDVixJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxFQUFFO0lBQ1osVUFBVSxFQUFFLEVBQUU7SUFDZCxTQUFTLEVBQUUsRUFBRTtJQUNiLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLEVBQUU7SUFDYixVQUFVLEVBQUUsRUFBRTtJQUNkLFlBQVksRUFBRSxFQUFFO0lBQ2hCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsVUFBVSxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRSxFQUFFO0lBQ1gsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsRUFBRTtJQUNaLElBQUksRUFBRSxFQUFFO0lBQ1IsS0FBSyxFQUFFLEVBQUU7SUFDVCxJQUFJLEVBQUUsRUFBRTtDQUNBLENBQUM7QUFFWCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztBQUV6QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsRCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0QsTUFBTSxDQUFDLHVCQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNELE1BQU0sQ0FBQyx1QkFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuRCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0QsTUFBTSxDQUFDLHVCQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQy9ELE1BQU0sQ0FBQyx1QkFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1RCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0QsTUFBTSxDQUFDLHVCQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELE1BQU0sQ0FBQyx1QkFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxNQUFNLENBQUMsdUJBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFckQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNwRSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3JFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUNELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDbkUsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUNELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDckUsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxNQUFNLElBQUks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QUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUc7WUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUM7QUF2QlcsUUFBQSxLQUFLLFNBdUJoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNoYXJhY3RlcnMgfSBmcm9tICcuL2NoYXJhY3RlcnMnO1xuaW1wb3J0IHsgTUFYX0RFUFRIIH0gZnJvbSAnLi9saW1pdHMnO1xuXG5jb25zdCBLaW5kID0ge1xuICBFT0Y6IDAsXG4gIEludmFsaWQ6IDEsXG4gIFNwYWNlOiAyLFxuICBTdGFydDogMyxcbiAgRW5kOiA0LFxuICBJbmRlbnQ6IDUsXG4gIE91dGRlbnQ6IDYsXG4gIE9wZW46IDcsXG4gIENsb3NlOiA4LFxuICBEZWxpbWl0OiA5LFxuICBLZXlDaGFyOiAxMCxcbiAgS2V5VXBwZXI6IDExLFxuICBLZXlVbmljb2RlOiAxMixcbiAgS2V5TmliYmxlOiAxMyxcbiAgS2V5RW1wdHk6IDE0LFxuICBWYWx1ZUNoYXI6IDE1LFxuICBWYWx1ZVVwcGVyOiAxNixcbiAgVmFsdWVVbmljb2RlOiAxNyxcbiAgVmFsdWVOaWJibGU6IDE4LFxuICBWYWx1ZUVtcHR5OiAxOSxcbiAgRGlnaXQ6IDIwLFxuICBEZWNpbWFsOiAyMSxcbiAgRXhwb25lbnQ6IDIyLFxuICBOZWdhdGl2ZTogMjMsXG4gIFRydWU6IDI0LFxuICBGYWxzZTogMjUsXG4gIE51bGw6IDI2LFxufSBhcyBjb25zdDtcblxuY29uc3QgVE9LRU5TID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuY29uc3QgZGVmaW5lID0gKGVtb2ppOiBzdHJpbmcsIGtpbmQ6IG51bWJlciwgY29kZSA9IDApID0+IHtcbiAgVE9LRU5TLnNldChlbW9qaS5jb2RlUG9pbnRBdCgwKSEsIGtpbmQgfCAoY29kZSA8PCA4KSk7XG59O1xuXG5kZWZpbmUoY2hhcmFjdGVycy5kb2N1bWVudC5zdGFydCwgS2luZC5TdGFydCk7XG5kZWZpbmUoY2hhcmFjdGVycy5kb2N1bWVudC5lbmQsIEtpbmQuRW5kKTtcbmRlZmluZShjaGFyYWN0ZXJzLmRvY3VtZW50LmluZGVudCwgS2luZC5JbmRlbnQpO1xuZGVmaW5lKGNoYXJhY3RlcnMuZG9jdW1lbnQub3V0ZGVudCwgS2luZC5PdXRkZW50KTtcbmRlZmluZShjaGFyYWN0ZXJzLmRvY3VtZW50LmFycmF5T3BlbiwgS2luZC5PcGVuKTtcbmRlZmluZShjaGFyYWN0ZXJzLmRvY3VtZW50LmFycmF5Q2xvc2UsIEtpbmQuQ2xvc2UpO1xuZGVmaW5lKGNoYXJhY3RlcnMuZG9jdW1lbnQuYXJyYXlEZWxpbWl0LCBLaW5kLkRlbGltaXQpO1xuZGVmaW5lKGNoYXJhY3RlcnMua2V5cy5tb2RpZmllcnMudXBwZXJDYXNlLCBLaW5kLktleVVwcGVyKTtcbmRlZmluZShjaGFyYWN0ZXJzLmtleXMubW9kaWZpZXJzLnVuaWNvZGUsIEtpbmQuS2V5VW5pY29kZSk7XG5kZWZpbmUoY2hhcmFjdGVycy5rZXlzLm90aGVyLmVtcHR5LCBLaW5kLktleUVtcHR5KTtcbmRlZmluZShjaGFyYWN0ZXJzLnZhbHVlcy5tb2RpZmllcnMudXBwZXJDYXNlLCBLaW5kLlZhbHVlVXBwZXIpO1xuZGVmaW5lKGNoYXJhY3RlcnMudmFsdWVzLm1vZGlmaWVycy51bmljb2RlLCBLaW5kLlZhbHVlVW5pY29kZSk7XG5kZWZpbmUoY2hhcmFjdGVycy52YWx1ZXMubW9kaWZpZXJzLm5lZ2F0aXZlLCBLaW5kLk5lZ2F0aXZlKTtcbmRlZmluZShjaGFyYWN0ZXJzLnZhbHVlcy5vdGhlci5lbXB0eVN0cmluZywgS2luZC5WYWx1ZUVtcHR5KTtcbmRlZmluZShjaGFyYWN0ZXJzLnZhbHVlcy5vdGhlci5udWxsLCBLaW5kLk51bGwpO1xuZGVmaW5lKGNoYXJhY3RlcnMudmFsdWVzLmJvb2xlYW5zLnRydWUsIEtpbmQuVHJ1ZSk7XG5kZWZpbmUoY2hhcmFjdGVycy52YWx1ZXMuYm9vbGVhbnMuZmFsc2UsIEtpbmQuRmFsc2UpO1xuXG5mb3IgKGNvbnN0IFtjaGFyLCBlbW9qaV0gb2YgT2JqZWN0LmVudHJpZXMoY2hhcmFjdGVycy5rZXlzLmxldHRlcnMpKSB7XG4gIGRlZmluZShlbW9qaSwgS2luZC5LZXlDaGFyLCBjaGFyLmNoYXJDb2RlQXQoMCkpO1xufVxuZm9yIChjb25zdCBbY2hhciwgZW1vamldIG9mIE9iamVjdC5lbnRyaWVzKGNoYXJhY3RlcnMua2V5cy5udW1lcmFscykpIHtcbiAgZGVmaW5lKGVtb2ppLCBLaW5kLktleUNoYXIsIGNoYXIuY2hhckNvZGVBdCgwKSk7XG59XG5mb3IgKGNvbnN0IFtoZXgsIGVtb2ppXSBvZiBPYmplY3QuZW50cmllcyhjaGFyYWN0ZXJzLmtleXMudW5pY29kZSkpIHtcbiAgZGVmaW5lKGVtb2ppLCBLaW5kLktleU5pYmJsZSwgcGFyc2VJbnQoaGV4LCAxNikpO1xufVxuZm9yIChjb25zdCBbY2hhciwgZW1vamldIG9mIE9iamVjdC5lbnRyaWVzKGNoYXJhY3RlcnMudmFsdWVzLmxldHRlcnMpKSB7XG4gIGRlZmluZShlbW9qaSwgS2luZC5WYWx1ZUNoYXIsIGNoYXIuY2hhckNvZGVBdCgwKSk7XG59XG5mb3IgKGNvbnN0IFtjaGFyLCBlbW9qaV0gb2YgT2JqZWN0LmVudHJpZXMoY2hhcmFjdGVycy52YWx1ZXMubnVtZXJhbHMpKSB7XG4gIGRlZmluZShlbW9qaSwgS2luZC5WYWx1ZUNoYXIsIGNoYXIuY2hhckNvZGVBdCgwKSk7XG59XG5mb3IgKGNvbnN0IFtoZXgsIGVtb2ppXSBvZiBPYmplY3QuZW50cmllcyhjaGFyYWN0ZXJzLnZhbHVlcy51bmljb2RlKSkge1xuICBkZWZpbmUoZW1vamksIEtpbmQuVmFsdWVOaWJibGUsIHBhcnNlSW50KGhleCwgMTYpKTtcbn1cbmZvciAoY29uc3QgW2NoYXIsIGVtb2ppXSBvZiBPYmplY3QuZW50cmllcyhjaGFyYWN0ZXJzLnZhbHVlcy5udW1iZXJzKSkge1xuICBjb25zdCBraW5kID1cbiAgICBjaGFyID09PSAnLicgPyBLaW5kLkRlY2ltYWwgOiBjaGFyID09PSAnZScgPyBLaW5kLkV4cG9uZW50IDogS2luZC5EaWdpdDtcbiAgZGVmaW5lKGVtb2ppLCBraW5kLCBjaGFyLmNoYXJDb2RlQXQoMCkpO1xufVxuXG4vLyBldmVyeSAvXFxzLyBjaGFyYWN0ZXIsIHBsdXMgdGhlIHZhcmlhdGlvbiBzZWxlY3RvciBzb21lIGVtb2ppIGNhcnJ5XG5mb3IgKGNvbnN0IHNwYWNlIG9mIFtcbiAgMHg5LCAweGEsIDB4YiwgMHhjLCAweGQsIDB4MjAsIDB4YTAsIDB4MTY4MCwgMHgyMDAwLCAweDIwMDEsIDB4MjAwMiwgMHgyMDAzLFxuICAweDIwMDQsIDB4MjAwNSwgMHgyMDA2LCAweDIwMDcsIDB4MjAwOCwgMHgyMDA5LCAweDIwMGEsIDB4MjAyOCwgMHgyMDI5LFxuICAweDIwMmYsIDB4MjA1ZiwgMHgzMDAwLCAweGZlZmYsIDB4ZmUwZixcbl0pIHtcbiAgVE9LRU5TLnNldChzcGFjZSwgS2luZC5TcGFjZSk7XG59XG5cbmxldCBzb3VyY2UgPSAnJztcbmxldCBpbmRleCA9IDA7XG5sZXQgYXQgPSAwO1xubGV0IHBvaW50ID0gMDtcbmxldCBraW5kOiBudW1iZXIgPSBLaW5kLkVPRjtcbmxldCBjb2RlID0gMDtcbmxldCBkZXB0aCA9IDA7XG5cbmZ1bmN0aW9uIG5leHQoKTogbnVtYmVyIHtcbiAgd2hpbGUgKGluZGV4IDwgc291cmNlLmxlbmd0aCkge1xuICAgIGF0ID0gaW5kZXg7XG4gICAgcG9pbnQgPSBzb3VyY2UuY29kZVBvaW50QXQoaW5kZXgpITtcbiAgICBpbmRleCArPSBwb2ludCA+IDB4ZmZmZiA/IDIgOiAxO1xuICAgIGNvbnN0IHRva2VuID0gVE9LRU5TLmdldChwb2ludCkgPz8gS2luZC5JbnZhbGlkO1xuICAgIGlmICh0b2tlbiA9PT0gS2luZC5TcGFjZSkgY29udGludWU7XG4gICAga2luZCA9IHRva2VuICYgMHhmZjtcbiAgICBjb2RlID0gdG9rZW4gPj4gODtcbiAgICByZXR1cm4ga2luZDtcbiAgfVxuICBhdCA9IGluZGV4O1xuICBraW5kID0gS2luZC5FT0Y7XG4gIHJldHVybiBraW5kO1xufVxuXG5mdW5jdGlvbiBmYWlsKCk6IG5ldmVyIHtcbiAgaWYgKGtpbmQgPT09IEtpbmQuRU9GKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdVbmV4cGVjdGVkIGVuZCBvZiBFbW9qaW9uIGlucHV0Jyk7XG4gIH1cbiAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgIGBVbmV4cGVjdGVkIFwiJHtTdHJpbmcuZnJvbUNvZGVQb2ludChwb2ludCl9XCIgaW4gRW1vamlvbiBhdCBwb3NpdGlvbiAke2F0fWBcbiAgKTtcbn1cblxuZnVuY3Rpb24gbmVzdCgpIHtcbiAgaWYgKCsrZGVwdGggPiBNQVhfREVQVEgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgRW1vamlvbiBuZXN0aW5nIGV4Y2VlZHMgJHtNQVhfREVQVEh9IGxldmVscyBhdCBwb3NpdGlvbiAke2F0fWBcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4cGVjdChleHBlY3RlZDogbnVtYmVyKSB7XG4gIGlmIChraW5kICE9PSBleHBlY3RlZCkgZmFpbCgpO1xuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIHRleHQoXG4gIGNoYXI6IG51bWJlcixcbiAgdXBwZXI6IG51bWJlcixcbiAgdW5pY29kZTogbnVtYmVyLFxuICBuaWJibGU6IG51bWJlclxuKTogc3RyaW5nIHtcbiAgbGV0IG91dCA9ICcnO1xuICBsZXQgZW5jb2RlZCA9IGZhbHNlO1xuICBmb3IgKDs7KSB7XG4gICAgaWYgKGtpbmQgPT09IGNoYXIpIHtcbiAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgICAgbmV4dCgpO1xuICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gdXBwZXIpIHtcbiAgICAgIG5leHQoKTtcbiAgICAgIGlmIChraW5kICE9PSBjaGFyIHx8IGNvZGUgPCA5NykgZmFpbCgpO1xuICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSAtIDMyKTtcbiAgICAgIG5leHQoKTtcbiAgICB9IGVsc2UgaWYgKGtpbmQgPT09IHVuaWNvZGUpIHtcbiAgICAgIG5leHQoKTtcbiAgICAgIGlmIChraW5kICE9PSBuaWJibGUpIGZhaWwoKTtcbiAgICAgIC8vIFUrMTBGRkZGLCB0aGUgaGlnaGVzdCBjb2RlIHBvaW50LCBuZWVkcyBzaXggbmliYmxlcy5cbiAgICAgIGxldCB2YWx1ZSA9IDA7XG4gICAgICBsZXQgbmliYmxlcyA9IDA7XG4gICAgICBkbyB7XG4gICAgICAgIGlmICgrK25pYmJsZXMgPiA2KSBmYWlsKCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgKiAxNiArIGNvZGU7XG4gICAgICAgIGlmICh2YWx1ZSA+IDB4MTBmZmZmKSBmYWlsKCk7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0gd2hpbGUgKGtpbmQgPT09IG5pYmJsZSk7XG4gICAgICBvdXQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQodmFsdWUpO1xuICAgICAgZW5jb2RlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbmNvZGVkID8gSlNPTi5zdHJpbmdpZnkob3V0KSA6ICdcIicgKyBvdXQgKyAnXCInO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkaWdpdHMoKTogc3RyaW5nIHtcbiAgaWYgKGtpbmQgIT09IEtpbmQuRGlnaXQpIGZhaWwoKTtcbiAgbGV0IG91dCA9ICcnO1xuICBkbyB7XG4gICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgbmV4dCgpO1xuICB9IHdoaWxlIChraW5kID09PSBLaW5kLkRpZ2l0KTtcbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gbnVtYmVyKCk6IHN0cmluZyB7XG4gIGxldCBvdXQgPSAnJztcbiAgaWYgKGtpbmQgPT09IEtpbmQuTmVnYXRpdmUpIHtcbiAgICBvdXQgPSAnLSc7XG4gICAgbmV4dCgpO1xuICB9XG4gIGlmIChraW5kID09PSBLaW5kLkRpZ2l0ICYmIGNvZGUgPT09IDQ4KSB7XG4gICAgb3V0ICs9ICcwJztcbiAgICBuZXh0KCk7XG4gICAgaWYgKGtpbmQgPT09IEtpbmQuRGlnaXQpIGZhaWwoKTtcbiAgfSBlbHNlIHtcbiAgICBvdXQgKz0gZGlnaXRzKCk7XG4gIH1cbiAgaWYgKGtpbmQgPT09IEtpbmQuRGVjaW1hbCkge1xuICAgIG5leHQoKTtcbiAgICBvdXQgKz0gJy4nICsgZGlnaXRzKCk7XG4gIH1cbiAgaWYgKGtpbmQgPT09IEtpbmQuRXhwb25lbnQpIHtcbiAgICBpZiAobmV4dCgpID09PSBLaW5kLk5lZ2F0aXZlKSB7XG4gICAgICBvdXQgKz0gJ2UtJztcbiAgICAgIG5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdlKyc7XG4gICAgfVxuICAgIG91dCArPSBkaWdpdHMoKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBtZW1iZXJzKGNsb3NlOiBudW1iZXIpOiBzdHJpbmcge1xuICBsZXQgb3V0ID0gJ3snO1xuICB3aGlsZSAoa2luZCAhPT0gY2xvc2UpIHtcbiAgICBpZiAob3V0ICE9PSAneycpIG91dCArPSAnLCc7XG4gICAgaWYgKGtpbmQgPT09IEtpbmQuS2V5RW1wdHkpIHtcbiAgICAgIG91dCArPSAnXCJcIic7XG4gICAgICBuZXh0KCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGtpbmQgPT09IEtpbmQuS2V5Q2hhciB8fFxuICAgICAga2luZCA9PT0gS2luZC5LZXlVcHBlciB8fFxuICAgICAga2luZCA9PT0gS2luZC5LZXlVbmljb2RlXG4gICAgKSB7XG4gICAgICBvdXQgKz0gdGV4dChLaW5kLktleUNoYXIsIEtpbmQuS2V5VXBwZXIsIEtpbmQuS2V5VW5pY29kZSwgS2luZC5LZXlOaWJibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmYWlsKCk7XG4gICAgfVxuICAgIG91dCArPSAnOicgKyB2YWx1ZSgpO1xuICB9XG4gIHJldHVybiBvdXQgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIGFycmF5KCk6IHN0cmluZyB7XG4gIGlmIChuZXh0KCkgPT09IEtpbmQuQ2xvc2UpIHtcbiAgICBuZXh0KCk7XG4gICAgcmV0dXJuICdbXSc7XG4gIH1cbiAgbGV0IG91dCA9ICdbJyArIHZhbHVlKCk7XG4gIHdoaWxlIChraW5kID09PSBLaW5kLkRlbGltaXQpIHtcbiAgICBuZXh0KCk7XG4gICAgb3V0ICs9ICcsJyArIHZhbHVlKCk7XG4gIH1cbiAgZXhwZWN0KEtpbmQuQ2xvc2UpO1xuICByZXR1cm4gb3V0ICsgJ10nO1xufVxuXG5mdW5jdGlvbiB2YWx1ZSgpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIEtpbmQuSW5kZW50OiB7XG4gICAgICBuZXN0KCk7XG4gICAgICBuZXh0KCk7XG4gICAgICBjb25zdCBvdXQgPSBtZW1iZXJzKEtpbmQuT3V0ZGVudCk7XG4gICAgICBuZXh0KCk7XG4gICAgICBkZXB0aC0tO1xuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgY2FzZSBLaW5kLk9wZW46IHtcbiAgICAgIG5lc3QoKTtcbiAgICAgIGNvbnN0IG91dCA9IGFycmF5KCk7XG4gICAgICBkZXB0aC0tO1xuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgY2FzZSBLaW5kLlRydWU6XG4gICAgICBuZXh0KCk7XG4gICAgICByZXR1cm4gJ3RydWUnO1xuICAgIGNhc2UgS2luZC5GYWxzZTpcbiAgICAgIG5leHQoKTtcbiAgICAgIHJldHVybiAnZmFsc2UnO1xuICAgIGNhc2UgS2luZC5OdWxsOlxuICAgICAgbmV4dCgpO1xuICAgICAgcmV0dXJuICdudWxsJztcbiAgICBjYXNlIEtpbmQuVmFsdWVFbXB0eTpcbiAgICAgIG5leHQoKTtcbiAgICAgIHJldHVybiAnXCJcIic7XG4gICAgY2FzZSBLaW5kLk5lZ2F0aXZlOlxuICAgIGNhc2UgS2luZC5EaWdpdDpcbiAgICAgIHJldHVybiBudW1iZXIoKTtcbiAgICBjYXNlIEtpbmQuVmFsdWVDaGFyOlxuICAgIGNhc2UgS2luZC5WYWx1ZVVwcGVyOlxuICAgIGNhc2UgS2luZC5WYWx1ZVVuaWNvZGU6XG4gICAgICByZXR1cm4gdGV4dChcbiAgICAgICAgS2luZC5WYWx1ZUNoYXIsXG4gICAgICAgIEtpbmQuVmFsdWVVcHBlcixcbiAgICAgICAgS2luZC5WYWx1ZVVuaWNvZGUsXG4gICAgICAgIEtpbmQuVmFsdWVOaWJibGVcbiAgICAgICk7XG4gIH1cbiAgcmV0dXJuIGZhaWwoKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIEVtb2ppb24gZG9jdW1lbnQgaW50byBKU09OIHRleHQuXG4gKiBUaHJvd3MgYSBgU3ludGF4RXJyb3JgIGlmIHRoZSBkb2N1bWVudCBpcyBub3QgdmFsaWQgRW1vamlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogcGFyc2UoJ/CfmYzwn5i28J+YoPCfpJHwn5iz8J+RofCfkJjwn5CB8J+mifCfppLwn5CW8J+mifCfpo/inIsnKTtcbiAqIC8vPT4gJ3tcIm5hbWVcIjpcIkVtb2ppb25cIn0nXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgc291cmNlID0gaW5wdXQ7XG4gIGluZGV4ID0gMDtcbiAgZGVwdGggPSAwO1xuICB0cnkge1xuICAgIG5leHQoKTtcbiAgICBleHBlY3QoS2luZC5TdGFydCk7XG4gICAgLy8gQSB0b3AtbGV2ZWwgb2JqZWN0IGlzIHdyaXR0ZW4gd2l0aG91dCDwn5GJ8J+RiC5cbiAgICBpZiAoa2luZCA9PT0gS2luZC5JbmRlbnQpIGZhaWwoKTtcbiAgICBjb25zdCBvdXQgPVxuICAgICAga2luZCA9PT0gS2luZC5FbmQgfHxcbiAgICAgIGtpbmQgPT09IEtpbmQuS2V5RW1wdHkgfHxcbiAgICAgIGtpbmQgPT09IEtpbmQuS2V5Q2hhciB8fFxuICAgICAga2luZCA9PT0gS2luZC5LZXlVcHBlciB8fFxuICAgICAga2luZCA9PT0gS2luZC5LZXlVbmljb2RlXG4gICAgICAgID8gbWVtYmVycyhLaW5kLkVuZClcbiAgICAgICAgOiB2YWx1ZSgpO1xuICAgIGV4cGVjdChLaW5kLkVuZCk7XG4gICAgaWYgKGtpbmQgIT09IEtpbmQuRU9GKSBmYWlsKCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfSBmaW5hbGx5IHtcbiAgICBzb3VyY2UgPSAnJztcbiAgfVxufTtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "emj",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Emoji Object Notation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -18,59 +18,53 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"lib"
|
|
20
20
|
],
|
|
21
|
-
"main": "lib/
|
|
21
|
+
"main": "lib/index.js",
|
|
22
|
+
"types": "lib/index.d.ts",
|
|
22
23
|
"scripts": {
|
|
23
24
|
"clean": "rimraf lib && rimraf coverage",
|
|
24
25
|
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.{ts,cjs}\" README.md",
|
|
25
26
|
"format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.{ts,cjs}\" README.md",
|
|
26
27
|
"lint": "eslint src/**/*.ts",
|
|
27
28
|
"prebuild": "npm run clean && npm run format:check && npm run lint && echo Using TypeScript && tsc --version",
|
|
28
|
-
"build": "npm run build:
|
|
29
|
-
"build:grammar": "mkdir -p gen && nearleyc src/grammar.ne -o gen/grammar.ts && replace-in-file \"Lexer: lexer,\" \"// @ts-ignore\nLexer: lexer,\" gen/grammar.ts",
|
|
29
|
+
"build": "npm run build:lib && npm run build:bundle",
|
|
30
30
|
"build:bundle": "npm run rollup",
|
|
31
31
|
"build:lib": "tsc --pretty",
|
|
32
32
|
"start": "npm run build && npm run test",
|
|
33
|
-
"test": "
|
|
33
|
+
"test": "vitest run --allowOnly=false",
|
|
34
34
|
"test:consumer": "node test/consumer-smoke.cjs .",
|
|
35
|
-
"coverage": "
|
|
35
|
+
"coverage": "vitest run --coverage",
|
|
36
36
|
"update": "ncu -u && npm i && npm test",
|
|
37
37
|
"rollup": "rollup --config rollup.config.mjs",
|
|
38
38
|
"watch": "npm run build -- --watch",
|
|
39
|
-
"watch:test": "vitest"
|
|
40
|
-
|
|
41
|
-
"dependencies": {
|
|
42
|
-
"lodash": "^4.18.1",
|
|
43
|
-
"moo": "^0.5.3",
|
|
44
|
-
"nearley": "^2.20.1"
|
|
39
|
+
"watch:test": "vitest",
|
|
40
|
+
"bench": "npm run build:lib && node --expose-gc bench/index.mjs"
|
|
45
41
|
},
|
|
46
42
|
"devDependencies": {
|
|
47
|
-
"@emnapi/core": "^1.
|
|
48
|
-
"@emnapi/runtime": "^1.
|
|
43
|
+
"@emnapi/core": "^1.11.3",
|
|
44
|
+
"@emnapi/runtime": "^1.11.3",
|
|
49
45
|
"@eslint/js": "^10.0.1",
|
|
50
|
-
"@rollup/plugin-
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"
|
|
56
|
-
"@types/node": "^26.1.1",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.59.2",
|
|
58
|
-
"@typescript-eslint/parser": "^8.59.2",
|
|
59
|
-
"@vitest/coverage-v8": "^4.1.8",
|
|
60
|
-
"eslint": "^10.3.0",
|
|
46
|
+
"@rollup/plugin-typescript": "^12.3.1",
|
|
47
|
+
"@types/node": "^26.6.6",
|
|
48
|
+
"@typescript-eslint/eslint-plugin": "^8.72.2",
|
|
49
|
+
"@typescript-eslint/parser": "^8.72.2",
|
|
50
|
+
"@vitest/coverage-v8": "^5.1.0",
|
|
51
|
+
"eslint": "^10.14.0",
|
|
61
52
|
"eslint-config-prettier": "^10.1.8",
|
|
62
|
-
"eslint-plugin-prettier": "^5.5.
|
|
63
|
-
"globals": "^17.
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"rimraf": "^6.1.
|
|
68
|
-
"rollup": "^4.
|
|
69
|
-
"tslib": "^2.
|
|
53
|
+
"eslint-plugin-prettier": "^5.5.7",
|
|
54
|
+
"globals": "^17.14.0",
|
|
55
|
+
"mitata": "^1.0.34",
|
|
56
|
+
"npm-check-updates": "^23.1.1",
|
|
57
|
+
"prettier": "^3.10.0",
|
|
58
|
+
"rimraf": "^6.1.4",
|
|
59
|
+
"rollup": "^4.68.2",
|
|
60
|
+
"tslib": "^2.9.1",
|
|
70
61
|
"typescript": "^6.0.3",
|
|
71
|
-
"vitest": "^
|
|
62
|
+
"vitest": "^5.1.0"
|
|
72
63
|
},
|
|
73
64
|
"engines": {
|
|
74
65
|
"node": ">=10.0.0"
|
|
66
|
+
},
|
|
67
|
+
"overrides": {
|
|
68
|
+
"minimatch": "^11.0.1"
|
|
75
69
|
}
|
|
76
70
|
}
|
package/lib/gen/grammar.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function id(d) { return d[0]; }
|
|
4
|
-
const lexer_1 = require("../src/lexer");
|
|
5
|
-
const postprocessor_1 = require("../src/postprocessor");
|
|
6
|
-
;
|
|
7
|
-
;
|
|
8
|
-
;
|
|
9
|
-
;
|
|
10
|
-
const grammar = {
|
|
11
|
-
Lexer: lexer_1.lexer,
|
|
12
|
-
ParserRules: [
|
|
13
|
-
{ "name": "document", "symbols": [(lexer_1.lexer.has("documentStart") ? { type: "documentStart" } : documentStart), "content", (lexer_1.lexer.has("documentEnd") ? { type: "documentEnd" } : documentEnd)], "postprocess": postprocessor_1.TAKESECOND },
|
|
14
|
-
{ "name": "content", "symbols": ["properties"], "postprocess": postprocessor_1.SELF },
|
|
15
|
-
{ "name": "content", "symbols": ["array"], "postprocess": postprocessor_1.SELF },
|
|
16
|
-
{ "name": "content", "symbols": [(lexer_1.lexer.has("valueBool") ? { type: "valueBool" } : valueBool)], "postprocess": postprocessor_1.CONVERT },
|
|
17
|
-
{ "name": "content", "symbols": [(lexer_1.lexer.has("valueNull") ? { type: "valueNull" } : valueNull)], "postprocess": postprocessor_1.CONVERT },
|
|
18
|
-
{ "name": "properties$ebnf$1", "symbols": [] },
|
|
19
|
-
{ "name": "properties$ebnf$1", "symbols": ["properties$ebnf$1", "property"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
20
|
-
{ "name": "properties", "symbols": ["properties$ebnf$1"], "postprocess": postprocessor_1.ASSEMBLEOBJECT },
|
|
21
|
-
{ "name": "property", "symbols": ["key", "value"], "postprocess": postprocessor_1.PAIR },
|
|
22
|
-
{ "name": "object", "symbols": [(lexer_1.lexer.has("documentIndent") ? { type: "documentIndent" } : documentIndent), "properties", (lexer_1.lexer.has("documentOutdent") ? { type: "documentOutdent" } : documentOutdent)], "postprocess": postprocessor_1.TAKESECOND },
|
|
23
|
-
{ "name": "key$ebnf$1", "symbols": ["keySection"] },
|
|
24
|
-
{ "name": "key$ebnf$1", "symbols": ["key$ebnf$1", "keySection"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
25
|
-
{ "name": "key", "symbols": ["key$ebnf$1"], "postprocess": postprocessor_1.WRAPSTRING },
|
|
26
|
-
{ "name": "key", "symbols": [(lexer_1.lexer.has("keyEmptyString") ? { type: "keyEmptyString" } : keyEmptyString)], "postprocess": postprocessor_1.EMPTYSTRING },
|
|
27
|
-
{ "name": "keySection", "symbols": ["keyUnicodeCharacter"], "postprocess": postprocessor_1.BUILDUNICODE },
|
|
28
|
-
{ "name": "keySection", "symbols": ["keyCharacter"] },
|
|
29
|
-
{ "name": "keyUnicodeCharacter", "symbols": [(lexer_1.lexer.has("keyModifierUnicode") ? { type: "keyModifierUnicode" } : keyModifierUnicode), "keyUnicodeNibbles"], "postprocess": postprocessor_1.TAKESECOND },
|
|
30
|
-
{ "name": "keyUnicodeNibbles$ebnf$1", "symbols": [] },
|
|
31
|
-
{ "name": "keyUnicodeNibbles$ebnf$1", "symbols": ["keyUnicodeNibbles$ebnf$1", (lexer_1.lexer.has("keyUnicodeNibble") ? { type: "keyUnicodeNibble" } : keyUnicodeNibble)], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
32
|
-
{ "name": "keyUnicodeNibbles", "symbols": ["keyUnicodeNibbles$ebnf$1"], "postprocess": postprocessor_1.CONVERTMULTIPLE },
|
|
33
|
-
{ "name": "keyCharacter", "symbols": ["keyLowerCaseLetter"] },
|
|
34
|
-
{ "name": "keyCharacter", "symbols": ["keyUpperCaseLetter"] },
|
|
35
|
-
{ "name": "keyCharacter", "symbols": ["keyNumeral"] },
|
|
36
|
-
{ "name": "keyLowerCaseLetter", "symbols": [(lexer_1.lexer.has("keyLetter") ? { type: "keyLetter" } : keyLetter)], "postprocess": postprocessor_1.CONVERT },
|
|
37
|
-
{ "name": "keyUpperCaseLetter", "symbols": [(lexer_1.lexer.has("keyModifierUpper") ? { type: "keyModifierUpper" } : keyModifierUpper), (lexer_1.lexer.has("keyLetter") ? { type: "keyLetter" } : keyLetter)], "postprocess": postprocessor_1.CONVERTUPPER },
|
|
38
|
-
{ "name": "keyNumeral", "symbols": [(lexer_1.lexer.has("keyNumeral") ? { type: "keyNumeral" } : keyNumeral)], "postprocess": postprocessor_1.CONVERT },
|
|
39
|
-
{ "name": "value", "symbols": ["object"] },
|
|
40
|
-
{ "name": "value", "symbols": ["array"] },
|
|
41
|
-
{ "name": "value", "symbols": ["string"] },
|
|
42
|
-
{ "name": "value", "symbols": ["integer"], "postprocess": postprocessor_1.SELF },
|
|
43
|
-
{ "name": "value", "symbols": ["float"], "postprocess": postprocessor_1.SELF },
|
|
44
|
-
{ "name": "value", "symbols": [(lexer_1.lexer.has("valueBool") ? { type: "valueBool" } : valueBool)], "postprocess": postprocessor_1.CONVERT },
|
|
45
|
-
{ "name": "value", "symbols": [(lexer_1.lexer.has("valueNull") ? { type: "valueNull" } : valueNull)], "postprocess": postprocessor_1.CONVERT },
|
|
46
|
-
{ "name": "integer$ebnf$1", "symbols": [(lexer_1.lexer.has("valueModifierNegative") ? { type: "valueModifierNegative" } : valueModifierNegative)], "postprocess": id },
|
|
47
|
-
{ "name": "integer$ebnf$1", "symbols": [], "postprocess": () => null },
|
|
48
|
-
{ "name": "integer$ebnf$2", "symbols": ["number"] },
|
|
49
|
-
{ "name": "integer$ebnf$2", "symbols": ["integer$ebnf$2", "number"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
50
|
-
{ "name": "integer", "symbols": ["integer$ebnf$1", "integer$ebnf$2"], "postprocess": postprocessor_1.BUILDINT },
|
|
51
|
-
{ "name": "float$ebnf$1", "symbols": [(lexer_1.lexer.has("valueModifierNegative") ? { type: "valueModifierNegative" } : valueModifierNegative)], "postprocess": id },
|
|
52
|
-
{ "name": "float$ebnf$1", "symbols": [], "postprocess": () => null },
|
|
53
|
-
{ "name": "float$ebnf$2", "symbols": ["number"] },
|
|
54
|
-
{ "name": "float$ebnf$2", "symbols": ["float$ebnf$2", "number"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
55
|
-
{ "name": "float$ebnf$3", "symbols": ["number"] },
|
|
56
|
-
{ "name": "float$ebnf$3", "symbols": ["float$ebnf$3", "number"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
57
|
-
{ "name": "float", "symbols": ["float$ebnf$1", "float$ebnf$2", "decimalPoint", "float$ebnf$3"], "postprocess": postprocessor_1.BUILDFLOAT },
|
|
58
|
-
{ "name": "decimalPoint", "symbols": [(lexer_1.lexer.has("valueDecimal") ? { type: "valueDecimal" } : valueDecimal)], "postprocess": postprocessor_1.CONVERT },
|
|
59
|
-
{ "name": "array$ebnf$1", "symbols": [] },
|
|
60
|
-
{ "name": "array$ebnf$1", "symbols": ["array$ebnf$1", "additionalArrayItem"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
61
|
-
{ "name": "array", "symbols": [(lexer_1.lexer.has("arrayOpen") ? { type: "arrayOpen" } : arrayOpen), "initialArrayItem", "array$ebnf$1", (lexer_1.lexer.has("arrayClose") ? { type: "arrayClose" } : arrayClose)], "postprocess": postprocessor_1.COLLAPSEARRAY },
|
|
62
|
-
{ "name": "initialArrayItem", "symbols": ["value"] },
|
|
63
|
-
{ "name": "additionalArrayItem", "symbols": [(lexer_1.lexer.has("arrayDelimit") ? { type: "arrayDelimit" } : arrayDelimit), "value"], "postprocess": postprocessor_1.TAKESECOND },
|
|
64
|
-
{ "name": "string$ebnf$1", "symbols": ["valueStringSection"] },
|
|
65
|
-
{ "name": "string$ebnf$1", "symbols": ["string$ebnf$1", "valueStringSection"], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
66
|
-
{ "name": "string", "symbols": ["string$ebnf$1"], "postprocess": postprocessor_1.CONCATWRAPSTRING },
|
|
67
|
-
{ "name": "string", "symbols": [(lexer_1.lexer.has("valueEmptyString") ? { type: "valueEmptyString" } : valueEmptyString)], "postprocess": postprocessor_1.EMPTYSTRING },
|
|
68
|
-
{ "name": "valueStringSection", "symbols": ["valueStringUnicodeCharacter"], "postprocess": postprocessor_1.BUILDUNICODE },
|
|
69
|
-
{ "name": "valueStringSection", "symbols": ["valueStringCharacter"] },
|
|
70
|
-
{ "name": "valueStringUnicodeCharacter", "symbols": [(lexer_1.lexer.has("valueModifierUnicode") ? { type: "valueModifierUnicode" } : valueModifierUnicode), "valueUnicodeNibbles"], "postprocess": postprocessor_1.TAKESECOND },
|
|
71
|
-
{ "name": "valueUnicodeNibbles$ebnf$1", "symbols": [(lexer_1.lexer.has("valueUnicodeNibble") ? { type: "valueUnicodeNibble" } : valueUnicodeNibble)] },
|
|
72
|
-
{ "name": "valueUnicodeNibbles$ebnf$1", "symbols": ["valueUnicodeNibbles$ebnf$1", (lexer_1.lexer.has("valueUnicodeNibble") ? { type: "valueUnicodeNibble" } : valueUnicodeNibble)], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
73
|
-
{ "name": "valueUnicodeNibbles", "symbols": ["valueUnicodeNibbles$ebnf$1"], "postprocess": postprocessor_1.CONVERTMULTIPLE },
|
|
74
|
-
{ "name": "valueStringCharacter", "symbols": ["valueLowerCaseLetter"] },
|
|
75
|
-
{ "name": "valueStringCharacter", "symbols": ["valueUpperCaseLetter"] },
|
|
76
|
-
{ "name": "valueStringCharacter", "symbols": ["valueNumeral"] },
|
|
77
|
-
{ "name": "valueLowerCaseLetter", "symbols": [(lexer_1.lexer.has("valueLetter") ? { type: "valueLetter" } : valueLetter)], "postprocess": postprocessor_1.CONVERT },
|
|
78
|
-
{ "name": "valueUpperCaseLetter", "symbols": [(lexer_1.lexer.has("valueModifierUpper") ? { type: "valueModifierUpper" } : valueModifierUpper), (lexer_1.lexer.has("valueLetter") ? { type: "valueLetter" } : valueLetter)], "postprocess": postprocessor_1.CONVERTUPPER },
|
|
79
|
-
{ "name": "valueNumeral", "symbols": [(lexer_1.lexer.has("valueNumeral") ? { type: "valueNumeral" } : valueNumeral)], "postprocess": postprocessor_1.CONVERT },
|
|
80
|
-
{ "name": "number", "symbols": [(lexer_1.lexer.has("valueNumber") ? { type: "valueNumber" } : valueNumber)], "postprocess": postprocessor_1.CONVERT }
|
|
81
|
-
],
|
|
82
|
-
ParserStart: "document",
|
|
83
|
-
};
|
|
84
|
-
exports.default = grammar;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhbW1hci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbi9ncmFtbWFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsU0FBUyxFQUFFLENBQUMsQ0FBUSxJQUFTLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQTBCekMsd0NBQW9DO0FBQ3BDLHdEQWUrQjtBQUtoQyxDQUFDO0FBUUQsQ0FBQztBQU1ELENBQUM7QUFRRCxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQVk7SUFFekIsS0FBSyxFQUFFLGFBQUs7SUFDVixXQUFXLEVBQUU7UUFDWCxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLDBCQUFVLEVBQUM7UUFDak4sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLGFBQWEsRUFBRSxvQkFBSSxFQUFDO1FBQ25FLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLEVBQUUsb0JBQUksRUFBQztRQUM5RCxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxD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LEVBQUUsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsNEJBQVksRUFBQztRQUNuTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsdUJBQU8sRUFBQztRQUNsSSxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsdUJBQU8sRUFBQztLQUMxSDtJQUNELFdBQVcsRUFBRSxVQUFVO0NBQ3hCLENBQUM7QUFFRixrQkFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBuZWFybGV5LCB2ZXJzaW9uIDIuMjAuMVxuLy8gaHR0cDovL2dpdGh1Yi5jb20vSGFyZG1hdGgxMjMvbmVhcmxleVxuLy8gQnlwYXNzZXMgVFM2MTMzLiBBbGxvdyBkZWNsYXJlZCBidXQgdW51c2VkIGZ1bmN0aW9ucy5cbi8vIEB0cy1pZ25vcmVcbmZ1bmN0aW9uIGlkKGQ6IGFueVtdKTogYW55IHsgcmV0dXJuIGRbMF07IH1cbmRlY2xhcmUgdmFyIGRvY3VtZW50U3RhcnQ6IGFueTtcbmRlY2xhcmUgdmFyIGRvY3VtZW50RW5kOiBhbnk7XG5kZWNsYXJlIHZhciB2YWx1ZUJvb2w6IGFueTtcbmRlY2xhcmUgdmFyIHZhbHVlTnVsbDogYW55O1xuZGVjbGFyZSB2YXIgZG9jdW1lbnRJbmRlbnQ6IGFueTtcbmRlY2xhcmUgdmFyIGRvY3VtZW50T3V0ZGVudDogYW55O1xuZGVjbGFyZSB2YXIga2V5RW1wdHlTdHJpbmc6IGFueTtcbmRlY2xhcmUgdmFyIGtleU1vZGlmaWVyVW5pY29kZTogYW55O1xuZGVjbGFyZSB2YXIga2V5VW5pY29kZU5pYmJsZTogYW55O1xuZGVjbGFyZSB2YXIga2V5TGV0dGVyOiBhbnk7XG5kZWNsYXJlIHZhciBrZXlNb2RpZmllclVwcGVyOiBhbnk7XG5kZWNsYXJlIHZhciBrZXlOdW1lcmFsOiBhbnk7XG5kZWNsYXJlIHZhciB2YWx1ZU1vZGlmaWVyTmVnYXRpdmU6IGFueTtcbmRlY2xhcmUgdmFyIHZhbHVlRGVjaW1hbDogYW55O1xuZGVjbGFyZSB2YXIgYXJyYXlPcGVuOiBhbnk7XG5kZWNsYXJlIHZhciBhcnJheUNsb3NlOiBhbnk7XG5kZWNsYXJlIHZhciBhcnJheURlbGltaXQ6IGFueTtcbmRlY2xhcmUgdmFyIHZhbHVlRW1wdHlTdHJpbmc6IGFueTtcbmRlY2xhcmUgdmFyIHZhbHVlTW9kaWZpZXJVbmljb2RlOiBhbnk7XG5kZWNsYXJlIHZhciB2YWx1ZVVuaWNvZGVOaWJibGU6IGFueTtcbmRlY2xhcmUgdmFyIHZhbHVlTGV0dGVyOiBhbnk7XG5kZWNsYXJlIHZhciB2YWx1ZU1vZGlmaWVyVXBwZXI6IGFueTtcbmRlY2xhcmUgdmFyIHZhbHVlTnVtZXJhbDogYW55O1xuZGVjbGFyZSB2YXIgdmFsdWVOdW1iZXI6IGFueTtcblxuICBpbXBvcnQgeyBsZXhlciB9IGZyb20gJy4uL3NyYy9sZXhlcidcbiAgaW1wb3J0IHtcbiAgICBBU1NFTUJMRU9CSkVDVCxcbiAgICBCVUlMREZMT0FULFxuICAgIEJVSUxESU5ULFxuICAgIEJVSUxEVU5JQ09ERSxcbiAgICBDT0xMQVBTRUFSUkFZLFxuICAgIENPTkNBVFdSQVBTVFJJTkcsXG4gICAgQ09OVkVSVCxcbiAgICBDT05WRVJUTVVMVElQTEUsXG4gICAgQ09OVkVSVFVQUEVSLFxuICAgIEVNUFRZU1RSSU5HLFxuICAgIFBBSVIsXG4gICAgU0VMRixcbiAgICBUQUtFU0VDT05ELFxuICAgIFdSQVBTVFJJTkdcbiAgICB9IGZyb20gJy4uL3NyYy9wb3N0cHJvY2Vzc29yJ1xuXG5pbnRlcmZhY2UgTmVhcmxleVRva2VuIHtcbiAgdmFsdWU6IGFueTtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuaW50ZXJmYWNlIE5lYXJsZXlMZXhlciB7XG4gIHJlc2V0OiAoY2h1bms6IHN0cmluZywgaW5mbzogYW55KSA9PiB2b2lkO1xuICBuZXh0OiAoKSA9PiBOZWFybGV5VG9rZW4gfCB1bmRlZmluZWQ7XG4gIHNhdmU6ICgpID0+IGFueTtcbiAgZm9ybWF0RXJyb3I6ICh0b2tlbjogbmV2ZXIpID0+IHN0cmluZztcbiAgaGFzOiAodG9rZW5UeXBlOiBzdHJpbmcpID0+IGJvb2xlYW47XG59O1xuXG5pbnRlcmZhY2UgTmVhcmxleVJ1bGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHN5bWJvbHM6IE5lYXJsZXlTeW1ib2xbXTtcbiAgcG9zdHByb2Nlc3M/OiAoZDogYW55W10sIGxvYz86IG51bWJlciwgcmVqZWN0Pzoge30pID0+IGFueTtcbn07XG5cbnR5cGUgTmVhcmxleVN5bWJvbCA9IHN0cmluZyB8IHsgbGl0ZXJhbDogYW55IH0gfCB7IHRlc3Q6ICh0b2tlbjogYW55KSA9PiBib29sZWFuIH07XG5cbmludGVyZmFjZSBHcmFtbWFyIHtcbiAgTGV4ZXI6IE5lYXJsZXlMZXhlciB8IHVuZGVmaW5lZDtcbiAgUGFyc2VyUnVsZXM6IE5lYXJsZXlSdWxlW107XG4gIFBhcnNlclN0YXJ0OiBzdHJpbmc7XG59O1xuXG5jb25zdCBncmFtbWFyOiBHcmFtbWFyID0ge1xuICAvLyBAdHMtaWdub3JlXG5MZXhlcjogbGV4ZXIsXG4gIFBhcnNlclJ1bGVzOiBbXG4gICAge1wibmFtZVwiOiBcImRvY3VtZW50XCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcImRvY3VtZW50U3RhcnRcIikgPyB7dHlwZTogXCJkb2N1bWVudFN0YXJ0XCJ9IDogZG9jdW1lbnRTdGFydCksIFwiY29udGVudFwiLCAobGV4ZXIuaGFzKFwiZG9jdW1lbnRFbmRcIikgPyB7dHlwZTogXCJkb2N1bWVudEVuZFwifSA6IGRvY3VtZW50RW5kKV0sIFwicG9zdHByb2Nlc3NcIjogVEFLRVNFQ09ORH0sXG4gICAge1wibmFtZVwiOiBcImNvbnRlbnRcIiwgXCJzeW1ib2xzXCI6IFtcInByb3BlcnRpZXNcIl0sIFwicG9zdHByb2Nlc3NcIjogU0VMRn0sXG4gICAge1wibmFtZVwiOiBcImNvbnRlbnRcIiwgXCJzeW1ib2xzXCI6IFtcImFycmF5XCJdLCBcInBvc3Rwcm9jZXNzXCI6IFNFTEZ9LFxuICAgIHtcIm5hbWVcIjogXCJjb250ZW50XCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlQm9vbFwiKSA/IHt0eXBlOiBcInZhbHVlQm9vbFwifSA6IHZhbHVlQm9vbCldLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlR9LFxuICAgIHtcIm5hbWVcIjogXCJjb250ZW50XCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlTnVsbFwiKSA/IHt0eXBlOiBcInZhbHVlTnVsbFwifSA6IHZhbHVlTnVsbCldLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlR9LFxuICAgIHtcIm5hbWVcIjogXCJwcm9wZXJ0aWVzJGVibmYkMVwiLCBcInN5bWJvbHNcIjogW119LFxuICAgIHtcIm5hbWVcIjogXCJwcm9wZXJ0aWVzJGVibmYkMVwiLCBcInN5bWJvbHNcIjogW1wicHJvcGVydGllcyRlYm5mJDFcIiwgXCJwcm9wZXJ0eVwiXSwgXCJwb3N0cHJvY2Vzc1wiOiAoZCkgPT4gZFswXS5jb25jYXQoW2RbMV1dKX0sXG4gICAge1wibmFtZVwiOiBcInByb3BlcnRpZXNcIiwgXCJzeW1ib2xzXCI6IFtcInByb3BlcnRpZXMkZWJuZiQxXCJdLCBcInBvc3Rwcm9jZXNzXCI6IEFTU0VNQkxFT0JKRUNUfSxcbiAgICB7XCJuYW1lXCI6IFwicHJvcGVydHlcIiwgXCJzeW1ib2xzXCI6IFtcImtleVwiLCBcInZhbHVlXCJdLCBcInBvc3Rwcm9jZXNzXCI6IFBBSVJ9LFxuICAgIHtcIm5hbWVcIjogXCJvYmplY3RcIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwiZG9jdW1lbnRJbmRlbnRcIikgPyB7dHlwZTogXCJkb2N1bWVudEluZGVudFwifSA6IGRvY3VtZW50SW5kZW50KSwgXCJwcm9wZXJ0aWVzXCIsIChsZXhlci5oYXMoXCJkb2N1bWVudE91dGRlbnRcIikgPyB7dHlwZTogXCJkb2N1bWVudE91dGRlbnRcIn0gOiBkb2N1bWVudE91dGRlbnQpXSwgXCJwb3N0cHJvY2Vzc1wiOiBUQUtFU0VDT05EfSxcbiAgICB7XCJuYW1lXCI6IFwia2V5JGVibmYkMVwiLCBcInN5bWJvbHNcIjogW1wia2V5U2VjdGlvblwiXX0sXG4gICAge1wibmFtZVwiOiBcImtleSRlYm5mJDFcIiwgXCJzeW1ib2xzXCI6IFtcImtleSRlYm5mJDFcIiwgXCJrZXlTZWN0aW9uXCJdLCBcInBvc3Rwcm9jZXNzXCI6IChkKSA9PiBkWzBdLmNvbmNhdChbZFsxXV0pfSxcbiAgICB7XCJuYW1lXCI6IFwia2V5XCIsIFwic3ltYm9sc1wiOiBbXCJrZXkkZWJuZiQxXCJdLCBcInBvc3Rwcm9jZXNzXCI6IFdSQVBTVFJJTkd9LFxuICAgIHtcIm5hbWVcIjogXCJrZXlcIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwia2V5RW1wdHlTdHJpbmdcIikgPyB7dHlwZTogXCJrZXlFbXB0eVN0cmluZ1wifSA6IGtleUVtcHR5U3RyaW5nKV0sIFwicG9zdHByb2Nlc3NcIjogRU1QVFlTVFJJTkd9LFxuICAgIHtcIm5hbWVcIjogXCJrZXlTZWN0aW9uXCIsIFwic3ltYm9sc1wiOiBbXCJrZXlVbmljb2RlQ2hhcmFjdGVyXCJdLCBcInBvc3Rwcm9jZXNzXCI6IEJVSUxEVU5JQ09ERX0sXG4gICAge1wibmFtZVwiOiBcImtleVNlY3Rpb25cIiwgXCJzeW1ib2xzXCI6IFtcImtleUNoYXJhY3RlclwiXX0sXG4gICAge1wibmFtZVwiOiBcImtleVVuaWNvZGVDaGFyYWN0ZXJcIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwia2V5TW9kaWZpZXJVbmljb2RlXCIpID8ge3R5cGU6IFwia2V5TW9kaWZpZXJVbmljb2RlXCJ9IDoga2V5TW9kaWZpZXJVbmljb2RlKSwgXCJrZXlVbmljb2RlTmliYmxlc1wiXSwgXCJwb3N0cHJvY2Vzc1wiOiBUQUtFU0VDT05EfSxcbiAgICB7XCJuYW1lXCI6IFwia2V5VW5pY29kZU5pYmJsZXMkZWJuZiQxXCIsIFwic3ltYm9sc1wiOiBbXX0sXG4gICAge1wibmFtZVwiOiBcImtleVVuaWNvZGVOaWJibGVzJGVibmYkMVwiLCBcInN5bWJvbHNcIjogW1wia2V5VW5pY29kZU5pYmJsZXMkZWJuZiQxXCIsIChsZXhlci5oYXMoXCJrZXlVbmljb2RlTmliYmxlXCIpID8ge3R5cGU6IFwia2V5VW5pY29kZU5pYmJsZVwifSA6IGtleVVuaWNvZGVOaWJibGUpXSwgXCJwb3N0cHJvY2Vzc1wiOiAoZCkgPT4gZFswXS5jb25jYXQoW2RbMV1dKX0sXG4gICAge1wibmFtZVwiOiBcImtleVVuaWNvZGVOaWJibGVzXCIsIFwic3ltYm9sc1wiOiBbXCJrZXlVbmljb2RlTmliYmxlcyRlYm5mJDFcIl0sIFwicG9zdHByb2Nlc3NcIjogQ09OVkVSVE1VTFRJUExFfSxcbiAgICB7XCJuYW1lXCI6IFwia2V5Q2hhcmFjdGVyXCIsIFwic3ltYm9sc1wiOiBbXCJrZXlMb3dlckNhc2VMZXR0ZXJcIl19LFxuICAgIHtcIm5hbWVcIjogXCJrZXlDaGFyYWN0ZXJcIiwgXCJzeW1ib2xzXCI6IFtcImtleVVwcGVyQ2FzZUxldHRlclwiXX0sXG4gICAge1wibmFtZVwiOiBcImtleUNoYXJhY3RlclwiLCBcInN5bWJvbHNcIjogW1wia2V5TnVtZXJhbFwiXX0sXG4gICAge1wibmFtZVwiOiBcImtleUxvd2VyQ2FzZUxldHRlclwiLCBcInN5bWJvbHNcIjogWyhsZXhlci5oYXMoXCJrZXlMZXR0ZXJcIikgPyB7dHlwZTogXCJrZXlMZXR0ZXJcIn0gOiBrZXlMZXR0ZXIpXSwgXCJwb3N0cHJvY2Vzc1wiOiBDT05WRVJUfSxcbiAgICB7XCJuYW1lXCI6IFwia2V5VXBwZXJDYXNlTGV0dGVyXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcImtleU1vZGlmaWVyVXBwZXJcIikgPyB7dHlwZTogXCJrZXlNb2RpZmllclVwcGVyXCJ9IDoga2V5TW9kaWZpZXJVcHBlciksIChsZXhlci5oYXMoXCJrZXlMZXR0ZXJcIikgPyB7dHlwZTogXCJrZXlMZXR0ZXJcIn0gOiBrZXlMZXR0ZXIpXSwgXCJwb3N0cHJvY2Vzc1wiOiBDT05WRVJUVVBQRVJ9LFxuICAgIHtcIm5hbWVcIjogXCJrZXlOdW1lcmFsXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcImtleU51bWVyYWxcIikgPyB7dHlwZTogXCJrZXlOdW1lcmFsXCJ9IDoga2V5TnVtZXJhbCldLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlR9LFxuICAgIHtcIm5hbWVcIjogXCJ2YWx1ZVwiLCBcInN5bWJvbHNcIjogW1wib2JqZWN0XCJdfSxcbiAgICB7XCJuYW1lXCI6IFwidmFsdWVcIiwgXCJzeW1ib2xzXCI6IFtcImFycmF5XCJdfSxcbiAgICB7XCJuYW1lXCI6IFwidmFsdWVcIiwgXCJzeW1ib2xzXCI6IFtcInN0cmluZ1wiXX0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlXCIsIFwic3ltYm9sc1wiOiBbXCJpbnRlZ2VyXCJdLCBcInBvc3Rwcm9jZXNzXCI6IFNFTEZ9LFxuICAgIHtcIm5hbWVcIjogXCJ2YWx1ZVwiLCBcInN5bWJvbHNcIjogW1wiZmxvYXRcIl0sIFwicG9zdHByb2Nlc3NcIjogU0VMRn0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlQm9vbFwiKSA/IHt0eXBlOiBcInZhbHVlQm9vbFwifSA6IHZhbHVlQm9vbCldLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlR9LFxuICAgIHtcIm5hbWVcIjogXCJ2YWx1ZVwiLCBcInN5bWJvbHNcIjogWyhsZXhlci5oYXMoXCJ2YWx1ZU51bGxcIikgPyB7dHlwZTogXCJ2YWx1ZU51bGxcIn0gOiB2YWx1ZU51bGwpXSwgXCJwb3N0cHJvY2Vzc1wiOiBDT05WRVJUfSxcbiAgICB7XCJuYW1lXCI6IFwiaW50ZWdlciRlYm5mJDFcIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwidmFsdWVNb2RpZmllck5lZ2F0aXZlXCIpID8ge3R5cGU6IFwidmFsdWVNb2RpZmllck5lZ2F0aXZlXCJ9IDogdmFsdWVNb2RpZmllck5lZ2F0aXZlKV0sIFwicG9zdHByb2Nlc3NcIjogaWR9LFxuICAgIHtcIm5hbWVcIjogXCJpbnRlZ2VyJGVibmYkMVwiLCBcInN5bWJvbHNcIjogW10sIFwicG9zdHByb2Nlc3NcIjogKCkgPT4gbnVsbH0sXG4gICAge1wibmFtZVwiOiBcImludGVnZXIkZWJuZiQyXCIsIFwic3ltYm9sc1wiOiBbXCJudW1iZXJcIl19LFxuICAgIHtcIm5hbWVcIjogXCJpbnRlZ2VyJGVibmYkMlwiLCBcInN5bWJvbHNcIjogW1wiaW50ZWdlciRlYm5mJDJcIiwgXCJudW1iZXJcIl0sIFwicG9zdHByb2Nlc3NcIjogKGQpID0+IGRbMF0uY29uY2F0KFtkWzFdXSl9LFxuICAgIHtcIm5hbWVcIjogXCJpbnRlZ2VyXCIsIFwic3ltYm9sc1wiOiBbXCJpbnRlZ2VyJGVibmYkMVwiLCBcImludGVnZXIkZWJuZiQyXCJdLCBcInBvc3Rwcm9jZXNzXCI6IEJVSUxESU5UfSxcbiAgICB7XCJuYW1lXCI6IFwiZmxvYXQkZWJuZiQxXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlTW9kaWZpZXJOZWdhdGl2ZVwiKSA/IHt0eXBlOiBcInZhbHVlTW9kaWZpZXJOZWdhdGl2ZVwifSA6IHZhbHVlTW9kaWZpZXJOZWdhdGl2ZSldLCBcInBvc3Rwcm9jZXNzXCI6IGlkfSxcbiAgICB7XCJuYW1lXCI6IFwiZmxvYXQkZWJuZiQxXCIsIFwic3ltYm9sc1wiOiBbXSwgXCJwb3N0cHJvY2Vzc1wiOiAoKSA9PiBudWxsfSxcbiAgICB7XCJuYW1lXCI6IFwiZmxvYXQkZWJuZiQyXCIsIFwic3ltYm9sc1wiOiBbXCJudW1iZXJcIl19LFxuICAgIHtcIm5hbWVcIjogXCJmbG9hdCRlYm5mJDJcIiwgXCJzeW1ib2xzXCI6IFtcImZsb2F0JGVibmYkMlwiLCBcIm51bWJlclwiXSwgXCJwb3N0cHJvY2Vzc1wiOiAoZCkgPT4gZFswXS5jb25jYXQoW2RbMV1dKX0sXG4gICAge1wibmFtZVwiOiBcImZsb2F0JGVibmYkM1wiLCBcInN5bWJvbHNcIjogW1wibnVtYmVyXCJdfSxcbiAgICB7XCJuYW1lXCI6IFwiZmxvYXQkZWJuZiQzXCIsIFwic3ltYm9sc1wiOiBbXCJmbG9hdCRlYm5mJDNcIiwgXCJudW1iZXJcIl0sIFwicG9zdHByb2Nlc3NcIjogKGQpID0+IGRbMF0uY29uY2F0KFtkWzFdXSl9LFxuICAgIHtcIm5hbWVcIjogXCJmbG9hdFwiLCBcInN5bWJvbHNcIjogW1wiZmxvYXQkZWJuZiQxXCIsIFwiZmxvYXQkZWJuZiQyXCIsIFwiZGVjaW1hbFBvaW50XCIsIFwiZmxvYXQkZWJuZiQzXCJdLCBcInBvc3Rwcm9jZXNzXCI6IEJVSUxERkxPQVR9LFxuICAgIHtcIm5hbWVcIjogXCJkZWNpbWFsUG9pbnRcIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwidmFsdWVEZWNpbWFsXCIpID8ge3R5cGU6IFwidmFsdWVEZWNpbWFsXCJ9IDogdmFsdWVEZWNpbWFsKV0sIFwicG9zdHByb2Nlc3NcIjogQ09OVkVSVH0sXG4gICAge1wibmFtZVwiOiBcImFycmF5JGVibmYkMVwiLCBcInN5bWJvbHNcIjogW119LFxuICAgIHtcIm5hbWVcIjogXCJhcnJheSRlYm5mJDFcIiwgXCJzeW1ib2xzXCI6IFtcImFycmF5JGVibmYkMVwiLCBcImFkZGl0aW9uYWxBcnJheUl0ZW1cIl0sIFwicG9zdHByb2Nlc3NcIjogKGQpID0+IGRbMF0uY29uY2F0KFtkWzFdXSl9LFxuICAgIHtcIm5hbWVcIjogXCJhcnJheVwiLCBcInN5bWJvbHNcIjogWyhsZXhlci5oYXMoXCJhcnJheU9wZW5cIikgPyB7dHlwZTogXCJhcnJheU9wZW5cIn0gOiBhcnJheU9wZW4pLCBcImluaXRpYWxBcnJheUl0ZW1cIiwgXCJhcnJheSRlYm5mJDFcIiwgKGxleGVyLmhhcyhcImFycmF5Q2xvc2VcIikgPyB7dHlwZTogXCJhcnJheUNsb3NlXCJ9IDogYXJyYXlDbG9zZSldLCBcInBvc3Rwcm9jZXNzXCI6IENPTExBUFNFQVJSQVl9LFxuICAgIHtcIm5hbWVcIjogXCJpbml0aWFsQXJyYXlJdGVtXCIsIFwic3ltYm9sc1wiOiBbXCJ2YWx1ZVwiXX0sXG4gICAge1wibmFtZVwiOiBcImFkZGl0aW9uYWxBcnJheUl0ZW1cIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwiYXJyYXlEZWxpbWl0XCIpID8ge3R5cGU6IFwiYXJyYXlEZWxpbWl0XCJ9IDogYXJyYXlEZWxpbWl0KSwgXCJ2YWx1ZVwiXSwgXCJwb3N0cHJvY2Vzc1wiOiBUQUtFU0VDT05EfSxcbiAgICB7XCJuYW1lXCI6IFwic3RyaW5nJGVibmYkMVwiLCBcInN5bWJvbHNcIjogW1widmFsdWVTdHJpbmdTZWN0aW9uXCJdfSxcbiAgICB7XCJuYW1lXCI6IFwic3RyaW5nJGVibmYkMVwiLCBcInN5bWJvbHNcIjogW1wic3RyaW5nJGVibmYkMVwiLCBcInZhbHVlU3RyaW5nU2VjdGlvblwiXSwgXCJwb3N0cHJvY2Vzc1wiOiAoZCkgPT4gZFswXS5jb25jYXQoW2RbMV1dKX0sXG4gICAge1wibmFtZVwiOiBcInN0cmluZ1wiLCBcInN5bWJvbHNcIjogW1wic3RyaW5nJGVibmYkMVwiXSwgXCJwb3N0cHJvY2Vzc1wiOiBDT05DQVRXUkFQU1RSSU5HfSxcbiAgICB7XCJuYW1lXCI6IFwic3RyaW5nXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlRW1wdHlTdHJpbmdcIikgPyB7dHlwZTogXCJ2YWx1ZUVtcHR5U3RyaW5nXCJ9IDogdmFsdWVFbXB0eVN0cmluZyldLCBcInBvc3Rwcm9jZXNzXCI6IEVNUFRZU1RSSU5HfSxcbiAgICB7XCJuYW1lXCI6IFwidmFsdWVTdHJpbmdTZWN0aW9uXCIsIFwic3ltYm9sc1wiOiBbXCJ2YWx1ZVN0cmluZ1VuaWNvZGVDaGFyYWN0ZXJcIl0sIFwicG9zdHByb2Nlc3NcIjogQlVJTERVTklDT0RFfSxcbiAgICB7XCJuYW1lXCI6IFwidmFsdWVTdHJpbmdTZWN0aW9uXCIsIFwic3ltYm9sc1wiOiBbXCJ2YWx1ZVN0cmluZ0NoYXJhY3RlclwiXX0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlU3RyaW5nVW5pY29kZUNoYXJhY3RlclwiLCBcInN5bWJvbHNcIjogWyhsZXhlci5oYXMoXCJ2YWx1ZU1vZGlmaWVyVW5pY29kZVwiKSA/IHt0eXBlOiBcInZhbHVlTW9kaWZpZXJVbmljb2RlXCJ9IDogdmFsdWVNb2RpZmllclVuaWNvZGUpLCBcInZhbHVlVW5pY29kZU5pYmJsZXNcIl0sIFwicG9zdHByb2Nlc3NcIjogVEFLRVNFQ09ORH0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlVW5pY29kZU5pYmJsZXMkZWJuZiQxXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlVW5pY29kZU5pYmJsZVwiKSA/IHt0eXBlOiBcInZhbHVlVW5pY29kZU5pYmJsZVwifSA6IHZhbHVlVW5pY29kZU5pYmJsZSldfSxcbiAgICB7XCJuYW1lXCI6IFwidmFsdWVVbmljb2RlTmliYmxlcyRlYm5mJDFcIiwgXCJzeW1ib2xzXCI6IFtcInZhbHVlVW5pY29kZU5pYmJsZXMkZWJuZiQxXCIsIChsZXhlci5oYXMoXCJ2YWx1ZVVuaWNvZGVOaWJibGVcIikgPyB7dHlwZTogXCJ2YWx1ZVVuaWNvZGVOaWJibGVcIn0gOiB2YWx1ZVVuaWNvZGVOaWJibGUpXSwgXCJwb3N0cHJvY2Vzc1wiOiAoZCkgPT4gZFswXS5jb25jYXQoW2RbMV1dKX0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlVW5pY29kZU5pYmJsZXNcIiwgXCJzeW1ib2xzXCI6IFtcInZhbHVlVW5pY29kZU5pYmJsZXMkZWJuZiQxXCJdLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlRNVUxUSVBMRX0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlU3RyaW5nQ2hhcmFjdGVyXCIsIFwic3ltYm9sc1wiOiBbXCJ2YWx1ZUxvd2VyQ2FzZUxldHRlclwiXX0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlU3RyaW5nQ2hhcmFjdGVyXCIsIFwic3ltYm9sc1wiOiBbXCJ2YWx1ZVVwcGVyQ2FzZUxldHRlclwiXX0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlU3RyaW5nQ2hhcmFjdGVyXCIsIFwic3ltYm9sc1wiOiBbXCJ2YWx1ZU51bWVyYWxcIl19LFxuICAgIHtcIm5hbWVcIjogXCJ2YWx1ZUxvd2VyQ2FzZUxldHRlclwiLCBcInN5bWJvbHNcIjogWyhsZXhlci5oYXMoXCJ2YWx1ZUxldHRlclwiKSA/IHt0eXBlOiBcInZhbHVlTGV0dGVyXCJ9IDogdmFsdWVMZXR0ZXIpXSwgXCJwb3N0cHJvY2Vzc1wiOiBDT05WRVJUfSxcbiAgICB7XCJuYW1lXCI6IFwidmFsdWVVcHBlckNhc2VMZXR0ZXJcIiwgXCJzeW1ib2xzXCI6IFsobGV4ZXIuaGFzKFwidmFsdWVNb2RpZmllclVwcGVyXCIpID8ge3R5cGU6IFwidmFsdWVNb2RpZmllclVwcGVyXCJ9IDogdmFsdWVNb2RpZmllclVwcGVyKSwgKGxleGVyLmhhcyhcInZhbHVlTGV0dGVyXCIpID8ge3R5cGU6IFwidmFsdWVMZXR0ZXJcIn0gOiB2YWx1ZUxldHRlcildLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlRVUFBFUn0sXG4gICAge1wibmFtZVwiOiBcInZhbHVlTnVtZXJhbFwiLCBcInN5bWJvbHNcIjogWyhsZXhlci5oYXMoXCJ2YWx1ZU51bWVyYWxcIikgPyB7dHlwZTogXCJ2YWx1ZU51bWVyYWxcIn0gOiB2YWx1ZU51bWVyYWwpXSwgXCJwb3N0cHJvY2Vzc1wiOiBDT05WRVJUfSxcbiAgICB7XCJuYW1lXCI6IFwibnVtYmVyXCIsIFwic3ltYm9sc1wiOiBbKGxleGVyLmhhcyhcInZhbHVlTnVtYmVyXCIpID8ge3R5cGU6IFwidmFsdWVOdW1iZXJcIn0gOiB2YWx1ZU51bWJlcildLCBcInBvc3Rwcm9jZXNzXCI6IENPTlZFUlR9XG4gIF0sXG4gIFBhcnNlclN0YXJ0OiBcImRvY3VtZW50XCIsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBncmFtbWFyO1xuIl19
|