tnx-shared 5.1.334 → 5.1.337
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.
- package/bundles/tnx-shared.umd.js +89 -18
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/list-base.d.ts +3 -1
- package/classes/base/list-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/components/crud/crud-list/crud-list.component.d.ts +5 -0
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/settings/settings.component.d.ts +2 -0
- package/components/settings/settings.component.d.ts.map +1 -1
- package/esm2015/classes/base/list-base.js +31 -1
- package/esm2015/classes/form-schema.js +2 -1
- package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
- package/esm2015/components/crud/crud-list/crud-list.component.js +43 -14
- package/esm2015/components/settings/settings.component.js +17 -5
- package/fesm2015/tnx-shared.js +89 -17
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -4,7 +4,7 @@ import { Dialog } from 'tn-custom-primeng/dialog';
|
|
|
4
4
|
import { ComponentContextService } from '../../app-context/component-context.service';
|
|
5
5
|
import { ComponentBase } from '../../classes/base/component-base';
|
|
6
6
|
import { SortDirs } from '../../classes/constants';
|
|
7
|
-
import { CrudFormData, CrudFormSetting, CrudListData, CrudListSetting, DropdownControlSchema, RadioButtonListControlSchema, TextAlign } from '../../classes/form-schema';
|
|
7
|
+
import { CheckboxControlSchema, CrudFormData, CrudFormSetting, CrudListData, CrudListSetting, DropdownControlSchema, RadioButtonListControlSchema, TextAlign } from '../../classes/form-schema';
|
|
8
8
|
import { DomService } from '../../services/dom.service';
|
|
9
9
|
import { EntityMetadataService } from '../../services/entity-metadata.service';
|
|
10
10
|
import { UserService } from '../../services/user.service';
|
|
@@ -16,6 +16,7 @@ export class SettingsComponent extends ComponentBase {
|
|
|
16
16
|
this._userService = _userService;
|
|
17
17
|
this.onCancel = new EventEmitter();
|
|
18
18
|
this.onSave = new EventEmitter();
|
|
19
|
+
this.onDelete = new EventEmitter();
|
|
19
20
|
this.model = new CrudFormData();
|
|
20
21
|
this.setting = new CrudFormSetting();
|
|
21
22
|
this.popupSize = { width: 1024, height: 550 };
|
|
@@ -29,6 +30,7 @@ export class SettingsComponent extends ComponentBase {
|
|
|
29
30
|
sortField: this.parentSetting.columnSetting.sortField,
|
|
30
31
|
sortDir: this.parentSetting.columnSetting.sortDir,
|
|
31
32
|
groupField: this.parentSetting.columnSetting.groupField,
|
|
33
|
+
groupInClient: this.parentSetting.columnSetting.groupInClient,
|
|
32
34
|
details: this.parentSetting.columnSetting.details
|
|
33
35
|
};
|
|
34
36
|
// this.model.activeEntityMetadata = false;
|
|
@@ -104,12 +106,18 @@ export class SettingsComponent extends ComponentBase {
|
|
|
104
106
|
new DropdownControlSchema({
|
|
105
107
|
field: 'groupField',
|
|
106
108
|
label: this._translateService.instant('Nhóm theo'),
|
|
107
|
-
mdWidth:
|
|
109
|
+
mdWidth: 6,
|
|
108
110
|
placeholder: 'Chọn cột',
|
|
109
111
|
showClear: true,
|
|
110
112
|
dataSource: groupDataSource,
|
|
111
113
|
valueField: 'value',
|
|
112
114
|
displayField: 'label',
|
|
115
|
+
}),
|
|
116
|
+
new CheckboxControlSchema({
|
|
117
|
+
field: 'groupInClient',
|
|
118
|
+
label: this._translateService.instant('Nhóm trên client'),
|
|
119
|
+
mdWidth: 6,
|
|
120
|
+
defaultValue: false
|
|
113
121
|
})
|
|
114
122
|
];
|
|
115
123
|
this.setting.schema.forEach(schema => {
|
|
@@ -134,6 +142,9 @@ export class SettingsComponent extends ComponentBase {
|
|
|
134
142
|
saveSetting() {
|
|
135
143
|
this.onSave.next(this.model.data);
|
|
136
144
|
}
|
|
145
|
+
deleteSetting() {
|
|
146
|
+
this.onDelete.next();
|
|
147
|
+
}
|
|
137
148
|
cancel() {
|
|
138
149
|
this.onCancel.next(null);
|
|
139
150
|
}
|
|
@@ -149,7 +160,7 @@ export class SettingsComponent extends ComponentBase {
|
|
|
149
160
|
SettingsComponent.decorators = [
|
|
150
161
|
{ type: Component, args: [{
|
|
151
162
|
selector: 'settings',
|
|
152
|
-
template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" binary=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <
|
|
163
|
+
template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" binary=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <ng-container *ngIf=\"!parentSetting.hiddenSaveSetting\">\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\" [label]=\"'L\u01B0u' | translate\"\r\n (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-danger\" icon=\"pi pi-trash\"\r\n [label]=\"'B\u1ECF c\u1EA5u h\u00ECnh' | translate\" (click)=\"deleteSetting()\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
153
164
|
providers: [ComponentContextService],
|
|
154
165
|
changeDetection: ChangeDetectionStrategy.Default,
|
|
155
166
|
styles: [""]
|
|
@@ -167,6 +178,7 @@ SettingsComponent.propDecorators = {
|
|
|
167
178
|
parentSetting: [{ type: Input }],
|
|
168
179
|
entityMetadataService: [{ type: Input }],
|
|
169
180
|
onCancel: [{ type: Output }],
|
|
170
|
-
onSave: [{ type: Output }]
|
|
181
|
+
onSave: [{ type: Output }],
|
|
182
|
+
onDelete: [{ type: Output }]
|
|
171
183
|
};
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQXVCLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBa0IsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOU0sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVMxRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQXFCaEQsWUFDSSxTQUFtQixFQUNULGlCQUFtQyxFQUNuQyxXQUF1QixFQUN2QixZQUF5QjtRQUVuQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGdCQUFX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OztZQWpCMEQsUUFBUTtZQUMxRCxnQkFBZ0I7WUFNaEIsVUFBVTtZQUVWLFdBQVc7OztxQkFVZixTQUFTLFNBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTswQkFFcEMsS0FBSzs0QkFDTCxLQUFLO29DQUVMLEtBQUs7dUJBRUwsTUFBTTtxQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgU29ydERpcnMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbHVtblNldHRpbmdEZXRhaWwsIENydWRGb3JtRGF0YSwgQ3J1ZEZvcm1TZXR0aW5nLCBDcnVkTGlzdERhdGEsIENydWRMaXN0U2V0dGluZywgRHJvcGRvd25Db250cm9sU2NoZW1hLCBGb3JtU2NoZW1hQmFzZSwgUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYSwgVGV4dEFsaWduIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb20uc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS1tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NldHRpbmdzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nOiBEaWFsb2c7XHJcblxyXG4gICAgQElucHV0KCkgcGFyZW50TW9kZWw6IENydWRMaXN0RGF0YTtcclxuICAgIEBJbnB1dCgpIHBhcmVudFNldHRpbmc6IENydWRMaXN0U2V0dGluZztcclxuXHJcbiAgICBASW5wdXQoKSBlbnRpdHlNZXRhZGF0YVNlcnZpY2U6IEVudGl0eU1ldGFkYXRhU2VydmljZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBtb2RlbDogQ3J1ZEZvcm1EYXRhID0gbmV3IENydWRGb3JtRGF0YSgpO1xyXG4gICAgc2V0dGluZzogQ3J1ZEZvcm1TZXR0aW5nID0gbmV3IENydWRGb3JtU2V0dGluZygpO1xyXG4gICAgY29udGV4dDogQ29tcG9uZW50Q29udGV4dFNlcnZpY2U7XHJcblxyXG4gICAgZm9ybVNjaGVtYTogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIHBvcHVwU2l6ZSA9IHsgd2lkdGg6IDEwMjQsIGhlaWdodDogNTUwIH07XHJcbiAgICBwb3B1cEhlYWRlciA9ICdD4bqldSBow6xuaCc7XHJcbiAgICBjb2x1bW5TY2hlbWFzOiBhbnkgPSBbXTtcclxuICAgIHRleHRBbGlnbk9wdGlvbnM6IGFueSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG9tU2VydmljZTogRG9tU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNvbnN0IHNvcnREYXRhU291cmNlID0gW10sIGdyb3VwRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YSA9IHtcclxuICAgICAgICAgICAgc29ydEZpZWxkOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5zb3J0RmllbGQsXHJcbiAgICAgICAgICAgIHNvcnREaXI6IHRoaXMucGFyZW50U2V0dGluZy5jb2x1bW5TZXR0aW5nLnNvcnREaXIsXHJcbiAgICAgICAgICAgIGdyb3VwRmllbGQ6IHRoaXMucGFyZW50U2V0dGluZy5jb2x1bW5TZXR0aW5nLmdyb3VwRmllbGQsXHJcbiAgICAgICAgICAgIGRldGFpbHM6IHRoaXMucGFyZW50U2V0dGluZy5jb2x1bW5TZXR0aW5nLmRldGFpbHNcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIHRoaXMubW9kZWwuYWN0aXZlRW50aXR5TWV0YWRhdGEgPSBmYWxzZTtcclxuICAgICAgICAvLyB0aGlzLm1vZGVsLmFjdGl2ZUVudGl0eVBlcm1pc3Npb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgdGVtcCA9IFtdO1xyXG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29scy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICBncm91cERhdGFTb3VyY2UucHVzaCh7IHZhbHVlOiBlbGVtZW50LmZpZWxkLCBsYWJlbDogZWxlbWVudC5sYWJlbCB9KTtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnNvcnQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzb3J0RGF0YVNvdXJjZS5wdXNoKHsgdmFsdWU6IGVsZW1lbnQuZmllbGQsIGxhYmVsOiBlbGVtZW50LmxhYmVsIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQucmF3Q29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICBncm91cERhdGFTb3VyY2UucHVzaCh7IHZhbHVlOiBlbGVtZW50LmZpZWxkLCBsYWJlbDogZWxlbWVudC5sYWJlbCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQucmF3Q29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwuZGF0YS5kZXRhaWxzLnNvbWUocSA9PiBxLmNvbHVtbkNvZGUgPT0gZWxlbWVudC5maWVsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmJhc2VTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZkZpZWxkID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmluZChmID0+IGYuZmllbGQgPT0gJ3N0cicgKyBlbGVtZW50LmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZkZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gcmVmRmllbGQudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBlbGVtZW50LnZpc2libGUgPT09IHVuZGVmaW5lZCB8fCBlbGVtZW50LnZpc2libGUgPT09IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBlbGVtZW50LnZpc2libGUgPT09IHVuZGVmaW5lZCB8fCBlbGVtZW50LnZpc2libGUgPT09IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSA8Q29sdW1uU2V0dGluZ0RldGFpbD57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvZGU6IGVsZW1lbnQuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6IGVsZW1lbnQubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogZWxlbWVudC50ZXh0QWxpZ24gPT09IHVuZGVmaW5lZCA/IFRleHRBbGlnbi5MZWZ0IDogZWxlbWVudC50ZXh0QWxpZ24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50LndpZHRoXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0ZW1wLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS5kZXRhaWxzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT5bXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdzb3J0RmllbGQnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU+G6r3AgeOG6v3AgdGhlbycpLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY+G7mXQnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogc29ydERhdGFTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29ydERpcicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0NoaeG7gXUgc+G6r3AgeOG6v3AnLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IFt7IHZhbHVlOiBTb3J0RGlycy5Bc2MsIGxhYmVsOiAnVMSDbmcgZOG6p24nIH0sIHsgdmFsdWU6IFNvcnREaXJzLkRlc2MsIGxhYmVsOiAnR2nhuqNtIGThuqduJyB9XSxcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogU29ydERpcnMuQXNjLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cEZpZWxkJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ05ow7NtIHRoZW8nKSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY+G7mXQnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZ3JvdXBEYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEuZm9yRWFjaChzY2hlbWEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5mdWxsTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHNjaGVtYS5mdWxsTGFiZWwgPSBzY2hlbWEubGFiZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbHVtblNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnU1RUJywgd2lkdGg6ICc3MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1TDqm4gY+G7mXQnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnSGnhu4NuIHRo4buLJywgd2lkdGg6ICc4MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ0PEg24gbOG7gScsIHdpZHRoOiAnMTMwcHgnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnQ2hp4buBdSBy4buZbmcnLCB3aWR0aDogJzEwMHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1Ro4bupIHThu7EnLCB3aWR0aDogJzgwcHgnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnRleHRBbGlnbk9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5MZWZ0LCBsYWJlbDogJ0PEg24gdHLDoWknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5DZW50ZXIsIGxhYmVsOiAnQ8SDbiBnaeG7r2EnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5SaWdodCwgbGFiZWw6ICdDxINuIHBo4bqjaScgfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vblNhdmUubmV4dCh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLm9uQ2FuY2VsLm5leHQobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaWJsZUNoYW5nZWREaWFsb2coZXZlbnQpIHtcclxuICAgICAgICBpZiAoIWV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEpzb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubW9kZWwpLmpvaW4oJywnKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBa0IsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDck8sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVMxRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQXNCaEQsWUFDSSxTQUFtQixFQUNULGlCQUFtQyxFQUNuQyxXQUF1QixFQUN2QixZQUF5QjtRQUVuQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtC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b0JBQW9CLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs7WUFqTEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxVQUFVO2dCQUNwQix5akpBQXdDO2dCQUV4QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDcEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87O2FBQ25EOzs7WUFqQjBELFFBQVE7WUFDMUQsZ0JBQWdCO1lBTWhCLFVBQVU7WUFFVixXQUFXOzs7cUJBVWYsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MEJBRXBDLEtBQUs7NEJBQ0wsS0FBSztvQ0FFTCxLQUFLO3VCQUVMLE1BQU07cUJBQ04sTUFBTTt1QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgU29ydERpcnMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENoZWNrYm94Q29udHJvbFNjaGVtYSwgQ29sdW1uU2V0dGluZ0RldGFpbCwgQ3J1ZEZvcm1EYXRhLCBDcnVkRm9ybVNldHRpbmcsIENydWRMaXN0RGF0YSwgQ3J1ZExpc3RTZXR0aW5nLCBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIEZvcm1TY2hlbWFCYXNlLCBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hLCBUZXh0QWxpZ24gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LW1ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2V0dGluZ3MnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2c6IERpYWxvZztcclxuXHJcbiAgICBASW5wdXQoKSBwYXJlbnRNb2RlbDogQ3J1ZExpc3REYXRhO1xyXG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIGVudGl0eU1ldGFkYXRhU2VydmljZTogRW50aXR5TWV0YWRhdGFTZXJ2aWNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgbW9kZWw6IENydWRGb3JtRGF0YSA9IG5ldyBDcnVkRm9ybURhdGEoKTtcclxuICAgIHNldHRpbmc6IENydWRGb3JtU2V0dGluZyA9IG5ldyBDcnVkRm9ybVNldHRpbmcoKTtcclxuICAgIGNvbnRleHQ6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlO1xyXG5cclxuICAgIGZvcm1TY2hlbWE6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBwb3B1cFNpemUgPSB7IHdpZHRoOiAxMDI0LCBoZWlnaHQ6IDU1MCB9O1xyXG4gICAgcG9wdXBIZWFkZXIgPSAnQ+G6pXUgaMOsbmgnO1xyXG4gICAgY29sdW1uU2NoZW1hczogYW55ID0gW107XHJcbiAgICB0ZXh0QWxpZ25PcHRpb25zOiBhbnkgPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjb25zdCBzb3J0RGF0YVNvdXJjZSA9IFtdLCBncm91cERhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNvcnRGaWVsZDogdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkLFxyXG4gICAgICAgICAgICBzb3J0RGlyOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5zb3J0RGlyLFxyXG4gICAgICAgICAgICBncm91cEZpZWxkOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5ncm91cEZpZWxkLFxyXG4gICAgICAgICAgICBncm91cEluQ2xpZW50OiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5ncm91cEluQ2xpZW50LFxyXG4gICAgICAgICAgICBkZXRhaWxzOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5kZXRhaWxzXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyB0aGlzLm1vZGVsLmFjdGl2ZUVudGl0eU1ldGFkYXRhID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5tb2RlbC5hY3RpdmVFbnRpdHlQZXJtaXNzaW9uID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy5jb2xzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBEYXRhU291cmNlLnB1c2goeyB2YWx1ZTogZWxlbWVudC5maWVsZCwgbGFiZWw6IGVsZW1lbnQubGFiZWwgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zb3J0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc29ydERhdGFTb3VyY2UucHVzaCh7IHZhbHVlOiBlbGVtZW50LmZpZWxkLCBsYWJlbDogZWxlbWVudC5sYWJlbCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LnJhd0NvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBEYXRhU291cmNlLnB1c2goeyB2YWx1ZTogZWxlbWVudC5maWVsZCwgbGFiZWw6IGVsZW1lbnQubGFiZWwgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnJhd0NvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5zb21lKHEgPT4gcS5jb2x1bW5Db2RlID09IGVsZW1lbnQuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbmQoZiA9PiBmLmZpZWxkID09ICdzdHInICsgZWxlbWVudC5maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWZGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSA9IHJlZkZpZWxkLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZWxlbWVudC52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC52aXNpYmxlID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZWxlbWVudC52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC52aXNpYmxlID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gPENvbHVtblNldHRpbmdEZXRhaWw+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db2RlOiBlbGVtZW50LmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBlbGVtZW50LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGVsZW1lbnQudGV4dEFsaWduID09PSB1bmRlZmluZWQgPyBUZXh0QWxpZ24uTGVmdCA6IGVsZW1lbnQudGV4dEFsaWduLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudC53aWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmRldGFpbHMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGVtcC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1TY2hlbWFCYXNlW10+W1xyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29ydEZpZWxkJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1Phuq9wIHjhur9wIHRoZW8nKSxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2jhu41uIGPhu5l0JyxcclxuICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHNvcnREYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3NvcnREaXInLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaGnhu4F1IHPhuq9wIHjhur9wJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDYsXHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBbeyB2YWx1ZTogU29ydERpcnMuQXNjLCBsYWJlbDogJ1TEg25nIGThuqduJyB9LCB7IHZhbHVlOiBTb3J0RGlycy5EZXNjLCBsYWJlbDogJ0dp4bqjbSBk4bqnbicgfV0sXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFNvcnREaXJzLkFzYyxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBGaWVsZCcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdOaMOzbSB0aGVvJyksXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY+G7mXQnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZ3JvdXBEYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cEluQ2xpZW50JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ05ow7NtIHRyw6puIGNsaWVudCcpLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEuZm9yRWFjaChzY2hlbWEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5mdWxsTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHNjaGVtYS5mdWxsTGFiZWwgPSBzY2hlbWEubGFiZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbHVtblNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnU1RUJywgd2lkdGg6ICc3MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1TDqm4gY+G7mXQnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnSGnhu4NuIHRo4buLJywgd2lkdGg6ICc4MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ0PEg24gbOG7gScsIHdpZHRoOiAnMTMwcHgnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnQ2hp4buBdSBy4buZbmcnLCB3aWR0aDogJzEwMHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1Ro4bupIHThu7EnLCB3aWR0aDogJzgwcHgnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnRleHRBbGlnbk9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5MZWZ0LCBsYWJlbDogJ0PEg24gdHLDoWknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5DZW50ZXIsIGxhYmVsOiAnQ8SDbiBnaeG7r2EnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5SaWdodCwgbGFiZWw6ICdDxINuIHBo4bqjaScgfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vblNhdmUubmV4dCh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vbkRlbGV0ZS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCkge1xyXG4gICAgICAgIHRoaXMub25DYW5jZWwubmV4dChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB2aXNpYmxlQ2hhbmdlZERpYWxvZyhldmVudCkge1xyXG4gICAgICAgIGlmICghZXZlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SnNvbigpIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tb2RlbCkuam9pbignLCcpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|