@bizdoc/core 1.16.5 → 1.16.6

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 (61) hide show
  1. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +199 -202
  2. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +53 -25
  3. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +84 -55
  4. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +16 -23
  5. package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +3 -3
  6. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +3 -3
  7. package/esm2020/lib/admin/configuration-designer/elements/anomaly-rule.component.mjs +3 -3
  8. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +3 -3
  9. package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +3 -3
  10. package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +3 -3
  11. package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +3 -3
  12. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +80 -62
  13. package/esm2020/lib/admin/configuration-designer/elements/documents-report.component.mjs +3 -3
  14. package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +3 -3
  15. package/esm2020/lib/admin/configuration-designer/elements/explore-view.component.mjs +3 -3
  16. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +15 -17
  17. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +12 -17
  18. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +8 -13
  19. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +3 -3
  20. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +3 -3
  21. package/esm2020/lib/admin/configuration-designer/elements/performance-widget.component.mjs +3 -3
  22. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +3 -3
  23. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +9 -14
  24. package/esm2020/lib/admin/configuration-designer/elements/return-to-role-action.component.mjs +3 -3
  25. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +6 -5
  26. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +6 -13
  27. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +12 -19
  28. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +3 -3
  29. package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +3 -3
  30. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +8 -14
  31. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +3 -3
  32. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +6 -6
  33. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +6 -13
  34. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +7 -12
  35. package/esm2020/lib/admin/form/workflow/node.component.mjs +2 -2
  36. package/esm2020/lib/core/functions.mjs +4 -3
  37. package/esm2020/lib/core/layout/input.base.mjs +45 -1
  38. package/esm2020/lib/core/layout/layout.component.mjs +16 -58
  39. package/esm2020/lib/core/slots/router.service.mjs +1 -1
  40. package/esm2020/lib/core/slots/slots.component.mjs +12 -7
  41. package/esm2020/lib/core/translations.mjs +9 -2
  42. package/esm2020/lib/dashboard/widget-item.component.mjs +2 -2
  43. package/esm2020/lib/reports/arguments-component.mjs +2 -2
  44. package/esm2020/lib/system.module.mjs +9 -9
  45. package/fesm2015/bizdoc-core.mjs +1492 -1448
  46. package/fesm2015/bizdoc-core.mjs.map +1 -1
  47. package/fesm2020/bizdoc-core.mjs +1485 -1439
  48. package/fesm2020/bizdoc-core.mjs.map +1 -1
  49. package/lib/admin/configuration-designer/designer-element.component.d.ts +62 -31
  50. package/lib/admin/configuration-designer/designer.base.d.ts +80 -41
  51. package/lib/admin/configuration-designer/designer.component.d.ts +8 -4
  52. package/lib/admin/configuration-designer/elements/action.component.d.ts +3 -3
  53. package/lib/admin/configuration-designer/elements/cube.component.d.ts +1 -8
  54. package/lib/admin/configuration-designer/elements/folder.component.d.ts +1 -8
  55. package/lib/admin/configuration-designer/elements/report.component.d.ts +3 -3
  56. package/lib/core/layout/input.base.d.ts +4 -1
  57. package/lib/core/layout/layout.component.d.ts +5 -7
  58. package/lib/core/slots/router.service.d.ts +2 -0
  59. package/lib/core/translations.d.ts +7 -0
  60. package/lib/system.module.d.ts +23 -23
  61. package/package.json +16 -16
@@ -1,6 +1,6 @@
1
1
  import { Component, Input, Output, EventEmitter, ViewContainerRef, ViewChild } from '@angular/core';
2
- import { FieldType, ValidationType } from '../models';
3
- import { FormGroup, Validators } from '@angular/forms';
2
+ import { FieldType } from '../models';
3
+ import { FormGroup } from '@angular/forms';
4
4
  import { Subject } from 'rxjs';
5
5
  import { takeUntil, startWith } from 'rxjs/operators';
6
6
  import { CheckField } from "./checkbox.field";
@@ -20,26 +20,26 @@ import * as i0 from "@angular/core";
20
20
  /** layout component*/
21
21
  export class LayoutComponent {
22
22
  /** layout ctor */
23
- constructor(_resolver, _zone) {
23
+ constructor(_resolver) {
24
24
  this._resolver = _resolver;
25
- this._zone = _zone;
26
25
  this.modelChange = new EventEmitter();
27
26
  this.dirtyChange = new EventEmitter();
28
27
  this.validChange = new EventEmitter();
29
28
  this._destroy = new Subject();
29
+ this.form = new FormGroup({});
30
30
  }
31
31
  ngAfterViewInit() {
32
32
  this._children.length && this.focus();
33
33
  }
34
34
  ngOnChanges(changes) {
35
- if (changes['fields'])
36
- this.create();
35
+ if (changes['fields']) {
36
+ this._containerRef.clear();
37
+ this.formulate();
38
+ }
37
39
  else if (changes['model'])
38
40
  this.form.patchValue(this.model, { emitEvent: false });
39
41
  }
40
- create() {
41
- this.containerRef.clear();
42
- const controls = {};
42
+ formulate() {
43
43
  this._children = this.fields.map(f => {
44
44
  let comp;
45
45
  switch (f.type) {
@@ -88,15 +88,11 @@ export class LayoutComponent {
88
88
  comp = InputField;
89
89
  }
90
90
  const factory = this._resolver.resolveComponentFactory(comp);
91
- const cRef = this.containerRef.createComponent(factory);
91
+ const cRef = this._containerRef.createComponent(factory);
92
92
  cRef.instance.field = f;
93
- f.defaultValue && cRef.instance.control.setValue(f.defaultValue);
94
- f.validations &&
95
- this._validations(f, cRef.instance.control);
96
- controls[f.name] = cRef.instance.control;
93
+ this.form.addControl(f.name, cRef.instance.control);
97
94
  return cRef.instance;
98
95
  });
99
- this.form = new FormGroup(controls);
100
96
  this.form.patchValue(this.model);
101
97
  this.form.valueChanges.pipe(takeUntil(this._destroy)).subscribe(c => {
102
98
  Object.assign(this.model, c);
@@ -108,60 +104,22 @@ export class LayoutComponent {
108
104
  this.validChange.emit(this.form.valid);
109
105
  });
110
106
  }
111
- _validations(field, control) {
112
- const validators = [];
113
- field.validations.forEach(v => {
114
- switch (v.type) {
115
- case ValidationType.Required:
116
- if (field.type === FieldType.Checkbox || field.type === FieldType.Switch)
117
- validators.push(Validators.requiredTrue);
118
- else
119
- validators.push(Validators.required);
120
- break;
121
- case ValidationType.Pattern:
122
- validators.push(Validators.pattern(field.pattern));
123
- break;
124
- case ValidationType.Min:
125
- validators.push(Validators.min(field.min));
126
- break;
127
- case ValidationType.Max:
128
- validators.push(Validators.max(field.max));
129
- break;
130
- case ValidationType.MinLength:
131
- validators.push(Validators.minLength(field.min));
132
- break;
133
- case ValidationType.MaxLength:
134
- validators.push(Validators.maxLength(field.max));
135
- break;
136
- case ValidationType.Email:
137
- validators.push(Validators.email);
138
- break;
139
- case ValidationType.Range:
140
- validators.push(Validators.min(field.min));
141
- validators.push(Validators.max(field.max));
142
- break;
143
- }
144
- });
145
- control.setValidators(validators);
146
- }
147
107
  focus() {
148
108
  this._children[0].focus();
149
- //this._zone.runOutsideAngular(() => {
150
109
  // const inp = (this.containerRef.element.nativeElement as HTMLElement).querySelectorAll('.mat-select, textarea, input')[0];
151
110
  // inp && (inp as HTMLInputElement).focus();
152
- //})
153
111
  }
154
112
  ngOnDestroy() {
155
113
  this._destroy.next();
156
114
  this._destroy.complete();
157
115
  }
158
116
  }
159
- LayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: LayoutComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
160
- LayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: LayoutComponent, selector: "bizdoc-layout", inputs: { fields: "fields", model: "model", dirty: "dirty", params: "params", valid: "valid" }, outputs: { modelChange: "modelChange", dirtyChange: "dirtyChange", validChange: "validChange" }, host: { classAttribute: "layout" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true, styles: [":host{display:flex;flex-direction:column;padding:8px}::ng-deep .layout>*{display:contents}\n"] });
117
+ LayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: LayoutComponent, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
118
+ LayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: LayoutComponent, selector: "bizdoc-layout", inputs: { fields: "fields", model: "model", dirty: "dirty", params: "params", valid: "valid" }, outputs: { modelChange: "modelChange", dirtyChange: "dirtyChange", validChange: "validChange" }, host: { classAttribute: "layout" }, viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true, styles: [":host{display:flex;flex-direction:column;padding:8px}::ng-deep .layout>*{display:contents}\n"] });
161
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: LayoutComponent, decorators: [{
162
120
  type: Component,
163
121
  args: [{ selector: 'bizdoc-layout', template: '<ng-container #container></ng-container>', host: { class: 'layout' }, styles: [":host{display:flex;flex-direction:column;padding:8px}::ng-deep .layout>*{display:contents}\n"] }]
164
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.NgZone }]; }, propDecorators: { fields: [{
122
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; }, propDecorators: { fields: [{
165
123
  type: Input
166
124
  }], model: [{
167
125
  type: Input
@@ -177,8 +135,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
177
135
  type: Input
178
136
  }], validChange: [{
179
137
  type: Output
180
- }], containerRef: [{
138
+ }], _containerRef: [{
181
139
  type: ViewChild,
182
140
  args: ['container', { static: true, read: ViewContainerRef }]
183
141
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUF3RixTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbE0sT0FBTyxFQUFhLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFP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QUNOLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzRHQWxKVSxlQUFlO2dHQUFmLGVBQWUsZ1hBU29CLGdCQUFnQixnRUFkcEQsMENBQTBDOzJGQUt6QyxlQUFlO2tCQVAzQixTQUFTOytCQUNFLGVBQWUsWUFDZiwwQ0FBMEMsUUFFOUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO29JQUloQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNhLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ0UsS0FBSztzQkFBYixLQUFLO2dCQUNhLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxXQUFXO3NCQUE3QixNQUFNO2dCQUMyRCxZQUFZO3NCQUE3RSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEFmdGVyVmlld0luaXQsIE5nWm9uZSwgVmlld0NoaWxkLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRJbmZvLCBGaWVsZFR5cGUsIFZhbGlkYXRpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tICcuL2lucHV0LmJhc2UnO1xyXG5pbXBvcnQgeyBDaGVja0ZpZWxkIH0gZnJvbSBcIi4vY2hlY2tib3guZmllbGRcIjtcclxuaW1wb3J0IHsgU3dpdGNoRmllbGQgfSBmcm9tIFwiLi9zd2l0Y2guZmllbGRcIjtcclxuaW1wb3J0IHsgVGltZXNwYW5GaWVsZCB9IGZyb20gXCIuL3RpbWVzcGFuLmZpZWxkXCI7XHJcbmltcG9ydCB7IEV4cHJlc3Npb25GaWVsZCB9IGZyb20gXCIuL2V4cHJlc3Npb24uZmllbGRcIjtcclxuaW1wb3J0IHsgU2VsZWN0RmllbGQgfSBmcm9tIFwiLi9zZWxlY3QuZmllbGRcIjtcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRmllbGQgfSBmcm9tIFwiLi9hdXRvY29tcGxldGUuZmllbGRcIjtcclxuaW1wb3J0IHsgRGF0ZUZpZWxkIH0gZnJvbSBcIi4vZGF0ZS5maWVsZFwiO1xyXG5pbXBvcnQgeyBEYXRlUmFuZ2VGaWVsZCB9IGZyb20gXCIuL2RhdGUtcmFuZ2UuZmllbGRcIjtcclxuaW1wb3J0IHsgVGV4dGFyZWFGaWVsZCB9IGZyb20gXCIuL3RleHRhcmVhLmZpZWxkXCI7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCB9IGZyb20gXCIuL251bWVyaWMuZmllbGRcIjtcclxuaW1wb3J0IHsgSW5wdXRGaWVsZCB9IGZyb20gXCIuL2lucHV0LmZpZWxkXCI7XHJcbmltcG9ydCB7IEh0bWxGaWVsZCB9IGZyb20gJy4vaHRtbC5maWVsZCc7XHJcbmltcG9ydCB7IEZpbGVGaWVsZCB9IGZyb20gJy4vZmlsZS5maWVsZCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWxheW91dCcsXHJcbiAgdGVtcGxhdGU6ICc8bmctY29udGFpbmVyICNjb250YWluZXI+PC9uZy1jb250YWluZXI+JyxcclxuICBzdHlsZVVybHM6IFsnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAnbGF5b3V0JyB9XHJcbn0pXHJcbi8qKiBsYXlvdXQgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBmaWVsZHMhOiBGaWVsZEluZm9bXTtcclxuICBASW5wdXQoKSBtb2RlbCE6IHt9O1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcbiAgQElucHV0KCkgZGlydHk6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogYW55O1xyXG4gIEBJbnB1dCgpIHZhbGlkOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWxpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIHByaXZhdGUgX2NoaWxkcmVuOiBGaWVsZEJhc2VbXTtcclxuICAvKiogbGF5b3V0IGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Jlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2hpbGRyZW4ubGVuZ3RoICYmIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpZWxkcyddKVxyXG4gICAgICB0aGlzLmNyZWF0ZSgpO1xyXG4gICAgZWxzZSBpZiAoY2hhbmdlc1snbW9kZWwnXSlcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgY29uc3QgY29udHJvbHMgPSB7fTtcclxuICAgIHRoaXMuX2NoaWxkcmVuID0gdGhpcy5maWVsZHMubWFwKGYgPT4ge1xyXG4gICAgICBsZXQgY29tcDtcclxuICAgICAgc3dpdGNoIChmLnR5cGUpIHtcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5UZXh0OlxyXG4gICAgICAgICAgY29tcCA9IFRleHRhcmVhRmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5IdG1sOlxyXG4gICAgICAgICAgY29tcCA9IEh0bWxGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkNoZWNrYm94OlxyXG4gICAgICAgICAgY29tcCA9IENoZWNrRmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5Td2l0Y2g6XHJcbiAgICAgICAgICBjb21wID0gU3dpdGNoRmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgY29tcCA9IERhdGVGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGVSYW5nZTpcclxuICAgICAgICAgIGNvbXAgPSBEYXRlUmFuZ2VGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5FeHByZXNzaW9uKTpcclxuICAgICAgICAgIGNvbXAgPSBFeHByZXNzaW9uRmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIChGaWVsZFR5cGUuRHVyYXRpb24pOlxyXG4gICAgICAgICAgY29tcCA9IFRpbWVzcGFuRmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIChGaWVsZFR5cGUuQWRkcmVzcyk6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5TZWxlY3Q6XHJcbiAgICAgICAgICBjb21wID0gU2VsZWN0RmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5BdXRvY29tcGxldGU6XHJcbiAgICAgICAgICBjb21wID0gQXV0b2NvbXBsZXRlRmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5GaWxlOlxyXG4gICAgICAgICAgY29tcCA9IEZpbGVGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5DdXJyZW5jeTpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZS5QZXJjZW50OlxyXG4gICAgICAgICAgY29tcCA9IE51bWVyaWNGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb21wID0gSW5wdXRGaWVsZDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fcmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk8RmllbGRCYXNlPihjb21wKTtcclxuICAgICAgY29uc3QgY1JlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5maWVsZCA9IGY7XHJcbiAgICAgIGYuZGVmYXVsdFZhbHVlICYmIGNSZWYuaW5zdGFuY2UuY29udHJvbC5zZXRWYWx1ZShmLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgIGYudmFsaWRhdGlvbnMgJiZcclxuICAgICAgICB0aGlzLl92YWxpZGF0aW9ucyhmLCBjUmVmLmluc3RhbmNlLmNvbnRyb2wpO1xyXG4gICAgICBjb250cm9sc1tmLm5hbWVdID0gY1JlZi5pbnN0YW5jZS5jb250cm9sO1xyXG4gICAgICByZXR1cm4gY1JlZi5pbnN0YW5jZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cChjb250cm9scyk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCBjKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KGMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCgpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCh0aGlzLmZvcm0uZGlydHkpO1xyXG4gICAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xyXG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy5mb3JtLnZhbGlkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbnMoZmllbGQ6IEZpZWxkSW5mbywgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICBmaWVsZC52YWxpZGF0aW9ucy5mb3JFYWNoKHYgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHYudHlwZSkge1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuUmVxdWlyZWQ6XHJcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLkNoZWNrYm94IHx8IGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5Td2l0Y2gpXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuUGF0dGVybjpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oZmllbGQucGF0dGVybikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5NaW46XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4oZmllbGQubWluKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLk1heDpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heChmaWVsZC5tYXgpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuTWluTGVuZ3RoOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGZpZWxkLm1pbikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5NYXhMZW5ndGg6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoZmllbGQubWF4KSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLkVtYWlsOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5SYW5nZTpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbihmaWVsZC5taW4pKTtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heChmaWVsZC5tYXgpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCkge1xyXG4gICAgdGhpcy5fY2hpbGRyZW5bMF0uZm9jdXMoKTtcclxuICAgIC8vdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAvLyAgY29uc3QgaW5wID0gKHRoaXMuY29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgnLm1hdC1zZWxlY3QsIHRleHRhcmVhLCBpbnB1dCcpWzBdO1xyXG4gICAgLy8gIGlucCAmJiAoaW5wIGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgICAvL30pXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUF3RixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUwsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0s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QUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQiw2SEFBNkg7UUFDN0gsNkNBQTZDO0lBQy9DLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzRHQXRHVSxlQUFlO2dHQUFmLGVBQWUsaVhBU29CLGdCQUFnQixnRUFkcEQsMENBQTBDOzJGQUt6QyxlQUFlO2tCQVAzQixTQUFTOytCQUNFLGVBQWUsWUFDZiwwQ0FBMEMsUUFFOUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFOytHQUloQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNhLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ0UsS0FBSztzQkFBYixLQUFLO2dCQUNhLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxXQUFXO3NCQUE3QixNQUFNO2dCQUMyRCxhQUFhO3NCQUE5RSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEFmdGVyVmlld0luaXQsIE5nWm9uZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkSW5mbywgRmllbGRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tICcuL2lucHV0LmJhc2UnO1xyXG5pbXBvcnQgeyBDaGVja0ZpZWxkIH0gZnJvbSBcIi4vY2hlY2tib3guZmllbGRcIjtcclxuaW1wb3J0IHsgU3dpdGNoRmllbGQgfSBmcm9tIFwiLi9zd2l0Y2guZmllbGRcIjtcclxuaW1wb3J0IHsgVGltZXNwYW5GaWVsZCB9IGZyb20gXCIuL3RpbWVzcGFuLmZpZWxkXCI7XHJcbmltcG9ydCB7IEV4cHJlc3Npb25GaWVsZCB9IGZyb20gXCIuL2V4cHJlc3Npb24uZmllbGRcIjtcclxuaW1wb3J0IHsgU2VsZWN0RmllbGQgfSBmcm9tIFwiLi9zZWxlY3QuZmllbGRcIjtcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRmllbGQgfSBmcm9tIFwiLi9hdXRvY29tcGxldGUuZmllbGRcIjtcclxuaW1wb3J0IHsgRGF0ZUZpZWxkIH0gZnJvbSBcIi4vZGF0ZS5maWVsZFwiO1xyXG5pbXBvcnQgeyBEYXRlUmFuZ2VGaWVsZCB9IGZyb20gXCIuL2RhdGUtcmFuZ2UuZmllbGRcIjtcclxuaW1wb3J0IHsgVGV4dGFyZWFGaWVsZCB9IGZyb20gXCIuL3RleHRhcmVhLmZpZWxkXCI7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCB9IGZyb20gXCIuL251bWVyaWMuZmllbGRcIjtcclxuaW1wb3J0IHsgSW5wdXRGaWVsZCB9IGZyb20gXCIuL2lucHV0LmZpZWxkXCI7XHJcbmltcG9ydCB7IEh0bWxGaWVsZCB9IGZyb20gJy4vaHRtbC5maWVsZCc7XHJcbmltcG9ydCB7IEZpbGVGaWVsZCB9IGZyb20gJy4vZmlsZS5maWVsZCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWxheW91dCcsXHJcbiAgdGVtcGxhdGU6ICc8bmctY29udGFpbmVyICNjb250YWluZXI+PC9uZy1jb250YWluZXI+JyxcclxuICBzdHlsZVVybHM6IFsnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAnbGF5b3V0JyB9XHJcbn0pXHJcbi8qKiBsYXlvdXQgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBmaWVsZHMhOiBGaWVsZEluZm9bXTtcclxuICBASW5wdXQoKSBtb2RlbCE6IHt9O1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcbiAgQElucHV0KCkgZGlydHk6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRpcnR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogYW55O1xyXG4gIEBJbnB1dCgpIHZhbGlkOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWxpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBfY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBwcml2YXRlIF9jaGlsZHJlbjogRmllbGRCYXNlW107XHJcbiAgLyoqIGxheW91dCBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoaWxkcmVuLmxlbmd0aCAmJiB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWVsZHMnXSkge1xyXG4gICAgICB0aGlzLl9jb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgICAgdGhpcy5mb3JtdWxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoYW5nZXNbJ21vZGVsJ10pXHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcbiAgZm9ybXVsYXRlKCkge1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLmZpZWxkcy5tYXAoZiA9PiB7XHJcbiAgICAgIGxldCBjb21wO1xyXG4gICAgICBzd2l0Y2ggKGYudHlwZSkge1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlRleHQ6XHJcbiAgICAgICAgICBjb21wID0gVGV4dGFyZWFGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkh0bWw6XHJcbiAgICAgICAgICBjb21wID0gSHRtbEZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuQ2hlY2tib3g6XHJcbiAgICAgICAgICBjb21wID0gQ2hlY2tGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlN3aXRjaDpcclxuICAgICAgICAgIGNvbXAgPSBTd2l0Y2hGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICBjb21wID0gRGF0ZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVJhbmdlOlxyXG4gICAgICAgICAgY29tcCA9IERhdGVSYW5nZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAoRmllbGRUeXBlLkV4cHJlc3Npb24pOlxyXG4gICAgICAgICAgY29tcCA9IEV4cHJlc3Npb25GaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5EdXJhdGlvbik6XHJcbiAgICAgICAgICBjb21wID0gVGltZXNwYW5GaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKEZpZWxkVHlwZS5BZGRyZXNzKTpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlNlbGVjdDpcclxuICAgICAgICAgIGNvbXAgPSBTZWxlY3RGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkF1dG9jb21wbGV0ZTpcclxuICAgICAgICAgIGNvbXAgPSBBdXRvY29tcGxldGVGaWVsZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkZpbGU6XHJcbiAgICAgICAgICBjb21wID0gRmlsZUZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGUuTnVtYmVyOlxyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLkN1cnJlbmN5OlxyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlLlBlcmNlbnQ6XHJcbiAgICAgICAgICBjb21wID0gTnVtZXJpY0ZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGNvbXAgPSBJbnB1dEZpZWxkO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxGaWVsZEJhc2U+KGNvbXApO1xyXG4gICAgICBjb25zdCBjUmVmID0gdGhpcy5fY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5maWVsZCA9IGY7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGYubmFtZSwgY1JlZi5pbnN0YW5jZS5jb250cm9sKTtcclxuICAgICAgcmV0dXJuIGNSZWYuaW5zdGFuY2U7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIGMpO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoYyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KHRoaXMuZm9ybS5kaXJ0eSk7XHJcbiAgICAgIHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XHJcbiAgICAgIHRoaXMudmFsaWRDaGFuZ2UuZW1pdCh0aGlzLmZvcm0udmFsaWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpIHtcclxuICAgIHRoaXMuX2NoaWxkcmVuWzBdLmZvY3VzKCk7XHJcbiAgICAvLyAgY29uc3QgaW5wID0gKHRoaXMuY29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgnLm1hdC1zZWxlY3QsIHRleHRhcmVhLCBpbnB1dCcpWzBdO1xyXG4gICAgLy8gIGlucCAmJiAoaW5wIGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
27
27
  type: Injectable,
28
28
  args: [{ providedIn: 'root' }]
29
29
  }], ctorParameters: function () { return []; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLFlBQVksQ0FBQzs7QUFJdEUsTUFBTSxPQUNFLFdBQVc7SUFRakI7UUFQUyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRXRDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFHVCxDQUFDO0lBR3pCLENBQUM7SUFNRCxRQUFRLENBQUksUUFBZ0QsRUFBRSxPQUEyQjtRQUN2RixPQUFPLElBQUksT0FBTyxDQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUN0RyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQ3BELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDOzt3R0ExQkssV0FBVzs0R0FBWCxXQUFXLGNBRk8sTUFBTTsyRkFFeEIsV0FBVztrQkFGbEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIE5hdmlnYXRpb25CYXNlLCBQYW5lUmVmIH0gZnJvbSAnLi9wYW5lLXJlZic7XHJcblxyXG5leHBvcnQgdHlwZSBSb3V0ZXJDb21tYW5kID0gJ2NvbGxhcHNlJztcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgUGFuZXNSb3V0ZXIge1xyXG4gIHJlYWRvbmx5IF9ldmVudHMkID0gbmV3IFN1YmplY3Q8TmF2aWdhdGlvbkJhc2U+KCk7XHJcbiAgcmVhZG9ubHkgX2NvbW0kID0gbmV3IFN1YmplY3Q8Um91dGVyQ29tbWFuZD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgX25hdmlnYXRlJCA9IG5ldyBTdWJqZWN0PHtcclxuICAgIGNvbW1hbmRzPzogYW55W10sXHJcbiAgICBjb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT4sXHJcbiAgfSAmIE5hdmlnYXRpb25PcHRpb25zPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkge1xyXG4gIH1cclxuICAvL3JlcGxhY2UodXJsOiBzdHJpbmcpIHtcclxuICAvLyAgaGlzdG9yeS5wdXNoU3RhdGUoe30sICcnLCB1cmwpO1xyXG4gIC8vfVxyXG4gIG5hdmlnYXRlKGNvbW1hbmRzOiAoc3RyaW5nfG51bWJlcilbXSAsIG9wdGlvbnM/OiBOYXZpZ2F0aW9uT3B0aW9ucykgXHJcbiAgbmF2aWdhdGU8VD4oY29tbWFuZHM6IENvbXBvbmVudFR5cGU8VD4sIG9wdGlvbnM/OiBOYXZpZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFuZVJlZjxUPj5cclxuICBuYXZpZ2F0ZTxUPihjb21tYW5kczogKHN0cmluZyB8IG51bWJlcilbXSB8IENvbXBvbmVudFR5cGU8VD4sIG9wdGlvbnM/OiBOYXZpZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFuZVJlZjxUPj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFBhbmVSZWY8VD4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRzJC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLCBmaXJzdCgpKS5zdWJzY3JpYmUoKGU6IE5hdmlnYXRpb25TdGFydCkgPT5cclxuICAgICAgICByZXNvbHZlKGUucGFuZSksIHJlamVjdCk7XHJcbiAgICAgIHRoaXMuX25hdmlnYXRlJC5uZXh0KGlzQXJyYXkoY29tbWFuZHMpID8geyBjb21tYW5kcywgLi4ub3B0aW9ucyB9IDogeyBjb21wb25lbnQ6IGNvbW1hbmRzLCAuLi5vcHRpb25zIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldCBldmVudHMoKSB7IHJldHVybiB0aGlzLl9ldmVudHMkLmFzT2JzZXJ2YWJsZSgpIH1cclxuICBjb2xsYXBzZSgpIHtcclxuICAgIHRoaXMuX2NvbW0kLm5leHQoJ2NvbGxhcHNlJyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25PcHRpb25zIHtcclxuICBzdGF0ZT86IGFueTtcclxuICBxdWVyeVBhcmFtcz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgcGF0aE1vZGU/OiAncmVsYXRpdmUnLFxyXG4gIHJlbGF0aXZlVG8/OiBQYW5lUmVmLFxyXG4gIGFuaW1hdGlvbj86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBoZWxwPzogc3RyaW5nO1xyXG4gIGdyb3VwPzogc3RyaW5nO1xyXG4gIHBvbGljeT86IE9wZW5Qb2xpY3k7XHJcbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XHJcbn1cclxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLFlBQVksQ0FBQzs7QUFJdEUsTUFBTSxPQUNFLFdBQVc7SUFRakI7UUFQUyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRXRDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFHVCxDQUFDO0lBR3pCLENBQUM7SUFNRCxRQUFRLENBQUksUUFBZ0QsRUFBRSxPQUEyQjtRQUN2RixPQUFPLElBQUksT0FBTyxDQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUN0RyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQ3BELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDOzt3R0ExQkssV0FBVzs0R0FBWCxXQUFXLGNBRk8sTUFBTTsyRkFFeEIsV0FBVztrQkFGbEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBOYXZpZ2F0aW9uQmFzZSwgUGFuZVJlZiB9IGZyb20gJy4vcGFuZS1yZWYnO1xyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVyQ29tbWFuZCA9ICdjb2xsYXBzZSc7XHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIFBhbmVzUm91dGVyIHtcclxuICByZWFkb25seSBfZXZlbnRzJCA9IG5ldyBTdWJqZWN0PE5hdmlnYXRpb25CYXNlPigpO1xyXG4gIHJlYWRvbmx5IF9jb21tJCA9IG5ldyBTdWJqZWN0PFJvdXRlckNvbW1hbmQ+KCk7XHJcblxyXG4gIHJlYWRvbmx5IF9uYXZpZ2F0ZSQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBjb21tYW5kcz86IGFueVtdLFxyXG4gICAgY29tcG9uZW50PzogQ29tcG9uZW50VHlwZTxhbnk+LFxyXG4gIH0gJiBOYXZpZ2F0aW9uT3B0aW9ucz4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICApIHtcclxuICB9XHJcbiAgLy9yZXBsYWNlKHVybDogc3RyaW5nKSB7XHJcbiAgLy8gIGhpc3RvcnkucHVzaFN0YXRlKHt9LCAnJywgdXJsKTtcclxuICAvL31cclxuICBuYXZpZ2F0ZShjb21tYW5kczogKHN0cmluZ3xudW1iZXIpW10gLCBvcHRpb25zPzogTmF2aWdhdGlvbk9wdGlvbnMpIFxyXG4gIG5hdmlnYXRlPFQ+KGNvbW1hbmRzOiBDb21wb25lbnRUeXBlPFQ+LCBvcHRpb25zPzogTmF2aWdhdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhbmVSZWY8VD4+XHJcbiAgbmF2aWdhdGU8VD4oY29tbWFuZHM6IChzdHJpbmcgfCBudW1iZXIpW10gfCBDb21wb25lbnRUeXBlPFQ+LCBvcHRpb25zPzogTmF2aWdhdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhbmVSZWY8VD4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxQYW5lUmVmPFQ+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50cyQucGlwZShmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSwgZmlyc3QoKSkuc3Vic2NyaWJlKChlOiBOYXZpZ2F0aW9uU3RhcnQpID0+XHJcbiAgICAgICAgcmVzb2x2ZShlLnBhbmUpLCByZWplY3QpO1xyXG4gICAgICB0aGlzLl9uYXZpZ2F0ZSQubmV4dChpc0FycmF5KGNvbW1hbmRzKSA/IHsgY29tbWFuZHMsIC4uLm9wdGlvbnMgfSA6IHsgY29tcG9uZW50OiBjb21tYW5kcywgLi4ub3B0aW9ucyB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXQgZXZlbnRzKCkgeyByZXR1cm4gdGhpcy5fZXZlbnRzJC5hc09ic2VydmFibGUoKSB9XHJcbiAgY29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLl9jb21tJC5uZXh0KCdjb2xsYXBzZScpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uT3B0aW9ucyB7XHJcbiAgc3RhdGU/OiBhbnk7XHJcbiAgcXVlcnlQYXJhbXM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHBhdGhNb2RlPzogJ3JlbGF0aXZlJyxcclxuICByZWxhdGl2ZVRvPzogUGFuZVJlZixcclxuICBhbmltYXRpb24/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaGVscD86IHN0cmluZztcclxuICBncm91cD86IHN0cmluZztcclxuICBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gIHBvbGljeT86IE9wZW5Qb2xpY3k7XHJcbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XHJcbn1cclxuIl19