emj 0.0.11 → 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/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.11",
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/src/index.js",
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:grammar && npm run build:lib && npm run build:bundle",
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": "npm run build:grammar && vitest run --allowOnly=false",
33
+ "test": "vitest run --allowOnly=false",
34
34
  "test:consumer": "node test/consumer-smoke.cjs .",
35
- "coverage": "npm run build:grammar && vitest run --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.10.0",
48
- "@emnapi/runtime": "^1.10.0",
43
+ "@emnapi/core": "^1.11.3",
44
+ "@emnapi/runtime": "^1.11.3",
49
45
  "@eslint/js": "^10.0.1",
50
- "@rollup/plugin-commonjs": "^29.0.2",
51
- "@rollup/plugin-node-resolve": "^16.0.3",
52
- "@rollup/plugin-typescript": "^12.3.0",
53
- "@types/lodash": "^4.17.24",
54
- "@types/moo": "^0.5.10",
55
- "@types/nearley": "^2.11.5",
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.5",
63
- "globals": "^17.6.0",
64
- "npm-check-updates": "^23.0.0",
65
- "prettier": "^3.9.6",
66
- "replace-in-file": "^9.0.0",
67
- "rimraf": "^6.1.3",
68
- "rollup": "^4.60.3",
69
- "tslib": "^2.8.1",
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": "^4.1.8"
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
  }
@@ -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