@wemake4u/form-player-se 1.0.31 → 1.0.33

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 (59) hide show
  1. package/esm2022/lib/components/actionsCellRenderer/actionsCellRenderer.component.mjs +29 -16
  2. package/esm2022/lib/components/hostCellRenderer/hostCellRenderer.component.mjs +3 -2
  3. package/esm2022/lib/directives/collapsepatch.directive.mjs +39 -0
  4. package/esm2022/lib/directives/grid.directive.mjs +82 -24
  5. package/esm2022/lib/directives/recursion.directive.mjs +189 -0
  6. package/esm2022/lib/directives/validationpatch.directive.mjs +46 -8
  7. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +33 -15
  8. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +30 -19
  9. package/esm2022/lib/locale/locale-de.mjs +4 -2
  10. package/esm2022/lib/locale/locale-en.mjs +4 -2
  11. package/esm2022/lib/locale/locale-es.mjs +4 -2
  12. package/esm2022/lib/locale/locale-fr.mjs +4 -2
  13. package/esm2022/lib/locale/locale-it.mjs +4 -2
  14. package/esm2022/lib/locale/locale-pt.mjs +4 -2
  15. package/esm2022/lib/services/cache.service.mjs +89 -0
  16. package/esm2022/lib/services/dialog.service.mjs +2 -2
  17. package/esm2022/lib/services/form.service.mjs +38 -2
  18. package/esm2022/lib/services/formatter.service.mjs +2 -2
  19. package/esm2022/lib/services/function.service.mjs +14 -3
  20. package/esm2022/lib/services/grid.service.mjs +46 -26
  21. package/esm2022/lib/services/programmability.service.mjs +28 -31
  22. package/esm2022/lib/services/scope.service.mjs +3 -2
  23. package/esm2022/lib/services/toast.service.mjs +2 -2
  24. package/esm2022/lib/services/validation.service.mjs +2 -2
  25. package/esm2022/lib/services/weak.service.mjs +6 -1
  26. package/esm2022/lib/utils/bound.mjs +12 -0
  27. package/esm2022/lib/utils/groupByRow.mjs +2 -1
  28. package/esm2022/lib/utils/proxy.mjs +55 -0
  29. package/fesm2022/wemake4u-form-player-se.mjs +712 -162
  30. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  31. package/lib/components/actionsCellRenderer/actionsCellRenderer.component.d.ts +4 -0
  32. package/lib/components/deleteRowRenderer/deleteRowRenderer.component.d.ts +2 -0
  33. package/lib/components/objectURLRenderer/objectURLRenderer.component.d.ts +2 -0
  34. package/lib/components/setFilter/setFilter.component.d.ts +2 -0
  35. package/lib/dialog/dialog.component.d.ts +14 -0
  36. package/lib/directives/collapsepatch.directive.d.ts +9 -0
  37. package/lib/directives/grid.directive.d.ts +17 -4
  38. package/lib/directives/recursion.directive.d.ts +38 -0
  39. package/lib/directives/validationpatch.directive.d.ts +11 -0
  40. package/lib/dynamic-fields/dynamic-fields.component.d.ts +20 -4
  41. package/lib/dynamic-form/dynamic-form.component.d.ts +19 -3
  42. package/lib/locale/locale-de.d.ts +2 -0
  43. package/lib/locale/locale-en.d.ts +2 -0
  44. package/lib/locale/locale-es.d.ts +2 -0
  45. package/lib/locale/locale-fr.d.ts +2 -0
  46. package/lib/locale/locale-it.d.ts +2 -0
  47. package/lib/locale/locale-pt.d.ts +2 -0
  48. package/lib/locale/locale.d.ts +14 -0
  49. package/lib/services/cache.service.d.ts +22 -0
  50. package/lib/services/form.service.d.ts +2 -0
  51. package/lib/services/function.service.d.ts +2 -0
  52. package/lib/services/grid.service.d.ts +11 -5
  53. package/lib/services/programmability.service.d.ts +4 -3
  54. package/lib/services/weak.service.d.ts +1 -0
  55. package/lib/utils/{functions.d.ts → bound.d.ts} +0 -1
  56. package/lib/utils/groupByRow.d.ts +1 -0
  57. package/lib/utils/proxy.d.ts +2 -0
  58. package/package.json +2 -2
  59. package/esm2022/lib/utils/functions.mjs +0 -31
@@ -1,6 +1,6 @@
1
1
  import { Injectable, Optional } from '@angular/core';
2
2
  import { FormArray, FormGroup } from '@angular/forms';
3
- import { ToProxy } from '../utils/functions';
3
+ import { toProxy } from '../utils/proxy';
4
4
  import { Subject, takeUntil, isObservable } from "rxjs";
5
5
  import { filter, pairwise, startWith, tap } from 'rxjs/operators';
6
6
  import { matchPath } from '../common/path';
@@ -62,9 +62,9 @@ export class ProgrammabilityService {
62
62
  return "";
63
63
  }
64
64
  ;
65
- evaluateString(formGroup, value) {
65
+ evaluateString(formGroup, value, options = {}) {
66
66
  if (this.isExpression(value)) {
67
- return this.evalExpression(formGroup, this.getExpression(value));
67
+ return this.evalExpression(formGroup, this.getExpression(value), options);
68
68
  }
69
69
  return value ?? "";
70
70
  }
@@ -72,23 +72,17 @@ export class ProgrammabilityService {
72
72
  if (typeof value === 'boolean') {
73
73
  return value;
74
74
  }
75
- else if (typeof value === 'string') {
76
- const strValue = value;
77
- if (this.isExpression(strValue)) {
78
- return this.evalExpression(formGroup, this.getExpression(strValue), options);
79
- }
75
+ else if (this.isExpression(value)) {
76
+ return this.evalExpression(formGroup, this.getExpression(value), options);
80
77
  }
81
78
  return null;
82
79
  }
83
- evaluateNumber(formGroup, value) {
80
+ evaluateNumber(formGroup, value, options = {}) {
84
81
  if (typeof value === 'number') {
85
82
  return value;
86
83
  }
87
- else if (typeof value === 'string') {
88
- const strValue = value;
89
- if (this.isExpression(strValue)) {
90
- return this.evalExpression(formGroup, this.getExpression(strValue));
91
- }
84
+ else if (this.isExpression(value)) {
85
+ return this.evalExpression(formGroup, this.getExpression(value), options);
92
86
  }
93
87
  return null;
94
88
  }
@@ -96,7 +90,7 @@ export class ProgrammabilityService {
96
90
  if (this.isExpression(value)) {
97
91
  return this.evalExpression(formGroup, this.getExpression(value), options);
98
92
  }
99
- return null;
93
+ return value;
100
94
  }
101
95
  evaluateTemplate(formGroup, value, options = {}) {
102
96
  let template = null;
@@ -110,9 +104,9 @@ export class ProgrammabilityService {
110
104
  return "";
111
105
  return this.evalTemplate(formGroup, template, options);
112
106
  }
113
- evaluateUnary(formGroup, value, input) {
107
+ evaluateUnary(formGroup, value, input, options = {}) {
114
108
  if (this.isExpression(value)) {
115
- return this.evalUnaryTest(formGroup, this.getExpression(value), input);
109
+ return this.evalUnaryTest(formGroup, this.getExpression(value), input, options);
116
110
  }
117
111
  return null;
118
112
  }
@@ -161,7 +155,7 @@ export class ProgrammabilityService {
161
155
  if (this.verbose)
162
156
  console.log("Programmability Service Initialized", { cacheable: this.cacheable, verbose: this.verbose });
163
157
  }
164
- evalUnaryTest(formGroup, expression, input) {
158
+ evalUnaryTest(formGroup, expression, input, options = {}) {
165
159
  const logError = (expression, error) => {
166
160
  console.warn(expression, { formGroup, error });
167
161
  };
@@ -171,7 +165,7 @@ export class ProgrammabilityService {
171
165
  console.log("Evaluate UnaryTest:", expression, result, { formGroup });
172
166
  };
173
167
  try {
174
- const result = this.feelService.evalUnaryTest(expression, this.getContext(formGroup), input);
168
+ const result = this.feelService.evalUnaryTest(expression, this.getContext(formGroup, options), input);
175
169
  logEvaluation(expression, result);
176
170
  return result;
177
171
  }
@@ -207,14 +201,17 @@ export class ProgrammabilityService {
207
201
  };
208
202
  const cacheable = options.cacheable ?? this.cacheable;
209
203
  if (cacheable) {
210
- const watchKey = `:watch(${expression})`;
211
- this.weakService.call(this, watchKey, () => {
212
- this.watchingExpression(formGroup, expression, () => {
213
- this.invalidateExpression(expression);
214
- logInvalidate(expression);
204
+ const ignoreDeps = options.ignoreDeps ?? false;
205
+ if (!ignoreDeps) {
206
+ const watchKey = `:watch(${expression})`;
207
+ this.weakService.call(this, watchKey, () => {
208
+ this.watchingExpression(formGroup, expression, () => {
209
+ this.invalidateExpression(expression);
210
+ logInvalidate(expression);
211
+ });
212
+ return true;
215
213
  });
216
- return true;
217
- });
214
+ }
218
215
  return this.weakService.call(this, expression, evaluate, null, this.onErrorHandler);
219
216
  }
220
217
  else {
@@ -303,7 +300,7 @@ export class ProgrammabilityService {
303
300
  const self = this;
304
301
  return {
305
302
  ...parent.value,
306
- formGroup: () => ToProxy(parent),
303
+ formGroup: () => toProxy(parent),
307
304
  get parent() { return self.getParentContext(parent); },
308
305
  };
309
306
  }
@@ -329,10 +326,10 @@ export class ProgrammabilityService {
329
326
  const baseContext = formGroup?.value ?? {};
330
327
  const self = this;
331
328
  let context = {
332
- get console() { return ToProxy(console); },
329
+ get console() { return toProxy(console); },
333
330
  get parent() { return self.getParentContext(formGroup); },
334
331
  get root() { return self.getRootContext(formGroup); },
335
- formGroup: () => ToProxy(formGroup),
332
+ formGroup: () => toProxy(formGroup),
336
333
  _: this.scope?.getContext(),
337
334
  ...baseContext,
338
335
  fn: {
@@ -401,7 +398,7 @@ export class ProgrammabilityService {
401
398
  this.subscribeChanges(control.valueChanges, control, control.value, callback, logValueChanged);
402
399
  };
403
400
  const statusSubscribe = (control) => {
404
- this.subscribeChanges(control.statusChanges, control, control.status, callback, logStatusChanged);
401
+ this.subscribeChanges(this.formService.statusChanges(control, callback), control, control.status, callback, logStatusChanged);
405
402
  };
406
403
  const subscribeScope = (dependence) => {
407
404
  this.scope.onRefresh
@@ -472,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
472
469
  }] }, { type: i10.ScopeService, decorators: [{
473
470
  type: Optional
474
471
  }] }] });
475
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFHbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUViO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBVHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixhQUE0QixFQUNoQixRQUF5QixFQUN6QixLQUFtQjtRQVR2QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFl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QUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7eUJBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3lCQUM5QixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ25CLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBQzlDLFFBQVEsRUFBRSxDQUFDO29CQUNiLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxVQUFrQjtRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFVBQTZCO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7ZUFDN0MsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDO2VBQ3JCLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQztRQUV4QyxPQUFPLGdCQUFnQjtZQUNyQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxPQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQWhoQlUsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVdKLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbFN0YXR1cywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGZWVsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZlZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjb3BlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Njb3BlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybWF0dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vha1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWFrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb1Byb3h5IH0gZnJvbSAnLi4vdXRpbHMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUGF0aCwgbWF0Y2hQYXRoIH0gZnJvbSAnLi4vY29tbW9uL3BhdGgnO1xyXG5cclxuY29uc3QgU3RhdHVzRGVwZW5kZW5jeSA9IFwiJHN0YXR1c1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmVlbFNlcnZpY2U6IEZlZWxTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgd2Vha1NlcnZpY2U6IFdlYWtTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybWF0dGVyU2VydmljZTogRm9ybWF0dGVyU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZ1bmN0aW9uU2VydmljZTogRnVuY3Rpb25TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZ2xvYmFsU2VydmljZTogR2xvYmFsU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlZ2lzdGVyOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY29wZTogU2NvcGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLkluaXQoKTtcclxuICAgIHRoaXMucHJlZGVmaW5lZEZ1bmN0aW9ucyA9IHRoaXMuZ2V0UHJlZGVmaW5lZEZ1bmN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIEdsb2JhbCBQcm9wZXJ0aWVzOlxyXG4gICAgLSBmZWVsLWRpYWdub3N0aWNzOiBcIm9uXCIsIFwib2ZmXCJcclxuICAgIC0gZmVlbC1jYWNoZWFibGU6IFwib25cIiwgXCJvZmZcIlxyXG4gICovXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZGVmaW5lZEZ1bmN0aW9uczogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBpc0V4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0LnN0YXJ0c1dpdGgoXCI9XCIpO1xyXG4gIH07XHJcblxyXG4gIGdldEV4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odGV4dCkpXHJcbiAgICAgIHJldHVybiB0ZXh0IS5zdWJzdHJpbmcoMSk7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9O1xyXG5cclxuICBldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpLCBvcHRpb25zKSBhcyBib29sZWFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTnVtYmVyKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBzdHJWYWx1ZTogc3RyaW5nID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihzdHJWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbihzdHJWYWx1ZSkpIGFzIG51bWJlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHsgfSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcblxyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGVtcGxhdGUpXHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWxUZW1wbGF0ZShmb3JtR3JvdXAsIHRlbXBsYXRlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBpbnB1dDogYW55KTogYW55IHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbFVuYXJ5VGVzdChmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIGlucHV0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaW52YWxpZGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd2F0Y2goZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb246IHN0cmluZyk6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5nZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVDaGFuZ2VzPFQ+KFxyXG4gICAgb2JzZXJ2YWJsZSQ6IE9ic2VydmFibGU8VD4sXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICBpbml0aWFsOiBULFxyXG4gICAgY2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8ICgob2xkVmFsdWU6IFQsIG5ld1ZhbHVlOiBUKSA9PiB2b2lkKSxcclxuICAgIGxvZ0ZuPzogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdm9pZCAgICBcclxuICApIHtcclxuICAgIG9ic2VydmFibGUkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aChpbml0aWFsKSxcclxuICAgICAgICBwYWlyd2lzZSgpLFxyXG4gICAgICAgIGZpbHRlcigoW29sZFZhbHVlLCBuZXdWYWx1ZV0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5XHJcbiAgICAgICAgICAgIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXBcclxuICAgICAgICAgICAgfHwgb2xkVmFsdWUgIT09IG5ld1ZhbHVlXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoW29sZFZhbHVlLCBuZXdWYWx1ZV0pID0+IHtcclxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2FsbGJhY2subGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIChjYWxsYmFjayBhcyAoKSA9PiB2b2lkKSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgKGNhbGxiYWNrIGFzIChvbGRWYWx1ZTogVCwgbmV3VmFsdWU6IFQpID0+IHZvaWQpKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsb2dGbj8uKGNvbnRyb2wpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCB2ZXJib3NlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZlcmJvc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FjaGVhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlYWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ZlcmJvc2UgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfY2FjaGVhYmxlID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBvbkVycm9ySGFuZGxlcjogYW55ID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XHJcblxyXG4gIHByaXZhdGUgSW5pdCgpIHtcclxuICAgIHRoaXMuX2NhY2hlYWJsZSA9IHRoaXMuZ2xvYmFsU2VydmljZS5nZXRQcm9wZXJ0eShcImZlZWwtY2FjaGVhYmxlXCIsIFwib25cIikgPT09IFwib25cIjtcclxuICAgIHRoaXMuX3ZlcmJvc2UgPSB0aGlzLmdsb2JhbFNlcnZpY2UuZ2V0UHJvcGVydHkoXCJmZWVsLWRpYWdub3N0aWNzXCIsIFwib2ZmXCIpID09PSBcIm9uXCI7XHJcbiAgICBpZiAodGhpcy52ZXJib3NlKVxyXG4gICAgICBjb25zb2xlLmxvZyhcIlByb2dyYW1tYWJpbGl0eSBTZXJ2aWNlIEluaXRpYWxpemVkXCIsIHsgY2FjaGVhYmxlOiB0aGlzLmNhY2hlYWJsZSwgdmVyYm9zZTogdGhpcy52ZXJib3NlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsVW5hcnlUZXN0KGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGlucHV0OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dFdmFsdWF0aW9uID0gKGV4cHJlc3Npb246IHN0cmluZywgcmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJFdmFsdWF0ZSBVbmFyeVRlc3Q6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKVxyXG4gICAgICAgICwgaW5wdXQpO1xyXG4gICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG5cclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dJbnZhbGlkYXRlID0gKGV4cHJlc3Npb246IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkludmFsaWRhdGUgRXhwcmVzc2lvbjpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIEV4cHJlc3Npb246XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKSk7XHJcbiAgICAgICAgbG9nRXZhbHVhdGlvbihleHByZXNzaW9uLCByZXN1bHQpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBsb2dFcnJvcihleHByZXNzaW9uLCBlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjYWNoZWFibGUgPSBvcHRpb25zLmNhY2hlYWJsZSA/PyB0aGlzLmNhY2hlYWJsZTtcclxuXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcbiAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaCgke2V4cHJlc3Npb259KWA7XHJcblxyXG4gICAgICB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgd2F0Y2hLZXksICgpID0+IHtcclxuICAgICAgICB0aGlzLndhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSwgbnVsbCwgdGhpcy5vbkVycm9ySGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcblxyXG4gICAgY29uc3QgbG9nRXJyb3IgPSAoZXhwcmVzc2lvbjogc3RyaW5nLCBlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUud2FybihleHByZXNzaW9uLCB7IGZvcm1Hcm91cCwgb3B0aW9ucywgZXJyb3IgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0ludmFsaWRhdGUgPSAoZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiSW52YWxpZGF0ZSBUZW1wbGF0ZTpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIFRlbXBsYXRlOlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxUZW1wbGF0ZShleHByZXNzaW9uXHJcbiAgICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApKTtcclxuICAgICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhY2hlYWJsZSA9IG9wdGlvbnMuY2FjaGVhYmxlID8/IHRoaXMuY2FjaGVhYmxlO1xyXG4gICAgXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcbiAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaFRlbXBsYXRlKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud2F0Y2hpbmdUZW1wbGF0ZUV4cHJlc3Npb24oZm9ybUdyb3VwLCBleHByZXNzaW9uXHJcbiAgICAgICAgICAsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgbG9nSW52YWxpZGF0ZShleHByZXNzaW9uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgZXhwcmVzc2lvbiwgZXZhbHVhdGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBldmFsdWF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkVycm9yKHJlc3VsdDogYW55KTogYW55IHtcclxuICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0LnBpcGUoXHJcbiAgICAgICAgdGFwKHtcclxuICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlFcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmVkZWZpbmVkRnVuY3Rpb25zKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cclxuICAgIGNvbnN0IHByb3ZpZGVyczogSUV2YWx1YXRvclByb3ZpZGVyW10gPSBbXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZSxcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZnVuY3Rpb25TZXJ2aWNlLFxyXG4gICAgICB0aGlzLmZvcm1hdHRlclNlcnZpY2UsXHJcbiAgICAgIHRoaXMucmVnaXN0ZXIgICAgICBcclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIHByb3ZpZGVycy5yZWR1Y2UoKGFjYywgcHJvdmlkZXIpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5hY2MsXHJcbiAgICAgICAgLi4ucHJvdmlkZXIuZ2V0Q29udGV4dCgpXHJcbiAgICAgIH07XHJcbiAgICB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1GdW5jdGlvbnMoZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudENvbnRleHQoZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwge1xyXG4gICAgaWYgKGZvcm1Hcm91cCA9PT0gbnVsbCkgeyBcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoZm9ybUdyb3VwKTtcclxuXHJcbiAgICBpZiAoIXBhcmVudCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5wYXJlbnQudmFsdWUsXHJcbiAgICAgIGZvcm1Hcm91cDogKCkgPT4gVG9Qcm94eShwYXJlbnQpLCAgICAgIFxyXG4gICAgICBnZXQgcGFyZW50KCkgeyByZXR1cm4gc2VsZi5nZXRQYXJlbnRDb250ZXh0KHBhcmVudCk7IH0sXHJcbiAgICB9OyAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um9vdENvbnRleHQoZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwge1xyXG4gICAgaWYgKGZvcm1Hcm91cCA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3Qgcm9vdCA9IGZvcm1Hcm91cD8ucm9vdDtcclxuXHJcbiAgICBpZiAoIXJvb3QpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJvb3QudmFsdWU7ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnQoZm9ybUdyb3VwOiBGb3JtR3JvdXApIDogRm9ybUdyb3VwIHwgbnVsbCB7XHJcbiAgICBsZXQgcGFyZW50ID0gZm9ybUdyb3VwLnBhcmVudDtcclxuXHJcbiAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHBhcmVudCA9IHBhcmVudD8ucGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJlbnQgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGV4dChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG5cclxuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gZm9ybUdyb3VwPy52YWx1ZSA/PyB7IH07XHJcblxyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgbGV0IGNvbnRleHQgPSB7XHJcbiAgICAgIGdldCBjb25zb2xlKCkgeyByZXR1cm4gVG9Qcm94eShjb25zb2xlKTsgfSxcclxuICAgICAgZ2V0IHBhcmVudCgpIHsgcmV0dXJuIHNlbGYuZ2V0UGFyZW50Q29udGV4dChmb3JtR3JvdXApOyB9LFxyXG4gICAgICBnZXQgcm9vdCgpIHsgcmV0dXJuIHNlbGYuZ2V0Um9vdENvbnRleHQoZm9ybUdyb3VwKTsgfSxcclxuICAgICAgZm9ybUdyb3VwOiAoKSA9PiBUb1Byb3h5KGZvcm1Hcm91cCksXHJcbiAgICAgIF86IHRoaXMuc2NvcGU/LmdldENvbnRleHQoKSxcclxuICAgICAgLi4uYmFzZUNvbnRleHQsXHJcbiAgICAgIGZuOiB7XHJcbiAgICAgICAgLi4udGhpcy5wcmVkZWZpbmVkRnVuY3Rpb25zLFxyXG4gICAgICAgIC4uLnRoaXMuZ2V0Rm9ybUZ1bmN0aW9ucyhmb3JtR3JvdXApLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuZXh0ZW5kQ29udGV4dCkge1xyXG4gICAgICBjb25zdCBleHRlbmRlZCA9IG9wdGlvbnMuZXh0ZW5kQ29udGV4dCgpO1xyXG4gICAgICBpZiAoZXh0ZW5kZWQpIHtcclxuICAgICAgICBjb250ZXh0ID0ge1xyXG4gICAgICAgICAgLi4uY29udGV4dCxcclxuICAgICAgICAgIC4uLmV4dGVuZGVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nRGVwZW5kZW5jaWVzID0gKGRlcGVuZGVuY2llczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiR2V0IERlcGVuZGVuY2llczpcIiwgZXhwcmVzc2lvbiwgZGVwZW5kZW5jaWVzLCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIGxvZ0RlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdUZW1wbGF0ZUV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvZ0RlcGVuZGVuY2llcyA9IChkZXBlbmRlbmNpZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkdldCBUZW1wbGF0ZSBEZXBlbmRlbmNpZXM6XCIsIGV4cHJlc3Npb24sIGRlcGVuZGVuY2llcywgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5mZWVsU2VydmljZS5nZXRUZW1wbGF0ZURlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIGxvZ0RlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdEZXBlbmRlbmNpZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nV2F0Y2hpbmcgPSAoZGVwZW5kZW5jZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGRlcGVuZGVuY2UpID8gZGVwZW5kZW5jZS5qb2luKFwiLlwiKSA6IGRlcGVuZGVuY2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiV2F0Y2hpbmcgZGVwZW5kZW5jZTpcIiwgdGV4dCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ1ZhbHVlQ2hhbmdlZCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJWYWx1ZSBDaGFuZ2VkOlwiLCBjb250cm9sLnZhbHVlLCB7IHBhdGg6IHRoaXMuZ2V0UGF0aChjb250cm9sKSwgY29udHJvbCB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nU3RhdHVzQ2hhbmdlZCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJTdGF0dXMgQ2hhbmdlZDpcIiwgY29udHJvbC5zdGF0dXMsIHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBjb250cm9sIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dTY29wZVJlZnJlc2hlZCA9IChwYXRoOiBQYXRoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU2NvcGUgUmVmcmVzaGVkOiBcIiwgcGF0aCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZhbHVlU3Vic2NyaWJlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmliZUNoYW5nZXMoY29udHJvbC52YWx1ZUNoYW5nZXMsIGNvbnRyb2wsIGNvbnRyb2wudmFsdWUsIGNhbGxiYWNrLCBsb2dWYWx1ZUNoYW5nZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdGF0dXNTdWJzY3JpYmUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlQ2hhbmdlczxGb3JtQ29udHJvbFN0YXR1cz4oY29udHJvbC5zdGF0dXNDaGFuZ2VzLCBjb250cm9sLCBjb250cm9sLnN0YXR1cywgY2FsbGJhY2ssIGxvZ1N0YXR1c0NoYW5nZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmVTY29wZSA9IChkZXBlbmRlbmNlOiBQYXRoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2NvcGUub25SZWZyZXNoXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHBhdGgpID0+IHtcclxuICAgICAgICAgIGlmIChtYXRjaFBhdGgocGF0aCwgZGVwZW5kZW5jZSkpe1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICBsb2dTY29wZVJlZnJlc2hlZChkZXBlbmRlbmNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgbG9nV2F0Y2hpbmcoZGVwZW5kZW5jZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN1YnNjcmliZUNvbnRyb2wgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAgICwgc3RhdHVzOiBib29sZWFuXHJcbiAgICAgICwgZGVwZW5kZW5jZTogc3RyaW5nIHwgc3RyaW5nW11cclxuICAgICkgPT4ge1xyXG4gICAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICAgIHZhbHVlU3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgIGxvZ1dhdGNoaW5nKGRlcGVuZGVuY2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN0YXR1c1N1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICBsb2dXYXRjaGluZyhkZXBlbmRlbmNlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBpc1Njb3BlID0gKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKTogcGF0aCBpcyBzdHJpbmdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhdGgpICYmIHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoWzBdID09PSBcIl9cIjtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmNlIG9mIGRlcGVuZGVuY2llcykge1xyXG4gICAgICBjb25zdCBbcGF0aCwgc3RhdHVzXSA9IHRoaXMucHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmNlKTtcclxuICAgICAgaWYgKGlzU2NvcGUocGF0aCkpIHtcclxuICAgICAgICBzdWJzY3JpYmVTY29wZShwYXRoLnNwbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybVNlcnZpY2UuZ2V0Q29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtU2VydmljZS53YWl0Rm9yQ29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShjb250cm9sID0+IHtcclxuICAgICAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMud2Vha1NlcnZpY2UuaW52YWxpZGF0ZSh0aGlzLCBleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmN5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IFtzdHJpbmcgfCBzdHJpbmdbXSwgYm9vbGVhbl0ge1xyXG4gICAgY29uc3Qgc3RhdHVzRGVwZW5kZW5jeSA9IEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSlcclxuICAgICAgJiYgZGVwZW5kZW5jeS5sZW5ndGggPiAxXHJcbiAgICAgICYmIGRlcGVuZGVuY3lbMF0gPT09IFN0YXR1c0RlcGVuZGVuY3k7XHJcblxyXG4gICAgcmV0dXJuIHN0YXR1c0RlcGVuZGVuY3lcclxuICAgICAgPyBbZGVwZW5kZW5jeS5zbGljZSgxKSwgdHJ1ZV1cclxuICAgICAgOiBbZGVwZW5kZW5jeSwgZmFsc2VdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG4gIGdldENvbnRleHQoc2NvcGU/OiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XHJcbiAgY2FjaGVhYmxlPzogYm9vbGVhbjtcclxuICBleHRlbmRDb250ZXh0PzogRXh0ZW5kQ29udGV4dEZuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFeHRlbmRDb250ZXh0Rm4gPSAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4iXX0=
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFHbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUViO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBVHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixhQUE0QixFQUNoQixRQUF5QixFQUN6QixLQUFtQjtRQVR2QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFl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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sU3RhdHVzLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZlZWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZnVuY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtYXR0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWF0dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZWFrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlYWsuc2VydmljZSc7XHJcbmltcG9ydCB7IHRvUHJveHkgfSBmcm9tICcuLi91dGlscy9wcm94eSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFBhdGgsIG1hdGNoUGF0aCB9IGZyb20gJy4uL2NvbW1vbi9wYXRoJztcclxuXHJcbmNvbnN0IFN0YXR1c0RlcGVuZGVuY3kgPSBcIiRzdGF0dXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZlZWxTZXJ2aWNlOiBGZWVsU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHdlYWtTZXJ2aWNlOiBXZWFrU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1hdHRlclNlcnZpY2U6IEZvcm1hdHRlclNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmdW5jdGlvblNlcnZpY2U6IEZ1bmN0aW9uU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGdsb2JhbFNlcnZpY2U6IEdsb2JhbFNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWdpc3RlcjogUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgICAsIEBPcHRpb25hbCgpIHByaXZhdGUgc2NvcGU6IFNjb3BlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5Jbml0KCk7XHJcbiAgICB0aGlzLnByZWRlZmluZWRGdW5jdGlvbnMgPSB0aGlzLmdldFByZWRlZmluZWRGdW5jdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBHbG9iYWwgUHJvcGVydGllczpcclxuICAgIC0gZmVlbC1kaWFnbm9zdGljczogXCJvblwiLCBcIm9mZlwiXHJcbiAgICAtIGZlZWwtY2FjaGVhYmxlOiBcIm9uXCIsIFwib2ZmXCJcclxuICAqL1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHByZWRlZmluZWRGdW5jdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5zdGFydHNXaXRoKFwiPVwiKTtcclxuICB9O1xyXG5cclxuICBnZXRFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHRleHQpKVxyXG4gICAgICByZXR1cm4gdGV4dCEuc3Vic3RyaW5nKDEpO1xyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfTtcclxuXHJcbiAgZXZhbHVhdGVTdHJpbmcoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlID8/IFwiXCI7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZUJvb2xlYW4oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgYm9vbGVhbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVOdW1iZXIoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgbnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHsgfSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG5cclxuICAgIGxldCB0ZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBvcHRpb25zKSBhcyBzdHJpbmc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGVtcGxhdGUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRlbXBsYXRlKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5ldmFsVGVtcGxhdGUoZm9ybUdyb3VwLCB0ZW1wbGF0ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXQ6IGFueSwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsVW5hcnlUZXN0KGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgaW5wdXQsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBpbnZhbGlkYXRlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZGF0ZUV4cHJlc3Npb24odGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSk7ICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3YXRjaChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbjogc3RyaW5nKTogKHN0cmluZyB8IHN0cmluZ1tdKVtdIHtcclxuICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZUNoYW5nZXM8VD4oXHJcbiAgICBvYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxUPixcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIGluaXRpYWw6IFQsXHJcbiAgICBjYWxsYmFjazogKCgpID0+IHZvaWQpIHwgKChvbGRWYWx1ZTogVCwgbmV3VmFsdWU6IFQpID0+IHZvaWQpLFxyXG4gICAgbG9nRm4/OiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB2b2lkICAgIFxyXG4gICkge1xyXG4gICAgb2JzZXJ2YWJsZSRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKGluaXRpYWwpLFxyXG4gICAgICAgIHBhaXJ3aXNlKCksXHJcbiAgICAgICAgZmlsdGVyKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXlcclxuICAgICAgICAgICAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cFxyXG4gICAgICAgICAgICB8fCBvbGRWYWx1ZSAhPT0gbmV3VmFsdWVcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcclxuICAgICAgICAgIGlmIChjYWxsYmFjay5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgKGNhbGxiYWNrIGFzICgpID0+IHZvaWQpKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAoY2FsbGJhY2sgYXMgKG9sZFZhbHVlOiBULCBuZXdWYWx1ZTogVCkgPT4gdm9pZCkob2xkVmFsdWUsIG5ld1ZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxvZ0ZuPy4oY29udHJvbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZlcmJvc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmVyYm9zZTtcclxuICB9XHJcblxyXG4gIGdldCBjYWNoZWFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmVyYm9zZSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9jYWNoZWFibGUgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIG9uRXJyb3JIYW5kbGVyOiBhbnkgPSB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKTtcclxuXHJcbiAgcHJpdmF0ZSBJbml0KCkge1xyXG4gICAgdGhpcy5fY2FjaGVhYmxlID0gdGhpcy5nbG9iYWxTZXJ2aWNlLmdldFByb3BlcnR5KFwiZmVlbC1jYWNoZWFibGVcIiwgXCJvblwiKSA9PT0gXCJvblwiO1xyXG4gICAgdGhpcy5fdmVyYm9zZSA9IHRoaXMuZ2xvYmFsU2VydmljZS5nZXRQcm9wZXJ0eShcImZlZWwtZGlhZ25vc3RpY3NcIiwgXCJvZmZcIikgPT09IFwib25cIjtcclxuICAgIGlmICh0aGlzLnZlcmJvc2UpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUHJvZ3JhbW1hYmlsaXR5IFNlcnZpY2UgSW5pdGlhbGl6ZWRcIiwgeyBjYWNoZWFibGU6IHRoaXMuY2FjaGVhYmxlLCB2ZXJib3NlOiB0aGlzLnZlcmJvc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgaW5wdXQ6IGFueSwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dFdmFsdWF0aW9uID0gKGV4cHJlc3Npb246IHN0cmluZywgcmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJFdmFsdWF0ZSBVbmFyeVRlc3Q6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKVxyXG4gICAgICAgICwgaW5wdXQpO1xyXG4gICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG5cclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dJbnZhbGlkYXRlID0gKGV4cHJlc3Npb246IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkludmFsaWRhdGUgRXhwcmVzc2lvbjpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIEV4cHJlc3Npb246XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKSk7XHJcbiAgICAgICAgbG9nRXZhbHVhdGlvbihleHByZXNzaW9uLCByZXN1bHQpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBsb2dFcnJvcihleHByZXNzaW9uLCBlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjYWNoZWFibGUgPSBvcHRpb25zLmNhY2hlYWJsZSA/PyB0aGlzLmNhY2hlYWJsZTtcclxuXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcblxyXG4gICAgICBjb25zdCBpZ25vcmVEZXBzID0gb3B0aW9ucy5pZ25vcmVEZXBzID8/IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKCFpZ25vcmVEZXBzKSB7XHJcbiAgICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIGV4cHJlc3Npb24sIGV2YWx1YXRlLCBudWxsLCB0aGlzLm9uRXJyb3JIYW5kbGVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXZhbHVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbFRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nSW52YWxpZGF0ZSA9IChleHByZXNzaW9uOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJJbnZhbGlkYXRlIFRlbXBsYXRlOlwiLCBleHByZXNzaW9uLCB7IGZvcm1Hcm91cCwgb3B0aW9ucyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nRXZhbHVhdGlvbiA9IChleHByZXNzaW9uOiBzdHJpbmcsIHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXZhbHVhdGUgVGVtcGxhdGU6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFRlbXBsYXRlKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCkpO1xyXG4gICAgICAgIGxvZ0V2YWx1YXRpb24oZXhwcmVzc2lvbiwgcmVzdWx0KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbG9nRXJyb3IoZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2FjaGVhYmxlID0gb3B0aW9ucy5jYWNoZWFibGUgPz8gdGhpcy5jYWNoZWFibGU7XHJcbiAgICBcclxuICAgIGlmIChjYWNoZWFibGUpIHtcclxuICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoVGVtcGxhdGUoJHtleHByZXNzaW9ufSlgO1xyXG5cclxuICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXRjaGluZ1RlbXBsYXRlRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRXJyb3IocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQucGlwZShcclxuICAgICAgICB0YXAoe1xyXG4gICAgICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeUVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZWRlZmluZWRGdW5jdGlvbnMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgY29uc3QgcHJvdmlkZXJzOiBJRXZhbHVhdG9yUHJvdmlkZXJbXSA9IFtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZSxcclxuICAgICAgdGhpcy5mdW5jdGlvblNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZSxcclxuICAgICAgdGhpcy5yZWdpc3RlciAgICAgIFxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gcHJvdmlkZXJzLnJlZHVjZSgoYWNjLCBwcm92aWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmFjYyxcclxuICAgICAgICAuLi5wcm92aWRlci5nZXRDb250ZXh0KClcclxuICAgICAgfTtcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUZ1bmN0aW9ucyhmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChmb3JtR3JvdXApO1xyXG5cclxuICAgIGlmICghcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnBhcmVudC52YWx1ZSxcclxuICAgICAgZm9ybUdyb3VwOiAoKSA9PiB0b1Byb3h5KHBhcmVudCksICAgICAgXHJcbiAgICAgIGdldCBwYXJlbnQoKSB7IHJldHVybiBzZWxmLmdldFBhcmVudENvbnRleHQocGFyZW50KTsgfSxcclxuICAgIH07ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb290Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCByb290ID0gZm9ybUdyb3VwPy5yb290O1xyXG5cclxuICAgIGlmICghcm9vdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcm9vdC52YWx1ZTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgOiBGb3JtR3JvdXAgfCBudWxsIHtcclxuICAgIGxldCBwYXJlbnQgPSBmb3JtR3JvdXAucGFyZW50O1xyXG5cclxuICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcGFyZW50ID0gcGFyZW50Py5wYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcmVudCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuXHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcblxyXG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSBmb3JtR3JvdXA/LnZhbHVlID8/IHsgfTtcclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgZ2V0IGNvbnNvbGUoKSB7IHJldHVybiB0b1Byb3h5KGNvbnNvbGUpOyB9LFxyXG4gICAgICBnZXQgcGFyZW50KCkgeyByZXR1cm4gc2VsZi5nZXRQYXJlbnRDb250ZXh0KGZvcm1Hcm91cCk7IH0sXHJcbiAgICAgIGdldCByb290KCkgeyByZXR1cm4gc2VsZi5nZXRSb290Q29udGV4dChmb3JtR3JvdXApOyB9LFxyXG4gICAgICBmb3JtR3JvdXA6ICgpID0+IHRvUHJveHkoZm9ybUdyb3VwKSxcclxuICAgICAgXzogdGhpcy5zY29wZT8uZ2V0Q29udGV4dCgpLFxyXG4gICAgICAuLi5iYXNlQ29udGV4dCxcclxuICAgICAgZm46IHtcclxuICAgICAgICAuLi50aGlzLnByZWRlZmluZWRGdW5jdGlvbnMsXHJcbiAgICAgICAgLi4udGhpcy5nZXRGb3JtRnVuY3Rpb25zKGZvcm1Hcm91cCksXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5leHRlbmRDb250ZXh0KSB7XHJcbiAgICAgIGNvbnN0IGV4dGVuZGVkID0gb3B0aW9ucy5leHRlbmRDb250ZXh0KCk7XHJcbiAgICAgIGlmIChleHRlbmRlZCkge1xyXG4gICAgICAgIGNvbnRleHQgPSB7XHJcbiAgICAgICAgICAuLi5jb250ZXh0LFxyXG4gICAgICAgICAgLi4uZXh0ZW5kZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dEZXBlbmRlbmNpZXMgPSAoZGVwZW5kZW5jaWVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJHZXQgRGVwZW5kZW5jaWVzOlwiLCBleHByZXNzaW9uLCBkZXBlbmRlbmNpZXMsIHsgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuZmVlbFNlcnZpY2UuZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgbG9nRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB3YXRjaGluZ1RlbXBsYXRlRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nRGVwZW5kZW5jaWVzID0gKGRlcGVuZGVuY2llczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiR2V0IFRlbXBsYXRlIERlcGVuZGVuY2llczpcIiwgZXhwcmVzc2lvbiwgZGVwZW5kZW5jaWVzLCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLmZlZWxTZXJ2aWNlLmdldFRlbXBsYXRlRGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgbG9nRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB3YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dXYXRjaGluZyA9IChkZXBlbmRlbmNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jZSkgPyBkZXBlbmRlbmNlLmpvaW4oXCIuXCIpIDogZGVwZW5kZW5jZTtcclxuICAgICAgY29uc29sZS5sb2coXCJXYXRjaGluZyBkZXBlbmRlbmNlOlwiLCB0ZXh0LCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nVmFsdWVDaGFuZ2VkID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlZhbHVlIENoYW5nZWQ6XCIsIGNvbnRyb2wudmFsdWUsIHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBjb250cm9sIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dTdGF0dXNDaGFuZ2VkID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlN0YXR1cyBDaGFuZ2VkOlwiLCBjb250cm9sLnN0YXR1cywgeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCksIGNvbnRyb2wgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ1Njb3BlUmVmcmVzaGVkID0gKHBhdGg6IFBhdGgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJTY29wZSBSZWZyZXNoZWQ6IFwiLCBwYXRoKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmFsdWVTdWJzY3JpYmUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlQ2hhbmdlcyhjb250cm9sLnZhbHVlQ2hhbmdlcywgY29udHJvbCwgY29udHJvbC52YWx1ZSwgY2FsbGJhY2ssIGxvZ1ZhbHVlQ2hhbmdlZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN0YXR1c1N1YnNjcmliZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVDaGFuZ2VzPEZvcm1Db250cm9sU3RhdHVzPih0aGlzLmZvcm1TZXJ2aWNlLnN0YXR1c0NoYW5nZXMoY29udHJvbCwgY2FsbGJhY2spLCBjb250cm9sLCBjb250cm9sLnN0YXR1cywgY2FsbGJhY2ssIGxvZ1N0YXR1c0NoYW5nZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmVTY29wZSA9IChkZXBlbmRlbmNlOiBQYXRoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2NvcGUub25SZWZyZXNoXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHBhdGgpID0+IHtcclxuICAgICAgICAgIGlmIChtYXRjaFBhdGgocGF0aCwgZGVwZW5kZW5jZSkpe1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICBsb2dTY29wZVJlZnJlc2hlZChkZXBlbmRlbmNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgbG9nV2F0Y2hpbmcoZGVwZW5kZW5jZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN1YnNjcmliZUNvbnRyb2wgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAgICwgc3RhdHVzOiBib29sZWFuXHJcbiAgICAgICwgZGVwZW5kZW5jZTogc3RyaW5nIHwgc3RyaW5nW11cclxuICAgICkgPT4ge1xyXG4gICAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICAgIHZhbHVlU3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgIGxvZ1dhdGNoaW5nKGRlcGVuZGVuY2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN0YXR1c1N1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICBsb2dXYXRjaGluZyhkZXBlbmRlbmNlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBpc1Njb3BlID0gKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKTogcGF0aCBpcyBzdHJpbmdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhdGgpICYmIHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoWzBdID09PSBcIl9cIjtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmNlIG9mIGRlcGVuZGVuY2llcykge1xyXG4gICAgICBjb25zdCBbcGF0aCwgc3RhdHVzXSA9IHRoaXMucHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmNlKTtcclxuICAgICAgaWYgKGlzU2NvcGUocGF0aCkpIHtcclxuICAgICAgICBzdWJzY3JpYmVTY29wZShwYXRoLnNwbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybVNlcnZpY2UuZ2V0Q29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtU2VydmljZS53YWl0Rm9yQ29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShjb250cm9sID0+IHtcclxuICAgICAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMud2Vha1NlcnZpY2UuaW52YWxpZGF0ZSh0aGlzLCBleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmN5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IFtzdHJpbmcgfCBzdHJpbmdbXSwgYm9vbGVhbl0ge1xyXG4gICAgY29uc3Qgc3RhdHVzRGVwZW5kZW5jeSA9IEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSlcclxuICAgICAgJiYgZGVwZW5kZW5jeS5sZW5ndGggPiAxXHJcbiAgICAgICYmIGRlcGVuZGVuY3lbMF0gPT09IFN0YXR1c0RlcGVuZGVuY3k7XHJcblxyXG4gICAgcmV0dXJuIHN0YXR1c0RlcGVuZGVuY3lcclxuICAgICAgPyBbZGVwZW5kZW5jeS5zbGljZSgxKSwgdHJ1ZV1cclxuICAgICAgOiBbZGVwZW5kZW5jeSwgZmFsc2VdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG4gIGdldENvbnRleHQoc2NvcGU/OiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XHJcbiAgY2FjaGVhYmxlPzogYm9vbGVhbjtcclxuICBpZ25vcmVEZXBzPzogYm9vbGVhbjtcclxuICBleHRlbmRDb250ZXh0PzogRXh0ZW5kQ29udGV4dEZuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFeHRlbmRDb250ZXh0Rm4gPSAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { Injectable, Optional, SkipSelf } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
+ import { toProxy } from '../utils/proxy';
3
4
  import * as i0 from "@angular/core";
4
5
  export class ScopeService {
5
6
  parent;
@@ -22,7 +23,7 @@ export class ScopeService {
22
23
  if (!this.scope)
23
24
  return {};
24
25
  return {
25
- ...this.scope,
26
+ ...toProxy(this.scope),
26
27
  parent: () => {
27
28
  this.parent?.getContext();
28
29
  }
@@ -38,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
38
39
  }, {
39
40
  type: SkipSelf
40
41
  }] }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3Njb3BlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxZQUFZO0lBR1c7SUFEbEMsWUFDa0MsTUFBMkI7UUFBM0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7SUFDN0QsQ0FBQztJQUVPLEtBQUssR0FBK0IsSUFBSSxDQUFDO0lBRWhDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTdDLFNBQVMsR0FBcUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUxRSxHQUFHLENBQUMsS0FBaUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFhLEVBQUU7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzQixPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUM1QixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7d0dBaENVLFlBQVk7NEdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFEeEIsVUFBVTs7MEJBSU4sUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJRXZhbHVhdG9yUHJvdmlkZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGF0aCB9IGZyb20gJy4uL2NvbW1vbi9wYXRoJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNjb3BlU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYXJlbnQ6IFNjb3BlU2VydmljZSB8IG51bGwpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NvcGU6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PFBhdGg+KCk7XHJcblxyXG4gIHJlYWRvbmx5IG9uUmVmcmVzaDogT2JzZXJ2YWJsZTxQYXRoPiA9IHRoaXMucmVmcmVzaFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHNldChzY29wZTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwpIHtcclxuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcclxuICB9XHJcblxyXG4gIGdldCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5zY29wZTsgXHJcbiAgfVxyXG5cclxuICByZWZyZXNoKHBhdGg6IFBhdGggPSBbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWZyZXNoU3ViamVjdC5uZXh0KHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIGlmICghdGhpcy5zY29wZSkgcmV0dXJuIHt9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4udGhpcy5zY29wZSxcclxuICAgICAgcGFyZW50OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnQ/LmdldENvbnRleHQoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3Njb3BlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUl6QyxNQUFNLE9BQU8sWUFBWTtJQUdXO0lBRGxDLFlBQ2tDLE1BQTJCO1FBQTNCLFdBQU0sR0FBTixNQUFNLENBQXFCO0lBQzdELENBQUM7SUFFTyxLQUFLLEdBQStCLElBQUksQ0FBQztJQUVoQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUU3QyxTQUFTLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFMUUsR0FBRyxDQUFDLEtBQWlDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBYSxFQUFFO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0IsT0FBTztZQUNMLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQzVCLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQzt3R0FoQ1UsWUFBWTs0R0FBWixZQUFZOzs0RkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkFJTixRQUFROzswQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi4vY29tbW9uL3BhdGgnO1xyXG5pbXBvcnQgeyB0b1Byb3h5IH0gZnJvbSAnLi4vdXRpbHMvcHJveHknO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNjb3BlU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYXJlbnQ6IFNjb3BlU2VydmljZSB8IG51bGwpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NvcGU6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PFBhdGg+KCk7XHJcblxyXG4gIHJlYWRvbmx5IG9uUmVmcmVzaDogT2JzZXJ2YWJsZTxQYXRoPiA9IHRoaXMucmVmcmVzaFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHNldChzY29wZTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwpIHtcclxuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcclxuICB9XHJcblxyXG4gIGdldCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5zY29wZTsgXHJcbiAgfVxyXG5cclxuICByZWZyZXNoKHBhdGg6IFBhdGggPSBbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWZyZXNoU3ViamVjdC5uZXh0KHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIGlmICghdGhpcy5zY29wZSkgcmV0dXJuIHt9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4udG9Qcm94eSh0aGlzLnNjb3BlKSxcclxuICAgICAgcGFyZW50OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnQ/LmdldENvbnRleHQoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { ToBoundArrows } from '../utils/functions';
2
+ import { ToBoundArrows } from '../utils/bound';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "ngx-sirio-lib";
5
5
  export class ToastService {
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
44
44
  providedIn: 'root'
45
45
  }]
46
46
  }], ctorParameters: () => [{ type: i1.SirioToastService }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQU1uRCxNQUFNLE9BQU8sWUFBWTtJQUdiO0lBRFYsWUFDVSxVQUE2QjtRQUE3QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtJQUNuQyxDQUFDO0lBRUwsVUFBVSxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsUUFBZ0IsSUFBSTtRQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZSxFQUFFLEtBQWMsRUFBRSxRQUFnQixJQUFJO1FBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlLEVBQUUsS0FBYyxFQUFFLFFBQWdCLElBQUk7UUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsUUFBZ0IsSUFBSTtRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixlQUFlO1lBQ2YsZUFBZTtZQUNmLGFBQWE7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLElBQWdCLEVBQUUsT0FBZSxFQUFFLEtBQWMsRUFBRSxRQUFnQixJQUFJO1FBQ3BGLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3hCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F0Q1UsWUFBWTs0R0FBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFNpcmlvVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGVzIH0gZnJvbSBcIm5neC1zaXJpby1saWJcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0U2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzaXJpb1RvYXN0OiBTaXJpb1RvYXN0U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5vdGlmeUluZm8obWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZywgZGVsYXk6IG51bWJlciA9IDIwMDApIHtcclxuICAgIHRoaXMubm90aWZ5KFwiaW5mb1wiLCBtZXNzYWdlLCB0aXRsZSwgZGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgbm90aWZ5U3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nLCBkZWxheTogbnVtYmVyID0gMjAwMCkge1xyXG4gICAgdGhpcy5ub3RpZnkoXCJzdWNjZXNzXCIsIG1lc3NhZ2UsIHRpdGxlLCBkZWxheSk7XHJcbiAgfVxyXG5cclxuICBub3RpZnlXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcsIGRlbGF5OiBudW1iZXIgPSAyMDAwKSB7XHJcbiAgICB0aGlzLm5vdGlmeShcIndhcm5pbmdcIiwgbWVzc2FnZSwgdGl0bGUsIGRlbGF5KTtcclxuICB9XHJcblxyXG4gIG5vdGlmeUVycm9yKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcsIGRlbGF5OiBudW1iZXIgPSAyMDAwKSB7XHJcbiAgICB0aGlzLm5vdGlmeShcImRhbmdlclwiLCBtZXNzYWdlLCB0aXRsZSwgZGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiBUb0JvdW5kQXJyb3dzKHRoaXMsIFtcclxuICAgICAgXCJub3RpZnlJbmZvXCIsXHJcbiAgICAgIFwibm90aWZ5U3VjY2Vzc1wiLFxyXG4gICAgICBcIm5vdGlmeVdhcm5pbmdcIixcclxuICAgICAgXCJub3RpZnlFcnJvclwiXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm90aWZ5KHR5cGU6IFRvYXN0VHlwZXMsIG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcsIGRlbGF5OiBudW1iZXIgPSAyMDAwKSB7XHJcbiAgICB0aGlzLnNpcmlvVG9hc3Qub3BlblRvYXN0KHtcclxuICAgICAgZGVsYXk6IGRlbGF5LFxyXG4gICAgICB0ZXh0OiBtZXNzYWdlLFxyXG4gICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICB0aXRsZTogdGl0bGVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU0vQyxNQUFNLE9BQU8sWUFBWTtJQUdiO0lBRFYsWUFDVSxVQUE2QjtRQUE3QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtJQUNuQyxDQUFDO0lBRUwsVUFBVSxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsUUFBZ0IsSUFBSTtRQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZSxFQUFFLEtBQWMsRUFBRSxRQUFnQixJQUFJO1FBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlLEVBQUUsS0FBYyxFQUFFLFFBQWdCLElBQUk7UUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsUUFBZ0IsSUFBSTtRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixlQUFlO1lBQ2YsZUFBZTtZQUNmLGFBQWE7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLElBQWdCLEVBQUUsT0FBZSxFQUFFLEtBQWMsRUFBRSxRQUFnQixJQUFJO1FBQ3BGLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3hCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F0Q1UsWUFBWTs0R0FBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2JvdW5kJztcclxuaW1wb3J0IHsgU2lyaW9Ub2FzdFNlcnZpY2UsIFRvYXN0VHlwZXMgfSBmcm9tIFwibmd4LXNpcmlvLWxpYlwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9hc3RTZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNpcmlvVG9hc3Q6IFNpcmlvVG9hc3RTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbm90aWZ5SW5mbyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nLCBkZWxheTogbnVtYmVyID0gMjAwMCkge1xyXG4gICAgdGhpcy5ub3RpZnkoXCJpbmZvXCIsIG1lc3NhZ2UsIHRpdGxlLCBkZWxheSk7XHJcbiAgfVxyXG5cclxuICBub3RpZnlTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcsIGRlbGF5OiBudW1iZXIgPSAyMDAwKSB7XHJcbiAgICB0aGlzLm5vdGlmeShcInN1Y2Nlc3NcIiwgbWVzc2FnZSwgdGl0bGUsIGRlbGF5KTtcclxuICB9XHJcblxyXG4gIG5vdGlmeVdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZywgZGVsYXk6IG51bWJlciA9IDIwMDApIHtcclxuICAgIHRoaXMubm90aWZ5KFwid2FybmluZ1wiLCBtZXNzYWdlLCB0aXRsZSwgZGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgbm90aWZ5RXJyb3IobWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZywgZGVsYXk6IG51bWJlciA9IDIwMDApIHtcclxuICAgIHRoaXMubm90aWZ5KFwiZGFuZ2VyXCIsIG1lc3NhZ2UsIHRpdGxlLCBkZWxheSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIFRvQm91bmRBcnJvd3ModGhpcywgW1xyXG4gICAgICBcIm5vdGlmeUluZm9cIixcclxuICAgICAgXCJub3RpZnlTdWNjZXNzXCIsXHJcbiAgICAgIFwibm90aWZ5V2FybmluZ1wiLFxyXG4gICAgICBcIm5vdGlmeUVycm9yXCJcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3RpZnkodHlwZTogVG9hc3RUeXBlcywgbWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZywgZGVsYXk6IG51bWJlciA9IDIwMDApIHtcclxuICAgIHRoaXMuc2lyaW9Ub2FzdC5vcGVuVG9hc3Qoe1xyXG4gICAgICBkZWxheTogZGVsYXksXHJcbiAgICAgIHRleHQ6IG1lc3NhZ2UsXHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIHRpdGxlOiB0aXRsZVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -148,7 +148,7 @@ export class ValidationService {
148
148
  this.programmability.watch(formGroup, dependencies, () => {
149
149
  setTimeout(() => {
150
150
  callbacks.invoke();
151
- control.updateValueAndValidity({ emitEvent: false });
151
+ control.updateValueAndValidity();
152
152
  });
153
153
  });
154
154
  }
@@ -176,4 +176,4 @@ export class ValidationService {
176
176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ValidationService, decorators: [{
177
177
  type: Injectable
178
178
  }], ctorParameters: () => [{ type: i1.LanguageService }, { type: i2.ProgrammabilityService }] });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUErRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBRzdELE1BQU0sT0FBTyxpQkFBaUI7SUFHbEI7SUFDQTtJQUZWLFlBQ1UsZUFBZ0MsRUFDaEMsZUFBdUM7UUFEdkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUNqRCxDQUFDO0lBRUQsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUUxQixnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZ0MsRUFBRSxPQUF3QixFQUFFLFNBQWMsRUFBRSxTQUFvQjtRQUM5RyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZ0M7UUFDOUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xELE1B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UUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO3dHQTNOVSxpQkFBaUI7NEdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0b0ZlZWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvZmVlbGFibGUnO1xyXG5pbXBvcnQgeyBDYWxsYmFja1JlZ2lzdHJ5IH0gZnJvbSAnLi4vdXRpbHMvQ2FsbGJhY2tSZWdpc3RyeSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgc3VwcHJlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBWYWxpZGF0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+KCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0NvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICBjb2xsZWN0aW9uLnNldChjb250cm9sLCB7IGNvbXBvbmVudCwgZm9ybUdyb3VwIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBDb2xsZWN0aW9uKGNvbGxlY3Rpb246IFZhbGlkYXRpb25Db2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXBvbmVudFZhbGlkYXRpb24sIGNvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gY29tcG9uZW50VmFsaWRhdGlvbi5jb21wb25lbnQ7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGNvbXBvbmVudFZhbGlkYXRpb24uZm9ybUdyb3VwO1xyXG4gICAgICBjb25zdCByZXF1aXJlZCA9IGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkO1xyXG4gICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoY29tcG9uZW50KTtcclxuICAgICAgY29uc3QgW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgd2F0Y2hpbmddID0gdGhpcy52YWxpZGF0ZVJ1bGVzKGN1cnJlbnRHcm91cCwgY29tcG9uZW50LCByZXF1aXJlZCwgcnVsZXMpO1xyXG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgIHdhdGNoaW5nKGNvbnRyb2wpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJ1bGVzKGNvbXBvbmVudDogYW55KTogVmFsaWRhdGlvblJ1bGVbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcG9uZW50LnZhbGlkYXRpb25zKSkgcmV0dXJuIFtdO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC52YWxpZGF0aW9ucz8ubWFwKChydWxlOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBleHByZXNzaW9uOiBydWxlLmV4cHJlc3Npb24sXHJcbiAgICAgICAgdHlwZTogcnVsZS50eXBlLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubG9jYWxlKHJ1bGUsICdtZXNzYWdlJyksXHJcbiAgICAgICAgYXN5bmM6IHJ1bGUuYXN5bmMgPT09IHRydWVcclxuICAgICAgfSBhcyBWYWxpZGF0aW9uUnVsZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZVJ1bGVzKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGNvbXBvbmVudDogYW55XHJcbiAgICAsIHJlcXVpcmVkPzogYm9vbGVhblxyXG4gICAgLCB2YWxpZGF0aW9ucz86IFZhbGlkYXRpb25SdWxlW10pOiBbVmFsaWRhdG9yRm5bXSwgQXN5bmNWYWxpZGF0b3JGbltdLCAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB2b2lkXSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBub1dhdGNoaW5nID0gKCkgPT4geyB9O1xyXG5cclxuICAgIGlmIChyZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbGlkYXRpb25zKSkge1xyXG4gICAgICByZXR1cm4gW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgbm9XYXRjaGluZ107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2tzID0gbmV3IENhbGxiYWNrUmVnaXN0cnkoKTtcclxuXHJcbiAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKChpdGVtOiBWYWxpZGF0aW9uUnVsZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGxvZ2dlcjogVmFsaWRhdGlvbkNhbGxiYWNrID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT5cclxuICAgICAgICB0aGlzLmxvZ1ZhbGlkYXRpb24oY29tcG9uZW50LCBpdGVtLCBjb250cm9sLCByZXN1bHQpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ2YWxpZGF0ZVwiIHx8IGl0ZW0udHlwZSA9PT0gXCJpbnZhbGlkYXRlXCIpIHtcclxuICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSBpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIlxyXG4gICAgICAgICAgPyAocmVzdWx0OiBhbnkpID0+IHJlc3VsdFxyXG4gICAgICAgICAgOiAocmVzdWx0OiBhbnkpID0+ICFyZXN1bHQ7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmFzeW5jKSB7XHJcbiAgICAgICAgICBhc3luY1ZhbGlkYXRvcnMucHVzaCh0aGlzLmNyZWF0ZUFzeW5jVmFsaWRhdG9yKGZvcm1Hcm91cCwgaXRlbSwgY2FsbGJhY2tzLCBwcmVkaWNhdGUsIGxvZ2dlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmNyZWF0ZVZhbGlkYXRvcihmb3JtR3JvdXAsIGl0ZW0sIHByZWRpY2F0ZSwgbG9nZ2VyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB3YXRjaGluZyA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkID0+IHtcclxuICAgICAgdGhpcy53YXRjaEZvclZhbGlkYXRpb24oZm9ybUdyb3VwLCBjb250cm9sLCBjb21wb25lbnQua2V5LCB2YWxpZGF0aW9ucywgY2FsbGJhY2tzKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIFt2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMsIHdhdGNoaW5nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVmFsaWRhdG9yKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW06IFZhbGlkYXRpb25SdWxlXHJcbiAgICAsIHByZWRpY2F0ZTogKHJlc3VsdDogYW55KSA9PiBib29sZWFuXHJcbiAgICAsIGNhbGxiYWNrOiBWYWxpZGF0aW9uQ2FsbGJhY2spOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3VwcHJlc3MpIHJldHVybiBudWxsO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBcIltWYWxpZGF0b3JdIFVuZXhwZWN0ZWQgb2JzZXJ2YWJsZSByZXN1bHQgaW4gY3JlYXRlVmFsaWRhdG9yXCIsXHJcbiAgICAgICAgICB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHJ1bGU6IGl0ZW0gfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWRhdGUgPSBwcmVkaWNhdGUocmVzdWx0KSA/IG51bGwgOiB0aGlzLnZhbGlkYXRpb25FcnJvcnMoZm9ybUdyb3VwLCBpdGVtKTtcclxuICAgICAgY2FsbGJhY2soY29udHJvbCwgdmFsaWRhdGUpO1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGU7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVBc3luY1ZhbGlkYXRvcihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtOiBWYWxpZGF0aW9uUnVsZVxyXG4gICAgLCBjYWxsYmFja3M6IENhbGxiYWNrUmVnaXN0cnlcclxuICAgICwgcHJlZGljYXRlOiAocmVzdWx0OiBhbnkpID0+IGJvb2xlYW5cclxuICAgICwgY2FsbGJhY2s6IFZhbGlkYXRpb25DYWxsYmFjayk6IEFzeW5jVmFsaWRhdG9yRm4ge1xyXG5cclxuICAgIGNvbnN0IHVuc2V0U3RhdGUgPSAoKSA9PiAoeyB2YWx1ZTogU3ltYm9sKCd1bnNldCcpLCByZXN1bHQ6IG51bGwgfSk7XHJcblxyXG4gICAgbGV0IHN0YXRlID0gdW5zZXRTdGF0ZSgpO1xyXG5cclxuICAgIGNhbGxiYWNrcy5yZWdpc3RlcigoKSA9PiBzdGF0ZSA9IHVuc2V0U3RhdGUoKSk7XHJcblxyXG4gICAgY29uc3QgZ2V0UmVzdWx0ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSA9PiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwge1xyXG4gICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiB7IHJldHVybiB7IFwiP1wiOiBjb250cm9sLnZhbHVlIH0gfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZU9uY2UgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYW55ID0+IHtcclxuICAgICAgY29uc3QgdiA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmIChzdGF0ZS52YWx1ZSAhPT0gdikge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBnZXRSZXN1bHQoY29udHJvbCk7XHJcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IGFzIE9ic2VydmFibGU8YW55PikucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGUgPSBwcmVkaWNhdGUodmFsdWUpID8gbnVsbCA6IHRoaXMudmFsaWRhdGlvbkVycm9ycyhmb3JtR3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRyb2wsIHZhbGlkYXRlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGU7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltBc3luY1ZhbGlkYXRvcl0gRXZhbHVhdGlvbiBlcnJvclwiLCB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgZXJyIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bGxPYnNlcnZlcjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRlID0geyB2YWx1ZTogdiwgcmVzdWx0OiByZXN1bHQgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdXBwcmVzcykgcmV0dXJuIHRoaXMubnVsbE9ic2VydmVyO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBjb21wdXRlT25jZShjb250cm9sKTsgICAgICBcclxuICAgICAgaWYgKCFpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiW0FzeW5jVmFsaWRhdG9yXSBFeHBlY3RlZCBvYnNlcnZhYmxlIGJ1dCBnb3Qgbm9uLW9ic2VydmFibGUgcmVzdWx0XCIsXHJcbiAgICAgICAgICB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHJlc3VsdCwgcnVsZTogaXRlbSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5udWxsT2JzZXJ2ZXI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBPYnNlcnZhYmxlPGFueT47XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uRXJyb3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBWYWxpZGF0aW9uUnVsZSkge1xyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlU3RyaW5nKGZvcm1Hcm91cCwgaXRlbS5tZXNzYWdlKTtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IHsgZXJyb3I6IHRydWUsIG1lc3NhZ2UgfTtcclxuICAgIHJldHVybiB2YWxpZGF0aW9uRXJyb3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoRm9yVmFsaWRhdGlvbihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICwga2V5OiBzdHJpbmdcclxuICAgICwgdmFsaWRhdGlvbnM6IFZhbGlkYXRpb25SdWxlW11cclxuICAgICwgY2FsbGJhY2tzOiBDYWxsYmFja1JlZ2lzdHJ5KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsaWRhdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdmFsaWRhdGlvbnNcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGl0ZW0uZXhwcmVzc2lvbikpXHJcbiAgICAgICAgLm1hcChpdGVtID0+IFwiPVwiICsgdGhpcy5wcm9ncmFtbWFiaWxpdHkuZ2V0RXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKTtcclxuXHJcbiAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGZlZWxhYmxlID0gdG9GZWVsYWJsZShleHByZXNzaW9ucyk7XHJcblxyXG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXREZXBlbmRlbmNpZXMoZmVlbGFibGUpXHJcbiAgICAgICAgLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG5cclxuICAgICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LndhdGNoKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCAoKSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjYWxsYmFja3MuaW52b2tlKCk7XHJcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvZ1ZhbGlkYXRpb24gPSAoY29tcG9uZW50OiBhbnksIHJ1bGU6IFZhbGlkYXRpb25SdWxlLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwpID0+IHtcclxuICAgIGlmICh0aGlzLnByb2dyYW1tYWJpbGl0eS52ZXJib3NlKSB7XHJcbiAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIltWYWxpZGF0aW9uXSBGYWlsZWRcIiwgeyBjb250cm9sLCBjb21wb25lbnQsIHJ1bGUsIHJlc3VsdCB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIltWYWxpZGF0aW9uXSBTdWNjZXNzXCIsIHsgY29udHJvbCwgY29tcG9uZW50LCBydWxlLCByZXN1bHQgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbnVsbE9ic2VydmVyID0gb2YobnVsbCk7XHJcblxyXG4gIHByaXZhdGUgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBWYWxpZGF0aW9uQ2FsbGJhY2sgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb250ZXh0IHtcclxuICBjb21wb25lbnQ6IGFueTtcclxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUnVsZSB7XHJcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xyXG4gIHR5cGU6IFwidmFsaWRhdGVcIiB8IFwiaW52YWxpZGF0ZVwiO1xyXG4gIG1lc3NhZ2U6IHN0cmluZyxcclxuICBhc3luYzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+O1xyXG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUErRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBRzdELE1BQU0sT0FBTyxpQkFBaUI7SUFHbEI7SUFDQTtJQUZWLFlBQ1UsZUFBZ0MsRUFDaEMsZUFBdUM7UUFEdkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUNqRCxDQUFDO0lBRUQsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUUxQixnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZ0MsRUFBRSxPQUF3QixFQUFFLFNBQWMsRUFBRSxTQUFvQjtRQUM5RyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZ0M7UUFDOUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xELE1B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Q0FBQztJQUNqRCxDQUFDO3dHQTNOVSxpQkFBaUI7NEdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0b0ZlZWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvZmVlbGFibGUnO1xyXG5pbXBvcnQgeyBDYWxsYmFja1JlZ2lzdHJ5IH0gZnJvbSAnLi4vdXRpbHMvQ2FsbGJhY2tSZWdpc3RyeSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgc3VwcHJlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBWYWxpZGF0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+KCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0NvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICBjb2xsZWN0aW9uLnNldChjb250cm9sLCB7IGNvbXBvbmVudCwgZm9ybUdyb3VwIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBDb2xsZWN0aW9uKGNvbGxlY3Rpb246IFZhbGlkYXRpb25Db2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXBvbmVudFZhbGlkYXRpb24sIGNvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gY29tcG9uZW50VmFsaWRhdGlvbi5jb21wb25lbnQ7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGNvbXBvbmVudFZhbGlkYXRpb24uZm9ybUdyb3VwO1xyXG4gICAgICBjb25zdCByZXF1aXJlZCA9IGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkO1xyXG4gICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoY29tcG9uZW50KTtcclxuICAgICAgY29uc3QgW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgd2F0Y2hpbmddID0gdGhpcy52YWxpZGF0ZVJ1bGVzKGN1cnJlbnRHcm91cCwgY29tcG9uZW50LCByZXF1aXJlZCwgcnVsZXMpO1xyXG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgIHdhdGNoaW5nKGNvbnRyb2wpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJ1bGVzKGNvbXBvbmVudDogYW55KTogVmFsaWRhdGlvblJ1bGVbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcG9uZW50LnZhbGlkYXRpb25zKSkgcmV0dXJuIFtdO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC52YWxpZGF0aW9ucz8ubWFwKChydWxlOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBleHByZXNzaW9uOiBydWxlLmV4cHJlc3Npb24sXHJcbiAgICAgICAgdHlwZTogcnVsZS50eXBlLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubG9jYWxlKHJ1bGUsICdtZXNzYWdlJyksXHJcbiAgICAgICAgYXN5bmM6IHJ1bGUuYXN5bmMgPT09IHRydWVcclxuICAgICAgfSBhcyBWYWxpZGF0aW9uUnVsZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZVJ1bGVzKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGNvbXBvbmVudDogYW55XHJcbiAgICAsIHJlcXVpcmVkPzogYm9vbGVhblxyXG4gICAgLCB2YWxpZGF0aW9ucz86IFZhbGlkYXRpb25SdWxlW10pOiBbVmFsaWRhdG9yRm5bXSwgQXN5bmNWYWxpZGF0b3JGbltdLCAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB2b2lkXSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBub1dhdGNoaW5nID0gKCkgPT4geyB9O1xyXG5cclxuICAgIGlmIChyZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbGlkYXRpb25zKSkge1xyXG4gICAgICByZXR1cm4gW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgbm9XYXRjaGluZ107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2tzID0gbmV3IENhbGxiYWNrUmVnaXN0cnkoKTtcclxuXHJcbiAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKChpdGVtOiBWYWxpZGF0aW9uUnVsZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGxvZ2dlcjogVmFsaWRhdGlvbkNhbGxiYWNrID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT5cclxuICAgICAgICB0aGlzLmxvZ1ZhbGlkYXRpb24oY29tcG9uZW50LCBpdGVtLCBjb250cm9sLCByZXN1bHQpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ2YWxpZGF0ZVwiIHx8IGl0ZW0udHlwZSA9PT0gXCJpbnZhbGlkYXRlXCIpIHtcclxuICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSBpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIlxyXG4gICAgICAgICAgPyAocmVzdWx0OiBhbnkpID0+IHJlc3VsdFxyXG4gICAgICAgICAgOiAocmVzdWx0OiBhbnkpID0+ICFyZXN1bHQ7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmFzeW5jKSB7XHJcbiAgICAgICAgICBhc3luY1ZhbGlkYXRvcnMucHVzaCh0aGlzLmNyZWF0ZUFzeW5jVmFsaWRhdG9yKGZvcm1Hcm91cCwgaXRlbSwgY2FsbGJhY2tzLCBwcmVkaWNhdGUsIGxvZ2dlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmNyZWF0ZVZhbGlkYXRvcihmb3JtR3JvdXAsIGl0ZW0sIHByZWRpY2F0ZSwgbG9nZ2VyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB3YXRjaGluZyA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkID0+IHtcclxuICAgICAgdGhpcy53YXRjaEZvclZhbGlkYXRpb24oZm9ybUdyb3VwLCBjb250cm9sLCBjb21wb25lbnQua2V5LCB2YWxpZGF0aW9ucywgY2FsbGJhY2tzKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIFt2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMsIHdhdGNoaW5nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVmFsaWRhdG9yKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW06IFZhbGlkYXRpb25SdWxlXHJcbiAgICAsIHByZWRpY2F0ZTogKHJlc3VsdDogYW55KSA9PiBib29sZWFuXHJcbiAgICAsIGNhbGxiYWNrOiBWYWxpZGF0aW9uQ2FsbGJhY2spOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3VwcHJlc3MpIHJldHVybiBudWxsO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBcIltWYWxpZGF0b3JdIFVuZXhwZWN0ZWQgb2JzZXJ2YWJsZSByZXN1bHQgaW4gY3JlYXRlVmFsaWRhdG9yXCIsXHJcbiAgICAgICAgICB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHJ1bGU6IGl0ZW0gfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWRhdGUgPSBwcmVkaWNhdGUocmVzdWx0KSA/IG51bGwgOiB0aGlzLnZhbGlkYXRpb25FcnJvcnMoZm9ybUdyb3VwLCBpdGVtKTtcclxuICAgICAgY2FsbGJhY2soY29udHJvbCwgdmFsaWRhdGUpO1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGU7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVBc3luY1ZhbGlkYXRvcihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtOiBWYWxpZGF0aW9uUnVsZVxyXG4gICAgLCBjYWxsYmFja3M6IENhbGxiYWNrUmVnaXN0cnlcclxuICAgICwgcHJlZGljYXRlOiAocmVzdWx0OiBhbnkpID0+IGJvb2xlYW5cclxuICAgICwgY2FsbGJhY2s6IFZhbGlkYXRpb25DYWxsYmFjayk6IEFzeW5jVmFsaWRhdG9yRm4ge1xyXG5cclxuICAgIGNvbnN0IHVuc2V0U3RhdGUgPSAoKSA9PiAoeyB2YWx1ZTogU3ltYm9sKCd1bnNldCcpLCByZXN1bHQ6IG51bGwgfSk7XHJcblxyXG4gICAgbGV0IHN0YXRlID0gdW5zZXRTdGF0ZSgpO1xyXG5cclxuICAgIGNhbGxiYWNrcy5yZWdpc3RlcigoKSA9PiBzdGF0ZSA9IHVuc2V0U3RhdGUoKSk7XHJcblxyXG4gICAgY29uc3QgZ2V0UmVzdWx0ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSA9PiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwge1xyXG4gICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiB7IHJldHVybiB7IFwiP1wiOiBjb250cm9sLnZhbHVlIH0gfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZU9uY2UgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYW55ID0+IHtcclxuICAgICAgY29uc3QgdiA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmIChzdGF0ZS52YWx1ZSAhPT0gdikge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBnZXRSZXN1bHQoY29udHJvbCk7XHJcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IGFzIE9ic2VydmFibGU8YW55PikucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGUgPSBwcmVkaWNhdGUodmFsdWUpID8gbnVsbCA6IHRoaXMudmFsaWRhdGlvbkVycm9ycyhmb3JtR3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRyb2wsIHZhbGlkYXRlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGU7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltBc3luY1ZhbGlkYXRvcl0gRXZhbHVhdGlvbiBlcnJvclwiLCB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgZXJyIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bGxPYnNlcnZlcjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRlID0geyB2YWx1ZTogdiwgcmVzdWx0OiByZXN1bHQgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdXBwcmVzcykgcmV0dXJuIHRoaXMubnVsbE9ic2VydmVyO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBjb21wdXRlT25jZShjb250cm9sKTsgICAgICBcclxuICAgICAgaWYgKCFpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiW0FzeW5jVmFsaWRhdG9yXSBFeHBlY3RlZCBvYnNlcnZhYmxlIGJ1dCBnb3Qgbm9uLW9ic2VydmFibGUgcmVzdWx0XCIsXHJcbiAgICAgICAgICB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHJlc3VsdCwgcnVsZTogaXRlbSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5udWxsT2JzZXJ2ZXI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBPYnNlcnZhYmxlPGFueT47XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uRXJyb3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBWYWxpZGF0aW9uUnVsZSkge1xyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlU3RyaW5nKGZvcm1Hcm91cCwgaXRlbS5tZXNzYWdlKTtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IHsgZXJyb3I6IHRydWUsIG1lc3NhZ2UgfTtcclxuICAgIHJldHVybiB2YWxpZGF0aW9uRXJyb3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoRm9yVmFsaWRhdGlvbihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICwga2V5OiBzdHJpbmdcclxuICAgICwgdmFsaWRhdGlvbnM6IFZhbGlkYXRpb25SdWxlW11cclxuICAgICwgY2FsbGJhY2tzOiBDYWxsYmFja1JlZ2lzdHJ5KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsaWRhdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdmFsaWRhdGlvbnNcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGl0ZW0uZXhwcmVzc2lvbikpXHJcbiAgICAgICAgLm1hcChpdGVtID0+IFwiPVwiICsgdGhpcy5wcm9ncmFtbWFiaWxpdHkuZ2V0RXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKTtcclxuXHJcbiAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGZlZWxhYmxlID0gdG9GZWVsYWJsZShleHByZXNzaW9ucyk7XHJcblxyXG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXREZXBlbmRlbmNpZXMoZmVlbGFibGUpXHJcbiAgICAgICAgLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG5cclxuICAgICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LndhdGNoKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCAoKSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjYWxsYmFja3MuaW52b2tlKCk7XHJcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dWYWxpZGF0aW9uID0gKGNvbXBvbmVudDogYW55LCBydWxlOiBWYWxpZGF0aW9uUnVsZSwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PiB7XHJcbiAgICBpZiAodGhpcy5wcm9ncmFtbWFiaWxpdHkudmVyYm9zZSkge1xyXG4gICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXCJbVmFsaWRhdGlvbl0gRmFpbGVkXCIsIHsgY29udHJvbCwgY29tcG9uZW50LCBydWxlLCByZXN1bHQgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJbVmFsaWRhdGlvbl0gU3VjY2Vzc1wiLCB7IGNvbnRyb2wsIGNvbXBvbmVudCwgcnVsZSwgcmVzdWx0IH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IG51bGxPYnNlcnZlciA9IG9mKG51bGwpO1xyXG5cclxuICBwcml2YXRlIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKHRoaXMubGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgVmFsaWRhdGlvbkNhbGxiYWNrID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Q29udGV4dCB7XHJcbiAgY29tcG9uZW50OiBhbnk7XHJcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJ1bGUge1xyXG4gIGV4cHJlc3Npb246IHN0cmluZztcclxuICB0eXBlOiBcInZhbGlkYXRlXCIgfCBcImludmFsaWRhdGVcIjtcclxuICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgYXN5bmM6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkNvbGxlY3Rpb24gPSBNYXA8QWJzdHJhY3RDb250cm9sLCBDb21wb25lbnRDb250ZXh0PjtcclxuIl19
@@ -39,6 +39,11 @@ export class WeakService {
39
39
  delete cachedObject[key];
40
40
  }
41
41
  }
42
+ invalidateAll(source) {
43
+ if (this.cache.has(source)) {
44
+ this.cache.delete(source);
45
+ }
46
+ }
42
47
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WeakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
43
48
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WeakService, providedIn: 'root' });
44
49
  }
@@ -48,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
48
53
  providedIn: 'root'
49
54
  }]
50
55
  }], ctorParameters: () => [] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvd2Vhay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sV0FBVztJQUV0QixnQkFBZ0IsQ0FBQztJQUVULEtBQUssR0FBRyxJQUFJLE9BQU8sRUFBK0IsQ0FBQztJQUUzRCxNQUFNLENBQUMsTUFBYyxFQUFFLEdBQVc7UUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBSSxNQUFjLEVBQUUsR0FBVyxFQUFFLElBQWEsRUFDOUMsV0FBMkMsSUFBSSxFQUMvQyxRQUFvQyxJQUFJO1FBRTFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUM7UUFFN0MsSUFBSSxHQUFHLElBQUksWUFBWTtlQUNsQixDQUFDLFFBQVEsSUFBSSxJQUFJO21CQUNmLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNuQyxDQUFDO1lBQ0MsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksTUFBTSxHQUFRLElBQUksRUFBRSxDQUFDO1FBRXpCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUNKLENBQUM7UUFFRCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRTNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYyxFQUFFLEdBQVc7UUFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDO1lBQzdDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO3dHQXhEVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2Vha1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG5cclxuICBleGlzdHMoc291cmNlOiBvYmplY3QsIGtleTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jYWNoZS5oYXMoc291cmNlKSkge1xyXG4gICAgICBjb25zdCBjYWNoZWRPYmplY3QgPSB0aGlzLmNhY2hlLmdldChzb3VyY2UpITtcclxuICAgICAgcmV0dXJuIChrZXkgaW4gY2FjaGVkT2JqZWN0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNhbGw8VD4oc291cmNlOiBvYmplY3QsIGtleTogc3RyaW5nLCBmdW5jOiAoKSA9PiBUXHJcbiAgICAsIHJldXNhYmxlOiAoKHZhbHVlOiBUKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsXHJcbiAgICAsIHN0b3JlOiAoKHZhbHVlOiBUKSA9PiBhbnkpIHwgbnVsbCA9IG51bGxcclxuICAgICk6IFQge1xyXG4gICAgaWYgKCF0aGlzLmNhY2hlLmhhcyhzb3VyY2UpKSB7XHJcbiAgICAgIHRoaXMuY2FjaGUuc2V0KHNvdXJjZSwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhY2hlZE9iamVjdCA9IHRoaXMuY2FjaGUuZ2V0KHNvdXJjZSkhO1xyXG5cclxuICAgIGlmIChrZXkgaW4gY2FjaGVkT2JqZWN0XHJcbiAgICAgICYmIChyZXVzYWJsZSA9PSBudWxsXHJcbiAgICAgICAgfHwgcmV1c2FibGUoY2FjaGVkT2JqZWN0W2tleV0pKSlcclxuICAgIHtcclxuICAgICAgcmV0dXJuIGNhY2hlZE9iamVjdFtrZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQ6IGFueSA9IGZ1bmMoKTtcclxuXHJcbiAgICBpZiAoc3RvcmUgIT0gbnVsbCkge1xyXG4gICAgICByZXN1bHQgPSBzdG9yZShyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSBpc09ic2VydmFibGUocmVzdWx0KTtcclxuXHJcbiAgICBpZiAob2JzZXJ2YWJsZSkge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQucGlwZShcclxuICAgICAgICB0YWtlKDEpLCAgICAgICAgXHJcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjYWNoZWRPYmplY3Rba2V5XSA9IHJlc3VsdDtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaW52YWxpZGF0ZShzb3VyY2U6IG9iamVjdCwga2V5OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNhY2hlLmhhcyhzb3VyY2UpKSB7XHJcbiAgICAgIGNvbnN0IGNhY2hlZE9iamVjdCA9IHRoaXMuY2FjaGUuZ2V0KHNvdXJjZSkhO1xyXG4gICAgICBkZWxldGUgY2FjaGVkT2JqZWN0W2tleV07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvd2Vhay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sV0FBVztJQUV0QixnQkFBZ0IsQ0FBQztJQUVULEtBQUssR0FBRyxJQUFJLE9BQU8sRUFBK0IsQ0FBQztJQUUzRCxNQUFNLENBQUMsTUFBYyxFQUFFLEdBQVc7UUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBSSxNQUFjLEVBQUUsR0FBVyxFQUFFLElBQWEsRUFDOUMsV0FBMkMsSUFBSSxFQUMvQyxRQUFvQyxJQUFJO1FBRTFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUM7UUFFN0MsSUFBSSxHQUFHLElBQUksWUFBWTtlQUNsQixDQUFDLFFBQVEsSUFBSSxJQUFJO21CQUNmLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNuQyxDQUFDO1lBQ0MsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksTUFBTSxHQUFRLElBQUksRUFBRSxDQUFDO1FBRXpCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUNKLENBQUM7UUFFRCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRTNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYyxFQUFFLEdBQVc7UUFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDO1lBQzdDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO3dHQTlEVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2Vha1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG5cclxuICBleGlzdHMoc291cmNlOiBvYmplY3QsIGtleTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jYWNoZS5oYXMoc291cmNlKSkge1xyXG4gICAgICBjb25zdCBjYWNoZWRPYmplY3QgPSB0aGlzLmNhY2hlLmdldChzb3VyY2UpITtcclxuICAgICAgcmV0dXJuIChrZXkgaW4gY2FjaGVkT2JqZWN0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNhbGw8VD4oc291cmNlOiBvYmplY3QsIGtleTogc3RyaW5nLCBmdW5jOiAoKSA9PiBUXHJcbiAgICAsIHJldXNhYmxlOiAoKHZhbHVlOiBUKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsXHJcbiAgICAsIHN0b3JlOiAoKHZhbHVlOiBUKSA9PiBhbnkpIHwgbnVsbCA9IG51bGxcclxuICAgICk6IFQge1xyXG4gICAgaWYgKCF0aGlzLmNhY2hlLmhhcyhzb3VyY2UpKSB7XHJcbiAgICAgIHRoaXMuY2FjaGUuc2V0KHNvdXJjZSwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhY2hlZE9iamVjdCA9IHRoaXMuY2FjaGUuZ2V0KHNvdXJjZSkhO1xyXG5cclxuICAgIGlmIChrZXkgaW4gY2FjaGVkT2JqZWN0XHJcbiAgICAgICYmIChyZXVzYWJsZSA9PSBudWxsXHJcbiAgICAgICAgfHwgcmV1c2FibGUoY2FjaGVkT2JqZWN0W2tleV0pKSlcclxuICAgIHtcclxuICAgICAgcmV0dXJuIGNhY2hlZE9iamVjdFtrZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQ6IGFueSA9IGZ1bmMoKTtcclxuXHJcbiAgICBpZiAoc3RvcmUgIT0gbnVsbCkge1xyXG4gICAgICByZXN1bHQgPSBzdG9yZShyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSBpc09ic2VydmFibGUocmVzdWx0KTtcclxuXHJcbiAgICBpZiAob2JzZXJ2YWJsZSkge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQucGlwZShcclxuICAgICAgICB0YWtlKDEpLCAgICAgICAgXHJcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjYWNoZWRPYmplY3Rba2V5XSA9IHJlc3VsdDtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaW52YWxpZGF0ZShzb3VyY2U6IG9iamVjdCwga2V5OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNhY2hlLmhhcyhzb3VyY2UpKSB7XHJcbiAgICAgIGNvbnN0IGNhY2hlZE9iamVjdCA9IHRoaXMuY2FjaGUuZ2V0KHNvdXJjZSkhO1xyXG4gICAgICBkZWxldGUgY2FjaGVkT2JqZWN0W2tleV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnZhbGlkYXRlQWxsKHNvdXJjZTogb2JqZWN0KSB7XHJcbiAgICBpZiAodGhpcy5jYWNoZS5oYXMoc291cmNlKSkge1xyXG4gICAgICB0aGlzLmNhY2hlLmRlbGV0ZShzb3VyY2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,12 @@
1
+ import { bindFunction } from '../utils/proxy';
2
+ export function ToBoundArrows(instance, methodNames) {
3
+ const result = {};
4
+ for (const name of methodNames) {
5
+ const original = instance[name];
6
+ if (typeof original === 'function') {
7
+ result[name] = bindFunction(original, instance);
8
+ }
9
+ }
10
+ return result;
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi91dGlscy9ib3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBVyxFQUNYLFdBQXdCO0lBQ3hCLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7SUFFdkMsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsSUFBYyxDQUFDLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaW5kRnVuY3Rpb24gfSBmcm9tICcuLi91dGlscy9wcm94eSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gVG9Cb3VuZEFycm93czxUIGV4dGVuZHMgb2JqZWN0PihcclxuICBpbnN0YW5jZTogVCxcclxuICBtZXRob2ROYW1lczogKGtleW9mIFQpW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuXHJcbiAgZm9yIChjb25zdCBuYW1lIG9mIG1ldGhvZE5hbWVzKSB7XHJcbiAgICBjb25zdCBvcmlnaW5hbCA9IGluc3RhbmNlW25hbWVdO1xyXG4gICAgaWYgKHR5cGVvZiBvcmlnaW5hbCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXN1bHRbbmFtZSBhcyBzdHJpbmddID0gYmluZEZ1bmN0aW9uKG9yaWdpbmFsLCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbiJdfQ==