pareto-json 0.3.8 → 0.3.9

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.
@@ -1,12 +1,76 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.$$ = void 0;
4
- const escaped_character_1 = require("pareto-standard-operations/dist/implementation/manual/primitives/text/serializers/escaped_character");
27
+ const _p = __importStar(require("pareto-core-serializer"));
5
28
  const $$ = ($) => '"'
6
- + (0, escaped_character_1.$$)($, {
7
- 'character code': 34, // "
8
- 'escape character code': 92, // \
29
+ + _p.text.deprecated_build(($i) => {
30
+ _p.list.from_text($, ($) => $).__for_each(($) => {
31
+ switch ($) {
32
+ case 0x2F: // slash (\/)
33
+ $i['add character'](0x5C); // \
34
+ $i['add character'](0x2F); // /
35
+ break;
36
+ case 0x22: // " (\")
37
+ $i['add character'](0x5C); // \
38
+ $i['add character'](0x22); // "
39
+ break;
40
+ case 0x5C: // \ (\\)
41
+ $i['add character'](0x5C); // \
42
+ $i['add character'](0x5C); // \
43
+ break;
44
+ case 0x08: // backspace (\b)
45
+ $i['add character'](0x5C); // \
46
+ $i['add character'](0x62); // b
47
+ break;
48
+ case 0x0C: // form feed (\f)
49
+ $i['add character'](0x5C); // \
50
+ $i['add character'](0x66); // f
51
+ break;
52
+ case 0x0A: // line feed (\n)
53
+ $i['add character'](0x5C); // \
54
+ $i['add character'](0x6E); // n
55
+ break;
56
+ case 0x0D: // carriage return (\r)
57
+ $i['add character'](0x5C); // \
58
+ $i['add character'](0x72); // r
59
+ break;
60
+ case 0x09: // horizontal tab (\t)
61
+ $i['add character'](0x5C); // \
62
+ $i['add character'](0x74); // t
63
+ break;
64
+ case 0x0B: // vertical tab (\v)
65
+ $i['add character'](0x5C); // \
66
+ $i['add character'](0x76); // v
67
+ break;
68
+ default: {
69
+ $i['add character']($);
70
+ }
71
+ }
72
+ });
9
73
  })
10
74
  + '"';
11
75
  exports.$$ = $$;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC9wcmltaXRpdmVzL3RleHQvc2VyaWFsaXplcnMvcXVvdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLDJJQUErSTtBQUV4SSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQVMsRUFBVSxFQUFFLENBQUMsR0FBRztNQUN0QyxJQUFBLHNCQUFtQixFQUNqQixDQUFDLEVBQ0Q7UUFDSSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsSUFBSTtRQUMxQix1QkFBdUIsRUFBRSxFQUFFLEVBQUUsSUFBSTtLQUNwQyxDQUNKO01BQ0MsR0FBRyxDQUFBO0FBUkksUUFBQSxFQUFFLE1BUU4ifQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC9wcmltaXRpdmVzL3RleHQvc2VyaWFsaXplcnMvcXVvdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkRBQTRDO0FBSXJDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBUyxFQUFVLEVBQUUsQ0FBQyxHQUFHO01BQ3RDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUM5QixFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxJQUFJLEVBQUUsYUFBYTtvQkFDcEIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsSUFBSTtvQkFDOUIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsSUFBSTtvQkFDOUIsTUFBSztnQkFDVCxLQUFLLElBQUksRUFBRSxTQUFTO29CQUNoQixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxJQUFJO29CQUM5QixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxJQUFJO29CQUM5QixNQUFLO2dCQUVULEtBQUssSUFBSSxFQUFFLFNBQVM7b0JBQ2hCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLElBQUk7b0JBQzlCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLElBQUk7b0JBQzlCLE1BQUs7Z0JBRVQsS0FBSyxJQUFJLEVBQUUsaUJBQWlCO29CQUN4QixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxJQUFJO29CQUM5QixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxJQUFJO29CQUM5QixNQUFLO2dCQUVULEtBQUssSUFBSSxFQUFFLGlCQUFpQjtvQkFDeEIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsSUFBSTtvQkFDOUIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsSUFBSTtvQkFDOUIsTUFBSztnQkFFVCxLQUFLLElBQUksRUFBRSxpQkFBaUI7b0JBQ3hCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLElBQUk7b0JBQzlCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLElBQUk7b0JBQzlCLE1BQUs7Z0JBRVQsS0FBSyxJQUFJLEVBQUUsdUJBQXVCO29CQUM5QixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxJQUFJO29CQUM5QixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxJQUFJO29CQUM5QixNQUFLO2dCQUVULEtBQUssSUFBSSxFQUFFLHNCQUFzQjtvQkFDN0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsSUFBSTtvQkFDOUIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsSUFBSTtvQkFDOUIsTUFBSztnQkFFVCxLQUFLLElBQUksRUFBRSxvQkFBb0I7b0JBQzNCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLElBQUk7b0JBQzlCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLElBQUk7b0JBQzlCLE1BQUs7Z0JBQ1QsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDUCxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7WUFFTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUM7TUFDQSxHQUFHLENBQUE7QUF0REksUUFBQSxFQUFFLE1Bc0ROIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pareto-json",
3
- "version": "0.3.8",
3
+ "version": "0.3.9",
4
4
  "description": "A TypeScript library for building JSON values in Pareto-style which can then be serialized",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "pareto-core-shorthands": "^0.1.11",
31
- "pareto-fountain-pen": "^0.3.28",
32
- "pareto-standard-operations": "^0.3.36"
31
+ "pareto-fountain-pen": "^0.3.29",
32
+ "pareto-standard-operations": "^0.3.37"
33
33
  }
34
34
  }
@@ -1,10 +0,0 @@
1
- import * as _target from "../../../../../interface/generated/pareto/core/astn_source";
2
- import * as d_parse_result from "../../../../../interface/generated/pareto/core/parse_result";
3
- import * as _source from "../../../../../interface/generated/pareto/core/token";
4
- import * as pg from "./astn_parse_generic";
5
- export declare const Structural_Token: (token: _source._T_Annotated_Token) => _target._T_Structural_Token;
6
- export declare const String: (token_iterator: pg.ASTN_Token_Iterator, abort: ($: pg.My_Parse_Error) => never) => _target._T_String;
7
- export declare const Document: (token_iterator: pg.ASTN_Token_Iterator, abort: ($: pg.My_Parse_Error) => never) => _target._T_Document;
8
- export declare const Elements: (token_iterator: pg.ASTN_Token_Iterator, end_reached: ($: _source._T_Token_Type) => boolean, end_token: d_parse_result.Expected, abort: ($: pg.My_Parse_Error) => never) => _target._T_Elements;
9
- export declare const Key_Value_Pairs: (token_iterator: pg.ASTN_Token_Iterator, end_reached: ($: _source._T_Token_Type) => boolean, end_token: d_parse_result.Expected, abort: ($: pg.My_Parse_Error) => never) => _target._T_Key_Value_Pairs;
10
- export declare const Value: (token_iterator: pg.ASTN_Token_Iterator, abort: ($: pg.My_Parse_Error) => never) => _target._T_Value;
@@ -1,245 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Value = exports.Key_Value_Pairs = exports.Elements = exports.Document = exports.String = exports.Structural_Token = void 0;
27
- const _ea = __importStar(require("pareto-core-refiner"));
28
- const pg = __importStar(require("./astn_parse_generic"));
29
- //this file contains the parser functionality, each function return a type from the 'ast' schema
30
- const Structural_Token = (token) => {
31
- return {
32
- 'trailing trivia': token['trailing trivia'],
33
- 'range': {
34
- 'start': token['start'],
35
- 'end': token['end']
36
- }
37
- };
38
- };
39
- exports.Structural_Token = Structural_Token;
40
- const String = (token_iterator, abort) => {
41
- const token = token_iterator['get required token'](_ea.list.literal([['a string', null]]));
42
- if (token.type[0] !== 'string') {
43
- return pg.throw_unexpected_token(token, _ea.list.literal([['a string', null]]), abort);
44
- }
45
- token_iterator['consume token']();
46
- return {
47
- 'range': {
48
- 'start': token['start'],
49
- 'end': token['end']
50
- },
51
- 'value': token.type[1].value,
52
- 'type': token.type[1].type,
53
- 'trailing trivia': token['trailing trivia'],
54
- };
55
- };
56
- exports.String = String;
57
- const Document = (token_iterator, abort) => {
58
- return {
59
- 'header': _ea.deprecated_block(() => {
60
- const token = token_iterator['get required token'](_ea.list.literal([['!', null], ['a value', null]]));
61
- if (token.type[0] !== '!') {
62
- return _ea.optional.not_set();
63
- }
64
- token_iterator['consume token']();
65
- return _ea.optional.set({
66
- '!': (0, exports.Structural_Token)(token),
67
- 'value': (0, exports.Value)(token_iterator, abort)
68
- });
69
- }),
70
- 'content': (0, exports.Value)(token_iterator, abort)
71
- };
72
- };
73
- exports.Document = Document;
74
- const Elements = (token_iterator, end_reached, end_token, abort) => {
75
- return _ea.list.deprecated_build(($i) => {
76
- while (true) {
77
- const current_token = token_iterator['get required token'](_ea.list.literal([end_token, ['a value', null]]));
78
- if (end_reached(current_token.type)) {
79
- return;
80
- }
81
- $i['add element']({
82
- 'value': (0, exports.Value)(token_iterator, abort),
83
- });
84
- }
85
- });
86
- };
87
- exports.Elements = Elements;
88
- const Key_Value_Pairs = (token_iterator, end_reached, end_token, abort) => {
89
- return _ea.list.deprecated_build(($i) => {
90
- while (true) {
91
- const current_token = token_iterator['get required token'](_ea.list.literal([end_token, ['a string', null]]));
92
- if (end_reached(current_token.type)) {
93
- return;
94
- }
95
- $i['add element']({
96
- 'key': (0, exports.String)(token_iterator, abort),
97
- 'value': _ea.deprecated_block(() => {
98
- const candidate_colon = token_iterator['get required token'](_ea.list.literal([['a string', null], [':', null], end_token]));
99
- if (candidate_colon.type[0] !== ':') {
100
- return _ea.optional.not_set();
101
- }
102
- token_iterator['consume token']();
103
- return _ea.optional.set({
104
- ':': (0, exports.Structural_Token)(candidate_colon),
105
- 'value': (0, exports.Value)(token_iterator, abort)
106
- });
107
- }),
108
- ',': _ea.optional.not_set()
109
- });
110
- }
111
- });
112
- };
113
- exports.Key_Value_Pairs = Key_Value_Pairs;
114
- const Value = (token_iterator, abort) => {
115
- const token = token_iterator['get required token'](_ea.list.literal([['a value', null]]));
116
- return _ea.deprecated_cc(token.type, ($) => {
117
- switch ($[0]) {
118
- case 'string': return _ea.ss($, ($) => {
119
- return ['string', (0, exports.String)(token_iterator, abort)];
120
- });
121
- case '{': return _ea.ss($, ($) => {
122
- token_iterator['consume token']();
123
- return ['indexed collection', ['dictionary', {
124
- '{': (0, exports.Structural_Token)(token),
125
- 'entries': (0, exports.Key_Value_Pairs)(token_iterator, ($) => $[0] === '}', ['}', null], abort),
126
- '}': _ea.deprecated_block(() => {
127
- const current_token = token_iterator['get required token'](_ea.list.literal([['}', null]]));
128
- token_iterator['consume token']();
129
- return (0, exports.Structural_Token)(current_token);
130
- })
131
- }]];
132
- });
133
- case '(': return _ea.ss($, ($) => {
134
- token_iterator['consume token']();
135
- return ['indexed collection', ['verbose group', {
136
- '(': (0, exports.Structural_Token)(token),
137
- 'entries': (0, exports.Key_Value_Pairs)(token_iterator, ($) => $[0] === ')', [')', null], abort),
138
- ')': _ea.deprecated_block(() => {
139
- const current_token = token_iterator['get required token'](_ea.list.literal([[')', null]]));
140
- token_iterator['consume token']();
141
- return (0, exports.Structural_Token)(current_token);
142
- })
143
- }]];
144
- });
145
- case '[': return _ea.ss($, ($) => {
146
- token_iterator['consume token']();
147
- return ['ordered collection', ['list', {
148
- '[': (0, exports.Structural_Token)(token),
149
- 'elements': (0, exports.Elements)(token_iterator, ($) => $[0] === ']', [']', null], abort),
150
- ']': _ea.deprecated_block(() => {
151
- const current_token = token_iterator['get required token'](_ea.list.literal([[']', null]]));
152
- token_iterator['consume token']();
153
- return (0, exports.Structural_Token)(current_token);
154
- }),
155
- }]];
156
- });
157
- case '<': return _ea.ss($, ($) => {
158
- token_iterator['consume token']();
159
- return ['ordered collection', ['concise group', {
160
- '<': (0, exports.Structural_Token)(token),
161
- 'elements': (0, exports.Elements)(token_iterator, ($) => $[0] === '>', ['>', null], abort),
162
- '>': _ea.deprecated_block(() => {
163
- const current_token = token_iterator['get required token'](_ea.list.literal([['>', null]]));
164
- token_iterator['consume token']();
165
- return (0, exports.Structural_Token)(current_token);
166
- }),
167
- }]];
168
- });
169
- case '|': return _ea.ss($, ($) => {
170
- token_iterator['consume token']();
171
- const token = token_iterator['get required token'](_ea.list.literal([['a value', null], ['#', null]]));
172
- return ['tagged value', {
173
- '|': (0, exports.Structural_Token)(token),
174
- 'state': (0, exports.String)(token_iterator, abort),
175
- 'value': (0, exports.Value)(token_iterator, abort)
176
- }];
177
- });
178
- case '*': return _ea.ss($, ($) => {
179
- token_iterator['consume token']();
180
- return ['set optional value', {
181
- '*': (0, exports.Structural_Token)(token),
182
- 'value': (0, exports.Value)(token_iterator, abort)
183
- }];
184
- });
185
- case '~': return _ea.ss($, ($) => {
186
- token_iterator['consume token']();
187
- return ['not set', {
188
- '~': (0, exports.Structural_Token)(token),
189
- }];
190
- });
191
- //unexpected tokens
192
- case '#': return _ea.ss($, ($) => {
193
- token_iterator['consume token']();
194
- return pg.throw_unexpected_token(token, _ea.list.literal([
195
- ['a value', null]
196
- ]), abort);
197
- });
198
- case '@': return _ea.ss($, ($) => {
199
- token_iterator['consume token']();
200
- return pg.throw_unexpected_token(token, _ea.list.literal([
201
- ['a value', null]
202
- ]), abort);
203
- });
204
- case '!': return _ea.ss($, ($) => {
205
- token_iterator['consume token']();
206
- return pg.throw_unexpected_token(token, _ea.list.literal([
207
- ['a value', null]
208
- ]), abort);
209
- });
210
- case ':': return _ea.ss($, ($) => {
211
- token_iterator['consume token']();
212
- return pg.throw_unexpected_token(token, _ea.list.literal([
213
- ['a value', null]
214
- ]), abort);
215
- });
216
- case ')': return _ea.ss($, ($) => {
217
- token_iterator['consume token']();
218
- return pg.throw_unexpected_token(token, _ea.list.literal([
219
- ['a value', null]
220
- ]), abort);
221
- });
222
- case '>': return _ea.ss($, ($) => {
223
- token_iterator['consume token']();
224
- return pg.throw_unexpected_token(token, _ea.list.literal([
225
- ['a value', null]
226
- ]), abort);
227
- });
228
- case ']': return _ea.ss($, ($) => {
229
- token_iterator['consume token']();
230
- return pg.throw_unexpected_token(token, _ea.list.literal([
231
- ['a value', null]
232
- ]), abort);
233
- });
234
- case '}': return _ea.ss($, ($) => {
235
- token_iterator['consume token']();
236
- return pg.throw_unexpected_token(token, _ea.list.literal([
237
- ['a value', null]
238
- ]), abort);
239
- });
240
- default: return _ea.au($[0]);
241
- }
242
- });
243
- };
244
- exports.Value = Value;
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL2dlbmVyYXRlZC9wYXJldG8vZ2VuZXJpYy9wYXJzZS9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBMEM7QUFPMUMseURBQTBDO0FBRTFDLGdHQUFnRztBQUV6RixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUMsRUFBK0IsRUFBRTtJQUMvRixPQUFPO1FBQ0gsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQzNDLE9BQU8sRUFBRTtZQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3RCO0tBQ0osQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQVJZLFFBQUEsZ0JBQWdCLG9CQVE1QjtBQUVNLE1BQU0sTUFBTSxHQUFHLENBQ2xCLGNBQXNDLEVBQ3RDLEtBQXNDLEVBQ3JCLEVBQUU7SUFDbkIsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxRixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzFGLENBQUM7SUFDRCxjQUFjLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQTtJQUNqQyxPQUFPO1FBQ0gsT0FB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
@@ -1,16 +0,0 @@
1
- import * as _et from 'pareto-core-interface';
2
- import * as si from "./string_iterator";
3
- import * as _source from "../../../../../interface/generated/pareto/core/token";
4
- import * as d_parse_result from "../../../../../interface/generated/pareto/core/parse_result";
5
- export type My_Lexer_Error = {
6
- 'type': d_parse_result.Lexer_Error;
7
- 'range': _source._T_Range;
8
- };
9
- export type My_Parse_Error = {
10
- 'type': d_parse_result.Parser_Error;
11
- 'range': _source._T_Range;
12
- };
13
- export declare const throw_lexer_error: (type: d_parse_result.Lexer_Error, range: _source._T_Range, abort: ($: My_Lexer_Error) => never) => never;
14
- export declare const throw_unexpected_token: (found: _source._T_Annotated_Token, expected: _et.List<d_parse_result.Expected>, abort: ($: My_Parse_Error) => never) => never;
15
- export type ASTN_Token_Iterator = si.Token_Iterator<d_parse_result.Expected, _source._T_Annotated_Token>;
16
- export declare const create_astn_token_iterator: ($: _source._T_Tokenizer_Result.tokens, end: si.Location, abort: ($: My_Parse_Error) => never) => ASTN_Token_Iterator;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_astn_token_iterator = exports.throw_unexpected_token = exports.throw_lexer_error = void 0;
4
- const throw_parse_error = (type, range, abort) => {
5
- abort({
6
- 'type': type,
7
- 'range': range,
8
- });
9
- };
10
- const throw_lexer_error = (type, range, abort) => {
11
- return abort({
12
- 'type': type,
13
- 'range': range,
14
- });
15
- };
16
- exports.throw_lexer_error = throw_lexer_error;
17
- const throw_unexpected_token = (found, expected, abort) => {
18
- return throw_parse_error({
19
- 'expected': expected,
20
- 'cause': ['unexpected token', {
21
- 'found': found.type,
22
- }]
23
- }, {
24
- 'start': found.start,
25
- 'end': found.end
26
- }, abort);
27
- };
28
- exports.throw_unexpected_token = throw_unexpected_token;
29
- const create_astn_token_iterator = ($, end, abort) => {
30
- let position = 0;
31
- return {
32
- 'get required token': (pet) => {
33
- return $.__get_possible_element_at(position).transform(($) => $, () => throw_parse_error({
34
- 'expected': pet,
35
- 'cause': ['missing token', null]
36
- }, {
37
- 'start': end,
38
- 'end': end,
39
- }, abort));
40
- },
41
- 'consume token': () => {
42
- position += 1;
43
- },
44
- };
45
- };
46
- exports.create_astn_token_iterator = create_astn_token_iterator;
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0bl9wYXJzZV9nZW5lcmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL2dlbmVyYXRlZC9wYXJldG8vZ2VuZXJpYy9wYXJzZS9hc3RuX3BhcnNlX2dlbmVyaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLE1BQU0saUJBQWlCLEdBQUcsQ0FDdEIsSUFBaUMsRUFDakMsS0FBdUIsRUFDdkIsS0FBbUMsRUFDOUIsRUFBRTtJQUNQLEtBQUssQ0FBQztRQUNGLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLEtBQUs7S0FDakIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixJQUFnQyxFQUNoQyxLQUF1QixFQUN2QixLQUFtQyxFQUM5QixFQUFFO0lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDVCxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxLQUFLO0tBQ2pCLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQVRZLFFBQUEsaUJBQWlCLHFCQVM3QjtBQUVNLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsS0FBaUMsRUFDakMsUUFBMkMsRUFDM0MsS0FBbUMsRUFDOUIsRUFBRTtJQUNQLE9BQU8saUJBQWlCLENBQ3BCO1FBQ0ksVUFBVSxFQUFFLFFBQVE7UUFDcEIsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSTthQUN0QixDQUFDO0tBQ0wsRUFDRDtRQUNJLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSztRQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUc7S0FDbkIsRUFDRCxLQUFLLENBQ1IsQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQWxCWSxRQUFBLHNCQUFzQiwwQkFrQmxDO0FBSU0sTUFBTSwwQkFBMEIsR0FBRyxDQUN0QyxDQUFxQyxFQUNyQyxHQUFnQixFQUNoQixLQUFtQyxFQUNoQixFQUFFO0lBQ3JCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUNoQixPQUFPO1FBQ0gsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMxQixPQUFPLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQ2xELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ1IsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQ25CO2dCQUNJLFVBQVUsRUFBRSxHQUFHO2dCQUNmLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUM7YUFDbkMsRUFDRDtnQkFDSSxPQUFPLEVBQUUsR0FBRztnQkFDWixLQUFLLEVBQUUsR0FBRzthQUNiLEVBQ0QsS0FBSyxDQUNSLENBQ0osQ0FBQTtRQUNMLENBQUM7UUFDRCxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQ2xCLFFBQVEsSUFBSSxDQUFDLENBQUE7UUFDakIsQ0FBQztLQUNKLENBQUE7QUFDTCxDQUFDLENBQUE7QUEzQlksUUFBQSwwQkFBMEIsOEJBMkJ0QyJ9
@@ -1,5 +0,0 @@
1
- import * as _target from "../../../../../interface/generated/pareto/core/parse_result";
2
- import * as s_ast from "../../../../../interface/generated/pareto/core/astn_source";
3
- export declare const parse: ($: string, $p: {
4
- "tab size": number;
5
- }, abort: ($: _target._T_Parse_Error) => never) => s_ast._T_Document;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.parse = void 0;
27
- const d_ast = __importStar(require("./ast"));
28
- const pg = __importStar(require("./astn_parse_generic"));
29
- const si = __importStar(require("./string_iterator"));
30
- const tokenize = __importStar(require("./token"));
31
- const parse = ($, $p, abort) => {
32
- const string_iterator = si.create_string_iterator($, {
33
- 'tab size': $p['tab size']
34
- });
35
- const tokenizer_result = tokenize.Tokenizer_Result(null, {
36
- 'string iterator': string_iterator
37
- }, ($) => {
38
- abort({
39
- 'type': ['lexer', $.type],
40
- 'range': $.range
41
- });
42
- });
43
- const token_iterator = pg.create_astn_token_iterator(tokenizer_result.tokens, tokenizer_result.end, ($) => {
44
- abort({
45
- 'type': ['parser', $.type],
46
- 'range': $.range
47
- });
48
- });
49
- return d_ast.Document(token_iterator, ($) => abort({
50
- 'type': ['parser', $.type],
51
- 'range': $.range
52
- }));
53
- };
54
- exports.parse = parse;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW1wbGVtZW50YXRpb24vZ2VuZXJhdGVkL3BhcmV0by9nZW5lcmljL3BhcnNlL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsNkNBQThCO0FBSTlCLHlEQUEwQztBQUMxQyxzREFBdUM7QUFFdkMsa0RBQW1DO0FBRTVCLE1BQU0sS0FBSyxHQUFHLENBQ2pCLENBQVMsRUFDVCxFQUVDLEVBQ0QsS0FBMkMsRUFDMUIsRUFBRTtJQUNuQixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFO1FBQ2pELFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO0tBQzdCLENBQUMsQ0FBQTtJQUNGLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUM5QyxJQUFJLEVBQ0o7UUFDSSxpQkFBaUIsRUFBRSxlQUFlO0tBQ3JDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNGLEtBQUssQ0FBQztZQUNGLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUE7SUFDTixDQUFDLENBQ0osQ0FBQTtJQUNELE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FDaEQsZ0JBQWdCLENBQUMsTUFBTSxFQUN2QixnQkFBZ0IsQ0FBQyxHQUFHLEVBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDRixLQUFLLENBQUM7WUFDRixNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUs7U0FDbkIsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUNKLENBQUE7SUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGNBQWMsRUFDZCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ1QsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLO0tBQ25CLENBQUMsQ0FDTCxDQUFBO0FBRUwsQ0FBQyxDQUFBO0FBeENZLFFBQUEsS0FBSyxTQXdDakIifQ==
@@ -1,40 +0,0 @@
1
- import * as _et from 'pareto-core-interface';
2
- export type Location = {
3
- 'absolute': number;
4
- 'relative': {
5
- 'line': number;
6
- 'column': number;
7
- };
8
- };
9
- export type String_Iterator = {
10
- 'consume character': () => void;
11
- 'consume string': ($: string) => void;
12
- /**
13
- * returns the current character, or null if the end of the string has been reached.
14
- * equivalent to `look ahead(0)`
15
- */
16
- 'get current character': () => number | null;
17
- 'look ahead': ($: number) => number | null;
18
- 'create offset location info': (subtract: number) => Location;
19
- 'create location info': () => Location;
20
- 'create location info string': () => string;
21
- /**
22
- * if no non-whitespace character has been found yet on the current line,
23
- * this will return the current column,
24
- * otherwise it will return the offset of that first non-whitespace character
25
- * (which is the indentation of the line)
26
- */
27
- 'get line indentation': () => number;
28
- };
29
- export declare const is_control_character: ($: number) => boolean;
30
- /**
31
- * Creates a string iterator that allows iterating over characters in a string,
32
- * while keeping track of line numbers, columns, and line indentation.
33
- */
34
- export declare const create_string_iterator: ($: string, $p: {
35
- "tab size": number;
36
- }) => String_Iterator;
37
- export type Token_Iterator<Expected, Token> = {
38
- 'get required token': (expected: _et.List<Expected>) => Token;
39
- 'consume token': () => void;
40
- };
@@ -1,132 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.create_string_iterator = exports.is_control_character = void 0;
27
- const _pinternals = __importStar(require("pareto-core-internals"));
28
- const WhitespaceChars = {
29
- tab: 0x09, // \t
30
- line_feed: 0x0A, // \n
31
- carriage_return: 0x0D, // \r
32
- space: 0x20, //
33
- };
34
- const is_control_character = ($) => {
35
- return ($ < 0x20 && $ !== WhitespaceChars.tab && $ !== WhitespaceChars.line_feed && $ !== WhitespaceChars.carriage_return);
36
- };
37
- exports.is_control_character = is_control_character;
38
- /**
39
- * Creates a string iterator that allows iterating over characters in a string,
40
- * while keeping track of line numbers, columns, and line indentation.
41
- */
42
- const create_string_iterator = ($, $p) => {
43
- const source = $;
44
- const characters = _pinternals.list_from_text($, ($) => $);
45
- const length = characters.get_number_of_elements();
46
- let found_carriage_return_before = false;
47
- let position = 0;
48
- let relative_position = {
49
- 'line': 0,
50
- 'column': 0,
51
- 'line indentation': null
52
- };
53
- const consume_character = () => {
54
- const c = characters.__get_possible_element_at(position);
55
- const start = relative_position;
56
- relative_position = c.transform(($) => {
57
- return $ === WhitespaceChars.line_feed
58
- ? {
59
- 'line': relative_position.line + 1,
60
- 'column': 0,
61
- 'line indentation': null,
62
- }
63
- : found_carriage_return_before
64
- ? {
65
- 'line': relative_position.line + 1,
66
- 'column': 0,
67
- 'line indentation': null,
68
- }
69
- : {
70
- 'line': relative_position.line,
71
- 'column': relative_position['column'] + ($ === WhitespaceChars.tab
72
- ? $p['tab size']
73
- : 1),
74
- 'line indentation': relative_position['line indentation'] !== null
75
- ? relative_position['line indentation']
76
- : $ === WhitespaceChars.space || $ === WhitespaceChars.tab
77
- ? null
78
- : relative_position['column'],
79
- };
80
- }, () => relative_position //this is weird, we were already at the end of the list
81
- );
82
- found_carriage_return_before = c.transform(($) => $ === WhitespaceChars.carriage_return, () => false);
83
- position += 1;
84
- };
85
- return {
86
- 'consume string': ($) => {
87
- _pinternals.list_from_text($, ($) => $).__for_each(() => {
88
- consume_character();
89
- });
90
- },
91
- 'consume character': consume_character,
92
- 'get current character': () => {
93
- if (position === length) {
94
- return null;
95
- }
96
- return characters.__get_possible_element_at(position).transform(($) => $, () => null);
97
- },
98
- 'look ahead': ($) => {
99
- const next_position = position + $;
100
- if (next_position >= length) {
101
- return null;
102
- }
103
- return characters.__get_possible_element_at(next_position).transform(($) => $, () => null);
104
- },
105
- 'create location info': () => {
106
- return {
107
- 'absolute': position,
108
- 'relative': {
109
- 'line': relative_position.line,
110
- 'column': relative_position['column'],
111
- }
112
- };
113
- },
114
- 'create offset location info': (subtract) => {
115
- return {
116
- 'absolute': position - subtract,
117
- 'relative': {
118
- 'line': relative_position.line,
119
- 'column': relative_position['column'] - subtract,
120
- }
121
- };
122
- },
123
- 'create location info string': () => `${relative_position.line}:${relative_position['column']}`,
124
- 'get line indentation': () => {
125
- return relative_position['line indentation'] !== null
126
- ? relative_position['line indentation']
127
- : relative_position['column'];
128
- },
129
- };
130
- };
131
- exports.create_string_iterator = create_string_iterator;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nX2l0ZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL2dlbmVyYXRlZC9wYXJldG8vZ2VuZXJpYy9wYXJzZS9zdHJpbmdfaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtRUFBb0Q7QUFtQ3BELE1BQU0sZUFBZSxHQUFHO0lBQ3BCLEdBQUcsRUFBRSxJQUFJLEVBQW1CLEtBQUs7SUFDakMsU0FBUyxFQUFFLElBQUksRUFBYSxLQUFLO0lBQ2pDLGVBQWUsRUFBRSxJQUFJLEVBQU8sS0FBSztJQUNqQyxLQUFLLEVBQUUsSUFBSSxFQUFpQixFQUFFO0NBQ2pDLENBQUE7QUFFTSxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBUyxFQUFXLEVBQUU7SUFDdkQsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLGVBQWUsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUM5SCxDQUFDLENBQUE7QUFGWSxRQUFBLG9CQUFvQix3QkFFaEM7QUFFRDs7O0dBR0c7QUFFSSxNQUFNLHNCQUFzQixHQUFHLENBQ2xDLENBQVMsRUFDVCxFQUVDLEVBQ2MsRUFBRTtJQUNqQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDaEIsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO0lBUWxELElBQUksNEJBQTRCLEdBQUcsS0FBSyxDQUFBO0lBQ3hDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUNoQixJQUFJ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
@@ -1,10 +0,0 @@
1
- import * as _out from "../../../../../interface/generated/pareto/core/token";
2
- import { String_Iterator } from "./string_iterator";
3
- import { My_Lexer_Error } from "./astn_parse_generic";
4
- export declare const Whitespace: (string_iterator: String_Iterator, abort: ($: My_Lexer_Error) => never) => _out._T_Whitespace;
5
- export declare const Trivia: (string_iterator: String_Iterator, abort: ($: My_Lexer_Error) => never) => _out._T_Trivia;
6
- export declare const Annotated_Token: (st: String_Iterator, abort: ($: My_Lexer_Error) => never) => _out._T_Annotated_Token;
7
- export declare const Delimited_String: (string_iterator: String_Iterator, is_end_character: (character: number) => boolean, allow_newlines: boolean, abort: ($: My_Lexer_Error) => never) => _out._T_Delimited_String;
8
- export declare const Tokenizer_Result: ($: null, $p: {
9
- "string iterator": String_Iterator;
10
- }, abort: ($: My_Lexer_Error) => never) => _out._T_Tokenizer_Result;
@@ -1,519 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Tokenizer_Result = exports.Delimited_String = exports.Annotated_Token = exports.Trivia = exports.Whitespace = void 0;
27
- const _ea = __importStar(require("pareto-core-deserializer"));
28
- const _pinternals = __importStar(require("pareto-core-internals"));
29
- const astn_parse_generic_1 = require("./astn_parse_generic");
30
- const string_iterator_1 = require("./string_iterator");
31
- const hexadecimal_1 = require("pareto-standard-operations/dist/implementation/manual/primitives/integer/deserializers/hexadecimal");
32
- //this file contains the tokenizer functionality, each functoin return a type from the 'token' schema
33
- const WhitespaceChars = {
34
- tab: 0x09, // \t
35
- line_feed: 0x0A, // \n
36
- carriage_return: 0x0D, // \r
37
- space: 0x20, //
38
- comma: 0x2C, // ,
39
- };
40
- const Whitespace = (string_iterator, abort) => {
41
- const start = string_iterator['create location info']();
42
- return {
43
- 'value': _ea.text.deprecated_build(($i) => {
44
- while (true) {
45
- {
46
- const $ = string_iterator['get current character']();
47
- if ($ === null) {
48
- return;
49
- }
50
- if ((0, string_iterator_1.is_control_character)($)) {
51
- (0, astn_parse_generic_1.throw_lexer_error)(['unexpected control character', $], {
52
- 'start': string_iterator['create location info'](),
53
- 'end': string_iterator['create location info'](),
54
- }, abort);
55
- }
56
- switch ($) {
57
- case 0x09: // \t
58
- string_iterator['consume character']();
59
- $i['add character']($);
60
- break;
61
- case 0x0A: // \n
62
- string_iterator['consume character']();
63
- $i['add character']($);
64
- break;
65
- case 0x0D: // \r
66
- string_iterator['consume character']();
67
- $i['add character']($);
68
- break;
69
- case 0x20: // space
70
- string_iterator['consume character']();
71
- $i['add character']($);
72
- break;
73
- case 0x2C: // ,
74
- string_iterator['consume character']();
75
- $i['add character']($);
76
- break;
77
- default:
78
- return;
79
- }
80
- }
81
- }
82
- }),
83
- 'range': {
84
- 'start': start,
85
- 'end': string_iterator['create location info'](),
86
- }
87
- };
88
- };
89
- exports.Whitespace = Whitespace;
90
- const Trivia = (string_iterator, abort) => {
91
- return {
92
- 'leading whitespace': (0, exports.Whitespace)(string_iterator, abort),
93
- 'comments': _ea.list.deprecated_build(($i) => {
94
- while (true) {
95
- const $ = string_iterator['get current character']();
96
- if ($ === null) {
97
- return; //normal end of input
98
- }
99
- switch ($) {
100
- case 0x2F: // /
101
- const start = string_iterator['create location info']();
102
- const next_char = string_iterator['look ahead'](1);
103
- if (next_char === null) {
104
- const start = string_iterator['create location info']();
105
- string_iterator['consume character']();
106
- const end = string_iterator['create location info']();
107
- return (0, astn_parse_generic_1.throw_lexer_error)(['dangling slash', null], {
108
- 'start': start,
109
- 'end': end
110
- }, abort);
111
- }
112
- switch (next_char) {
113
- case 0x2F: // /
114
- string_iterator['consume character'](); // consume the first /
115
- string_iterator['consume character'](); // consume the second /
116
- const Character = {
117
- line_feed: 0x0A, // \n
118
- carriage_return: 0x0D, // \r
119
- solidus: 0x2F, // /
120
- };
121
- $i['add element']({
122
- 'type': ['line', null],
123
- 'content': _ea.text.deprecated_build(($i) => {
124
- while (true) {
125
- const $ = string_iterator['get current character']();
126
- if ($ === null) {
127
- return;
128
- }
129
- switch ($) {
130
- case Character.line_feed:
131
- return;
132
- case Character.carriage_return:
133
- return;
134
- default:
135
- string_iterator['consume character']();
136
- $i['add character']($);
137
- }
138
- }
139
- }),
140
- 'range': {
141
- 'start': start,
142
- 'end': string_iterator['create location info'](),
143
- },
144
- 'trailing whitespace': (0, exports.Whitespace)(string_iterator, abort)
145
- });
146
- break;
147
- case 0x2A: { // *
148
- string_iterator['consume character'](); // consume the first /
149
- string_iterator['consume character'](); // consume the asterisk
150
- $i['add element']({
151
- 'type': ['block', null],
152
- 'content': _ea.text.deprecated_build(($i) => {
153
- let found_asterisk = false;
154
- const Character = {
155
- solidus: 0x2F, // /
156
- asterisk: 0x2A, // *
157
- };
158
- while (true) {
159
- const $ = string_iterator['get current character']();
160
- if ($ === null) {
161
- return (0, astn_parse_generic_1.throw_lexer_error)(['unterminated block comment', null], {
162
- 'start': start,
163
- 'end': string_iterator['create location info']()
164
- }, abort);
165
- }
166
- if ($ === Character.solidus && found_asterisk) {
167
- string_iterator['consume character'](); // consume the solidus
168
- //found asterisk before solidus, so this is the end of the comment
169
- return;
170
- }
171
- //not a solidus, so this is part of the comment
172
- if (found_asterisk) {
173
- $i['add character'](Character.asterisk); // add the asterisk that was found before but was not part of the end delimiter
174
- }
175
- if ($ === Character.asterisk) {
176
- found_asterisk = true;
177
- }
178
- else {
179
- $i['add character']($);
180
- }
181
- string_iterator['consume character']();
182
- }
183
- }),
184
- 'range': {
185
- 'start': start,
186
- 'end': string_iterator['create location info'](),
187
- },
188
- 'trailing whitespace': (0, exports.Whitespace)(string_iterator, abort)
189
- });
190
- break;
191
- }
192
- default:
193
- return (0, astn_parse_generic_1.throw_lexer_error)(['dangling slash', null], {
194
- 'start': start,
195
- 'end': string_iterator['create location info']()
196
- }, abort);
197
- }
198
- break;
199
- default:
200
- return;
201
- }
202
- }
203
- })
204
- };
205
- };
206
- exports.Trivia = Trivia;
207
- const Annotated_Token = (st, abort) => {
208
- const $ = st['get current character']();
209
- if ($ === null) {
210
- return (0, astn_parse_generic_1.throw_lexer_error)(['unexpected end of input', null], {
211
- 'start': st['create location info'](),
212
- 'end': st['create location info'](),
213
- }, abort);
214
- }
215
- return {
216
- 'start': st['create location info'](),
217
- 'type': _ea.deprecated_block(() => {
218
- const Character = {
219
- open_angle_bracket: 0x3C, // <
220
- open_brace: 0x7B, // {
221
- open_bracket: 0x5B, // [
222
- open_paren: 0x28, // (
223
- close_angle_bracket: 0x3E, // >
224
- close_brace: 0x7D, // }
225
- close_bracket: 0x5D, // ]
226
- close_paren: 0x29, // )
227
- apostrophe: 0x27, // '
228
- asterisk: 0x2A, // *
229
- at: 0x40, // @
230
- backtick: 0x60, // `
231
- bang: 0x21,
232
- colon: 0x3A, // :
233
- pipe: 0x7C, // |
234
- quotation_mark: 0x22, // "
235
- slash: 0x2F, // /
236
- tilde: 0x7E, // ~
237
- hash: 0x23, // #
238
- space: 0x20, // space
239
- tab: 0x09, // \t
240
- };
241
- switch ($) {
242
- case Character.open_brace:
243
- st['consume character']();
244
- return ['{', null];
245
- case Character.open_bracket:
246
- st['consume character']();
247
- return ['[', null];
248
- case Character.open_angle_bracket:
249
- st['consume character']();
250
- return ['<', null];
251
- case Character.open_paren:
252
- st['consume character']();
253
- return ['(', null];
254
- case Character.close_brace:
255
- st['consume character']();
256
- return ['}', null];
257
- case Character.close_bracket:
258
- st['consume character']();
259
- return [']', null];
260
- case Character.close_angle_bracket:
261
- st['consume character']();
262
- return ['>', null];
263
- case Character.close_paren:
264
- st['consume character']();
265
- return [')', null];
266
- //individuals
267
- case Character.hash:
268
- st['consume character']();
269
- return ['#', null];
270
- case Character.pipe:
271
- st['consume character']();
272
- return ['|', null];
273
- case Character.tilde:
274
- st['consume character']();
275
- return ['~', null];
276
- case Character.asterisk:
277
- st['consume character']();
278
- return ['*', null];
279
- case Character.at:
280
- st['consume character']();
281
- return ['@', null];
282
- case Character.bang:
283
- st['consume character']();
284
- return ['!', null];
285
- case Character.colon:
286
- st['consume character']();
287
- return [':', null];
288
- case Character.quotation_mark:
289
- st['consume character']();
290
- return ['string', {
291
- 'value': (0, exports.Delimited_String)(st, ($) => $ === Character.quotation_mark, true, abort),
292
- 'type': ['quoted', null],
293
- }];
294
- case Character.backtick:
295
- st['consume character']();
296
- return ['string', {
297
- 'value': (0, exports.Delimited_String)(st, ($) => $ === Character.backtick, false, abort),
298
- 'type': ['backticked', null],
299
- }];
300
- case Character.apostrophe:
301
- st['consume character']();
302
- return ['string', {
303
- 'value': (0, exports.Delimited_String)(st, ($) => $ === Character.apostrophe, false, abort),
304
- 'type': ['apostrophed', null],
305
- }];
306
- default:
307
- return ['string', {
308
- 'type': ['undelimited', null],
309
- 'value': _ea.text.deprecated_build(($i) => {
310
- while (true) {
311
- const $ = st['get current character']();
312
- if ($ === null) {
313
- return;
314
- }
315
- if ((0, string_iterator_1.is_control_character)($)) {
316
- (0, astn_parse_generic_1.throw_lexer_error)(['unexpected control character', $], {
317
- 'start': st['create location info'](),
318
- 'end': st['create location info'](),
319
- }, abort);
320
- }
321
- if ($ === Character.open_brace ||
322
- $ === Character.close_brace ||
323
- $ === Character.open_bracket ||
324
- $ === Character.close_bracket ||
325
- $ === Character.open_angle_bracket ||
326
- $ === Character.close_angle_bracket ||
327
- $ === Character.open_paren ||
328
- $ === Character.close_paren ||
329
- $ === Character.apostrophe ||
330
- $ === Character.asterisk ||
331
- $ === Character.at ||
332
- $ === Character.backtick ||
333
- $ === Character.bang ||
334
- $ === Character.colon ||
335
- $ === Character.pipe ||
336
- $ === Character.quotation_mark ||
337
- $ === Character.slash ||
338
- $ === Character.tilde ||
339
- $ === WhitespaceChars.comma ||
340
- $ === WhitespaceChars.space ||
341
- $ === WhitespaceChars.tab ||
342
- $ === WhitespaceChars.line_feed ||
343
- $ === WhitespaceChars.carriage_return) {
344
- return;
345
- }
346
- st['consume character']();
347
- $i['add character']($);
348
- }
349
- }),
350
- }];
351
- }
352
- }),
353
- 'end': st['create location info'](),
354
- 'trailing trivia': (0, exports.Trivia)(st, abort),
355
- };
356
- };
357
- exports.Annotated_Token = Annotated_Token;
358
- const Delimited_String = (string_iterator, is_end_character, allow_newlines, abort) => {
359
- const Character = {
360
- backspace: 0x08, // \b
361
- form_feed: 0x0C, // \f
362
- tab: 0x09, // \t
363
- line_feed: 0x0A, // \n
364
- carriage_return: 0x0D, // \r
365
- quotation_mark: 0x22, // "
366
- backtick: 0x60, // `
367
- apostrophe: 0x27, // '
368
- reverse_solidus: 0x5C, // \
369
- solidus: 0x2F, // /
370
- a: 0x61, // a
371
- b: 0x62, // b
372
- f: 0x66, // f
373
- n: 0x6E, // n
374
- r: 0x72, // r
375
- t: 0x74, // t
376
- u: 0x75, // u
377
- A: 0x41, // A
378
- F: 0x46, // F
379
- };
380
- const start = string_iterator['create location info']();
381
- const txt = _ea.text.deprecated_build(($i) => {
382
- while (true) {
383
- const $ = string_iterator['get current character']();
384
- if ($ === null) {
385
- return (0, astn_parse_generic_1.throw_lexer_error)(['unterminated string', null], {
386
- 'start': start,
387
- 'end': string_iterator['create location info']()
388
- }, abort);
389
- }
390
- if ((0, string_iterator_1.is_control_character)($)) {
391
- (0, astn_parse_generic_1.throw_lexer_error)(['unexpected control character', $], {
392
- 'start': string_iterator['create location info'](),
393
- 'end': string_iterator['create location info'](),
394
- }, abort);
395
- }
396
- if (is_end_character($)) {
397
- string_iterator['consume character'](); // consume the end character
398
- return;
399
- }
400
- switch ($) {
401
- case Character.line_feed:
402
- case Character.carriage_return:
403
- if (!allow_newlines) {
404
- return (0, astn_parse_generic_1.throw_lexer_error)(['unexpected end of line in delimited string', null], {
405
- 'start': start,
406
- 'end': string_iterator['create location info']()
407
- }, abort);
408
- }
409
- string_iterator['consume character']();
410
- $i['add character']($);
411
- break;
412
- case Character.reverse_solidus: // \ (escape)
413
- string_iterator['consume character']();
414
- {
415
- const $ = string_iterator['get current character']();
416
- if ($ === null) {
417
- return (0, astn_parse_generic_1.throw_lexer_error)(['missing character after escape', null], {
418
- 'start': start,
419
- 'end': string_iterator['create location info']()
420
- }, abort);
421
- }
422
- switch ($) {
423
- case Character.quotation_mark:
424
- string_iterator['consume character']();
425
- $i['add character'](Character.quotation_mark);
426
- break;
427
- case Character.apostrophe:
428
- string_iterator['consume character']();
429
- $i['add character'](Character.apostrophe);
430
- break;
431
- case Character.backtick:
432
- string_iterator['consume character']();
433
- $i['add character'](Character.backtick);
434
- break;
435
- case Character.reverse_solidus:
436
- string_iterator['consume character']();
437
- $i['add character'](Character.reverse_solidus);
438
- break;
439
- case Character.solidus:
440
- string_iterator['consume character']();
441
- $i['add character'](Character.solidus);
442
- break;
443
- case Character.b:
444
- string_iterator['consume character']();
445
- $i['add character'](Character.backspace);
446
- break;
447
- case Character.f:
448
- string_iterator['consume character']();
449
- $i['add character'](Character.form_feed);
450
- break;
451
- case Character.n:
452
- string_iterator['consume character']();
453
- $i['add character'](Character.line_feed);
454
- break;
455
- case Character.r:
456
- string_iterator['consume character']();
457
- $i['add character'](Character.carriage_return);
458
- break;
459
- case Character.t:
460
- string_iterator['consume character']();
461
- $i['add character'](Character.tab);
462
- break;
463
- case Character.u:
464
- string_iterator['consume character']();
465
- $i['add character']((0, hexadecimal_1.$$)(_ea.text.deprecated_build(($i) => {
466
- const get_char = () => {
467
- const char = string_iterator['get current character']();
468
- if (char === null) {
469
- return (0, astn_parse_generic_1.throw_lexer_error)(['unterminated unicode escape sequence', null], {
470
- 'start': start,
471
- 'end': string_iterator['create location info']()
472
- }, abort);
473
- }
474
- if (char < Character.a || (char > Character.f && char < Character.A) || char > Character.F || char < 0x30 || char > 0x39) {
475
- return (0, astn_parse_generic_1.throw_lexer_error)(['invalid unicode escape sequence', null], {
476
- 'start': start,
477
- 'end': string_iterator['create location info']()
478
- }, abort);
479
- }
480
- string_iterator['consume character']();
481
- return char;
482
- };
483
- $i['add character'](get_char());
484
- $i['add character'](get_char());
485
- $i['add character'](get_char());
486
- $i['add character'](get_char());
487
- }), () => _pinternals.panic(`unreachable`)));
488
- break;
489
- default:
490
- return (0, astn_parse_generic_1.throw_lexer_error)(['unknown escape character', null], {
491
- 'start': start,
492
- 'end': string_iterator['create location info']()
493
- }, abort);
494
- }
495
- }
496
- break;
497
- default:
498
- string_iterator['consume character']();
499
- $i['add character']($);
500
- }
501
- }
502
- });
503
- return txt;
504
- };
505
- exports.Delimited_String = Delimited_String;
506
- const Tokenizer_Result = ($, $p, abort) => {
507
- return {
508
- 'leading trivia': (0, exports.Trivia)($p['string iterator'], abort),
509
- 'tokens': _ea.list.deprecated_build($i => {
510
- while ($p['string iterator']['get current character']() !== null) {
511
- const token = (0, exports.Annotated_Token)($p['string iterator'], abort);
512
- $i['add element'](token);
513
- }
514
- }),
515
- 'end': $p['string iterator']['create location info']()
516
- };
517
- };
518
- exports.Tokenizer_Result = Tokenizer_Result;
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW1wbGVtZW50YXRpb24vZ2VuZXJhdGVkL3BhcmV0by9nZW5lcmljL3BhcnNlL3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQStDO0FBQy9DLG1FQUFvRDtBQU1wRCw2REFBd0U7QUFDeEUsdURBQXdEO0FBRXhELG9JQUErSTtBQUUvSSxxR0FBcUc7QUFFckcsTUFBTSxlQUFlLEdBQUc7SUFDcEIsR0FBRyxFQUFFLElBQUksRUFBbUIsS0FBSztJQUNqQyxTQUFTLEVBQUUsSUFBSSxFQUFhLEtBQUs7SUFDakMsZUFBZSxFQUFFLElBQUksRUFBTyxLQUFLO0lBQ2pDLEtBQUssRUFBRSxJQUFJLEVBQWlCLEVBQUU7SUFDOUIsS0FBSyxFQUFFLElBQUksRUFBaUIsSUFBSTtDQUNuQyxDQUFBO0FBR00sTUFBTSxVQUFVLEdBQUcsQ0FDdEIsZUFBZ0MsRUFDaEMsS0FBbUMsRUFDakIsRUFBRTtJQUVwQixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFBO0lBQ3ZELE9BQU87UUFDSCxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBR1YsQ0FBQztvQkFDRyxNQUFNLENBQUMsR0FBRyxlQUFlLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFBO29CQUNwRCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQzt3QkFDYixPQUFNO29CQUNWLENBQUM7b0JBQ0QsSUFBSSxJQUFBLHNDQUFvQixFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzFCLElBQUEsc0NBQWlCLEVBQ2IsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsRUFDbkM7NEJBQ0ksT0FBTyxFQUFFLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFOzRCQUNsRCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7eUJBQ25ELEVBQ0QsS0FBSyxDQUNSLENBQUE7b0JBRUwsQ0FBQztvQkFDRCxRQUFRLENBQUMsRUFBRSxDQUFDO3dCQUNSLEtBQUssSUFBSSxFQUFFLEtBQUs7NEJBQ1osZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTs0QkFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRCQUN0QixNQUFLO3dCQUNULEtBQUssSUFBSSxFQUFFLEtBQUs7NEJBQ1osZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTs0QkFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRCQUN0QixNQUFLO3dCQUNULEtBQUssSUFBSSxFQUFFLEtBQUs7NEJBQ1osZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTs0QkFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRCQUN0QixNQUFLO3dCQUNULEtBQUssSUFBSSxFQUFFLFFBQVE7NEJBQ2YsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTs0QkFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRCQUN0QixNQUFLO3dCQUNULEtBQUssSUFBSSxFQUFFLElBQUk7NEJBQ1gsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTs0QkFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRCQUN0QixNQUFLO3dCQUNUOzRCQUNJLE9BQU07b0JBRWQsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE9BQU8sRUFBRTtZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1NBQ25EO0tBQ0osQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQTVEWSxRQUFBLFVBQVUsY0E0RHRCO0FBRU0sTUFBTSxNQUFNLEdBQUcsQ0FDbEIsZUFBZ0MsRUFDaEMsS0FBbUMsRUFDckIsRUFBRTtJQUVoQixPQUFPO1FBQ0gsb0JBQW9CLEVBQUUsSUFBQSxrQkFBVSxFQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7UUFDeEQsVUFBVSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN6QyxPQUFPLElBQUksRUFBRSxDQUFDO2dCQUNWLE1BQU0sQ0FBQyxHQUFHLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUE7Z0JBQ3BELElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNiLE9BQU0sQ0FBQyxxQkFBcUI7Z0JBQ2hDLENBQUM7Z0JBQ0QsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDUixLQUFLLElBQUksRUFBRSxJQUFJO3dCQUNYLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUE7d0JBQ3ZELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTt3QkFDbEQsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ3JCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUE7NEJBQ3ZELGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7NEJBQ3RDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUE7NEJBQ3JELE9BQU8sSUFBQSxzQ0FBaUIsRUFDcEIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFDeEI7Z0NBQ0ksT0FBTyxFQUFFLEtBQUs7Z0NBQ2QsS0FBSyxFQUFFLEdBQUc7NkJBQ2IsRUFDRCxLQUFLLENBQ1IsQ0FBQTt3QkFDTCxDQUFDO3dCQUNELFFBQVEsU0FBUyxFQUFFLENBQUM7NEJBQ2hCLEtBQUssSUFBSSxFQUFFLElBQUk7Z0NBQ1gsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQSxDQUFDLHNCQUFzQjtnQ0FDN0QsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQSxDQUFDLHVCQUF1QjtnQ0FDOUQsTUFBTSxTQUFTLEdBQUc7b0NBQ2QsU0FBUyxFQUFFLElBQUksRUFBYSxLQUFLO29DQUNqQyxlQUFlLEVBQUUsSUFBSSxFQUFPLEtBQUs7b0NBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQWUsSUFBSTtpQ0FDbkMsQ0FBQTtnQ0FDRCxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7b0NBQ2QsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztvQ0FDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3Q0FDeEMsT0FBTyxJQUFJLEVBQUUsQ0FBQzs0Q0FDVixNQUFNLENBQUMsR0FBRyxlQUFlLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFBOzRDQUNwRCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnREFDYixPQUFNOzRDQUNWLENBQUM7NENBQ0QsUUFBUSxDQUFDLEVBQUUsQ0FBQztnREFDUixLQUFLLFNBQVMsQ0FBQyxTQUFTO29EQUNwQixPQUFNO2dEQUNWLEtBQUssU0FBUyxDQUFDLGVBQWU7b0RBQzFCLE9BQU07Z0RBQ1Y7b0RBQ0ksZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvREFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRDQUM5QixDQUFDO3dDQUNMLENBQUM7b0NBQ0wsQ0FBQyxDQUFDO29DQUNGLE9BQU8sRUFBRTt3Q0FDTCxPQUFPLEVBQUUsS0FBSzt3Q0FDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7cUNBQ25EO29DQUNELHFCQUFxQixFQUFFLElBQUEsa0JBQVUsRUFBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO2lDQUM1RCxDQUFDLENBQUE7Z0NBQ0YsTUFBSzs0QkFDVCxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxJQUFJO2dDQUNaLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUEsQ0FBQyxzQkFBc0I7Z0NBQzdELGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUEsQ0FBQyx1QkFBdUI7Z0NBQzlELEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQ0FDZCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO29DQUN2QixTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dDQUN4QyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUE7d0NBQzFCLE1BQU0sU0FBUyxHQUFHOzRDQUNkLE9BQU8sRUFBRSxJQUFJLEVBQWUsSUFBSTs0Q0FDaEMsUUFBUSxFQUFFLElBQUksRUFBYyxJQUFJO3lDQUNuQyxDQUFBO3dDQUNELE9BQU8sSUFBSSxFQUFFLENBQUM7NENBQ1YsTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQTs0Q0FDcEQsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0RBQ2IsT0FBTyxJQUFBLHNDQUFpQixFQUNwQixDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxFQUNwQztvREFDSSxPQUFPLEVBQUUsS0FBSztvREFDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7aURBQ25ELEVBQ0QsS0FBSyxDQUNSLENBQUE7NENBQ0wsQ0FBQzs0Q0FDRCxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dEQUM1QyxlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBLENBQUMsc0JBQXNCO2dEQUM3RCxrRUFBa0U7Z0RBQ2xFLE9BQU07NENBQ1YsQ0FBQzs0Q0FDRCwrQ0FBK0M7NENBQy9DLElBQUksY0FBYyxFQUFFLENBQUM7Z0RBQ2pCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQywrRUFBK0U7NENBQzNILENBQUM7NENBQ0QsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dEQUMzQixjQUFjLEdBQUcsSUFBSSxDQUFBOzRDQUN6QixDQUFDO2lEQUFNLENBQUM7Z0RBQ0osRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRDQUMxQixDQUFDOzRDQUNELGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7d0NBQzFDLENBQUM7b0NBQ0wsQ0FBQyxDQUFDO29DQUNGLE9BQU8sRUFBRTt3Q0FDTCxPQUFPLEVBQUUsS0FBSzt3Q0FDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7cUNBQ25EO29DQUNELHFCQUFxQixFQUFFLElBQUEsa0JBQVUsRUFBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO2lDQUM1RCxDQUFDLENBQUE7Z0NBQ0YsTUFBSzs0QkFDVCxDQUFDOzRCQUNEO2dDQUNJLE9BQU8sSUFBQSxzQ0FBaUIsRUFDcEIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFDeEI7b0NBQ0ksT0FBTyxFQUFFLEtBQUs7b0NBQ2QsS0FBSyxFQUFFLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO2lDQUNuRCxFQUNELEtBQUssQ0FDUixDQUFBO3dCQUNULENBQUM7d0JBQ0QsTUFBSztvQkFDVDt3QkFDSSxPQUFNO2dCQUNkLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0tBQ0wsQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQWxJWSxRQUFBLE1BQU0sVUFrSWxCO0FBRU0sTUFBTSxlQUFlLEdBQUcsQ0FDM0IsRUFBbUIsRUFDbkIsS0FBbUMsRUFDWixFQUFFO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUE7SUFDdkMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDYixPQUFPLElBQUEsc0NBQWlCLEVBQ3BCLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEVBQ2pDO1lBQ0ksT0FBTyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ3JDLEtBQUssRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRTtTQUN0QyxFQUNELEtBQUssQ0FDUixDQUFBO0lBQ0wsQ0FBQztJQUNELE9BQU87UUFDSCxPQUFPLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7UUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUF1QixFQUFFO1lBRWxELE1BQU0sU0FBUyxHQUFHO2dCQUVkLGtCQUFrQixFQUFFLElBQUksRUFBRSxJQUFJO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFZLElBQUk7Z0JBQ2hDLFlBQVksRUFBRSxJQUFJLEVBQVUsSUFBSTtnQkFDaEMsVUFBVSxFQUFFLElBQUksRUFBVyxJQUFJO2dCQUUvQixtQkFBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSTtnQkFDL0IsV0FBVyxFQUFFLElBQUksRUFBVyxJQUFJO2dCQUNoQyxhQUFhLEVBQUUsSUFBSSxFQUFTLElBQUk7Z0JBQ2hDLFdBQVcsRUFBRSxJQUFJLEVBQVUsSUFBSTtnQkFFL0IsVUFBVSxFQUFFLElBQUksRUFBVyxJQUFJO2dCQUMvQixRQUFRLEVBQUUsSUFBSSxFQUFhLElBQUk7Z0JBQy9CLEVBQUUsRUFBRSxJQUFJLEVBQW1CLElBQUk7Z0JBQy9CLFFBQVEsRUFBRSxJQUFJLEVBQWEsSUFBSTtnQkFDL0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLElBQUksRUFBaUIsSUFBSTtnQkFDaEMsSUFBSSxFQUFFLElBQUksRUFBaUIsSUFBSTtnQkFDL0IsY0FBYyxFQUFFLElBQUksRUFBUSxJQUFJO2dCQUNoQyxLQUFLLEVBQUUsSUFBSSxFQUFnQixJQUFJO2dCQUMvQixLQUFLLEVBQUUsSUFBSSxFQUFnQixJQUFJO2dCQUMvQixJQUFJLEVBQUUsSUFBSSxFQUFpQixJQUFJO2dCQUUvQixLQUFLLEVBQUUsSUFBSSxFQUFnQixRQUFRO2dCQUNuQyxHQUFHLEVBQUUsSUFBSSxFQUFrQixLQUFLO2FBRW5DLENBQUE7WUFDRCxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNSLEtBQUssU0FBUyxDQUFDLFVBQVU7b0JBQ3JCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7b0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RCLEtBQUssU0FBUyxDQUFDLFlBQVk7b0JBQ3ZCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7b0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RCLEtBQUssU0FBUyxDQUFDLGtCQUFrQjtvQkFDN0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEIsS0FBSyxTQUFTLENBQUMsVUFBVTtvQkFDckIsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFHdEIsS0FBSyxTQUFTLENBQUMsV0FBVztvQkFDdEIsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEIsS0FBSyxTQUFTLENBQUMsYUFBYTtvQkFDeEIsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEIsS0FBSyxTQUFTLENBQUMsbUJBQW1CO29CQUM5QixFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUN0QixLQUFLLFNBQVMsQ0FBQyxXQUFXO29CQUN0QixFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUV0QixhQUFhO2dCQUNiLEtBQUssU0FBUyxDQUFDLElBQUk7b0JBQ2YsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEIsS0FBSyxTQUFTLENBQUMsSUFBSTtvQkFDZixFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUN0QixLQUFLLFNBQVMsQ0FBQyxLQUFLO29CQUNoQixFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUN0QixLQUFLLFNBQVMsQ0FBQyxRQUFRO29CQUNuQixFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUN0QixLQUFLLFNBQVMsQ0FBQyxFQUFFO29CQUNiLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7b0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RCLEtBQUssU0FBUyxDQUFDLElBQUk7b0JBQ2YsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEIsS0FBSyxTQUFTLENBQUMsS0FBSztvQkFDaEIsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEIsS0FBSyxTQUFTLENBQUMsY0FBYztvQkFDekIsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDekIsT0FBTyxDQUFDLFFBQVEsRUFBRTs0QkFDZCxPQUFPLEVBQUUsSUFBQSx3QkFBZ0IsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUM7NEJBQ2pGLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7eUJBQzNCLENBQUMsQ0FBQTtnQkFDTixLQUFLLFNBQVMsQ0FBQyxRQUFRO29CQUNuQixFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN6QixPQUFPLENBQUMsUUFBUSxFQUFFOzRCQUNkLE9BQU8sRUFBRSxJQUFBLHdCQUFnQixFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQzs0QkFDNUUsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQzt5QkFDL0IsQ0FBQyxDQUFBO2dCQUNOLEtBQUssU0FBUyxDQUFDLFVBQVU7b0JBQ3JCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7b0JBQ3pCLE9BQU8sQ0FBQyxRQUFRLEVBQUU7NEJBQ2QsT0FBTyxFQUFFLElBQUEsd0JBQWdCLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDOzRCQUM5RSxNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO3lCQUNoQyxDQUFDLENBQUE7Z0JBRU47b0JBQ0ksT0FBTyxDQUFDLFFBQVEsRUFBRTs0QkFDZCxNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDOzRCQUM3QixPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dDQUN0QyxPQUFPLElBQUksRUFBRSxDQUFDO29DQUNWLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUE7b0NBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO3dDQUNiLE9BQU07b0NBQ1YsQ0FBQztvQ0FFRCxJQUFJLElBQUEsc0NBQW9CLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FDMUIsSUFBQSxzQ0FBaUIsRUFDYixDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxFQUNuQzs0Q0FDSSxPQUFPLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7NENBQ3JDLEtBQUssRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRTt5Q0FDdEMsRUFDRCxLQUFLLENBQ1IsQ0FBQTtvQ0FFTCxDQUFDO29DQUNELElBQ0ksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxVQUFVO3dDQUMxQixDQUFDLEtBQUssU0FBUyxDQUFDLFdBQVc7d0NBQzNCLENBQUMsS0FBSyxTQUFTLENBQUMsWUFBWTt3Q0FDNUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxhQUFhO3dDQUM3QixDQUFDLEtBQUssU0FBUyxDQUFDLGtCQUFrQjt3Q0FDbEMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxtQkFBbUI7d0NBQ25DLENBQUMsS0FBSyxTQUFTLENBQUMsVUFBVTt3Q0FDMUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxXQUFXO3dDQUMzQixDQUFDLEtBQUssU0FBUyxDQUFDLFVBQVU7d0NBQzFCLENBQUMsS0FBSyxTQUFTLENBQUMsUUFBUTt3Q0FDeEIsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUFFO3dDQUNsQixDQUFDLEtBQUssU0FBUyxDQUFDLFFBQVE7d0NBQ3hCLENBQUMsS0FBSyxTQUFTLENBQUMsSUFBSTt3Q0FDcEIsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxLQUFLO3dDQUNyQixDQUFDLEtBQUssU0FBUyxDQUFDLElBQUk7d0NBQ3BCLENBQUMsS0FBSyxTQUFTLENBQUMsY0FBYzt3Q0FDOUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxLQUFLO3dDQUNyQixDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUs7d0NBQ3JCLENBQUMsS0FBSyxlQUFlLENBQUMsS0FBSzt3Q0FDM0IsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxLQUFLO3dDQUMzQixDQUFDLEtBQUssZUFBZSxDQUFDLEdBQUc7d0NBQ3pCLENBQUMsS0FBSyxlQUFlLENBQUMsU0FBUzt3Q0FDL0IsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxlQUFlLEVBQ3ZDLENBQUM7d0NBQ0MsT0FBTTtvQ0FDVixDQUFDO29DQUNELEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7b0NBQ3pCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQ0FDMUIsQ0FBQzs0QkFDTCxDQUFDLENBQUM7eUJBQ0wsQ0FBQyxDQUFBO1lBQ1YsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLEtBQUssRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUNuQyxpQkFBaUIsRUFBRSxJQUFBLGNBQU0sRUFBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO0tBQ3ZDLENBQUE7QUFDTCxDQUFDLENBQUE7QUE5S1ksUUFBQSxlQUFlLG1CQThLM0I7QUFFTSxNQUFNLGdCQUFnQixHQUFHLENBQzVCLGVBQWdDLEVBQ2hDLGdCQUFnRCxFQUNoRCxjQUF1QixFQUN2QixLQUFtQyxFQUNYLEVBQUU7SUFFMUIsTUFBTSxTQUFTLEdBQUc7UUFDZCxTQUFTLEVBQUUsSUFBSSxFQUFhLEtBQUs7UUFDakMsU0FBUyxFQUFFLElBQUksRUFBYSxLQUFLO1FBQ2pDLEdBQUcsRUFBRSxJQUFJLEVBQW1CLEtBQUs7UUFDakMsU0FBUyxFQUFFLElBQUksRUFBYSxLQUFLO1FBQ2pDLGVBQWUsRUFBRSxJQUFJLEVBQU8sS0FBSztRQUNqQyxjQUFjLEVBQUUsSUFBSSxFQUFRLElBQUk7UUFDaEMsUUFBUSxFQUFFLElBQUksRUFBYyxJQUFJO1FBQ2hDLFVBQVUsRUFBRSxJQUFJLEVBQVksSUFBSTtRQUNoQyxlQUFlLEVBQUUsSUFBSSxFQUFPLElBQUk7UUFDaEMsT0FBTyxFQUFFLElBQUksRUFBZSxJQUFJO1FBQ2hDLENBQUMsRUFBRSxJQUFJLEVBQXFCLElBQUk7UUFDaEMsQ0FBQyxFQUFFLElBQUksRUFBcUIsSUFBSTtRQUNoQyxDQUFDLEVBQUUsSUFBSSxFQUFxQixJQUFJO1FBQ2hDLENBQUMsRUFBRSxJQUFJLEVBQXFCLElBQUk7UUFDaEMsQ0FBQyxFQUFFLElBQUksRUFBcUIsSUFBSTtRQUNoQyxDQUFDLEVBQUUsSUFBSSxFQUFxQixJQUFJO1FBQ2hDLENBQUMsRUFBRSxJQUFJLEVBQXFCLElBQUk7UUFDaEMsQ0FBQyxFQUFFLElBQUksRUFBcUIsSUFBSTtRQUNoQyxDQUFDLEVBQUUsSUFBSSxFQUFxQixJQUFJO0tBRW5DLENBQUE7SUFDRCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFBO0lBQ3ZELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUN6QyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQTtZQUNwRCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFFYixPQUFPLElBQUEsc0NBQWlCLEVBQ3BCLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEVBQzdCO29CQUNJLE9BQU8sRUFBRSxLQUFLO29CQUNkLEtBQUssRUFBRSxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRTtpQkFDbkQsRUFDRCxLQUFLLENBQ1IsQ0FBQTtZQUNMLENBQUM7WUFDRCxJQUFJLElBQUEsc0NBQW9CLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsSUFBQSxzQ0FBaUIsRUFDYixDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxFQUNuQztvQkFDSSxPQUFPLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7b0JBQ2xELEtBQUssRUFBRSxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRTtpQkFDbkQsRUFDRCxLQUFLLENBQ1IsQ0FBQTtZQUVMLENBQUM7WUFDRCxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUEsQ0FBQyw0QkFBNEI7Z0JBQ25FLE9BQU07WUFDVixDQUFDO1lBQ0QsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDUixLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pCLEtBQUssU0FBUyxDQUFDLGVBQWU7b0JBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDbEIsT0FBTyxJQUFBLHNDQUFpQixFQUNwQixDQUFDLDRDQUE0QyxFQUFFLElBQUksQ0FBQyxFQUNwRDs0QkFDSSxPQUFPLEVBQUUsS0FBSzs0QkFDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7eUJBQ25ELEVBQ0QsS0FBSyxDQUNSLENBQUE7b0JBQ0wsQ0FBQztvQkFDRCxlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO29CQUN0QyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ3RCLE1BQUs7Z0JBQ1QsS0FBSyxTQUFTLENBQUMsZUFBZSxFQUFFLGFBQWE7b0JBQ3pDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7b0JBQ3RDLENBQUM7d0JBQ0csTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQTt3QkFDcEQsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ2IsT0FBTyxJQUFBLHNDQUFpQixFQUNwQixDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxFQUN4QztnQ0FDSSxPQUFPLEVBQUUsS0FBSztnQ0FDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7NkJBQ25ELEVBQ0QsS0FBSyxDQUNSLENBQUE7d0JBQ0wsQ0FBQzt3QkFDRCxRQUFRLENBQUMsRUFBRSxDQUFDOzRCQUNSLEtBQUssU0FBUyxDQUFDLGNBQWM7Z0NBQ3pCLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7Z0NBQ3RDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7Z0NBQzdDLE1BQUs7NEJBQ1QsS0FBSyxTQUFTLENBQUMsVUFBVTtnQ0FDckIsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtnQ0FDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQ0FDekMsTUFBSzs0QkFDVCxLQUFLLFNBQVMsQ0FBQyxRQUFRO2dDQUNuQixlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO2dDQUN0QyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dDQUN2QyxNQUFLOzRCQUNULEtBQUssU0FBUyxDQUFDLGVBQWU7Z0NBQzFCLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7Z0NBQ3RDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUE7Z0NBQzlDLE1BQUs7NEJBQ1QsS0FBSyxTQUFTLENBQUMsT0FBTztnQ0FDbEIsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtnQ0FDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQ0FDdEMsTUFBSzs0QkFDVCxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dDQUNaLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7Z0NBQ3RDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7Z0NBQ3hDLE1BQUs7NEJBQ1QsS0FBSyxTQUFTLENBQUMsQ0FBQztnQ0FDWixlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO2dDQUN0QyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dDQUN4QyxNQUFLOzRCQUNULEtBQUssU0FBUyxDQUFDLENBQUM7Z0NBQ1osZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtnQ0FDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQ0FDeEMsTUFBSzs0QkFDVCxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dDQUNaLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7Z0NBQ3RDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUE7Z0NBQzlDLE1BQUs7NEJBQ1QsS0FBSyxTQUFTLENBQUMsQ0FBQztnQ0FDWixlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFBO2dDQUN0QyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dDQUNsQyxNQUFLOzRCQUNULEtBQUssU0FBUyxDQUFDLENBQUM7Z0NBQ1osZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtnQ0FDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUEsZ0JBQW9CLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO29DQUN0RSxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7d0NBQ2xCLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUE7d0NBQ3ZELElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDOzRDQUNoQixPQUFPLElBQUEsc0NBQWlCLEVBQ3BCLENBQUMsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLEVBQzlDO2dEQUNJLE9BQU8sRUFBRSxLQUFLO2dEQUNkLEtBQUssRUFBRSxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRTs2Q0FDbkQsRUFDRCxLQUFLLENBQ1IsQ0FBQTt3Q0FDTCxDQUFDO3dDQUNELElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDOzRDQUN2SCxPQUFPLElBQUEsc0NBQWlCLEVBQ3BCLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLEVBQ3pDO2dEQUNJLE9BQU8sRUFBRSxLQUFLO2dEQUNkLEtBQUssRUFBRSxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRTs2Q0FDbkQsRUFDRCxLQUFLLENBQ1IsQ0FBQTt3Q0FDTCxDQUFDO3dDQUNELGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUE7d0NBQ3RDLE9BQU8sSUFBSSxDQUFBO29DQUNmLENBQUMsQ0FBQTtvQ0FDRCxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtvQ0FDL0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7b0NBQy9CLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO29DQUMvQixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtnQ0FDbkMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0NBQzVDLE1BQUs7NEJBQ1Q7Z0NBQ0ksT0FBTyxJQUFBLHNDQUFpQixFQUNwQixDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxFQUNsQztvQ0FDSSxPQUFPLEVBQUUsS0FBSztvQ0FDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7aUNBQ25ELEVBQ0QsS0FBSyxDQUNSLENBQUE7d0JBQ1QsQ0FBQztvQkFDTCxDQUFDO29CQUNELE1BQUs7Z0JBQ1Q7b0JBQ0ksZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtvQkFDdEMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzlCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLEdBQUcsQ0FBQTtBQUNkLENBQUMsQ0FBQTtBQXZMWSxRQUFBLGdCQUFnQixvQkF1TDVCO0FBRU0sTUFBTSxnQkFBZ0IsR0FBRyxDQUM1QixDQUFPLEVBQ1AsRUFFQyxFQUNELEtBQW1DLEVBQ1gsRUFBRTtJQUMxQixPQUFPO1FBQ0gsZ0JBQWdCLEVBQUUsSUFBQSxjQUFNLEVBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3RELFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUEwQixFQUFFLENBQUMsRUFBRTtZQUM5RCxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFFL0QsTUFBTSxLQUFLLEdBQUcsSUFBQSx1QkFBZSxFQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssQ0FBRSxDQUFBO2dCQUM1RCxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLEtBQUssRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO0tBQ3pELENBQUE7QUFDTCxDQUFDLENBQUE7QUFsQlksUUFBQSxnQkFBZ0Isb0JBa0I1QiJ9