lodash-walk-object 19.0.3 → 19.0.5

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.
Files changed (36) hide show
  1. package/browser/README.md +24 -24
  2. package/browser/fesm2022/lodash-walk-object.mjs +18 -5
  3. package/browser/fesm2022/lodash-walk-object.mjs.map +1 -1
  4. package/browser/package.json +1 -1
  5. package/client/README.md +24 -24
  6. package/client/fesm2022/lodash-walk-object.mjs +18 -5
  7. package/client/fesm2022/lodash-walk-object.mjs.map +1 -1
  8. package/client/package.json +1 -1
  9. package/index.js.map +1 -1
  10. package/lib/build-info._auto-generated_.d.ts +2 -1
  11. package/lib/build-info._auto-generated_.js +3 -2
  12. package/lib/build-info._auto-generated_.js.map +1 -1
  13. package/lib/index._auto-generated_.js.map +1 -1
  14. package/lib/index.js +44 -44
  15. package/lib/index.js.map +1 -1
  16. package/lib/models.js.map +1 -1
  17. package/migrations/index.js.map +1 -1
  18. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  19. package/package.json +1 -1
  20. package/tmp-environment.json +4 -4
  21. package/websql/README.md +24 -24
  22. package/websql/fesm2022/lodash-walk-object.mjs +18 -5
  23. package/websql/fesm2022/lodash-walk-object.mjs.map +1 -1
  24. package/websql/package.json +1 -1
  25. package/browser/esm2022/lib/index.mjs +0 -363
  26. package/browser/esm2022/lib/models.mjs +0 -4
  27. package/browser/esm2022/lodash-walk-object.mjs +0 -5
  28. package/browser/esm2022/public-api.mjs +0 -2
  29. package/client/esm2022/lib/index.mjs +0 -363
  30. package/client/esm2022/lib/models.mjs +0 -4
  31. package/client/esm2022/lodash-walk-object.mjs +0 -5
  32. package/client/esm2022/public-api.mjs +0 -2
  33. package/websql/esm2022/lib/index.mjs +0 -363
  34. package/websql/esm2022/lib/models.mjs +0 -4
  35. package/websql/esm2022/lodash-walk-object.mjs +0 -5
  36. package/websql/esm2022/public-api.mjs +0 -2
@@ -1,363 +0,0 @@
1
- import { _ } from 'tnp-core/browser';
2
- import { CLASS } from 'typescript-class-helpers/browser';
3
- export * from './models';
4
- function findChildren(ver, lp, walkGetters) {
5
- const obj = ver.v;
6
- if (_.isArray(obj)) {
7
- return obj.map((v, i) => {
8
- return { v, p: `${lp}[${i}]`, parent: ver, isGetter: false };
9
- });
10
- }
11
- else if (_.isObject(obj)) {
12
- const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);
13
- const children = [];
14
- for (const key in obj) {
15
- if (_.isObject(obj) &&
16
- _.isFunction(obj.hasOwnProperty) &&
17
- obj.hasOwnProperty(key)) {
18
- _.pull(allKeys, key);
19
- children.push({
20
- v: obj[key],
21
- p: `${lp === '' ? '' : `${lp}.`}${key}`,
22
- parent: ver,
23
- isGetter: false,
24
- });
25
- }
26
- }
27
- if (walkGetters) {
28
- for (let index = 0; index < allKeys.length; index++) {
29
- if (_.isObject(obj)) {
30
- const key = allKeys[index];
31
- children.push({
32
- v: obj[key],
33
- p: `${lp === '' ? '' : `${lp}.`}${key}`,
34
- parent: ver,
35
- isGetter: true,
36
- });
37
- }
38
- }
39
- }
40
- return children;
41
- }
42
- return [];
43
- }
44
- export class Helpers {
45
- static get Walk() {
46
- const self = this;
47
- return {
48
- Object(json, iterator, optionsOrWalkGettersValue) {
49
- if (_.isUndefined(optionsOrWalkGettersValue)) {
50
- optionsOrWalkGettersValue = {};
51
- }
52
- optionsOrWalkGettersValue.hasIterator =
53
- _.isFunction(iterator);
54
- if (_.isUndefined(optionsOrWalkGettersValue.breadthWalk)) {
55
- optionsOrWalkGettersValue.breadthWalk = false;
56
- }
57
- let { circural } = self._walk(json, json, iterator, void 0, optionsOrWalkGettersValue);
58
- return { circs: circural };
59
- },
60
- ObjectBy(property, inContext, iterator, options) {
61
- if (_.isFunction(iterator)) {
62
- iterator(inContext, '', self._changeValue(inContext, property, true)); // TODO Add optoins
63
- }
64
- // @ts-ignore
65
- const json = inContext[property];
66
- return self.Walk.Object(json, iterator, options);
67
- },
68
- };
69
- }
70
- static _changeValue(json, lodahPath, simpleChange = false, options) {
71
- var { contextPath, property } = this._prepareParams(lodahPath);
72
- var context = _.get(json, contextPath);
73
- return (newValue) => {
74
- if (contextPath === '') {
75
- simpleChange = true;
76
- }
77
- if (simpleChange) {
78
- // @ts-ignore
79
- json[property] = newValue;
80
- }
81
- else {
82
- if (context) {
83
- context[property] = newValue;
84
- }
85
- }
86
- if (options) {
87
- options._valueChanged = true;
88
- }
89
- };
90
- }
91
- static _prepareParams(lodashPath) {
92
- const contextPath = this._Helpers.Path.getContextPath(lodashPath);
93
- let property = this._Helpers.Path.getPropertyPath(lodashPath, contextPath);
94
- if (_.isString(property) &&
95
- property.trim() !== '' &&
96
- !_.isNaN(Number(property))) {
97
- property = Number(property);
98
- }
99
- return {
100
- contextPath,
101
- property,
102
- };
103
- }
104
- static get _Helpers() {
105
- return {
106
- get Path() {
107
- return {
108
- // @ts-ignore
109
- getPropertyPath(lodahPath, contetPath) {
110
- return lodahPath
111
- .replace(contetPath, '')
112
- .replace(/^\./, '')
113
- .replace(/\[/, '')
114
- .replace(/\]/, '');
115
- },
116
- getContextPath(p) {
117
- let res;
118
- if (p.endsWith(']')) {
119
- res = p.replace(/\[(\"|\')?[0-9]+(\"|\')?\]$/, '');
120
- }
121
- else {
122
- res = p.replace(/\.([a-zA-Z0-9]|\$|\_|\@|\-|\/|\:)+$/, '');
123
- }
124
- return res === p ? '' : res;
125
- },
126
- };
127
- },
128
- };
129
- }
130
- static _shoudlReturn(include = [], exclude = [], lodashPath) {
131
- let res = false;
132
- if (lodashPath.replace(/^\[(\'|\")?[0-9]*(\'|\")?\]/, '').trim() !== '') {
133
- lodashPath = lodashPath.replace(/^\[(\'|\")?[0-9]*(\'|\")?\]\./, '');
134
- res =
135
- (_.isArray(include) &&
136
- include.length > 0 &&
137
- !include.find(p => lodashPath.startsWith(p))) ||
138
- (_.isArray(exclude) &&
139
- exclude.length > 0 &&
140
- !!exclude.find(p => lodashPath.startsWith(p)));
141
- }
142
- return res;
143
- }
144
- // @ts-ignore
145
- static prepareOptions(options, obj, lodashPath) {
146
- if (options._exit) {
147
- return;
148
- }
149
- if (_.isUndefined(options.walkGetters)) {
150
- options.walkGetters = true;
151
- }
152
- if (_.isUndefined(options.checkCircural)) {
153
- options.checkCircural = false;
154
- }
155
- if (_.isUndefined(options.isGetter)) {
156
- // @ts-ignore
157
- options.isGetter = false;
158
- }
159
- if (_.isUndefined(options._valueChanged)) {
160
- options._valueChanged = false;
161
- }
162
- if (_.isUndefined(options._exit)) {
163
- // @ts-ignore
164
- options._exit = false;
165
- }
166
- if (_.isUndefined(options.exit)) {
167
- options.exit = () => {
168
- options._exit = true;
169
- };
170
- }
171
- if (_.isUndefined(options._skip)) {
172
- // @ts-ignore
173
- options._skip = false;
174
- }
175
- if (_.isUndefined(options.skipObject)) {
176
- options.skipObject = () => {
177
- options._skip = true;
178
- };
179
- }
180
- if (options.checkCircural) {
181
- if (_.isUndefined(options.db)) {
182
- options.db = {};
183
- }
184
- if (_.isUndefined(options.stack)) {
185
- options.stack = [];
186
- }
187
- if (_.isUndefined(options.circural)) {
188
- options.circural = [];
189
- }
190
- }
191
- const { db, stack } = options;
192
- options.isCircural = false;
193
- if (options.checkCircural && _.isObject(obj)) {
194
- let indexValue = CLASS.OBJECT(obj).indexValue;
195
- if (CLASS.OBJECT(obj).isClassObject && !_.isUndefined(indexValue)) {
196
- let className = CLASS.getNameFromObject(obj);
197
- let p = `${className}.id_${indexValue}`;
198
- const inDB = _.get(db, p);
199
- if (inDB && CLASS.OBJECT(inDB.target).isEqual(obj)) {
200
- const circ = {
201
- pathToObj: lodashPath,
202
- circuralTargetPath: inDB.path,
203
- };
204
- // @ts-ignore
205
- options.circural.push(circ);
206
- options.isCircural = true;
207
- }
208
- else {
209
- _.set(db, p, {
210
- path: lodashPath,
211
- target: obj,
212
- });
213
- }
214
- }
215
- else {
216
- // @ts-ignore
217
- const inStack = stack.find((c) => c.target == obj);
218
- if (!_.isUndefined(inStack)) {
219
- const circ = {
220
- pathToObj: lodashPath,
221
- circuralTargetPath: inStack.path,
222
- };
223
- // @ts-ignore
224
- options.circural.push(circ);
225
- options.isCircural = true;
226
- }
227
- else {
228
- // @ts-ignore
229
- stack.push({
230
- path: lodashPath,
231
- target: obj,
232
- });
233
- }
234
- }
235
- }
236
- return options;
237
- }
238
- static _walk(json, objOrWhatever, iterator, lodashPath = '', options, depthLevel = 0) {
239
- if (!options) {
240
- options = {};
241
- }
242
- // @ts-ignore
243
- if (!options.breadthWalk) {
244
- // @ts-ignore
245
- options = this.prepareOptions(options, objOrWhatever, lodashPath);
246
- // @ts-ignore
247
- if (this._shoudlReturn(options.include, options.exclude, lodashPath)) {
248
- return;
249
- }
250
- // @ts-ignore
251
- if (options.hasIterator && lodashPath !== '') {
252
- iterator(objOrWhatever, lodashPath, this._changeValue(json, lodashPath, false, options), options);
253
- }
254
- // @ts-ignore
255
- if (options._valueChanged) {
256
- objOrWhatever = _.get(json, lodashPath);
257
- }
258
- options._valueChanged = false;
259
- if (options.isCircural) {
260
- options._skip = true;
261
- }
262
- if (options._skip) {
263
- // @ts-ignore
264
- options._skip = false;
265
- return;
266
- }
267
- }
268
- if (options.breadthWalk) {
269
- let queue = [{ v: json, p: lodashPath, parent: void 0 }];
270
- while (queue.length > 0) {
271
- const ver = queue.shift();
272
- // @ts-ignore
273
- if (this._shoudlReturn(options.include, options.exclude, ver.p)) {
274
- continue;
275
- }
276
- // @ts-ignore
277
- let { v, p } = ver;
278
- // @ts-ignore
279
- options = this.prepareOptions(options, v, p);
280
- if (options._exit) {
281
- console.log('EXIT');
282
- return options;
283
- }
284
- if (options.hasIterator && p !== '') {
285
- iterator(v, p, this._changeValue(json, p, false, options), options);
286
- }
287
- // @ts-ignore
288
- if (options._valueChanged) {
289
- ver.v = _.get(json, p);
290
- }
291
- options._valueChanged = false;
292
- if (options.isCircural) {
293
- continue;
294
- }
295
- if (options._skip) {
296
- // @ts-ignore
297
- options._skip = false;
298
- continue;
299
- }
300
- if (_.isArray(v)) {
301
- // @ts-ignore
302
- queue = queue.concat(findChildren(ver, p, options.walkGetters));
303
- }
304
- else if (_.isObject(v)) {
305
- // @ts-ignore
306
- queue = queue.concat(findChildren(ver, p, options.walkGetters));
307
- }
308
- }
309
- }
310
- else {
311
- // @ts-ignore
312
- const { walkGetters } = options;
313
- if (Array.isArray(objOrWhatever)) {
314
- objOrWhatever.forEach((o, i) => {
315
- // @ts-ignore
316
- this._walk(json, objOrWhatever[i], iterator, `${lodashPath}[${i}]`, options, depthLevel + 1);
317
- });
318
- }
319
- else if (_.isObject(objOrWhatever)) {
320
- const allKeys = !walkGetters
321
- ? []
322
- : Object.getOwnPropertyNames(objOrWhatever);
323
- // @ts-ignore
324
- for (const key in objOrWhatever) {
325
- if (_.isObject(objOrWhatever) && objOrWhatever.hasOwnProperty(key)) {
326
- _.pull(allKeys, key);
327
- let newPropKey = key;
328
- options.isGetter = false;
329
- if (newPropKey.includes('.')) {
330
- newPropKey = `['${newPropKey}']`;
331
- }
332
- // @ts-ignore
333
- this._walk(json, objOrWhatever[newPropKey], iterator, `${lodashPath === '' ? '' : `${lodashPath}.`}${newPropKey}`, options, depthLevel + 1);
334
- }
335
- }
336
- if (walkGetters) {
337
- for (let index = 0; index < allKeys.length; index++) {
338
- if (_.isObject(objOrWhatever)) {
339
- const key = allKeys[index];
340
- // @ts-ignore
341
- options.isGetter = true;
342
- // @ts-ignore
343
- this._walk(json, objOrWhatever[key], iterator, `${lodashPath === '' ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1);
344
- }
345
- }
346
- }
347
- }
348
- // @ts-ignore
349
- if (options._exit && json === objOrWhatever) {
350
- // @ts-ignore
351
- options._exit = false;
352
- }
353
- }
354
- return options;
355
- }
356
- }
357
- export const walk = {
358
- Object: Helpers.Walk.Object,
359
- ObjectBy: Helpers.Walk.ObjectBy,
360
- };
361
- ;
362
- ({}); // @--end-of-file-for-module=lodash-walk-object lib/index.ts
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9sb2Rhc2gtd2Fsay1vYmplY3QvcHJvamVjdHMvbG9kYXNoLXdhbGstb2JqZWN0L3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUd6RCxjQUFjLFVBQVUsQ0FBQztBQUV6QixTQUFTLFlBQVksQ0FDbkIsR0FBZSxFQUNmLEVBQVUsRUFDVixXQUFvQjtJQUVwQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEUsTUFBTSxRQUFRLEdBQWlCLEVBQUUsQ0FBQztRQUNsQyxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQ0UsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUNoQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUN2QixDQUFDO2dCQUNELENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNaLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUNYLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUU7b0JBQ3ZDLE1BQU0sRUFBRSxHQUFHO29CQUNYLFFBQVEsRUFBRSxLQUFLO2lCQUNoQixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDWixDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQzt3QkFDWCxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFO3dCQUN2QyxNQUFNLEVBQUUsR0FBRzt3QkFDWCxRQUFRLEVBQUUsSUFBSTtxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQVNELE1BQU0sT0FBTyxPQUFPO0lBQ1gsTUFBTSxLQUFLLElBQUk7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU87WUFDTCxNQUFNLENBQ0osSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLHlCQUF1RDtnQkFFdkQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztvQkFDN0MseUJBQXlCLEdBQUcsRUFBRSxDQUFDO2dCQUNqQyxDQUFDO2dCQUVBLHlCQUFtRCxDQUFDLFdBQVc7b0JBQzlELENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRXpCLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUN6RCx5QkFBeUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUNoRCxDQUFDO2dCQUVELElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUMzQixJQUFJLEVBQ0osSUFBSSxFQUNKLFFBQVEsRUFDUixLQUFLLENBQUMsRUFDTix5QkFBZ0MsQ0FDakMsQ0FBQztnQkFFRixPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFDRCxRQUFRLENBQ04sUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsUUFBa0IsRUFDbEIsT0FBcUM7Z0JBRXJDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUMzQixRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDNUYsQ0FBQztnQkFDRCxhQUFhO2dCQUNiLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQ3pCLElBQVksRUFDWixTQUFpQixFQUNqQixZQUFZLEdBQUcsS0FBSyxFQUNwQixPQUErQjtRQUUvQixJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFdkMsT0FBTyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3ZCLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixhQUFhO2dCQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDNUIsQ0FBQztpQkFBTSxDQUFDO2dCQUdOLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQkFDL0IsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQjtRQUU5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFHbEUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUUzRSxJQUNFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3BCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ3RCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDMUIsQ0FBQztZQUNELFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU87WUFDTCxXQUFXO1lBQ1gsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxLQUFLLFFBQVE7UUFDekIsT0FBTztZQUNMLElBQUksSUFBSTtnQkFDTixPQUFPO29CQUNMLGFBQWE7b0JBQ2IsZUFBZSxDQUFDLFNBQVMsRUFBRSxVQUFVO3dCQUNuQyxPQUFPLFNBQVM7NkJBQ2IsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7NkJBQ3ZCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDOzZCQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQzs2QkFDakIsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDdkIsQ0FBQztvQkFDRCxjQUFjLENBQUMsQ0FBUzt3QkFDdEIsSUFBSSxHQUFXLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNwQixHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDckQsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLHFDQUFxQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM3RCxDQUFDO3dCQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzlCLENBQUM7aUJBQ0YsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLFVBQWtCO1FBQ3pFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEUsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckUsR0FBRztnQkFDRCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO29CQUNqQixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2xCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0MsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzt3QkFDakIsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUNsQixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxhQUFhO0lBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FDM0IsT0FBOEIsRUFDOUIsR0FBRyxFQUNILFVBQVU7UUFFVixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDcEMsYUFBYTtZQUNiLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxhQUFhO1lBQ2IsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRTtnQkFDbEIsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxhQUFhO1lBQ2IsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRTtnQkFDeEIsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDbEIsQ0FBQztZQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckIsQ0FBQztZQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUM5QixPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUUzQixJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzlDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xFLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLE9BQU8sVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sSUFBSSxHQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFM0MsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ25ELE1BQU0sSUFBSSxHQUFnQjt3QkFDeEIsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJO3FCQUM5QixDQUFDO29CQUNGLGFBQWE7b0JBQ2IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO3dCQUNYLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsR0FBRztxQkFDTyxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYTtnQkFDYixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEdBQWdCO3dCQUN4QixTQUFTLEVBQUUsVUFBVTt3QkFDckIsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLElBQUk7cUJBQ2pDLENBQUM7b0JBQ0YsYUFBYTtvQkFDYixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDNUIsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixhQUFhO29CQUNiLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxHQUFHO3FCQUNPLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQ2xCLElBQVksRUFDWixhQUFzQixFQUN0QixRQUFrQixFQUNsQixVQUFVLEdBQUcsRUFBRSxFQUNmLE9BQStCLEVBQy9CLFVBQVUsR0FBRyxDQUFDO1FBRWQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLEVBQVMsQ0FBQztRQUN0QixDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekIsYUFBYTtZQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFbEUsYUFBYTtZQUNiLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDckUsT0FBTztZQUNULENBQUM7WUFFRCxhQUFhO1lBQ2IsSUFBSSxPQUFPLENBQUMsV0FBVyxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDN0MsUUFBUSxDQUNOLGFBQWEsRUFDYixVQUFVLEVBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsRUFDbkQsT0FBTyxDQUNSLENBQUM7WUFDSixDQUFDO1lBRUQsYUFBYTtZQUNiLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxQixhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELE9BQU8sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBRTlCLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN2QixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUN2QixDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLGFBQWE7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLElBQUksS0FBSyxHQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFHdkUsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBTTFCLGFBQWE7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFHaEUsU0FBUztnQkFDWCxDQUFDO2dCQUlELGFBQWE7Z0JBQ2IsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ25CLGFBQWE7Z0JBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFN0MsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3BCLE9BQU8sT0FBTyxDQUFDO2dCQUNqQixDQUFDO2dCQUNELElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3BDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3RFLENBQUM7Z0JBRUQsYUFBYTtnQkFDYixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDMUIsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekIsQ0FBQztnQkFDRCxPQUFPLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFFOUIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBRXZCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbEIsYUFBYTtvQkFDYixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFFdEIsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQixhQUFhO29CQUNiLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO3FCQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6QixhQUFhO29CQUNiLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sYUFBYTtZQUNiLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFFaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQzdCLGFBQWE7b0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FDUixJQUFJLEVBQ0osYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNoQixRQUFRLEVBQ1IsR0FBRyxVQUFVLElBQUksQ0FBQyxHQUFHLEVBQ3JCLE9BQU8sRUFDUCxVQUFVLEdBQUcsQ0FBQyxDQUNmLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE9BQU8sR0FBRyxDQUFDLFdBQVc7b0JBQzFCLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRTlDLGFBQWE7Z0JBQ2IsS0FBSyxNQUFNLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFFaEMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDbkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBRXJCLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQzt3QkFDckIsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7d0JBQ3pCLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM3QixVQUFVLEdBQUcsS0FBSyxVQUFVLElBQUksQ0FBQzt3QkFDbkMsQ0FBQzt3QkFDRCxhQUFhO3dCQUNiLElBQUksQ0FBQyxLQUFLLENBQ1IsSUFBSSxFQUNKLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFDekIsUUFBUSxFQUNSLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxHQUFHLFVBQVUsRUFBRSxFQUMzRCxPQUFPLEVBQ1AsVUFBVSxHQUFHLENBQUMsQ0FDZixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO3dCQUNwRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzs0QkFDOUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUUzQixhQUFhOzRCQUNiLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDOzRCQUN4QixhQUFhOzRCQUNiLElBQUksQ0FBQyxLQUFLLENBQ1IsSUFBSSxFQUNKLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFDbEIsUUFBUSxFQUNSLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUNwRCxPQUFPLEVBQ1AsVUFBVSxHQUFHLENBQUMsQ0FDZixDQUFDO3dCQUNKLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELGFBQWE7WUFDYixJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUM1QyxhQUFhO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDM0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUTtDQUNoQyxDQUFDO0FBRUQsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw0REFBNEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcblxuZnVuY3Rpb24gZmluZENoaWxkcmVuKFxuICB2ZXI6IE1vZGVscy5WZXIsXG4gIGxwOiBzdHJpbmcsXG4gIHdhbGtHZXR0ZXJzOiBib29sZWFuLFxuKTogTW9kZWxzLlZlcltdIHtcbiAgY29uc3Qgb2JqID0gdmVyLnY7XG4gIGlmIChfLmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4geyB2LCBwOiBgJHtscH1bJHtpfV1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH07XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoXy5pc09iamVjdChvYmopKSB7XG4gICAgY29uc3QgYWxsS2V5cyA9ICF3YWxrR2V0dGVycyA/IFtdIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKTtcbiAgICBjb25zdCBjaGlsZHJlbjogTW9kZWxzLlZlcltdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoXG4gICAgICAgIF8uaXNPYmplY3Qob2JqKSAmJlxuICAgICAgICBfLmlzRnVuY3Rpb24ob2JqLmhhc093blByb3BlcnR5KSAmJlxuICAgICAgICBvYmouaGFzT3duUHJvcGVydHkoa2V5KVxuICAgICAgKSB7XG4gICAgICAgIF8ucHVsbChhbGxLZXlzLCBrZXkpO1xuICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICB2OiBvYmpba2V5XSxcbiAgICAgICAgICBwOiBgJHtscCA9PT0gJycgPyAnJyA6IGAke2xwfS5gfSR7a2V5fWAsXG4gICAgICAgICAgcGFyZW50OiB2ZXIsXG4gICAgICAgICAgaXNHZXR0ZXI6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHdhbGtHZXR0ZXJzKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYWxsS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSkge1xuICAgICAgICAgIGNvbnN0IGtleSA9IGFsbEtleXNbaW5kZXhdO1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgICAgdjogb2JqW2tleV0sXG4gICAgICAgICAgICBwOiBgJHtscCA9PT0gJycgPyAnJyA6IGAke2xwfS5gfSR7a2V5fWAsXG4gICAgICAgICAgICBwYXJlbnQ6IHZlcixcbiAgICAgICAgICAgIGlzR2V0dGVyOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gW107XG59XG5cbmV4cG9ydCB0eXBlIEl0ZXJhdG9yID0gKFxuICB2YWx1ZTogYW55LFxuICBsb2Rhc2hQYXRoOiBzdHJpbmcsXG4gIC8vIEB0cy1pZ25vcmVcbiAgY2hhbmdlVmFsdWVUbzogKG5ld1ZhbHVlKSA9PiB2b2lkLFxuICBvcHRpb25zPzogTW9kZWxzLkFkZGl0aW9uYWxJdGVyYXRvck9wdGlvbnMsXG4pID0+IHZvaWQ7XG5leHBvcnQgY2xhc3MgSGVscGVycyB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdhbGsoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9iamVjdChcbiAgICAgICAganNvbjogT2JqZWN0LFxuICAgICAgICBpdGVyYXRvcjogSXRlcmF0b3IsXG4gICAgICAgIG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWU/OiBNb2RlbHMuU3RhcnRJdGVyYXRvck9wdGlvbnMsXG4gICAgICApIHtcbiAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSkpIHtcbiAgICAgICAgICBvcHRpb25zT3JXYWxrR2V0dGVyc1ZhbHVlID0ge307XG4gICAgICAgIH1cblxuICAgICAgICAob3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSBhcyBNb2RlbHMuSW50ZXJuYWxWYWx1ZXMpLmhhc0l0ZXJhdG9yID1cbiAgICAgICAgICBfLmlzRnVuY3Rpb24oaXRlcmF0b3IpO1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUuYnJlYWR0aFdhbGspKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZS5icmVhZHRoV2FsayA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHsgY2lyY3VyYWwgfSA9IHNlbGYuX3dhbGsoXG4gICAgICAgICAganNvbixcbiAgICAgICAgICBqc29uLFxuICAgICAgICAgIGl0ZXJhdG9yLFxuICAgICAgICAgIHZvaWQgMCxcbiAgICAgICAgICBvcHRpb25zT3JXYWxrR2V0dGVyc1ZhbHVlIGFzIGFueSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4geyBjaXJjczogY2lyY3VyYWwgfTtcbiAgICAgIH0sXG4gICAgICBPYmplY3RCeShcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgaW5Db250ZXh0OiBPYmplY3QsXG4gICAgICAgIGl0ZXJhdG9yOiBJdGVyYXRvcixcbiAgICAgICAgb3B0aW9ucz86IE1vZGVscy5TdGFydEl0ZXJhdG9yT3B0aW9ucyxcbiAgICAgICkge1xuICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGl0ZXJhdG9yKSkge1xuICAgICAgICAgIGl0ZXJhdG9yKGluQ29udGV4dCwgJycsIHNlbGYuX2NoYW5nZVZhbHVlKGluQ29udGV4dCwgcHJvcGVydHksIHRydWUpKTsgLy8gVE9ETyBBZGQgb3B0b2luc1xuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QganNvbiA9IGluQ29udGV4dFtwcm9wZXJ0eV07XG4gICAgICAgIHJldHVybiBzZWxmLldhbGsuT2JqZWN0KGpzb24sIGl0ZXJhdG9yLCBvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9jaGFuZ2VWYWx1ZShcbiAgICBqc29uOiBPYmplY3QsXG4gICAgbG9kYWhQYXRoOiBzdHJpbmcsXG4gICAgc2ltcGxlQ2hhbmdlID0gZmFsc2UsXG4gICAgb3B0aW9ucz86IE1vZGVscy5JbnRlcm5hbFZhbHVlcyxcbiAgKSB7XG4gICAgdmFyIHsgY29udGV4dFBhdGgsIHByb3BlcnR5IH0gPSB0aGlzLl9wcmVwYXJlUGFyYW1zKGxvZGFoUGF0aCk7XG4gICAgdmFyIGNvbnRleHQgPSBfLmdldChqc29uLCBjb250ZXh0UGF0aCk7XG5cbiAgICByZXR1cm4gKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGlmIChjb250ZXh0UGF0aCA9PT0gJycpIHtcbiAgICAgICAgc2ltcGxlQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNpbXBsZUNoYW5nZSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGpzb25bcHJvcGVydHldID0gbmV3VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuXG5cbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICBjb250ZXh0W3Byb3BlcnR5XSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBvcHRpb25zLl92YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfcHJlcGFyZVBhcmFtcyhsb2Rhc2hQYXRoOiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IGNvbnRleHRQYXRoID0gdGhpcy5fSGVscGVycy5QYXRoLmdldENvbnRleHRQYXRoKGxvZGFzaFBhdGgpO1xuXG5cbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0UHJvcGVydHlQYXRoKGxvZGFzaFBhdGgsIGNvbnRleHRQYXRoKTtcblxuICAgIGlmIChcbiAgICAgIF8uaXNTdHJpbmcocHJvcGVydHkpICYmXG4gICAgICBwcm9wZXJ0eS50cmltKCkgIT09ICcnICYmXG4gICAgICAhXy5pc05hTihOdW1iZXIocHJvcGVydHkpKVxuICAgICkge1xuICAgICAgcHJvcGVydHkgPSBOdW1iZXIocHJvcGVydHkpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29udGV4dFBhdGgsXG4gICAgICBwcm9wZXJ0eSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IF9IZWxwZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXQgUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZ2V0UHJvcGVydHlQYXRoKGxvZGFoUGF0aCwgY29udGV0UGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvZGFoUGF0aFxuICAgICAgICAgICAgICAucmVwbGFjZShjb250ZXRQYXRoLCAnJylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL15cXC4vLCAnJylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcWy8sICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxdLywgJycpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0Q29udGV4dFBhdGgocDogc3RyaW5nKSB7XG4gICAgICAgICAgICBsZXQgcmVzOiBzdHJpbmc7XG4gICAgICAgICAgICBpZiAocC5lbmRzV2l0aCgnXScpKSB7XG4gICAgICAgICAgICAgIHJlcyA9IHAucmVwbGFjZSgvXFxbKFxcXCJ8XFwnKT9bMC05XSsoXFxcInxcXCcpP1xcXSQvLCAnJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMgPSBwLnJlcGxhY2UoL1xcLihbYS16QS1aMC05XXxcXCR8XFxffFxcQHxcXC18XFwvfFxcOikrJC8sICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMgPT09IHAgPyAnJyA6IHJlcztcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3Nob3VkbFJldHVybihpbmNsdWRlID0gW10sIGV4Y2x1ZGUgPSBbXSwgbG9kYXNoUGF0aDogc3RyaW5nKSB7XG4gICAgbGV0IHJlcyA9IGZhbHNlO1xuICAgIGlmIChsb2Rhc2hQYXRoLnJlcGxhY2UoL15cXFsoXFwnfFxcXCIpP1swLTldKihcXCd8XFxcIik/XFxdLywgJycpLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIGxvZGFzaFBhdGggPSBsb2Rhc2hQYXRoLnJlcGxhY2UoL15cXFsoXFwnfFxcXCIpP1swLTldKihcXCd8XFxcIik/XFxdXFwuLywgJycpO1xuICAgICAgcmVzID1cbiAgICAgICAgKF8uaXNBcnJheShpbmNsdWRlKSAmJlxuICAgICAgICAgIGluY2x1ZGUubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICFpbmNsdWRlLmZpbmQocCA9PiBsb2Rhc2hQYXRoLnN0YXJ0c1dpdGgocCkpKSB8fFxuICAgICAgICAoXy5pc0FycmF5KGV4Y2x1ZGUpICYmXG4gICAgICAgICAgZXhjbHVkZS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgISFleGNsdWRlLmZpbmQocCA9PiBsb2Rhc2hQYXRoLnN0YXJ0c1dpdGgocCkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBwcml2YXRlIHN0YXRpYyBwcmVwYXJlT3B0aW9ucyhcbiAgICBvcHRpb25zOiBNb2RlbHMuSW50ZXJuYWxWYWx1ZXMsXG4gICAgb2JqLFxuICAgIGxvZGFzaFBhdGgsXG4gICkge1xuICAgIGlmIChvcHRpb25zLl9leGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy53YWxrR2V0dGVycykpIHtcbiAgICAgIG9wdGlvbnMud2Fsa0dldHRlcnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCkpIHtcbiAgICAgIG9wdGlvbnMuY2hlY2tDaXJjdXJhbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuaXNHZXR0ZXIpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLmlzR2V0dGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fdmFsdWVDaGFuZ2VkKSkge1xuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fZXhpdCkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMuX2V4aXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmV4aXQpKSB7XG4gICAgICBvcHRpb25zLmV4aXQgPSAoKSA9PiB7XG4gICAgICAgIG9wdGlvbnMuX2V4aXQgPSB0cnVlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLl9za2lwKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgb3B0aW9ucy5fc2tpcCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuc2tpcE9iamVjdCkpIHtcbiAgICAgIG9wdGlvbnMuc2tpcE9iamVjdCA9ICgpID0+IHtcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IHRydWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNoZWNrQ2lyY3VyYWwpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuZGIpKSB7XG4gICAgICAgIG9wdGlvbnMuZGIgPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5zdGFjaykpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFjayA9IFtdO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmNpcmN1cmFsKSkge1xuICAgICAgICBvcHRpb25zLmNpcmN1cmFsID0gW107XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYiwgc3RhY2sgfSA9IG9wdGlvbnM7XG4gICAgb3B0aW9ucy5pc0NpcmN1cmFsID0gZmFsc2U7XG5cbiAgICBpZiAob3B0aW9ucy5jaGVja0NpcmN1cmFsICYmIF8uaXNPYmplY3Qob2JqKSkge1xuICAgICAgbGV0IGluZGV4VmFsdWUgPSBDTEFTUy5PQkpFQ1Qob2JqKS5pbmRleFZhbHVlO1xuICAgICAgaWYgKENMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgJiYgIV8uaXNVbmRlZmluZWQoaW5kZXhWYWx1ZSkpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgICAgIGxldCBwID0gYCR7Y2xhc3NOYW1lfS5pZF8ke2luZGV4VmFsdWV9YDtcbiAgICAgICAgY29uc3QgaW5EQjogTW9kZWxzLkluREJUeXBlID0gXy5nZXQoZGIsIHApO1xuXG4gICAgICAgIGlmIChpbkRCICYmIENMQVNTLk9CSkVDVChpbkRCLnRhcmdldCkuaXNFcXVhbChvYmopKSB7XG4gICAgICAgICAgY29uc3QgY2lyYzogTW9kZWxzLkNpcmMgPSB7XG4gICAgICAgICAgICBwYXRoVG9PYmo6IGxvZGFzaFBhdGgsXG4gICAgICAgICAgICBjaXJjdXJhbFRhcmdldFBhdGg6IGluREIucGF0aCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBvcHRpb25zLmNpcmN1cmFsLnB1c2goY2lyYyk7XG4gICAgICAgICAgb3B0aW9ucy5pc0NpcmN1cmFsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfLnNldChkYiwgcCwge1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqLFxuICAgICAgICAgIH0gYXMgTW9kZWxzLkluREJUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBpblN0YWNrID0gc3RhY2suZmluZCgoYzogTW9kZWxzLkluREJUeXBlKSA9PiBjLnRhcmdldCA9PSBvYmopO1xuXG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChpblN0YWNrKSkge1xuICAgICAgICAgIGNvbnN0IGNpcmM6IE1vZGVscy5DaXJjID0ge1xuICAgICAgICAgICAgcGF0aFRvT2JqOiBsb2Rhc2hQYXRoLFxuICAgICAgICAgICAgY2lyY3VyYWxUYXJnZXRQYXRoOiBpblN0YWNrLnBhdGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgb3B0aW9ucy5jaXJjdXJhbC5wdXNoKGNpcmMpO1xuICAgICAgICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqLFxuICAgICAgICAgIH0gYXMgTW9kZWxzLkluREJUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF93YWxrKFxuICAgIGpzb246IE9iamVjdCxcbiAgICBvYmpPcldoYXRldmVyOiB1bmtub3duLFxuICAgIGl0ZXJhdG9yOiBJdGVyYXRvcixcbiAgICBsb2Rhc2hQYXRoID0gJycsXG4gICAgb3B0aW9ucz86IE1vZGVscy5JbnRlcm5hbFZhbHVlcyxcbiAgICBkZXB0aExldmVsID0gMCxcbiAgKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge30gYXMgYW55O1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIW9wdGlvbnMuYnJlYWR0aFdhbGspIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMsIG9iak9yV2hhdGV2ZXIsIGxvZGFzaFBhdGgpO1xuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodGhpcy5fc2hvdWRsUmV0dXJuKG9wdGlvbnMuaW5jbHVkZSwgb3B0aW9ucy5leGNsdWRlLCBsb2Rhc2hQYXRoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChvcHRpb25zLmhhc0l0ZXJhdG9yICYmIGxvZGFzaFBhdGggIT09ICcnKSB7XG4gICAgICAgIGl0ZXJhdG9yKFxuICAgICAgICAgIG9iak9yV2hhdGV2ZXIsXG4gICAgICAgICAgbG9kYXNoUGF0aCxcbiAgICAgICAgICB0aGlzLl9jaGFuZ2VWYWx1ZShqc29uLCBsb2Rhc2hQYXRoLCBmYWxzZSwgb3B0aW9ucyksXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICBvYmpPcldoYXRldmVyID0gXy5nZXQoanNvbiwgbG9kYXNoUGF0aCk7XG4gICAgICB9XG4gICAgICBvcHRpb25zLl92YWx1ZUNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKG9wdGlvbnMuaXNDaXJjdXJhbCkge1xuICAgICAgICBvcHRpb25zLl9za2lwID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuX3NraXApIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvcHRpb25zLl9za2lwID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5icmVhZHRoV2Fsaykge1xuICAgICAgbGV0IHF1ZXVlOiBNb2RlbHMuVmVyW10gPSBbeyB2OiBqc29uLCBwOiBsb2Rhc2hQYXRoLCBwYXJlbnQ6IHZvaWQgMCB9XTtcblxuXG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB2ZXIgPSBxdWV1ZS5zaGlmdCgpO1xuXG5cblxuXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAodGhpcy5fc2hvdWRsUmV0dXJuKG9wdGlvbnMuaW5jbHVkZSwgb3B0aW9ucy5leGNsdWRlLCB2ZXIucCkpIHtcblxuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsZXQgeyB2LCBwIH0gPSB2ZXI7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMob3B0aW9ucywgdiwgcCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuX2V4aXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnRVhJVCcpO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmhhc0l0ZXJhdG9yICYmIHAgIT09ICcnKSB7XG4gICAgICAgICAgaXRlcmF0b3IodiwgcCwgdGhpcy5fY2hhbmdlVmFsdWUoanNvbiwgcCwgZmFsc2UsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICAgIHZlci52ID0gXy5nZXQoanNvbiwgcCk7XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaXNDaXJjdXJhbCkge1xuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5fc2tpcCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBvcHRpb25zLl9za2lwID0gZmFsc2U7XG5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLmlzQXJyYXkodikpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcXVldWUgPSBxdWV1ZS5jb25jYXQoZmluZENoaWxkcmVuKHZlciwgcCwgb3B0aW9ucy53YWxrR2V0dGVycykpO1xuICAgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QodikpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcXVldWUgPSBxdWV1ZS5jb25jYXQoZmluZENoaWxkcmVuKHZlciwgcCwgb3B0aW9ucy53YWxrR2V0dGVycykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgd2Fsa0dldHRlcnMgfSA9IG9wdGlvbnM7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iak9yV2hhdGV2ZXIpKSB7XG4gICAgICAgIG9iak9yV2hhdGV2ZXIuZm9yRWFjaCgobywgaSkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aGlzLl93YWxrKFxuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIG9iak9yV2hhdGV2ZXJbaV0sXG4gICAgICAgICAgICBpdGVyYXRvcixcbiAgICAgICAgICAgIGAke2xvZGFzaFBhdGh9WyR7aX1dYCxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBkZXB0aExldmVsICsgMSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc09iamVjdChvYmpPcldoYXRldmVyKSkge1xuICAgICAgICBjb25zdCBhbGxLZXlzID0gIXdhbGtHZXR0ZXJzXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqT3JXaGF0ZXZlcik7XG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmpPcldoYXRldmVyKSB7XG5cbiAgICAgICAgICBpZiAoXy5pc09iamVjdChvYmpPcldoYXRldmVyKSAmJiBvYmpPcldoYXRldmVyLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIF8ucHVsbChhbGxLZXlzLCBrZXkpO1xuXG4gICAgICAgICAgICBsZXQgbmV3UHJvcEtleSA9IGtleTtcbiAgICAgICAgICAgIG9wdGlvbnMuaXNHZXR0ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChuZXdQcm9wS2V5LmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgICAgbmV3UHJvcEtleSA9IGBbJyR7bmV3UHJvcEtleX0nXWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLl93YWxrKFxuICAgICAgICAgICAgICBqc29uLFxuICAgICAgICAgICAgICBvYmpPcldoYXRldmVyW25ld1Byb3BLZXldLFxuICAgICAgICAgICAgICBpdGVyYXRvcixcbiAgICAgICAgICAgICAgYCR7bG9kYXNoUGF0aCA9PT0gJycgPyAnJyA6IGAke2xvZGFzaFBhdGh9LmB9JHtuZXdQcm9wS2V5fWAsXG4gICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgIGRlcHRoTGV2ZWwgKyAxLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdhbGtHZXR0ZXJzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFsbEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBpZiAoXy5pc09iamVjdChvYmpPcldoYXRldmVyKSkge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcblxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG9wdGlvbnMuaXNHZXR0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuX3dhbGsoXG4gICAgICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgICAgICBvYmpPcldoYXRldmVyW2tleV0sXG4gICAgICAgICAgICAgICAgaXRlcmF0b3IsXG4gICAgICAgICAgICAgICAgYCR7bG9kYXNoUGF0aCA9PT0gJycgPyAnJyA6IGAke2xvZGFzaFBhdGh9LmB9JHtrZXl9YCxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIGRlcHRoTGV2ZWwgKyAxLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5fZXhpdCAmJiBqc29uID09PSBvYmpPcldoYXRldmVyKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucy5fZXhpdCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB3YWxrID0ge1xuICBPYmplY3Q6IEhlbHBlcnMuV2Fsay5PYmplY3QsXG4gIE9iamVjdEJ5OiBIZWxwZXJzLldhbGsuT2JqZWN0QnksXG59O1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bG9kYXNoLXdhbGstb2JqZWN0IGxpYi9pbmRleC50cyJdfQ==
@@ -1,4 +0,0 @@
1
- ;
2
- ({}); // @--end-of-file-for-module=lodash-walk-object lib/models.ts
3
- export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvbG9kYXNoLXdhbGstb2JqZWN0L3Byb2plY3RzL2xvZGFzaC13YWxrLW9iamVjdC9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2Q0MsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuZXhwb3J0IG5hbWVzcGFjZSBNb2RlbHMge1xuXG4gIGV4cG9ydCB0eXBlIEluREJUeXBlID0geyB0YXJnZXQ6IGFueTsgcGF0aDogc3RyaW5nOyB9O1xuICBleHBvcnQgdHlwZSBDaXJjID0geyBwYXRoVG9PYmo6IHN0cmluZzsgY2lyY3VyYWxUYXJnZXRQYXRoOiBzdHJpbmc7IH07XG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCB0eXBlIFZlciA9IHsgdjogYW55OyBwOiBzdHJpbmc7IHBhcmVudDogVmVyOyBpc0dldHRlcj86IGJvb2xlYW47IH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFN0YXJ0SXRlcmF0b3JPcHRpb25zIHtcbiAgICB3YWxrR2V0dGVycz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IGluIGJyZWFkaFR3YWxrXG4gICAgICovXG4gICAgY2hlY2tDaXJjdXJhbD86IGJvb2xlYW47XG4gICAgYnJlYWR0aFdhbGs/OiBib29sZWFuO1xuICAgIGluY2x1ZGU/OiBzdHJpbmdbXTtcbiAgICBleGNsdWRlPzogc3RyaW5nW107XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEFkZGl0aW9uYWxJdGVyYXRvck9wdGlvbnMgZXh0ZW5kcyBTdGFydEl0ZXJhdG9yT3B0aW9ucyB7XG4gICAgc2tpcE9iamVjdD86ICgpID0+IHZvaWQ7XG4gICAgaXNHZXR0ZXI/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEJyZWFkdGggd2FsayB3aWxsIHNraXAgY29udGVudCBvZiBjaXJjdXJhbCBvYmplY3RzXG4gICAgICovXG4gICAgaXNDaXJjdXJhbD86IGJvb2xlYW47XG4gICAgZXhpdD86ICgpID0+IHZvaWQ7XG5cbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxWYWx1ZXMgZXh0ZW5kcyBBZGRpdGlvbmFsSXRlcmF0b3JPcHRpb25zIHtcbiAgICBkYj86IGFueTtcbiAgICBzdGFjaz86IGFueVtdO1xuICAgIGNpcmN1cmFsPzogQ2lyY1tdO1xuICAgIGhhc0l0ZXJhdG9yPzogYm9vbGVhbjtcbiAgICBfdmFsdWVDaGFuZ2VkOiBib29sZWFuO1xuICAgIF9za2lwOiBib29sZWFuO1xuICAgIF9leGl0OiBib29sZWFuO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1sb2Rhc2gtd2Fsay1vYmplY3QgbGliL21vZGVscy50cyJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLXdhbGstb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvbG9kYXNoLXdhbGstb2JqZWN0L3Byb2plY3RzL2xvZGFzaC13YWxrLW9iamVjdC9zcmMvbG9kYXNoLXdhbGstb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './lib';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L2xvZGFzaC13YWxrLW9iamVjdC9wcm9qZWN0cy9sb2Rhc2gtd2Fsay1vYmplY3Qvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG4iXX0=