@pepperi-addons/ngx-composite-lib 0.4.1-beta.1 → 0.4.1-beta.11

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 (133) hide show
  1. package/color-settings/color-settings.component.d.ts +25 -25
  2. package/color-settings/color-settings.model.d.ts +6 -6
  3. package/color-settings/color-settings.module.d.ts +12 -12
  4. package/color-settings/index.d.ts +5 -5
  5. package/color-settings/public-api.d.ts +3 -3
  6. package/core/common/directives/index.d.ts +1 -1
  7. package/core/common/directives/public-api.d.ts +1 -1
  8. package/core/common/directives/reset-configuration-field.directive.d.ts +39 -39
  9. package/core/common/index.d.ts +1 -1
  10. package/core/common/public-api.d.ts +2 -2
  11. package/core/common/services/dimx.service.d.ts +46 -46
  12. package/core/common/services/index.d.ts +1 -1
  13. package/core/common/services/public-api.d.ts +2 -2
  14. package/core/common/services/utilities.service.d.ts +6 -6
  15. package/core/index.d.ts +1 -1
  16. package/core/public-api.d.ts +1 -1
  17. package/data-view-builder/data-view-builder.component.d.ts +35 -35
  18. package/data-view-builder/data-view-builder.model.d.ts +1 -1
  19. package/data-view-builder/data-view-builder.module.d.ts +23 -23
  20. package/data-view-builder/data-view-builder.service.d.ts +14 -14
  21. package/data-view-builder/index.d.ts +5 -5
  22. package/data-view-builder/menu-data-view/menu-data-view.component.d.ts +36 -36
  23. package/data-view-builder/public-api.d.ts +3 -3
  24. package/esm2020/color-settings/color-settings.component.mjs +86 -86
  25. package/esm2020/color-settings/color-settings.model.mjs +8 -8
  26. package/esm2020/color-settings/color-settings.module.mjs +37 -37
  27. package/esm2020/color-settings/pepperi-addons-ngx-composite-lib-color-settings.mjs +4 -4
  28. package/esm2020/color-settings/public-api.mjs +6 -6
  29. package/esm2020/core/common/directives/index.mjs +4 -4
  30. package/esm2020/core/common/directives/public-api.mjs +4 -4
  31. package/esm2020/core/common/directives/reset-configuration-field.directive.mjs +135 -135
  32. package/esm2020/core/common/index.mjs +4 -4
  33. package/esm2020/core/common/public-api.mjs +5 -5
  34. package/esm2020/core/common/services/dimx.service.mjs +63 -63
  35. package/esm2020/core/common/services/index.mjs +4 -4
  36. package/esm2020/core/common/services/public-api.mjs +5 -5
  37. package/esm2020/core/common/services/utilities.service.mjs +18 -18
  38. package/esm2020/core/index.mjs +4 -4
  39. package/esm2020/core/public-api.mjs +4 -4
  40. package/esm2020/data-view-builder/data-view-builder.component.mjs +116 -116
  41. package/esm2020/data-view-builder/data-view-builder.model.mjs +1 -1
  42. package/esm2020/data-view-builder/data-view-builder.module.mjs +79 -79
  43. package/esm2020/data-view-builder/data-view-builder.service.mjs +38 -38
  44. package/esm2020/data-view-builder/menu-data-view/menu-data-view.component.mjs +116 -116
  45. package/esm2020/data-view-builder/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +4 -4
  46. package/esm2020/data-view-builder/public-api.mjs +6 -6
  47. package/esm2020/file-status-panel/file-status-panel.component.mjs +34 -34
  48. package/esm2020/file-status-panel/file-status-panel.model.mjs +8 -8
  49. package/esm2020/file-status-panel/file-status-panel.module.mjs +53 -53
  50. package/esm2020/file-status-panel/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +4 -4
  51. package/esm2020/file-status-panel/public-api.mjs +6 -6
  52. package/esm2020/generic-form/generic-form.component.mjs +190 -184
  53. package/esm2020/generic-form/generic-form.model.mjs +2 -2
  54. package/esm2020/generic-form/generic-form.module.mjs +67 -67
  55. package/esm2020/generic-form/generic-form.service.mjs +57 -57
  56. package/esm2020/generic-form/pepperi-addons-ngx-composite-lib-generic-form.mjs +4 -4
  57. package/esm2020/generic-form/public-api.mjs +7 -7
  58. package/esm2020/generic-list/generic-list.component.mjs +459 -417
  59. package/esm2020/generic-list/generic-list.model.mjs +2 -2
  60. package/esm2020/generic-list/generic-list.module.mjs +107 -70
  61. package/esm2020/generic-list/generic-list.service.mjs +137 -125
  62. package/esm2020/generic-list/pepperi-addons-ngx-composite-lib-generic-list.mjs +4 -4
  63. package/esm2020/generic-list/public-api.mjs +7 -7
  64. package/esm2020/group-buttons-settings/group-buttons-settings.component.mjs +129 -129
  65. package/esm2020/group-buttons-settings/group-buttons-settings.model.mjs +1 -1
  66. package/esm2020/group-buttons-settings/group-buttons-settings.module.mjs +47 -47
  67. package/esm2020/group-buttons-settings/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +4 -4
  68. package/esm2020/group-buttons-settings/public-api.mjs +6 -6
  69. package/esm2020/ngx-composite-lib.module.mjs +54 -54
  70. package/esm2020/pepperi-addons-ngx-composite-lib.mjs +4 -4
  71. package/esm2020/public-api.mjs +5 -5
  72. package/esm2020/shadow-settings/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +4 -4
  73. package/esm2020/shadow-settings/public-api.mjs +6 -6
  74. package/esm2020/shadow-settings/shadow-settings.component.mjs +68 -68
  75. package/esm2020/shadow-settings/shadow-settings.model.mjs +7 -7
  76. package/esm2020/shadow-settings/shadow-settings.module.mjs +41 -41
  77. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +116 -116
  78. package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +309 -309
  79. package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.mjs.map +1 -1
  80. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +80 -80
  81. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs +287 -279
  82. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -1
  83. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +692 -602
  84. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
  85. package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +164 -164
  86. package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +101 -101
  87. package/fesm2015/pepperi-addons-ngx-composite-lib.mjs +271 -271
  88. package/fesm2015/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
  89. package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +116 -116
  90. package/fesm2020/pepperi-addons-ngx-composite-lib-data-view-builder.mjs +307 -307
  91. package/fesm2020/pepperi-addons-ngx-composite-lib-data-view-builder.mjs.map +1 -1
  92. package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +78 -78
  93. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-form.mjs +288 -281
  94. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -1
  95. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +674 -585
  96. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
  97. package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +163 -163
  98. package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +101 -101
  99. package/fesm2020/pepperi-addons-ngx-composite-lib.mjs +264 -264
  100. package/fesm2020/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
  101. package/file-status-panel/file-status-panel.component.d.ts +14 -14
  102. package/file-status-panel/file-status-panel.model.d.ts +7 -7
  103. package/file-status-panel/file-status-panel.module.d.ts +17 -17
  104. package/file-status-panel/index.d.ts +5 -5
  105. package/file-status-panel/public-api.d.ts +3 -3
  106. package/generic-form/generic-form.component.d.ts +43 -44
  107. package/generic-form/generic-form.model.d.ts +42 -34
  108. package/generic-form/generic-form.module.d.ts +13 -13
  109. package/generic-form/generic-form.service.d.ts +15 -15
  110. package/generic-form/index.d.ts +5 -5
  111. package/generic-form/public-api.d.ts +4 -4
  112. package/generic-list/generic-list.component.d.ts +109 -101
  113. package/generic-list/generic-list.component.theme.scss +10 -0
  114. package/generic-list/generic-list.model.d.ts +66 -54
  115. package/generic-list/generic-list.module.d.ts +25 -18
  116. package/generic-list/generic-list.service.d.ts +44 -43
  117. package/generic-list/index.d.ts +5 -5
  118. package/generic-list/public-api.d.ts +4 -4
  119. package/group-buttons-settings/group-buttons-settings.component.d.ts +33 -33
  120. package/group-buttons-settings/group-buttons-settings.model.d.ts +1 -1
  121. package/group-buttons-settings/group-buttons-settings.module.d.ts +15 -15
  122. package/group-buttons-settings/index.d.ts +5 -5
  123. package/group-buttons-settings/public-api.d.ts +3 -3
  124. package/index.d.ts +5 -5
  125. package/ngx-composite-lib.module.d.ts +13 -13
  126. package/package.json +2 -2
  127. package/public-api.d.ts +2 -2
  128. package/shadow-settings/index.d.ts +5 -5
  129. package/shadow-settings/public-api.d.ts +3 -3
  130. package/shadow-settings/shadow-settings.component.d.ts +23 -23
  131. package/shadow-settings/shadow-settings.model.d.ts +8 -8
  132. package/shadow-settings/shadow-settings.module.d.ts +13 -13
  133. package/src/assets/i18n/en.ngx-composite-lib.json +8 -1
@@ -1,184 +1,190 @@
1
- import { Component, Input, Output, ViewChild, ViewContainerRef, EventEmitter, } from '@angular/core';
2
- import { PepFormComponent } from '@pepperi-addons/ngx-lib/form';
3
- import { UIControl, ObjectsDataRow, PepGuid } from '@pepperi-addons/ngx-lib';
4
- import { DataViewConverter } from '@pepperi-addons/data-views';
5
- import { PepGenericFormService } from './generic-form.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@pepperi-addons/ngx-lib";
8
- import * as i2 from "./generic-form.service";
9
- import * as i3 from "@angular/common";
10
- import * as i4 from "@pepperi-addons/ngx-lib/page-layout";
11
- import * as i5 from "@pepperi-addons/ngx-lib/top-bar";
12
- export class GenericFormComponent {
13
- constructor(_resolver, layoutService, _genericFormService) {
14
- this._resolver = _resolver;
15
- this.layoutService = layoutService;
16
- this._genericFormService = _genericFormService;
17
- this.isLocked = false;
18
- this.inline = false;
19
- this.showTopBar = false;
20
- this.addPadding = false;
21
- this.valueChange = new EventEmitter();
22
- this.fieldClick = new EventEmitter();
23
- this.formValidationChange = new EventEmitter();
24
- this.layoutService.onResize$.pipe().subscribe((size) => {
25
- //
26
- });
27
- this._formData = new ObjectsDataRow();
28
- this._uiControl = new UIControl();
29
- }
30
- set pepListContainer(val) {
31
- this._pepFormContainer = val;
32
- }
33
- set dataSource(val) {
34
- this._data = val;
35
- }
36
- set dataView(val) {
37
- this.initForm(val);
38
- }
39
- ngOnInit() {
40
- //
41
- }
42
- initForm(dataView) {
43
- setTimeout(() => {
44
- if (this._pepFormContainer) {
45
- if (this._pepFormContainer.length) {
46
- this._pepFormContainer.remove();
47
- this._formData = new ObjectsDataRow();
48
- this._uiControl = new UIControl();
49
- }
50
- const factory = this._resolver.resolveComponentFactory(PepFormComponent);
51
- const componentRef = this._pepFormContainer.createComponent(factory);
52
- this._pepForm = componentRef.instance;
53
- this._formData.IsEditable = !this.isLocked;
54
- this._formData.UID = dataView.UID || PepGuid.newGuid();
55
- const uiControlData = DataViewConverter.toUIControlData(dataView);
56
- if (uiControlData) {
57
- if (uiControlData?.ControlFields) {
58
- this._uiControl.ControlFields = uiControlData.ControlFields.map((field) => this._genericFormService.convertToUiControlField(field));
59
- }
60
- this._uiControl.Columns = uiControlData.Columns;
61
- if (this._uiControl.ControlFields?.length) {
62
- this._formData.Fields = [];
63
- this._uiControl.ControlFields.forEach((item) => {
64
- let value = '';
65
- if (this._genericFormService.hasProperty(this._data, item.ApiName)) {
66
- value = this._data[item.ApiName];
67
- }
68
- let dataViewField;
69
- if (dataView.Fields) {
70
- dataViewField = dataView.Fields.find(field => field.FieldID === item.ApiName);
71
- }
72
- const controlFieldData = {
73
- ...item,
74
- ...{
75
- controlFieldValue: value
76
- },
77
- ...{
78
- OptionalValues: dataViewField?.OptionalValues?.length ? dataViewField.OptionalValues : [],
79
- AdditionalProps: dataViewField?.AdditionalProps || null
80
- }
81
- };
82
- this._formData.Fields.push(this._genericFormService.createFormField(controlFieldData));
83
- });
84
- componentRef.instance.layoutType = 'form';
85
- componentRef.instance.layout = this._uiControl;
86
- componentRef.instance.data = this._formData;
87
- componentRef.instance.isInternal = false;
88
- componentRef.instance.lockFields = this.isLocked;
89
- componentRef.instance.valueChange.subscribe(($event) => {
90
- this.onValueChanged($event);
91
- });
92
- componentRef.instance.fieldClick.subscribe(($event) => {
93
- this.onfieldClicked($event);
94
- });
95
- componentRef.instance.formValidationChange.subscribe(($event) => {
96
- this.onFormValidationChanged($event);
97
- });
98
- }
99
- }
100
- }
101
- }, 0);
102
- }
103
- /**
104
- * updates form field's value
105
- * @param field object containing the data of the required update
106
- */
107
- updateFieldValue(fieldChanged) {
108
- this._data[fieldChanged.ApiName] = fieldChanged.Value;
109
- }
110
- getData() {
111
- return {
112
- UID: this._formData.UID,
113
- Values: this._data
114
- };
115
- }
116
- /**
117
- * updates form field(s) params
118
- * @param fields
119
- */
120
- updateFields(fields) {
121
- fields.forEach((field) => {
122
- const index = this._formData.Fields.findIndex((item) => item.ApiName === field.FieldId);
123
- if (index >= 0) {
124
- for (const [key, value] of Object.entries(field.Params)) {
125
- if (this._genericFormService.hasProperty(this._formData.Fields[index], key)) {
126
- const item = this._formData.Fields[index];
127
- item[key] = value;
128
- }
129
- }
130
- }
131
- });
132
- this._pepForm.ReloadForm();
133
- this._pepForm.data = this._formData;
134
- }
135
- onValueChanged(event) {
136
- const field = {
137
- UID: event.id,
138
- ApiName: event.key,
139
- Value: event.value
140
- };
141
- this.updateFieldValue(field);
142
- this.valueChange.emit(field);
143
- }
144
- onfieldClicked(event) {
145
- const field = {
146
- UID: event.id,
147
- ApiName: event.key,
148
- Value: event.value
149
- };
150
- this.updateFieldValue(field);
151
- this.fieldClick.emit(field);
152
- }
153
- onFormValidationChanged(event) {
154
- this.formValidationChange.emit(event);
155
- }
156
- }
157
- GenericFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFormComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.PepLayoutService }, { token: i2.PepGenericFormService }], target: i0.ɵɵFactoryTarget.Component });
158
- GenericFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericFormComponent, selector: "pep-generic-form", inputs: { dataSource: "dataSource", dataView: "dataView", isLocked: "isLocked", inline: "inline", showTopBar: "showTopBar", addPadding: "addPadding" }, outputs: { valueChange: "valueChange", fieldClick: "fieldClick", formValidationChange: "formValidationChange" }, providers: [PepGenericFormService], viewQueries: [{ propertyName: "pepListContainer", first: true, predicate: ["pepFormContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <div class=\"form-view\">\n <ng-container #pepFormContainer></ng-container>\n </div>\n</ng-template>\n", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i5.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }] });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFormComponent, decorators: [{
160
- type: Component,
161
- args: [{ selector: 'pep-generic-form', providers: [PepGenericFormService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <div class=\"form-view\">\n <ng-container #pepFormContainer></ng-container>\n </div>\n</ng-template>\n", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}\n"] }]
162
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.PepLayoutService }, { type: i2.PepGenericFormService }]; }, propDecorators: { pepListContainer: [{
163
- type: ViewChild,
164
- args: ['pepFormContainer', { read: ViewContainerRef }]
165
- }], dataSource: [{
166
- type: Input
167
- }], dataView: [{
168
- type: Input
169
- }], isLocked: [{
170
- type: Input
171
- }], inline: [{
172
- type: Input
173
- }], showTopBar: [{
174
- type: Input
175
- }], addPadding: [{
176
- type: Input
177
- }], valueChange: [{
178
- type: Output
179
- }], fieldClick: [{
180
- type: Output
181
- }], formValidationChange: [{
182
- type: Output
183
- }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixZQUFZLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPaEUsT0FBTyxFQUNILFNBQVMsRUFDVCxjQUFjLEVBRWQsT0FBTyxFQUVWLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFTL0QsTUFBTSxPQUFPLG9CQUFvQjtJQTJDN0IsWUFDWSxTQUFtQyxFQUNuQyxhQUErQixFQUNoQyxtQkFBMEM7UUFGekMsY0FBUyxHQUFULFNBQVMsQ0FBMEI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ2hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUF6QnJELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdmLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixnQkFBVyxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUd2RyxlQUFVLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBR3RHLHlC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LElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOztpSEF4TFEsb0JBQW9CO3FHQUFwQixvQkFBb0Isb1RBRmxCLENBQUMscUJBQXFCLENBQUMsMkhBSUssZ0JBQWdCLDZCQ3BDM0QsZzdDQXVDQTsyRkRMYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksa0JBQWtCLGFBR2pCLENBQUMscUJBQXFCLENBQUM7a0xBSzlCLGdCQUFnQjtzQkFEbkIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFPckQsVUFBVTtzQkFEYixLQUFLO2dCQVFGLFFBQVE7c0JBRFgsS0FBSztnQkFNTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGVwRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0Zvcm1EYXRhVmlldyxcbiAgICBJUGVwR2VuZXJpY0Zvcm1WYWx1ZUNoYW5nZSxcbiAgICBJUGVwR2VuZXJpY0Zvcm1GaWVsZFVwZGF0ZSxcbiAgICBJUGVwR2VuZXJpY0Zvcm1EYXRhXG59IGZyb20gJy4vZ2VuZXJpYy1mb3JtLm1vZGVsJztcbmltcG9ydCB7XG4gICAgVUlDb250cm9sLFxuICAgIE9iamVjdHNEYXRhUm93LFxuICAgIE9iamVjdHNEYXRhUm93Q2VsbCxcbiAgICBQZXBHdWlkLFxuICAgIFBlcExheW91dFNlcnZpY2Vcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgRGF0YVZpZXdDb252ZXJ0ZXIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvZGF0YS12aWV3cyc7XG5pbXBvcnQgeyBQZXBHZW5lcmljRm9ybVNlcnZpY2UgfSBmcm9tICcuL2dlbmVyaWMtZm9ybS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1nZW5lcmljLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1BlcEdlbmVyaWNGb3JtU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgX3BlcEZvcm1Db250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgncGVwRm9ybUNvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIHNldCBwZXBMaXN0Q29udGFpbmVyKHZhbDogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICB0aGlzLl9wZXBGb3JtQ29udGFpbmVyID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RhdGE6IGFueTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSB2YWw7XG4gICAgfVxuICAgICAgICBcbiAgICBwcml2YXRlIF9mb3JtRGF0YTogT2JqZWN0c0RhdGFSb3c7XG4gICAgcHJpdmF0ZSBfdWlDb250cm9sOiBVSUNvbnRyb2w7IFxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFWaWV3KHZhbDogSVBlcEdlbmVyaWNGb3JtRGF0YVZpZXcpIHtcbiAgICAgICAgdGhpcy5pbml0Rm9ybSh2YWwpO1xuICAgIH1cbiAgICBcbiAgICBASW5wdXQoKVxuICAgIGlzTG9ja2VkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93VG9wQmFyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFkZFBhZGRpbmcgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0Zvcm1WYWx1ZUNoYW5nZT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0Zvcm1WYWx1ZUNoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBHZW5lcmljRm9ybVZhbHVlQ2hhbmdlPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVZhbGlkYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX3BlcEZvcm06IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBfZ2VuZXJpY0Zvcm1TZXJ2aWNlOiBQZXBHZW5lcmljRm9ybVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5waXBlKCkuc3Vic2NyaWJlKChzaXplKSA9PiB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZm9ybURhdGEgPSBuZXcgT2JqZWN0c0RhdGFSb3coKTtcbiAgICAgICAgdGhpcy5fdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEZvcm0oZGF0YVZpZXc6IElQZXBHZW5lcmljRm9ybURhdGFWaWV3KSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BlcEZvcm1Db250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwRm9ybUNvbnRhaW5lci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVwRm9ybUNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEgPSBuZXcgT2JqZWN0c0RhdGFSb3coKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShQZXBGb3JtQ29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9wZXBGb3JtQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZXBGb3JtID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEuSXNFZGl0YWJsZSA9ICF0aGlzLmlzTG9ja2VkO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1EYXRhLlVJRCA9IGRhdGFWaWV3LlVJRCB8fCBQZXBHdWlkLm5ld0d1aWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2xEYXRhID0gRGF0YVZpZXdDb252ZXJ0ZXIudG9VSUNvbnRyb2xEYXRhKGRhdGFWaWV3KTtcbiAgICAgICAgICAgICAgICBpZiAodWlDb250cm9sRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodWlDb250cm9sRGF0YT8uQ29udHJvbEZpZWxkcykgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdWlDb250cm9sLkNvbnRyb2xGaWVsZHMgPSB1aUNvbnRyb2xEYXRhLkNvbnRyb2xGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiB0aGlzLl9nZW5lcmljRm9ybVNlcnZpY2UuY29udmVydFRvVWlDb250cm9sRmllbGQoZmllbGQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91aUNvbnRyb2wuQ29sdW1ucyA9IHVpQ29udHJvbERhdGEuQ29sdW1ucztcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdWlDb250cm9sLkNvbnRyb2xGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEuRmllbGRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91aUNvbnRyb2wuQ29udHJvbEZpZWxkcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyaWNGb3JtU2VydmljZS5oYXNQcm9wZXJ0eSh0aGlzLl9kYXRhLCBpdGVtLkFwaU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fZGF0YVtpdGVtLkFwaU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFWaWV3RmllbGQ6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVZpZXcuRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFWaWV3RmllbGQgPSBkYXRhVmlldy5GaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5GaWVsZElEID09PSBpdGVtLkFwaU5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xGaWVsZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xGaWVsZFZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbFZhbHVlczogZGF0YVZpZXdGaWVsZD8uT3B0aW9uYWxWYWx1ZXM/Lmxlbmd0aCA/IGRhdGFWaWV3RmllbGQuT3B0aW9uYWxWYWx1ZXMgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxQcm9wczogZGF0YVZpZXdGaWVsZD8uQWRkaXRpb25hbFByb3BzIHx8IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEuRmllbGRzLnB1c2godGhpcy5fZ2VuZXJpY0Zvcm1TZXJ2aWNlLmNyZWF0ZUZvcm1GaWVsZChjb250cm9sRmllbGREYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxheW91dFR5cGUgPSAnZm9ybSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGF5b3V0ID0gdGhpcy5fdWlDb250cm9sO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRhdGEgPSB0aGlzLl9mb3JtRGF0YTsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pc0ludGVybmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9ja0ZpZWxkcyA9IHRoaXMuaXNMb2NrZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWVsZENsaWNrLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpZWxkQ2xpY2tlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZm9ybVZhbGlkYXRpb25DaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9ybVZhbGlkYXRpb25DaGFuZ2VkKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZXMgZm9ybSBmaWVsZCdzIHZhbHVlXG4gICAgICogQHBhcmFtIGZpZWxkIG9iamVjdCBjb250YWluaW5nIHRoZSBkYXRhIG9mIHRoZSByZXF1aXJlZCB1cGRhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUZpZWxkVmFsdWUoZmllbGRDaGFuZ2VkOiBJUGVwR2VuZXJpY0Zvcm1WYWx1ZUNoYW5nZSkge1xuICAgICAgICB0aGlzLl9kYXRhW2ZpZWxkQ2hhbmdlZC5BcGlOYW1lXSA9IGZpZWxkQ2hhbmdlZC5WYWx1ZTtcbiAgICB9XG5cbiAgICBnZXREYXRhKCk6IElQZXBHZW5lcmljRm9ybURhdGEge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgVUlEOiB0aGlzLl9mb3JtRGF0YS5VSUQsXG4gICAgICAgICAgICBWYWx1ZXM6IHRoaXMuX2RhdGFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIHVwZGF0ZXMgZm9ybSBmaWVsZChzKSBwYXJhbXNcbiAgICAqIEBwYXJhbSBmaWVsZHNcbiAgICAqL1xuICAgIHVwZGF0ZUZpZWxkcyhmaWVsZHM6IElQZXBHZW5lcmljRm9ybUZpZWxkVXBkYXRlW10pIHtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2Zvcm1EYXRhLkZpZWxkcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uQXBpTmFtZSA9PT0gZmllbGQuRmllbGRJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkLlBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyaWNGb3JtU2VydmljZS5oYXNQcm9wZXJ0eSh0aGlzLl9mb3JtRGF0YS5GaWVsZHNbaW5kZXhdLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZm9ybURhdGEuRmllbGRzW2luZGV4XSBhcyB7IFtrOiBzdHJpbmddOiBhbnkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcGVwRm9ybS5SZWxvYWRGb3JtKClcbiAgICAgICAgdGhpcy5fcGVwRm9ybS5kYXRhID0gdGhpcy5fZm9ybURhdGE7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWVsZDogSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2UgPSB7XG4gICAgICAgICAgICBVSUQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgQXBpTmFtZTogZXZlbnQua2V5LFxuICAgICAgICAgICAgVmFsdWU6IGV2ZW50LnZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShmaWVsZCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChmaWVsZCk7XG4gICAgfVxuXG4gICAgb25maWVsZENsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWVsZDogSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2UgPSB7XG4gICAgICAgICAgICBVSUQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgQXBpTmFtZTogZXZlbnQua2V5LFxuICAgICAgICAgICAgVmFsdWU6IGV2ZW50LnZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShmaWVsZCk7XG4gICAgICAgIHRoaXMuZmllbGRDbGljay5lbWl0KGZpZWxkKTtcbiAgICB9XG5cbiAgICBvbkZvcm1WYWxpZGF0aW9uQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJpbmxpbmVcIiBjbGFzcz1cImlubGluZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdhZGQtcGFkZGluZyc6IGFkZFBhZGRpbmcgfVwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQmFyXCIgY2xhc3M9XCJpbmxpbmUtdG9wLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcEJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxwZXAtcGFnZS1sYXlvdXQgKm5nSWY9XCIhaW5saW5lXCIgW2FkZFBhZGRpbmddPVwiYWRkUGFkZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9wQmFyXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9wQmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IHBlcC1tYWluLWFyZWEgY2xhc3M9XCJtYWluLWFyZWEtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvcGVwLXBhZ2UtbGF5b3V0PlxuXG48bmctdGVtcGxhdGUgI3RvcEJhclRlbXBsYXRlPlxuICAgIDxwZXAtdG9wLWJhciBbaW5saW5lXT1cImlubGluZVwiPiBcbiAgICAgICAgPGRpdiBoZWFkZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gPGRpdiBmb290ZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltib3R0b20tbGVmdC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZm9vdGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JvdHRvbS1yaWdodC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvcGVwLXRvcC1iYXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Zvcm1UZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS12aWV3XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcEZvcm1Db250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
1
+ import { Component, Input, Output, ViewChild, ViewContainerRef, EventEmitter, } from '@angular/core';
2
+ import { UIControl, ObjectsDataRow, PepGuid } from '@pepperi-addons/ngx-lib';
3
+ import { DataViewConverter } from '@pepperi-addons/data-views';
4
+ import { PepGenericFormService } from './generic-form.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@pepperi-addons/ngx-lib";
7
+ import * as i2 from "./generic-form.service";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@pepperi-addons/ngx-lib/page-layout";
10
+ import * as i5 from "@pepperi-addons/ngx-lib/top-bar";
11
+ export class GenericFormComponent {
12
+ constructor(layoutService, _genericFormService) {
13
+ this.layoutService = layoutService;
14
+ this._genericFormService = _genericFormService;
15
+ this.isLocked = false;
16
+ this.inline = false;
17
+ this.showTopBar = false;
18
+ this.addPadding = false;
19
+ this.valueChange = new EventEmitter();
20
+ this.fieldClick = new EventEmitter();
21
+ this.formValidationChange = new EventEmitter();
22
+ this.layoutService.onResize$.pipe().subscribe((size) => {
23
+ //
24
+ });
25
+ this._formData = new ObjectsDataRow();
26
+ this._uiControl = new UIControl();
27
+ }
28
+ set pepListContainer(val) {
29
+ this._pepFormContainer = val;
30
+ }
31
+ set dataSource(val) {
32
+ this._data = val;
33
+ }
34
+ set dataView(val) {
35
+ this.initForm(val);
36
+ }
37
+ ngOnInit() {
38
+ //
39
+ }
40
+ initForm(dataView) {
41
+ setTimeout(async () => {
42
+ if (this._pepFormContainer) {
43
+ if (this._pepFormContainer.length) {
44
+ this._pepFormContainer.remove();
45
+ this._formData = new ObjectsDataRow();
46
+ this._uiControl = new UIControl();
47
+ }
48
+ const { PepFormComponent } = await import('@pepperi-addons/ngx-lib/form');
49
+ const componentRef = this._pepFormContainer.createComponent(PepFormComponent);
50
+ this._pepForm = componentRef.instance;
51
+ this._formData.IsEditable = !this.isLocked;
52
+ this._formData.UID = dataView.UID || PepGuid.newGuid();
53
+ const uiControlData = DataViewConverter.toUIControlData(dataView);
54
+ if (uiControlData) {
55
+ if (uiControlData?.ControlFields) {
56
+ this._uiControl.ControlFields = uiControlData.ControlFields.map((field) => this._genericFormService.convertToUiControlField(field));
57
+ }
58
+ this._uiControl.Columns = uiControlData.Columns;
59
+ if (this._uiControl.ControlFields?.length) {
60
+ this._formData.Fields = [];
61
+ this._uiControl.ControlFields.forEach((item) => {
62
+ let value = '';
63
+ if (this._genericFormService.hasProperty(this._data, item.ApiName)) {
64
+ value = this._data[item.ApiName];
65
+ }
66
+ let dataViewField;
67
+ if (dataView.Fields) {
68
+ dataViewField = dataView.Fields.find(field => field.FieldID === item.ApiName);
69
+ }
70
+ const controlFieldData = {
71
+ ...item,
72
+ ...{
73
+ controlFieldValue: value
74
+ },
75
+ ...{
76
+ OptionalValues: dataViewField?.OptionalValues?.length ? dataViewField.OptionalValues : [],
77
+ AdditionalProps: dataViewField?.AdditionalProps || null
78
+ }
79
+ };
80
+ this._formData.Fields.push(this._genericFormService.createFormField(controlFieldData));
81
+ });
82
+ componentRef.instance.layoutType = 'form';
83
+ componentRef.instance.layout = this._uiControl;
84
+ componentRef.instance.data = this._formData;
85
+ componentRef.instance.isInternal = false;
86
+ componentRef.instance.lockFields = this.isLocked;
87
+ componentRef.instance.valueChange.subscribe(($event) => {
88
+ this.onValueChanged($event);
89
+ });
90
+ componentRef.instance.fieldClick.subscribe(($event) => {
91
+ this.onfieldClicked($event);
92
+ });
93
+ componentRef.instance.formValidationChange.subscribe(($event) => {
94
+ this.onFormValidationChanged($event);
95
+ });
96
+ }
97
+ }
98
+ }
99
+ }, 0);
100
+ }
101
+ /**
102
+ * updates form field's value
103
+ * @param field object containing the data of the required update
104
+ */
105
+ updateFieldValue(fieldChanged) {
106
+ this._data[fieldChanged.ApiName] = fieldChanged.Value;
107
+ }
108
+ getData() {
109
+ return {
110
+ UID: this._formData.UID,
111
+ Values: this._data
112
+ };
113
+ }
114
+ /**
115
+ * updates form field(s) params
116
+ * @param fields
117
+ */
118
+ updateFields(fields) {
119
+ // update data view with current data
120
+ for (const [key, value] of Object.entries(this._data)) {
121
+ const index = this._formData.Fields.findIndex((item) => item.ApiName === key);
122
+ if (index >= 0) {
123
+ const item = this._formData.Fields[index];
124
+ item.Value = value;
125
+ }
126
+ }
127
+ fields.forEach((field) => {
128
+ const index = this._formData.Fields.findIndex((item) => item.ApiName === field.FieldId);
129
+ if (index >= 0) {
130
+ for (const [key, value] of Object.entries(field.Params)) {
131
+ if (this._genericFormService.hasProperty(this._formData.Fields[index], key)) {
132
+ const item = this._formData.Fields[index];
133
+ item[key] = value;
134
+ }
135
+ }
136
+ }
137
+ });
138
+ this._pepForm.ReloadForm();
139
+ this._pepForm.data = this._formData;
140
+ }
141
+ onValueChanged(event) {
142
+ const field = {
143
+ UID: event.id,
144
+ ApiName: event.key,
145
+ Value: event.value
146
+ };
147
+ this.updateFieldValue(field);
148
+ this.valueChange.emit(field);
149
+ }
150
+ onfieldClicked(event) {
151
+ const field = {
152
+ UID: event.id,
153
+ ApiName: event.key,
154
+ Value: event.value
155
+ };
156
+ this.updateFieldValue(field);
157
+ this.fieldClick.emit(field);
158
+ }
159
+ onFormValidationChanged(event) {
160
+ this.formValidationChange.emit(event);
161
+ }
162
+ }
163
+ GenericFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFormComponent, deps: [{ token: i1.PepLayoutService }, { token: i2.PepGenericFormService }], target: i0.ɵɵFactoryTarget.Component });
164
+ GenericFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericFormComponent, selector: "pep-generic-form", inputs: { dataSource: "dataSource", dataView: "dataView", isLocked: "isLocked", inline: "inline", showTopBar: "showTopBar", addPadding: "addPadding" }, outputs: { valueChange: "valueChange", fieldClick: "fieldClick", formValidationChange: "formValidationChange" }, providers: [PepGenericFormService], viewQueries: [{ propertyName: "pepListContainer", first: true, predicate: ["pepFormContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <div class=\"form-view\">\n <ng-container #pepFormContainer></ng-container>\n </div>\n</ng-template>\n", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i5.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }] });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFormComponent, decorators: [{
166
+ type: Component,
167
+ args: [{ selector: 'pep-generic-form', providers: [PepGenericFormService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <div class=\"form-view\">\n <ng-container #pepFormContainer></ng-container>\n </div>\n</ng-template>\n", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}\n"] }]
168
+ }], ctorParameters: function () { return [{ type: i1.PepLayoutService }, { type: i2.PepGenericFormService }]; }, propDecorators: { pepListContainer: [{
169
+ type: ViewChild,
170
+ args: ['pepFormContainer', { read: ViewContainerRef }]
171
+ }], dataSource: [{
172
+ type: Input
173
+ }], dataView: [{
174
+ type: Input
175
+ }], isLocked: [{
176
+ type: Input
177
+ }], inline: [{
178
+ type: Input
179
+ }], showTopBar: [{
180
+ type: Input
181
+ }], addPadding: [{
182
+ type: Input
183
+ }], valueChange: [{
184
+ type: Output
185
+ }], fieldClick: [{
186
+ type: Output
187
+ }], formValidationChange: [{
188
+ type: Output
189
+ }] } });
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixZQUFZLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUNILFNBQVMsRUFDVCxjQUFjLEVBRWQsT0FBTyxFQUVWLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFTL0QsTUFBTSxPQUFPLG9CQUFvQjtJQTJDN0IsWUFDWSxhQUErQixFQUNoQyxtQkFBMEM7UUFEekMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ2hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUF4QnJELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdmLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixnQkFBVyxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUd2RyxlQUFVLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBR3RHLHlCQUFvQixHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBUXRFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25ELGNBQWM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFsREQsSUFDSSxnQkFBZ0IsQ0FBQyxHQUFxQjtRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFHRCxJQUNJLFVBQVUsQ0FBQyxHQUFRO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFJRCxJQUNJLFFBQVEsQ0FBQyxHQUE0QjtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFvQ0QsUUFBUTtRQUNKLFVBQVU7SUFDZCxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWlDO1FBQzlDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDeEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFO29CQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2lCQUNyQztnQkFDRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2dCQUMxRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRTlFLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFFdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLGFBQWEsRUFBRTtvQkFDZixJQUFJLGFBQWEsRUFBRSxhQUFhLEVBQUU7d0JBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztxQkFDNUk7b0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztvQkFFaEQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQzNDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQzs0QkFDZixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0NBQ2hFLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs2QkFDcEM7NEJBQ0QsSUFBSSxhQUFrQixDQUFDOzRCQUN2QixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0NBQ2pCLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUNqRjs0QkFDRCxNQUFNLGdCQUFnQixHQUFHO2dDQUNyQixHQUFHLElBQUk7Z0NBQ1AsR0FBRztvQ0FDQyxpQkFBaUIsRUFBRSxLQUFLO2lDQUMzQjtnQ0FDRCxHQUFHO29DQUNDLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQ0FDekYsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLElBQUksSUFBSTtpQ0FDMUQ7NkJBQ0osQ0FBQTs0QkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7d0JBQzNGLENBQUMsQ0FBQyxDQUFDO3dCQUVILFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQzt3QkFDMUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzt3QkFDL0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO3dCQUN6QyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUNqRCxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDaEMsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2hDLENBQUMsQ0FBQyxDQUFDO3dCQUNILFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLENBQUM7cUJBQ047aUJBQ0o7YUFFSjtRQUVMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxZQUF3QztRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTztZQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3JCLENBQUM7SUFDTixDQUFDO0lBRUQ7OztNQUdFO0lBQ0YsWUFBWSxDQUFDLE1BQW9DO1FBQzdDLHFDQUFxQztRQUNyQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQzlFLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtnQkFDWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQXlCLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1NBQ0o7UUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ1osS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNyRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7d0JBQ3pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBeUIsQ0FBQzt3QkFDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDckI7aUJBQ0o7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUNyQixNQUFNLEtBQUssR0FBK0I7WUFDdEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztTQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUNyQixNQUFNLEtBQUssR0FBK0I7WUFDdEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztTQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUFVO1FBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7aUhBaE1RLG9CQUFvQjtxR0FBcEIsb0JBQW9CLG9UQUZsQixDQUFDLHFCQUFxQixDQUFDLDJIQUlLLGdCQUFnQiw2QkNwQzNELGc3Q0F1Q0E7MkZETGEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLGtCQUFrQixhQUdqQixDQUFDLHFCQUFxQixDQUFDOzJJQUs5QixnQkFBZ0I7c0JBRG5CLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3JELFVBQVU7c0JBRGIsS0FBSztnQkFRRixRQUFRO3NCQURYLEtBQUs7Z0JBTU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsb0JBQW9CO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBFdmVudEVtaXR0ZXIsICAgXG4gICAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vL2ltcG9ydCB7IFBlcEZvcm1Db21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9mb3JtJztcbmltcG9ydCB7XG4gICAgSVBlcEdlbmVyaWNGb3JtRGF0YVZpZXcsXG4gICAgSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2UsXG4gICAgSVBlcEdlbmVyaWNGb3JtRmllbGRVcGRhdGUsXG4gICAgSVBlcEdlbmVyaWNGb3JtRGF0YVxufSBmcm9tICcuL2dlbmVyaWMtZm9ybS5tb2RlbCc7XG5pbXBvcnQge1xuICAgIFVJQ29udHJvbCxcbiAgICBPYmplY3RzRGF0YVJvdyxcbiAgICBPYmplY3RzRGF0YVJvd0NlbGwsXG4gICAgUGVwR3VpZCxcbiAgICBQZXBMYXlvdXRTZXJ2aWNlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IERhdGFWaWV3Q29udmVydGVyIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL2RhdGEtdmlld3MnO1xuaW1wb3J0IHsgUGVwR2VuZXJpY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi9nZW5lcmljLWZvcm0uc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZ2VuZXJpYy1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtQZXBHZW5lcmljRm9ybVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIF9wZXBGb3JtQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3BlcEZvcm1Db250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBzZXQgcGVwTGlzdENvbnRhaW5lcih2YWw6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fcGVwRm9ybUNvbnRhaW5lciA9IHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRhOiBhbnk7XG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLl9kYXRhID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Zvcm1EYXRhOiBPYmplY3RzRGF0YVJvdztcbiAgICBwcml2YXRlIF91aUNvbnRyb2w6IFVJQ29udHJvbDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhVmlldyh2YWw6IElQZXBHZW5lcmljRm9ybURhdGFWaWV3KSB7XG4gICAgICAgIHRoaXMuaW5pdEZvcm0odmFsKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGlzTG9ja2VkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93VG9wQmFyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFkZFBhZGRpbmcgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0Zvcm1WYWx1ZUNoYW5nZT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0Zvcm1WYWx1ZUNoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBHZW5lcmljRm9ybVZhbHVlQ2hhbmdlPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVZhbGlkYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX3BlcEZvcm06IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCAgICAgICAgXG4gICAgICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICAgICAgcHVibGljIF9nZW5lcmljRm9ybVNlcnZpY2U6IFBlcEdlbmVyaWNGb3JtU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2Uub25SZXNpemUkLnBpcGUoKS5zdWJzY3JpYmUoKHNpemUpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9mb3JtRGF0YSA9IG5ldyBPYmplY3RzRGF0YVJvdygpO1xuICAgICAgICB0aGlzLl91aUNvbnRyb2wgPSBuZXcgVUlDb250cm9sKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vICAgICAgICBcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRGb3JtKGRhdGFWaWV3OiBJUGVwR2VuZXJpY0Zvcm1EYXRhVmlldykge1xuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9wZXBGb3JtQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlcEZvcm1Db250YWluZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlcEZvcm1Db250YWluZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IE9iamVjdHNEYXRhUm93KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VpQ29udHJvbCA9IG5ldyBVSUNvbnRyb2woKTtcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29uc3QgeyBQZXBGb3JtQ29tcG9uZW50IH0gPSBhd2FpdCBpbXBvcnQoJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2Zvcm0nKTsgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9wZXBGb3JtQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChQZXBGb3JtQ29tcG9uZW50KTsgICAgXG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wZXBGb3JtID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEuSXNFZGl0YWJsZSA9ICF0aGlzLmlzTG9ja2VkO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1EYXRhLlVJRCA9IGRhdGFWaWV3LlVJRCB8fCBQZXBHdWlkLm5ld0d1aWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2xEYXRhID0gRGF0YVZpZXdDb252ZXJ0ZXIudG9VSUNvbnRyb2xEYXRhKGRhdGFWaWV3KTtcbiAgICAgICAgICAgICAgICBpZiAodWlDb250cm9sRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodWlDb250cm9sRGF0YT8uQ29udHJvbEZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdWlDb250cm9sLkNvbnRyb2xGaWVsZHMgPSB1aUNvbnRyb2xEYXRhLkNvbnRyb2xGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiB0aGlzLl9nZW5lcmljRm9ybVNlcnZpY2UuY29udmVydFRvVWlDb250cm9sRmllbGQoZmllbGQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91aUNvbnRyb2wuQ29sdW1ucyA9IHVpQ29udHJvbERhdGEuQ29sdW1ucztcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdWlDb250cm9sLkNvbnRyb2xGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEuRmllbGRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91aUNvbnRyb2wuQ29udHJvbEZpZWxkcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyaWNGb3JtU2VydmljZS5oYXNQcm9wZXJ0eSh0aGlzLl9kYXRhLCBpdGVtLkFwaU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fZGF0YVtpdGVtLkFwaU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YVZpZXdGaWVsZDogYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhVmlldy5GaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVZpZXdGaWVsZCA9IGRhdGFWaWV3LkZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLkZpZWxkSUQgPT09IGl0ZW0uQXBpTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xGaWVsZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xGaWVsZFZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbFZhbHVlczogZGF0YVZpZXdGaWVsZD8uT3B0aW9uYWxWYWx1ZXM/Lmxlbmd0aCA/IGRhdGFWaWV3RmllbGQuT3B0aW9uYWxWYWx1ZXMgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxQcm9wczogZGF0YVZpZXdGaWVsZD8uQWRkaXRpb25hbFByb3BzIHx8IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtRGF0YS5GaWVsZHMucHVzaCh0aGlzLl9nZW5lcmljRm9ybVNlcnZpY2UuY3JlYXRlRm9ybUZpZWxkKGNvbnRyb2xGaWVsZERhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGF5b3V0VHlwZSA9ICdmb3JtJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sYXlvdXQgPSB0aGlzLl91aUNvbnRyb2w7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YSA9IHRoaXMuX2Zvcm1EYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmlzSW50ZXJuYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2NrRmllbGRzID0gdGhpcy5pc0xvY2tlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkQ2xpY2suc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmllbGRDbGlja2VkKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb3JtVmFsaWRhdGlvbkNoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Gb3JtVmFsaWRhdGlvbkNoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdXBkYXRlcyBmb3JtIGZpZWxkJ3MgdmFsdWVcbiAgICAgKiBAcGFyYW0gZmllbGQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRhdGEgb2YgdGhlIHJlcXVpcmVkIHVwZGF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlRmllbGRWYWx1ZShmaWVsZENoYW5nZWQ6IElQZXBHZW5lcmljRm9ybVZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuX2RhdGFbZmllbGRDaGFuZ2VkLkFwaU5hbWVdID0gZmllbGRDaGFuZ2VkLlZhbHVlO1xuICAgIH1cblxuICAgIGdldERhdGEoKTogSVBlcEdlbmVyaWNGb3JtRGF0YSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBVSUQ6IHRoaXMuX2Zvcm1EYXRhLlVJRCxcbiAgICAgICAgICAgIFZhbHVlczogdGhpcy5fZGF0YVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICogdXBkYXRlcyBmb3JtIGZpZWxkKHMpIHBhcmFtc1xuICAgICogQHBhcmFtIGZpZWxkc1xuICAgICovXG4gICAgdXBkYXRlRmllbGRzKGZpZWxkczogSVBlcEdlbmVyaWNGb3JtRmllbGRVcGRhdGVbXSkge1xuICAgICAgICAvLyB1cGRhdGUgZGF0YSB2aWV3IHdpdGggY3VycmVudCBkYXRhXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2Zvcm1EYXRhLkZpZWxkcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uQXBpTmFtZSA9PT0ga2V5KTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2Zvcm1EYXRhLkZpZWxkc1tpbmRleF0gYXMgeyBbazogc3RyaW5nXTogYW55IH07XG4gICAgICAgICAgICAgICAgaXRlbS5WYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2Zvcm1EYXRhLkZpZWxkcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uQXBpTmFtZSA9PT0gZmllbGQuRmllbGRJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkLlBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyaWNGb3JtU2VydmljZS5oYXNQcm9wZXJ0eSh0aGlzLl9mb3JtRGF0YS5GaWVsZHNbaW5kZXhdLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZm9ybURhdGEuRmllbGRzW2luZGV4XSBhcyB7IFtrOiBzdHJpbmddOiBhbnkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcGVwRm9ybS5SZWxvYWRGb3JtKClcbiAgICAgICAgdGhpcy5fcGVwRm9ybS5kYXRhID0gdGhpcy5fZm9ybURhdGE7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWVsZDogSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2UgPSB7XG4gICAgICAgICAgICBVSUQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgQXBpTmFtZTogZXZlbnQua2V5LFxuICAgICAgICAgICAgVmFsdWU6IGV2ZW50LnZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShmaWVsZCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChmaWVsZCk7XG4gICAgfVxuXG4gICAgb25maWVsZENsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWVsZDogSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2UgPSB7XG4gICAgICAgICAgICBVSUQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgQXBpTmFtZTogZXZlbnQua2V5LFxuICAgICAgICAgICAgVmFsdWU6IGV2ZW50LnZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShmaWVsZCk7XG4gICAgICAgIHRoaXMuZmllbGRDbGljay5lbWl0KGZpZWxkKTtcbiAgICB9XG5cbiAgICBvbkZvcm1WYWxpZGF0aW9uQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJpbmxpbmVcIiBjbGFzcz1cImlubGluZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdhZGQtcGFkZGluZyc6IGFkZFBhZGRpbmcgfVwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQmFyXCIgY2xhc3M9XCJpbmxpbmUtdG9wLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcEJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxwZXAtcGFnZS1sYXlvdXQgKm5nSWY9XCIhaW5saW5lXCIgW2FkZFBhZGRpbmddPVwiYWRkUGFkZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9wQmFyXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9wQmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IHBlcC1tYWluLWFyZWEgY2xhc3M9XCJtYWluLWFyZWEtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvcGVwLXBhZ2UtbGF5b3V0PlxuXG48bmctdGVtcGxhdGUgI3RvcEJhclRlbXBsYXRlPlxuICAgIDxwZXAtdG9wLWJhciBbaW5saW5lXT1cImlubGluZVwiPiBcbiAgICAgICAgPGRpdiBoZWFkZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gPGRpdiBmb290ZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltib3R0b20tbGVmdC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZm9vdGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JvdHRvbS1yaWdodC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvcGVwLXRvcC1iYXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Zvcm1UZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS12aWV3XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcEZvcm1Db250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybURhdGFWaWV3IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL3BhcGktc2RrL2Rpc3QvZW50aXRpZXMvZGF0YS12aWV3JztcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW5kaW5nIHRoZSBmb3JtIGRhdGEgdmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRm9ybURhdGFWaWV3IGV4dGVuZHMgRm9ybURhdGFWaWV3IHtcbiAgICBVSUQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBmb3JtIGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGVwR2VuZXJpY0Zvcm1EYXRhIHtcbiAgICBVSUQ6IHN0cmluZztcbiAgICBWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2Uge1xuICAgIFVJRDogc3RyaW5nO1xuICAgIEFwaU5hbWU6IHN0cmluZztcbiAgICBWYWx1ZTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRm9ybUZpZWxkVXBkYXRlIHtcbiAgICBGaWVsZElkOiBzdHJpbmc7XG4gICAgUGFyYW1zOiBJUGVwR2VuZXJpY0Zvcm1EYXRhUGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRm9ybURhdGFQYXJhbXMgeyAgIFxuICAgIFZhbHVlPzogYW55OyAgIFxuICAgIFZpc2libGU/OiBib29sZWFuOyAgICAgXG4gICAgRW5hYmxlZD86IGJvb2xlYW47ICAgICAgXG4gICAgQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIFRleHRDb2xvcj86IHN0cmluZztcbiAgICBIaWdobGlnaHRlZD86IGJvb2xlYW47ICAgXG4gICAgT3B0aW9uYWxWYWx1ZXM/OiBbXTsgICBcbn1cblxuIl19
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybURhdGFWaWV3LCBCYXNlRm9ybURhdGFWaWV3RmllbGQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuaW1wb3J0IHsgS2V5VmFsdWVQYWlyIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInOyBcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW5kaW5nIHRoZSBmb3JtIGRhdGEgdmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRm9ybURhdGFWaWV3IGV4dGVuZHMgRm9ybURhdGFWaWV3IHtcbiAgICBVSUQ/OiBzdHJpbmc7XG4gICAgRmllbGRzOiBJUGVwR2VuZXJpY0Zvcm1EYXRhVmlld0ZpZWxkW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGb3JtRGF0YVZpZXdGaWVsZCBleHRlbmRzIEJhc2VGb3JtRGF0YVZpZXdGaWVsZCB7XG4gICAgT3B0aW9uYWxWYWx1ZXM6IEFycmF5PEtleVZhbHVlUGFpcjxzdHJpbmc+PjtcbiAgICBBZGRpdGlvbmFsUHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBmb3JtIGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGVwR2VuZXJpY0Zvcm1EYXRhIHtcbiAgICBVSUQ6IHN0cmluZztcbiAgICBWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGb3JtVmFsdWVDaGFuZ2Uge1xuICAgIFVJRDogc3RyaW5nO1xuICAgIEFwaU5hbWU6IHN0cmluZztcbiAgICBWYWx1ZTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRm9ybUZpZWxkVXBkYXRlIHtcbiAgICBGaWVsZElkOiBzdHJpbmc7XG4gICAgUGFyYW1zOiBJUGVwR2VuZXJpY0Zvcm1EYXRhUGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRm9ybURhdGFQYXJhbXMgeyAgIFxuICAgIFZhbHVlPzogYW55OyAgIFxuICAgIFZpc2libGU/OiBib29sZWFuOyAgICAgXG4gICAgRW5hYmxlZD86IGJvb2xlYW47ICAgICAgXG4gICAgQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIFRleHRDb2xvcj86IHN0cmluZztcbiAgICBIaWdobGlnaHRlZD86IGJvb2xlYW47ICAgXG4gICAgT3B0aW9uYWxWYWx1ZXM/OiBBcnJheTxLZXlWYWx1ZVBhaXI8c3RyaW5nPj47ICAgXG59XG5cbiJdfQ==