@eo-sdk/client 10.3.0-rc.2 → 10.4.0-rc.2
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/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +0 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
- package/app/eo-framework/actions/action.module.d.ts +17 -12
- package/app/eo-framework/actions/action.module.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +47 -0
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts.map +1 -0
- package/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.d.ts +19 -0
- package/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.d.ts.map +1 -0
- package/app/eo-framework/actions/actions/signature-action/signature/signature.component.d.ts +3 -1
- package/app/eo-framework/actions/actions/signature-action/signature/signature.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/signature.model.d.ts +21 -0
- package/app/eo-framework/actions/actions/signature-action/signature.model.d.ts.map +1 -0
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.d.ts +2 -0
- package/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form-group.model.d.ts +1 -0
- package/app/eo-framework/object-form/object-form/object-form-group.model.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-edit/object-form-edit.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts +11 -0
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-options.interface.d.ts +1 -0
- package/app/eo-framework/object-form/object-form-options.interface.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts +2 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +5 -3
- package/assets/_default/i18n/en.json +5 -3
- package/assets/_default/svg/ic_drag.svg +1 -0
- package/assets/_default/svg/ic_saved_search.svg +1 -0
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +10 -14
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +1 -1
- package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +3 -3
- package/esm2020/app/eo-framework/actions/action.module.mjs +19 -7
- package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +184 -0
- package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +53 -0
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +22 -19
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature.model.mjs +8 -0
- package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +1 -1
- package/esm2020/app/eo-framework/form-elements/form-input/form-input.component.mjs +2 -2
- package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +3 -3
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +1 -1
- package/esm2020/app/eo-framework/object-details/object-details.component.mjs +1 -1
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -3
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +4 -3
- package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +11 -4
- package/esm2020/app/eo-framework/object-form/object-form/object-form-group.model.mjs +1 -1
- package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +2 -1
- package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +35 -2
- package/esm2020/app/eo-framework/object-form/object-form-options.interface.mjs +1 -1
- package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +1 -1
- package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +6 -4
- package/esm2020/app/eo-framework/process/details/process-details.component.mjs +1 -1
- package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +2 -2
- package/esm2020/app/eo-framework/tree/tree-node/tree-node.component.mjs +3 -3
- package/esm2020/app/eo-framework-core/api/grid.service.mjs +13 -13
- package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +3 -3
- package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +4 -96
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +5 -96
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2015/eo-sdk-client.mjs +352 -71
- package/fesm2015/eo-sdk-client.mjs.map +1 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +5 -96
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2020/eo-sdk-client.mjs +348 -71
- package/fesm2020/eo-sdk-client.mjs.map +1 -1
- package/package.json +3 -3
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +1 -4
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +1 -1
- package/scss/_form.scss +6 -1
- package/styles.css +3 -0
|
@@ -118,6 +118,7 @@ let RowEditComponent = class RowEditComponent {
|
|
|
118
118
|
if (this._row) {
|
|
119
119
|
const formGenRes = this.formHelperService.buildReactiveForm({
|
|
120
120
|
formModel: {
|
|
121
|
+
situation: this._row.situation,
|
|
121
122
|
elements: [{
|
|
122
123
|
type: 'o2mGroup',
|
|
123
124
|
elements: structuredClone(this._row.form.elements)
|
|
@@ -201,14 +202,14 @@ let RowEditComponent = class RowEditComponent {
|
|
|
201
202
|
}
|
|
202
203
|
};
|
|
203
204
|
RowEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RowEditComponent, deps: [{ token: i1.PendingChangesService }, { token: i2.ObjectFormScriptService }, { token: i3.ObjectFormHelperService }, { token: i4.UntypedFormBuilder }, { token: i5.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
204
|
-
RowEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: RowEditComponent, selector: "eo-row-edit", inputs: { limitReached: "limitReached", row: "row" }, outputs: { onCancel: "onCancel", onSave: "onSave", onSaveCopy: "onSaveCopy", onDelete: "onDelete" }, providers: [ObjectFormScriptService], viewQueries: [{ propertyName: "confirmDeleteButton", first: true, predicate: ["confirmDelete"], descendants: true }], ngImport: i0, template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\"\n [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\" [formGroup]=\"editForm\" *ngIf=\"editForm\">\n <eo-form-element *ngFor=\"let c of editFormControls\" [element]=\"c\" [situation]=\"_row?.situation\" [skipToggle]=\"
|
|
205
|
+
RowEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: RowEditComponent, selector: "eo-row-edit", inputs: { limitReached: "limitReached", row: "row" }, outputs: { onCancel: "onCancel", onSave: "onSave", onSaveCopy: "onSaveCopy", onDelete: "onDelete" }, providers: [ObjectFormScriptService], viewQueries: [{ propertyName: "confirmDeleteButton", first: true, predicate: ["confirmDelete"], descendants: true }], ngImport: i0, template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\"\n [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\" [formGroup]=\"editForm\" *ngIf=\"editForm\">\n <eo-form-element *ngFor=\"let c of editFormControls\" [element]=\"c\" [situation]=\"_row?.situation\" [skipToggle]=\"false\">\n </eo-form-element>\n </div>\n\n <div class=\"actions\">\n <eo-checkbox *ngIf=\"isNewRow\" title=\"{{'eo.form.table.options.checkbox.new.title' | translate}}\"\n [formControl]=\"createNewCheckbox\"></eo-checkbox>\n <span *ngIf=\"isNewRow\" class=\"add-label\" translate>eo.form.table.options.checkbox.new</span>\n <button type=\"button\" *ngIf=\"deleteEnabled && !isNewRow && !_row?.form.disabled && !queryEnabled\"\n (click)=\"showDeleteDialog = true;\" title=\"{{'eo.form.table.options.btn.delete' | translate}}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"></eo-icon>\n </button>\n <button type=\"button\" (click)=\"saveCopy()\" class=\"seco\" *ngIf=\"copyEnabled && !isNewRow && !_row?.form.disabled\"\n [disabled]=\"limitReached || saving || formState?.invalid\" translate>eo.form.table.options.btn.copy</button>\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"saveEnabled && !_row?.form.disabled\"\n [disabled]=\"(limitReached && isNewRow) || saving || formState?.invalid || (!formState?.dirty && !isNewRow)\">{{\n 'eo.form.table.options.btn.save' + (isNewRow ? '.new' : '') | translate}}</button>\n <!-- query button for SEARCH situation -->\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"queryEnabled\"\n [disabled]=\"formState?.invalid || !formState?.indexdataChanged\" translate>eo.form.table.options.btn.save</button>\n </div>\n\n</div>\n\n<eo-dialog [title]=\"('eo.form.table.options.confirm.delete' | translate)\" [(visible)]=\"showDeleteDialog\"\n [minWidth]=\"400\">\n <div class=\"action-buttons flex-row\" style=\"padding: 8px;\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.form.table.options.btn.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"delete()\" class=\"button primary\"\n translate>eo.form.table.options.btn.ok</button>\n </div>\n</eo-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i10.CheckboxComponent, selector: "eo-checkbox", inputs: ["tristate", "readonly"] }, { kind: "component", type: i11.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
205
206
|
RowEditComponent = __decorate([
|
|
206
207
|
UntilDestroy()
|
|
207
208
|
], RowEditComponent);
|
|
208
209
|
export { RowEditComponent };
|
|
209
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RowEditComponent, decorators: [{
|
|
210
211
|
type: Component,
|
|
211
|
-
args: [{ selector: 'eo-row-edit', encapsulation: ViewEncapsulation.None, providers: [ObjectFormScriptService], template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\"\n [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\" [formGroup]=\"editForm\" *ngIf=\"editForm\">\n <eo-form-element *ngFor=\"let c of editFormControls\" [element]=\"c\" [situation]=\"_row?.situation\" [skipToggle]=\"
|
|
212
|
+
args: [{ selector: 'eo-row-edit', encapsulation: ViewEncapsulation.None, providers: [ObjectFormScriptService], template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\"\n [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\" [formGroup]=\"editForm\" *ngIf=\"editForm\">\n <eo-form-element *ngFor=\"let c of editFormControls\" [element]=\"c\" [situation]=\"_row?.situation\" [skipToggle]=\"false\">\n </eo-form-element>\n </div>\n\n <div class=\"actions\">\n <eo-checkbox *ngIf=\"isNewRow\" title=\"{{'eo.form.table.options.checkbox.new.title' | translate}}\"\n [formControl]=\"createNewCheckbox\"></eo-checkbox>\n <span *ngIf=\"isNewRow\" class=\"add-label\" translate>eo.form.table.options.checkbox.new</span>\n <button type=\"button\" *ngIf=\"deleteEnabled && !isNewRow && !_row?.form.disabled && !queryEnabled\"\n (click)=\"showDeleteDialog = true;\" title=\"{{'eo.form.table.options.btn.delete' | translate}}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"></eo-icon>\n </button>\n <button type=\"button\" (click)=\"saveCopy()\" class=\"seco\" *ngIf=\"copyEnabled && !isNewRow && !_row?.form.disabled\"\n [disabled]=\"limitReached || saving || formState?.invalid\" translate>eo.form.table.options.btn.copy</button>\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"saveEnabled && !_row?.form.disabled\"\n [disabled]=\"(limitReached && isNewRow) || saving || formState?.invalid || (!formState?.dirty && !isNewRow)\">{{\n 'eo.form.table.options.btn.save' + (isNewRow ? '.new' : '') | translate}}</button>\n <!-- query button for SEARCH situation -->\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"queryEnabled\"\n [disabled]=\"formState?.invalid || !formState?.indexdataChanged\" translate>eo.form.table.options.btn.save</button>\n </div>\n\n</div>\n\n<eo-dialog [title]=\"('eo.form.table.options.confirm.delete' | translate)\" [(visible)]=\"showDeleteDialog\"\n [minWidth]=\"400\">\n <div class=\"action-buttons flex-row\" style=\"padding: 8px;\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.form.table.options.btn.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"delete()\" class=\"button primary\"\n translate>eo.form.table.options.btn.ok</button>\n </div>\n</eo-dialog>" }]
|
|
212
213
|
}], ctorParameters: function () { return [{ type: i1.PendingChangesService }, { type: i2.ObjectFormScriptService }, { type: i3.ObjectFormHelperService }, { type: i4.UntypedFormBuilder }, { type: i5.LocalStorageService }]; }, propDecorators: { confirmDeleteButton: [{
|
|
213
214
|
type: ViewChild,
|
|
214
215
|
args: ['confirmDelete']
|
|
@@ -225,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
225
226
|
}], onDelete: [{
|
|
226
227
|
type: Output
|
|
227
228
|
}] } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJMUgsT0FBTyxFQUFzQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUk1Rjs7R0FFRztBQVNJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNEIzQixJQUFJLGdCQUFnQixDQUFDLEdBQVk7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FB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LENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs2R0FuT1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsaU1BRmhCLENBQUMsdUJBQXVCLENBQUMsZ0pDekJ0QywraUZBeUNZO0FEZEMsZ0JBQWdCO0lBUjVCLFlBQVksRUFBRTtHQVFGLGdCQUFnQixDQW9PNUI7U0FwT1ksZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsdUJBQXVCLENBQUM7MlBBR1IsbUJBQW1CO3NCQUE5QyxTQUFTO3VCQUFDLGVBQWU7Z0JBdUNqQixZQUFZO3NCQUFwQixLQUFLO2dCQUdGLEdBQUc7c0JBRE4sS0FBSztnQkFhSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBpbXBvcnQgeyBPYmplY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vLi4vLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtGb3JtR2VuUmVzdWx0LCBPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0U2VydmljZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdC5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0aW5nLXNjb3BlJztcbmltcG9ydCB7RWRpdFJvdywgRWRpdFJvd1Jlc3VsdH0gZnJvbSAnLi4vZm9ybS1lbGVtZW50LmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBlZGl0aW5nIGEgcm93IGZyb20gYW4gb2JqZWN0IGZvcm1zIHRhYmxlLlxuICovXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJvdy1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm93LWVkaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBSb3dFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIHJvdyBkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xuXG4gIGVkaXRGb3JtOiBPYmplY3RGb3JtR3JvdXA7XG4gIGVkaXRGb3JtQ29udHJvbHM6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcltdID0gW107XG4gIHByaXZhdGUgc2NyaXB0aW5nU2NvcGU6IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAvLyBwcm9wZXJ0eSBmb3IgaG9sZGluZyB0aGUgZm9ybXMgZGF0YSB1c2VkIGZvciBjb21wYXJpc29uIHdoZW4gYSBmb3JtLWNoYW5nZWQtZXZlbnRcbiAgLy8gaXMgZmV0Y2hlZCB0byBpbmRpY2F0ZSB3aGVyIG9yIG5vdCB0aGUgaW5kZXhkYXRhIHdlcmUgY2hhbmdlZCBvciBqdXN0IHRoZSBwcm9wZXJ0aWVzXG4gIC8vIG9mIHRoZSBmb3JtIGVsZW1lbnRzIChlZy4gZm9ybSBzY3JpcHQgc2V0dGluZyBmaWVsZHMgdG8gcmVhZG9ubHkpXG4gIHByaXZhdGUgZm9ybURhdGE6IGFueTtcblxuICBfcm93OiBFZGl0Um93O1xuICBpc05ld1JvdzogYm9vbGVhbjtcbiAgZm9ybVN0YXRlPzogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcbiAgcXVlcnlFbmFibGVkID0gdHJ1ZTtcbiAgY29weUVuYWJsZWQgPSB0cnVlO1xuICBkZWxldGVFbmFibGVkID0gdHJ1ZTtcbiAgc2F2ZUVuYWJsZWQgPSB0cnVlO1xuICBjcmVhdGVOZXdDaGVja2JveDogVW50eXBlZEZvcm1Db250cm9sO1xuICBjcmVhdGVOZXdSb3cgPSBmYWxzZTtcbiAgX3Nob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgc2F2aW5nID0gZmFsc2U7XG5cbiAgc2V0IHNob3dEZWxldGVEaWFsb2codmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0RlbGV0ZURpYWxvZyA9IHZhbDtcblxuICAgIGlmICh0aGlzLl9zaG93RGVsZXRlRGlhbG9nKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29uZmlybURlbGV0ZUJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlRGlhbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93RGVsZXRlRGlhbG9nO1xuICB9XG5cbiAgQElucHV0KCkgbGltaXRSZWFjaGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNldCByb3cocjogRWRpdFJvdykge1xuICAgIHRoaXMuX3JvdyA9IHI7XG4gICAgdGhpcy5xdWVyeUVuYWJsZWQgPSByPy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnO1xuICAgIHRoaXMuY29weUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5zYXZlRW5hYmxlZCA9ICF0aGlzLnF1ZXJ5RW5hYmxlZDtcbiAgICB0aGlzLmRlbGV0ZUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5pc05ld1JvdyA9IHRoaXMuX3Jvdz8uaW5kZXggPT09IC0xO1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcblxuICAgIHRoaXMuX2J1aWxkUm93RWRpdEZvcm0oKVxuICB9XG5cbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0Um93UmVzdWx0PigpO1xuICBAT3V0cHV0KCkgb25TYXZlQ29weSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdFJvd1Jlc3VsdD4oKTtcbiAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybVNjcmlwdFNlcnZpY2U6IE9iamVjdEZvcm1TY3JpcHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSkge1xuICAgIHRoaXMuY3JlYXRlTmV3Um93ID0gISF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2NyZWF0ZU5ld1JvdycpO1xuICAgIHRoaXMuY3JlYXRlTmV3Q2hlY2tib3ggPSB0aGlzLmZiLmNvbnRyb2wodGhpcy5jcmVhdGVOZXdSb3cpO1xuICAgIHRoaXMuY3JlYXRlTmV3Q2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVOZXdSb3cgPSB2O1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdjcmVhdGVOZXdSb3cnLCB0aGlzLmNyZWF0ZU5ld1Jvdyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAqIFJldHVybnMgdGhlIG9ic2VydmVkIG1vZGVsIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgY3VycmVudCBmb3JtIHNjcmlwdCBydW5uaW5nLiBJZiB0aGVyZSBpc1xuICogbm8gZm9ybSBzY3JpcHQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIE5VTEwuXG4gKiBAcmV0dXJuc1xuICovXG4gIHByaXZhdGUgX2dldE9ic2VydmVkU2NyaXB0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NyaXB0aW5nU2NvcGUgPyB0aGlzLnNjcmlwdGluZ1Njb3BlLmdldE1vZGVsKCkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Rm9ybURhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZXh0cmFjdEZvcm1EYXRhKFxuICAgICAgdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHRoaXMuX3Jvdy5zaXR1YXRpb24sXG4gICAgICB0aGlzLl9yb3cuZm9ybS5kYXRhLCB0cnVlXG4gICAgKTtcblxuICB9XG5cbiAgb25Gb3JtUmVhZHkoKSB7XG4gICAgLy8gZXhlY3V0ZSBhZnRlciBmb3JtIGhhcyBiZWVuIHNldCB1cCwgYmVjYXVzZSBvdGhlcndpc2Ugbm90IGFsbCBvZiB0aGUgY29tcG9uZW50cyBhcmUgcmVhZHkgdG8gYmUgdXNlZFxuICAgIC8vIGlmIGZvciBleGFtcGxlIGEgZm9ybSBzY3JpcHQgZXhlY3V0ZWQgYG9ucm93ZWRpdGAgdHJpZXMgdG8gYXBwbHkgYSBmaWx0ZXIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdFxuICAgIGlmICh0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCAmJiAhdGhpcy5fcm93LnRhYmxlRWxlbWVudC5yZWFkb25seSkge1xuXG4gICAgICAvLyBHZW5lcmF0ZSByb3cgQVBJIG9iamVjdCAod3JhcHBlcikgZm9yIHRoZSBzY3JpcHRcbiAgICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuX2dldE9ic2VydmVkU2NyaXB0TW9kZWwoKSxcbiAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgY29weUVuYWJsZWQ6IHRoaXMuY29weUVuYWJsZWQsXG4gICAgICAgIGRlbGV0ZUVuYWJsZWQ6IHRoaXMuZGVsZXRlRW5hYmxlZCxcbiAgICAgICAgc2F2ZUVuYWJsZWQ6IHRoaXMuc2F2ZUVuYWJsZWQsXG4gICAgICAgIHBlcnNpc3RlZDogdGhpcy5pc05ld1JvdyAvLyBOb3QgcGVyc2lzdGVkIGlmIGl0IGlzIGEgbmV3IHJvd1xuICAgICAgfTtcbiAgICAgIC8vIENhbGwgdGhlIHNjcmlwdCBmdW5jdGlvbiAuLi5cbiAgICAgIHRoaXMuX3Jvdy50YWJsZUVsZW1lbnQub25yb3dlZGl0KHRoaXMuX3Jvdy50YWJsZUVsZW1lbnQsIHJvdyk7XG4gICAgICAvLyAuLi4gYW5kIHJlc3BlY3QgdGhlIHJlc3VsdFxuICAgICAgdGhpcy5jb3B5RW5hYmxlZCA9IHJvdy5jb3B5RW5hYmxlZDtcbiAgICAgIHRoaXMuZGVsZXRlRW5hYmxlZCA9IHJvdy5kZWxldGVFbmFibGVkO1xuICAgICAgdGhpcy5zYXZlRW5hYmxlZCA9IHJvdy5zYXZlRW5hYmxlZDtcbiAgICB9XG4gIH1cblxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dCkge1xuXG4gICAgLy8gY2hlY2sgaWYgaW5kZXhkYXRhIGhhcyBiZWVuIGNoYW5nZWRcbiAgICBsZXQgY3VycmVudEZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEoKTtcbiAgICBsZXQgaWR4Q2hhbmdlID0gISF0aGlzLmZvcm1EYXRhICYmIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybURhdGEpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Rm9ybURhdGEpO1xuICAgIHRoaXMuZm9ybURhdGEgPSBVdGlscy5mb3JtRGF0YVBhcnNlKFV0aWxzLmZvcm1EYXRhU3RyaW5naWZ5KGN1cnJlbnRGb3JtRGF0YSkpO1xuXG4gICAgdGhpcy5mb3JtU3RhdGUgPSB7XG4gICAgICBpbnZhbGlkOiB0aGlzLmVkaXRGb3JtLmludmFsaWQsXG4gICAgICBkaXJ0eTogdGhpcy5lZGl0Rm9ybS5kaXJ0eSxcbiAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGEsXG4gICAgICBpbmRleGRhdGFDaGFuZ2VkOiBpZHhDaGFuZ2VcbiAgICB9O1xuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5pbmRleGRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9idWlsZFJvd0VkaXRGb3JtKCkge1xuICAgIGlmICh0aGlzLl9yb3cpIHtcbiAgICAgIGNvbnN0IGZvcm1HZW5SZXM6IEZvcm1HZW5SZXN1bHQgPSB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmJ1aWxkUmVhY3RpdmVGb3JtKFxuICAgICAgICB7XG4gICAgICAgICAgZm9ybU1vZGVsOiB7XG4gICAgICAgICAgICBlbGVtZW50czogW3tcbiAgICAgICAgICAgICAgdHlwZTogJ28ybUdyb3VwJyxcbiAgICAgICAgICAgICAgZWxlbWVudHM6IHN0cnVjdHVyZWRDbG9uZSh0aGlzLl9yb3cuZm9ybS5lbGVtZW50cylcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSwgZGlzYWJsZWQ6IHRoaXMuX3Jvdy5mb3JtLmRpc2FibGVkLCBkYXRhOiB0aGlzLl9yb3cuZm9ybS5kYXRhXG4gICAgICAgIH0sIHRoaXMuZm9ybVNjcmlwdFNlcnZpY2UsIHRydWVcbiAgICAgICk7XG4gICAgICB0aGlzLmVkaXRGb3JtID0gZm9ybUdlblJlcy5mb3JtO1xuICAgICAgdGhpcy5zY3JpcHRpbmdTY29wZSA9IGZvcm1HZW5SZXMuc2NyaXB0aW5nU2NvcGU7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBmb3JtR2VuUmVzLmNvbnRyb2xWYWx1ZVN1YnNjcmlwdGlvbnM7XG5cbiAgICAgIGNvbnN0IGN0cmxzID0gKHRoaXMuZWRpdEZvcm0uY29udHJvbHMuY29yZSBhcyBPYmplY3RGb3JtR3JvdXApLmNvbnRyb2xzO1xuICAgICAgdGhpcy5lZGl0Rm9ybUNvbnRyb2xzID0gT2JqZWN0LmtleXMoY3RybHMpLm1hcChrID0+IGN0cmxzW2tdIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcilcbiAgICAgIHRoaXMuZm9ybVN0YXRlID0ge1xuICAgICAgICBpbnZhbGlkOiB0aGlzLmVkaXRGb3JtLmludmFsaWQsXG4gICAgICAgIGRpcnR5OiB0aGlzLmVkaXRGb3JtLmRpcnR5LFxuICAgICAgICBkYXRhOiB0aGlzLmZvcm1EYXRhLFxuICAgICAgICBpbmRleGRhdGFDaGFuZ2VkOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdEZvcm0pIHJldHVybjtcbiAgICAgICAgbGV0IGZvcm1TdGF0ZVdhdGNoID0gdGhpcy5lZGl0Rm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUoKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHRoaXMub25Gb3JtU3RhdHVzQ2hhbmdlZChlKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGZvcm1TdGF0ZVdhdGNoKTtcbiAgICAgICAgdGhpcy5vbkZvcm1SZWFkeSgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHtcbiAgICAgICAgICBpbmRleDogdGhpcy5fcm93LmluZGV4LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMuX2dldEZvcm1EYXRhKCksXG4gICAgICAgICAgY3JlYXRlTmV3Um93OiB0aGlzLmNyZWF0ZU5ld1Jvd1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHNhdmVDb3B5KCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZUNvcHkuZW1pdCh7XG4gICAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLl9nZXRGb3JtRGF0YSgpLFxuICAgICAgICAgIGNyZWF0ZU5ld1JvdzogdGhpcy5jcmVhdGVOZXdSb3dcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHRoaXMuX3Jvdy5pbmRleCk7XG4gICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3ctZWRpdFwiPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC1oZWFkZXJcIiAqbmdJZj1cIiFxdWVyeUVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmV3LWluZGljYXRvclwiICpuZ0lmPVwiaXNOZXdSb3dcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmluZGljYXRvci5uZXc8L2Rpdj5cbiAgICA8ZGl2PjwvZGl2PlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWwtaWNvblwiXG4gICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jYW5jZWwnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKm5nSWY9XCJlZGl0Rm9ybVwiPlxuICAgIDxlby1mb3JtLWVsZW1lbnQgKm5nRm9yPVwibGV0IGMgb2YgZWRpdEZvcm1Db250cm9sc1wiIFtlbGVtZW50XT1cImNcIiBbc2l0dWF0aW9uXT1cIl9yb3c/LnNpdHVhdGlvblwiIFtza2lwVG9nZ2xlXT1cInRydWVcIj5cbiAgICA8L2VvLWZvcm0tZWxlbWVudD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICA8ZW8tY2hlY2tib3ggKm5nSWY9XCJpc05ld1Jvd1wiIHRpdGxlPVwie3snZW8uZm9ybS50YWJsZS5vcHRpb25zLmNoZWNrYm94Lm5ldy50aXRsZScgfCB0cmFuc2xhdGV9fVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY3JlYXRlTmV3Q2hlY2tib3hcIj48L2VvLWNoZWNrYm94PlxuICAgIDxzcGFuICpuZ0lmPVwiaXNOZXdSb3dcIiBjbGFzcz1cImFkZC1sYWJlbFwiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuY2hlY2tib3gubmV3PC9zcGFuPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGVsZXRlRW5hYmxlZCAmJiAhaXNOZXdSb3cgJiYgIV9yb3c/LmZvcm0uZGlzYWJsZWQgJiYgIXF1ZXJ5RW5hYmxlZFwiXG4gICAgICAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XCIgdGl0bGU9XCJ7eydlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmRlbGV0ZScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdHJhc2guc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZUNvcHkoKVwiIGNsYXNzPVwic2Vjb1wiICpuZ0lmPVwiY29weUVuYWJsZWQgJiYgIWlzTmV3Um93ICYmICFfcm93Py5mb3JtLmRpc2FibGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJsaW1pdFJlYWNoZWQgfHwgc2F2aW5nIHx8IGZvcm1TdGF0ZT8uaW52YWxpZFwiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNvcHk8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCIgY2xhc3M9XCJwcmltYXJ5XCIgKm5nSWY9XCJzYXZlRW5hYmxlZCAmJiAhX3Jvdz8uZm9ybS5kaXNhYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiKGxpbWl0UmVhY2hlZCAmJiBpc05ld1JvdykgfHwgc2F2aW5nIHx8IGZvcm1TdGF0ZT8uaW52YWxpZCB8fCAoIWZvcm1TdGF0ZT8uZGlydHkgJiYgIWlzTmV3Um93KVwiPnt7XG4gICAgICAnZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5zYXZlJyArIChpc05ld1JvdyA/ICcubmV3JyA6ICcnKSB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPCEtLSBxdWVyeSBidXR0b24gZm9yIFNFQVJDSCBzaXR1YXRpb24gLS0+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIGNsYXNzPVwicHJpbWFyeVwiICpuZ0lmPVwicXVlcnlFbmFibGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGU/LmludmFsaWQgfHwgIWZvcm1TdGF0ZT8uaW5kZXhkYXRhQ2hhbmdlZFwiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnNhdmU8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48ZW8tZGlhbG9nIFt0aXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5jb25maXJtLmRlbGV0ZScgfCB0cmFuc2xhdGUpXCIgWyh2aXNpYmxlKV09XCJzaG93RGVsZXRlRGlhbG9nXCJcbiAgW21pbldpZHRoXT1cIjQwMFwiPlxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIiBzdHlsZT1cInBhZGRpbmc6IDhweDtcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNjb25maXJtRGVsZXRlIChjbGljayk9XCJkZWxldGUoKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUub3B0aW9ucy5idG4ub2s8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJMUgsT0FBTyxFQUFzQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUk1Rjs7R0FFRztBQVNJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNEIzQixJQUFJLGdCQUFnQixDQUFDLEdBQVk7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FB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Q0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs2R0FwT1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsaU1BRmhCLENBQUMsdUJBQXVCLENBQUMsZ0pDekJ0QyxnakZBeUNZO0FEZEMsZ0JBQWdCO0lBUjVCLFlBQVksRUFBRTtHQVFGLGdCQUFnQixDQXFPNUI7U0FyT1ksZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsdUJBQXVCLENBQUM7MlBBR1IsbUJBQW1CO3NCQUE5QyxTQUFTO3VCQUFDLGVBQWU7Z0JBdUNqQixZQUFZO3NCQUFwQixLQUFLO2dCQUdGLEdBQUc7c0JBRE4sS0FBSztnQkFhSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBpbXBvcnQgeyBPYmplY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vLi4vLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtGb3JtR2VuUmVzdWx0LCBPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0U2VydmljZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdC5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0aW5nLXNjb3BlJztcbmltcG9ydCB7RWRpdFJvdywgRWRpdFJvd1Jlc3VsdH0gZnJvbSAnLi4vZm9ybS1lbGVtZW50LmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBlZGl0aW5nIGEgcm93IGZyb20gYW4gb2JqZWN0IGZvcm1zIHRhYmxlLlxuICovXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJvdy1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm93LWVkaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBSb3dFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIHJvdyBkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xuXG4gIGVkaXRGb3JtOiBPYmplY3RGb3JtR3JvdXA7XG4gIGVkaXRGb3JtQ29udHJvbHM6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcltdID0gW107XG4gIHByaXZhdGUgc2NyaXB0aW5nU2NvcGU6IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAvLyBwcm9wZXJ0eSBmb3IgaG9sZGluZyB0aGUgZm9ybXMgZGF0YSB1c2VkIGZvciBjb21wYXJpc29uIHdoZW4gYSBmb3JtLWNoYW5nZWQtZXZlbnRcbiAgLy8gaXMgZmV0Y2hlZCB0byBpbmRpY2F0ZSB3aGVyIG9yIG5vdCB0aGUgaW5kZXhkYXRhIHdlcmUgY2hhbmdlZCBvciBqdXN0IHRoZSBwcm9wZXJ0aWVzXG4gIC8vIG9mIHRoZSBmb3JtIGVsZW1lbnRzIChlZy4gZm9ybSBzY3JpcHQgc2V0dGluZyBmaWVsZHMgdG8gcmVhZG9ubHkpXG4gIHByaXZhdGUgZm9ybURhdGE6IGFueTtcblxuICBfcm93OiBFZGl0Um93O1xuICBpc05ld1JvdzogYm9vbGVhbjtcbiAgZm9ybVN0YXRlPzogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcbiAgcXVlcnlFbmFibGVkID0gdHJ1ZTtcbiAgY29weUVuYWJsZWQgPSB0cnVlO1xuICBkZWxldGVFbmFibGVkID0gdHJ1ZTtcbiAgc2F2ZUVuYWJsZWQgPSB0cnVlO1xuICBjcmVhdGVOZXdDaGVja2JveDogVW50eXBlZEZvcm1Db250cm9sO1xuICBjcmVhdGVOZXdSb3cgPSBmYWxzZTtcbiAgX3Nob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgc2F2aW5nID0gZmFsc2U7XG5cbiAgc2V0IHNob3dEZWxldGVEaWFsb2codmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0RlbGV0ZURpYWxvZyA9IHZhbDtcblxuICAgIGlmICh0aGlzLl9zaG93RGVsZXRlRGlhbG9nKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29uZmlybURlbGV0ZUJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlRGlhbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93RGVsZXRlRGlhbG9nO1xuICB9XG5cbiAgQElucHV0KCkgbGltaXRSZWFjaGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNldCByb3cocjogRWRpdFJvdykge1xuICAgIHRoaXMuX3JvdyA9IHI7XG4gICAgdGhpcy5xdWVyeUVuYWJsZWQgPSByPy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnO1xuICAgIHRoaXMuY29weUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5zYXZlRW5hYmxlZCA9ICF0aGlzLnF1ZXJ5RW5hYmxlZDtcbiAgICB0aGlzLmRlbGV0ZUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5pc05ld1JvdyA9IHRoaXMuX3Jvdz8uaW5kZXggPT09IC0xO1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcblxuICAgIHRoaXMuX2J1aWxkUm93RWRpdEZvcm0oKVxuICB9XG5cbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0Um93UmVzdWx0PigpO1xuICBAT3V0cHV0KCkgb25TYXZlQ29weSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdFJvd1Jlc3VsdD4oKTtcbiAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybVNjcmlwdFNlcnZpY2U6IE9iamVjdEZvcm1TY3JpcHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSkge1xuICAgIHRoaXMuY3JlYXRlTmV3Um93ID0gISF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2NyZWF0ZU5ld1JvdycpO1xuICAgIHRoaXMuY3JlYXRlTmV3Q2hlY2tib3ggPSB0aGlzLmZiLmNvbnRyb2wodGhpcy5jcmVhdGVOZXdSb3cpO1xuICAgIHRoaXMuY3JlYXRlTmV3Q2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVOZXdSb3cgPSB2O1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdjcmVhdGVOZXdSb3cnLCB0aGlzLmNyZWF0ZU5ld1Jvdyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAqIFJldHVybnMgdGhlIG9ic2VydmVkIG1vZGVsIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgY3VycmVudCBmb3JtIHNjcmlwdCBydW5uaW5nLiBJZiB0aGVyZSBpc1xuICogbm8gZm9ybSBzY3JpcHQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIE5VTEwuXG4gKiBAcmV0dXJuc1xuICovXG4gIHByaXZhdGUgX2dldE9ic2VydmVkU2NyaXB0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NyaXB0aW5nU2NvcGUgPyB0aGlzLnNjcmlwdGluZ1Njb3BlLmdldE1vZGVsKCkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Rm9ybURhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZXh0cmFjdEZvcm1EYXRhKFxuICAgICAgdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHRoaXMuX3Jvdy5zaXR1YXRpb24sXG4gICAgICB0aGlzLl9yb3cuZm9ybS5kYXRhLCB0cnVlXG4gICAgKTtcblxuICB9XG5cbiAgb25Gb3JtUmVhZHkoKSB7XG4gICAgLy8gZXhlY3V0ZSBhZnRlciBmb3JtIGhhcyBiZWVuIHNldCB1cCwgYmVjYXVzZSBvdGhlcndpc2Ugbm90IGFsbCBvZiB0aGUgY29tcG9uZW50cyBhcmUgcmVhZHkgdG8gYmUgdXNlZFxuICAgIC8vIGlmIGZvciBleGFtcGxlIGEgZm9ybSBzY3JpcHQgZXhlY3V0ZWQgYG9ucm93ZWRpdGAgdHJpZXMgdG8gYXBwbHkgYSBmaWx0ZXIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdFxuICAgIGlmICh0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCAmJiAhdGhpcy5fcm93LnRhYmxlRWxlbWVudC5yZWFkb25seSkge1xuXG4gICAgICAvLyBHZW5lcmF0ZSByb3cgQVBJIG9iamVjdCAod3JhcHBlcikgZm9yIHRoZSBzY3JpcHRcbiAgICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuX2dldE9ic2VydmVkU2NyaXB0TW9kZWwoKSxcbiAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgY29weUVuYWJsZWQ6IHRoaXMuY29weUVuYWJsZWQsXG4gICAgICAgIGRlbGV0ZUVuYWJsZWQ6IHRoaXMuZGVsZXRlRW5hYmxlZCxcbiAgICAgICAgc2F2ZUVuYWJsZWQ6IHRoaXMuc2F2ZUVuYWJsZWQsXG4gICAgICAgIHBlcnNpc3RlZDogdGhpcy5pc05ld1JvdyAvLyBOb3QgcGVyc2lzdGVkIGlmIGl0IGlzIGEgbmV3IHJvd1xuICAgICAgfTtcbiAgICAgIC8vIENhbGwgdGhlIHNjcmlwdCBmdW5jdGlvbiAuLi5cbiAgICAgIHRoaXMuX3Jvdy50YWJsZUVsZW1lbnQub25yb3dlZGl0KHRoaXMuX3Jvdy50YWJsZUVsZW1lbnQsIHJvdyk7XG4gICAgICAvLyAuLi4gYW5kIHJlc3BlY3QgdGhlIHJlc3VsdFxuICAgICAgdGhpcy5jb3B5RW5hYmxlZCA9IHJvdy5jb3B5RW5hYmxlZDtcbiAgICAgIHRoaXMuZGVsZXRlRW5hYmxlZCA9IHJvdy5kZWxldGVFbmFibGVkO1xuICAgICAgdGhpcy5zYXZlRW5hYmxlZCA9IHJvdy5zYXZlRW5hYmxlZDtcbiAgICB9XG4gIH1cblxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dCkge1xuXG4gICAgLy8gY2hlY2sgaWYgaW5kZXhkYXRhIGhhcyBiZWVuIGNoYW5nZWRcbiAgICBsZXQgY3VycmVudEZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEoKTtcbiAgICBsZXQgaWR4Q2hhbmdlID0gISF0aGlzLmZvcm1EYXRhICYmIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybURhdGEpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Rm9ybURhdGEpO1xuICAgIHRoaXMuZm9ybURhdGEgPSBVdGlscy5mb3JtRGF0YVBhcnNlKFV0aWxzLmZvcm1EYXRhU3RyaW5naWZ5KGN1cnJlbnRGb3JtRGF0YSkpO1xuXG4gICAgdGhpcy5mb3JtU3RhdGUgPSB7XG4gICAgICBpbnZhbGlkOiB0aGlzLmVkaXRGb3JtLmludmFsaWQsXG4gICAgICBkaXJ0eTogdGhpcy5lZGl0Rm9ybS5kaXJ0eSxcbiAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGEsXG4gICAgICBpbmRleGRhdGFDaGFuZ2VkOiBpZHhDaGFuZ2VcbiAgICB9O1xuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5pbmRleGRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9idWlsZFJvd0VkaXRGb3JtKCkge1xuICAgIGlmICh0aGlzLl9yb3cpIHtcbiAgICAgIGNvbnN0IGZvcm1HZW5SZXM6IEZvcm1HZW5SZXN1bHQgPSB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmJ1aWxkUmVhY3RpdmVGb3JtKFxuICAgICAgICB7XG4gICAgICAgICAgZm9ybU1vZGVsOiB7XG4gICAgICAgICAgICBzaXR1YXRpb246IHRoaXMuX3Jvdy5zaXR1YXRpb24sXG4gICAgICAgICAgICBlbGVtZW50czogW3tcbiAgICAgICAgICAgICAgdHlwZTogJ28ybUdyb3VwJyxcbiAgICAgICAgICAgICAgZWxlbWVudHM6IHN0cnVjdHVyZWRDbG9uZSh0aGlzLl9yb3cuZm9ybS5lbGVtZW50cylcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSwgZGlzYWJsZWQ6IHRoaXMuX3Jvdy5mb3JtLmRpc2FibGVkLCBkYXRhOiB0aGlzLl9yb3cuZm9ybS5kYXRhXG4gICAgICAgIH0sIHRoaXMuZm9ybVNjcmlwdFNlcnZpY2UsIHRydWVcbiAgICAgICk7XG4gICAgICB0aGlzLmVkaXRGb3JtID0gZm9ybUdlblJlcy5mb3JtO1xuICAgICAgdGhpcy5zY3JpcHRpbmdTY29wZSA9IGZvcm1HZW5SZXMuc2NyaXB0aW5nU2NvcGU7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBmb3JtR2VuUmVzLmNvbnRyb2xWYWx1ZVN1YnNjcmlwdGlvbnM7XG5cbiAgICAgIGNvbnN0IGN0cmxzID0gKHRoaXMuZWRpdEZvcm0uY29udHJvbHMuY29yZSBhcyBPYmplY3RGb3JtR3JvdXApLmNvbnRyb2xzO1xuICAgICAgdGhpcy5lZGl0Rm9ybUNvbnRyb2xzID0gT2JqZWN0LmtleXMoY3RybHMpLm1hcChrID0+IGN0cmxzW2tdIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcilcbiAgICAgIHRoaXMuZm9ybVN0YXRlID0ge1xuICAgICAgICBpbnZhbGlkOiB0aGlzLmVkaXRGb3JtLmludmFsaWQsXG4gICAgICAgIGRpcnR5OiB0aGlzLmVkaXRGb3JtLmRpcnR5LFxuICAgICAgICBkYXRhOiB0aGlzLmZvcm1EYXRhLFxuICAgICAgICBpbmRleGRhdGFDaGFuZ2VkOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdEZvcm0pIHJldHVybjtcbiAgICAgICAgbGV0IGZvcm1TdGF0ZVdhdGNoID0gdGhpcy5lZGl0Rm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUoKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHRoaXMub25Gb3JtU3RhdHVzQ2hhbmdlZChlKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGZvcm1TdGF0ZVdhdGNoKTtcbiAgICAgICAgdGhpcy5vbkZvcm1SZWFkeSgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHtcbiAgICAgICAgICBpbmRleDogdGhpcy5fcm93LmluZGV4LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMuX2dldEZvcm1EYXRhKCksXG4gICAgICAgICAgY3JlYXRlTmV3Um93OiB0aGlzLmNyZWF0ZU5ld1Jvd1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHNhdmVDb3B5KCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZUNvcHkuZW1pdCh7XG4gICAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLl9nZXRGb3JtRGF0YSgpLFxuICAgICAgICAgIGNyZWF0ZU5ld1JvdzogdGhpcy5jcmVhdGVOZXdSb3dcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHRoaXMuX3Jvdy5pbmRleCk7XG4gICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3ctZWRpdFwiPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC1oZWFkZXJcIiAqbmdJZj1cIiFxdWVyeUVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmV3LWluZGljYXRvclwiICpuZ0lmPVwiaXNOZXdSb3dcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmluZGljYXRvci5uZXc8L2Rpdj5cbiAgICA8ZGl2PjwvZGl2PlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWwtaWNvblwiXG4gICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jYW5jZWwnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKm5nSWY9XCJlZGl0Rm9ybVwiPlxuICAgIDxlby1mb3JtLWVsZW1lbnQgKm5nRm9yPVwibGV0IGMgb2YgZWRpdEZvcm1Db250cm9sc1wiIFtlbGVtZW50XT1cImNcIiBbc2l0dWF0aW9uXT1cIl9yb3c/LnNpdHVhdGlvblwiIFtza2lwVG9nZ2xlXT1cImZhbHNlXCI+XG4gICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGVvLWNoZWNrYm94ICpuZ0lmPVwiaXNOZXdSb3dcIiB0aXRsZT1cInt7J2VvLmZvcm0udGFibGUub3B0aW9ucy5jaGVja2JveC5uZXcudGl0bGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImNyZWF0ZU5ld0NoZWNrYm94XCI+PC9lby1jaGVja2JveD5cbiAgICA8c3BhbiAqbmdJZj1cImlzTmV3Um93XCIgY2xhc3M9XCJhZGQtbGFiZWxcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmNoZWNrYm94Lm5ldzwvc3Bhbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRlbGV0ZUVuYWJsZWQgJiYgIWlzTmV3Um93ICYmICFfcm93Py5mb3JtLmRpc2FibGVkICYmICFxdWVyeUVuYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1wiIHRpdGxlPVwie3snZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5kZWxldGUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIj48L2VvLWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVDb3B5KClcIiBjbGFzcz1cInNlY29cIiAqbmdJZj1cImNvcHlFbmFibGVkICYmICFpc05ld1JvdyAmJiAhX3Jvdz8uZm9ybS5kaXNhYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwibGltaXRSZWFjaGVkIHx8IHNhdmluZyB8fCBmb3JtU3RhdGU/LmludmFsaWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jb3B5PC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIGNsYXNzPVwicHJpbWFyeVwiICpuZ0lmPVwic2F2ZUVuYWJsZWQgJiYgIV9yb3c/LmZvcm0uZGlzYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cIihsaW1pdFJlYWNoZWQgJiYgaXNOZXdSb3cpIHx8IHNhdmluZyB8fCBmb3JtU3RhdGU/LmludmFsaWQgfHwgKCFmb3JtU3RhdGU/LmRpcnR5ICYmICFpc05ld1JvdylcIj57e1xuICAgICAgJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uc2F2ZScgKyAoaXNOZXdSb3cgPyAnLm5ldycgOiAnJykgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDwhLS0gcXVlcnkgYnV0dG9uIGZvciBTRUFSQ0ggc2l0dWF0aW9uIC0tPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBjbGFzcz1cInByaW1hcnlcIiAqbmdJZj1cInF1ZXJ5RW5hYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8ICFmb3JtU3RhdGU/LmluZGV4ZGF0YUNoYW5nZWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5zYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuY29uZmlybS5kZWxldGUnIHwgdHJhbnNsYXRlKVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gIFttaW5XaWR0aF09XCI0MDBcIj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybURlbGV0ZSAoY2xpY2spPVwiZGVsZXRlKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+Il19
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { Component, Input, ViewEncapsulation, inject } from '@angular/core';
|
|
2
|
+
import { ObjectFormHelperService } from '../../object-form-helper.service';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "@angular/common";
|
|
4
5
|
import * as i2 from "@angular/forms";
|
|
@@ -9,6 +10,7 @@ import * as i6 from "../form-element/form-element-template.directive";
|
|
|
9
10
|
import * as i7 from "../../../../eo-framework-core/pipes/keys.pipe";
|
|
10
11
|
export class ObjectFormGroupComponent {
|
|
11
12
|
constructor() {
|
|
13
|
+
this.formHelperService = inject(ObjectFormHelperService);
|
|
12
14
|
this.types = {
|
|
13
15
|
STACK: 'stack',
|
|
14
16
|
GROUP: 'group',
|
|
@@ -39,6 +41,11 @@ export class ObjectFormGroupComponent {
|
|
|
39
41
|
// if we got a real group
|
|
40
42
|
if (this.group._eoFormGroup) {
|
|
41
43
|
if (this.group._eoFormGroup.type === 'o2mGroupStack') {
|
|
44
|
+
// Group stacks are able to preserve their state.
|
|
45
|
+
// They are rendered as tabs and should remember the selected tab, so we'll set an
|
|
46
|
+
// ID and register them for cleanup
|
|
47
|
+
this.layoutSettingsID = 'eo.form.stack.' + this.group._eoFormGroup.id;
|
|
48
|
+
this.formHelperService.addTemporaryStorageEntry(this.layoutSettingsID);
|
|
42
49
|
// for data section only render as stack (tabs) if we have more than one child
|
|
43
50
|
if (this.isData && Object.keys(this.group.controls).length === 1) {
|
|
44
51
|
return this.types.GROUP;
|
|
@@ -57,10 +64,10 @@ export class ObjectFormGroupComponent {
|
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
66
|
ObjectFormGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
-
ObjectFormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: { situation: "situation", skipToggle: "skipToggle", groupd: ["group", "groupd"], noGroupLabels: "noGroupLabels" }, ngImport: i0, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.Tabs, selector: "yvc-tabs", inputs: ["tabs", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i3.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: ["situation", "skipToggle", "group", "noGroupLabels"] }, { kind: "component", type: i4.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "component", type: i5.FormElementTableComponent, selector: "eo-table", inputs: ["limit", "hasPreviewFile", "minWidth", "height", "params"] }, { kind: "directive", type: i6.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }, { kind: "pipe", type: i7.KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None });
|
|
67
|
+
ObjectFormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: { situation: "situation", skipToggle: "skipToggle", groupd: ["group", "groupd"], noGroupLabels: "noGroupLabels" }, ngImport: i0, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i3.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: ["situation", "skipToggle", "group", "noGroupLabels"] }, { kind: "component", type: i4.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "component", type: i5.FormElementTableComponent, selector: "eo-table", inputs: ["limit", "hasPreviewFile", "minWidth", "height", "params"] }, { kind: "directive", type: i6.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }, { kind: "pipe", type: i7.KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None });
|
|
61
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormGroupComponent, decorators: [{
|
|
62
69
|
type: Component,
|
|
63
|
-
args: [{ selector: 'eo-form-group', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"] }]
|
|
70
|
+
args: [{ selector: 'eo-form-group', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"] }]
|
|
64
71
|
}], propDecorators: { situation: [{
|
|
65
72
|
type: Input
|
|
66
73
|
}], skipToggle: [{
|
|
@@ -71,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
71
78
|
}], noGroupLabels: [{
|
|
72
79
|
type: Input
|
|
73
80
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQVdsRSxNQUFNLE9BQU8sd0JBQXdCO0lBUHJDO1FBU1UsVUFBSyxHQUFHO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLFFBQVEsRUFBRSxVQUFVO1NBQ3JCLENBQUM7UUFPRixvREFBb0Q7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQztLQWlEN0I7SUE5Q0MsSUFDSSxNQUFNLENBQUMsQ0FBa0I7UUFDM0IsSUFBSSxDQUFDLEVBQUU7WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQztZQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7WUFDbEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUlELGtCQUFrQixDQUFDLE9BQU87UUFDeEIsT0FBUSxPQUEyQixDQUFDLFlBQVksQ0FBQztJQUNuRCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsT0FBTztRQUNqQyxPQUFRLE9BQW9DLENBQUMscUJBQXFCLENBQUM7SUFDckUsQ0FBQztJQUdPLFlBQVk7UUFDbEIsNERBQTREO1FBQzVELHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtnQkFFcEQsOEVBQThFO2dCQUM5RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ3pCO2dCQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUM1SztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQXNCO1FBQzFDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxPQUFPLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLElBQUksS0FBSyxlQUFlLENBQUM7SUFDekUsQ0FBQzs7cUhBOURVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGdMQ1hyQyx5eUhBaUZjLCt3SER0RUQsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsZUFBZSxpQkFJVixpQkFBaUIsQ0FBQyxJQUFJOzhCQWdCNUIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxPQUFPO2dCQVlMLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RW9Gb3JtR3JvdXBXcmFwcGVyLCBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0VvRm9ybUdyb3VwLCBPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4uL29iamVjdC1mb3JtLWdyb3VwLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tZm9ybS1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZm9ybS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1Hcm91cENvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSB0eXBlcyA9IHtcbiAgICBTVEFDSzogJ3N0YWNrJyxcbiAgICBHUk9VUDogJ2dyb3VwJyxcbiAgICBGSUVMRFNFVDogJ2ZpZWxkc2V0J1xuICB9O1xuXG4gIGdyb3VwOiBPYmplY3RGb3JtR3JvdXA7XG4gIGdyb3VwVHlwZTogc3RyaW5nO1xuICBpc0NvcmU6IGJvb2xlYW47XG4gIGlzRGF0YTogYm9vbGVhbjtcblxuICAvLyBmb3JtIHNpdHVhdGlvbiwgaWYgbm90IHNldCBkZWZhdWx0IHdpbGwgYmUgJ0VESVQnXG4gIEBJbnB1dCgpIHNpdHVhdGlvbiA9ICdFRElUJztcbiAgQElucHV0KCkgc2tpcFRvZ2dsZTogYm9vbGVhbjtcblxuICBASW5wdXQoJ2dyb3VwJylcbiAgc2V0IGdyb3VwZChnOiBPYmplY3RGb3JtR3JvdXApIHtcbiAgICBpZiAoZykge1xuICAgICAgdGhpcy5ncm91cCA9IGc7XG4gICAgICB0aGlzLmlzQ29yZSA9IHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwICYmIHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsID09PSAnY29yZSc7XG4gICAgICB0aGlzLmlzRGF0YSA9IHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwICYmIHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsID09PSAnZGF0YSc7XG4gICAgICB0aGlzLmdyb3VwVHlwZSA9IHRoaXMuZ2V0R3JvdXBUeXBlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIG5vR3JvdXBMYWJlbHM6IGJvb2xlYW47XG5cbiAgZ2V0T2JqZWN0Rm9ybUdyb3VwKGNvbnRyb2wpOiBFb0Zvcm1Hcm91cCB7XG4gICAgcmV0dXJuIChjb250cm9sIGFzIE9iamVjdEZvcm1Hcm91cCkuX2VvRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGNvbnRyb2wpOiBFb0Zvcm1Hcm91cFdyYXBwZXIge1xuICAgIHJldHVybiAoY29udHJvbCBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpLl9lb0Zvcm1Db250cm9sV3JhcHBlcjtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZXRHcm91cFR5cGUoKSB7XG4gICAgLy8gbWF5IGFzIHdlbGwgYmUgYW4gT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHNvIGNoZWNrIGZpcnN0XG4gICAgLy8gaWYgd2UgZ290IGEgcmVhbCBncm91cFxuICAgIGlmICh0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cCkge1xuICAgICAgaWYgKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLnR5cGUgPT09ICdvMm1Hcm91cFN0YWNrJykge1xuXG4gICAgICAgIC8vIGZvciBkYXRhIHNlY3Rpb24gb25seSByZW5kZXIgYXMgc3RhY2sgKHRhYnMpIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZFxuICAgICAgICBpZiAodGhpcy5pc0RhdGEgJiYgT2JqZWN0LmtleXModGhpcy5ncm91cC5jb250cm9scykubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHlwZXMuR1JPVVA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZXMuU1RBQ0s7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA9PT0gJ28ybUdyb3VwJykge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsICYmICEodGhpcy5pc0NvcmUgfHwgdGhpcy5pc0RhdGEpICYmICF0aGlzLm5vR3JvdXBMYWJlbHMgJiYgIXRoaXMucGFyZW50SXNTdGFjayh0aGlzLmdyb3VwKSkgPyB0aGlzLnR5cGVzLkZJRUxEU0VUIDogdGhpcy50eXBlcy5HUk9VUDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnR5cGVzLkdST1VQO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyZW50SXNTdGFjayhncm91cDogT2JqZWN0Rm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgbGV0IHBhcmVudEZvcm1FbGVtZW50ID0gZ3JvdXAucGFyZW50WydfZW9Gb3JtR3JvdXAnXTtcbiAgICByZXR1cm4gcGFyZW50Rm9ybUVsZW1lbnQgJiYgcGFyZW50Rm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZ3JvdXBcIiBbbmdTd2l0Y2hdPVwiZ3JvdXBUeXBlXCJcbiAgY2xhc3M9XCJmb3JtLWVsZW1lbnQge3tncm91cC5fZW9Gb3JtR3JvdXAgPyBncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA6ICdvMm1Db250cm9sV3JhcCd9fSBhbGlnbi17eyhncm91cC5fZW9Gb3JtR3JvdXAgJiYgZ3JvdXAuX2VvRm9ybUdyb3VwLmxheW91dCkgPyBncm91cC5fZW9Gb3JtR3JvdXAubGF5b3V0LmFsaWduIDogJyd9fVwiXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cblxuICA8IS0tIGdyb3VwIHN0YWNrcyAodGFicykgLS0+XG4gIDx5dmMtdGFicyAqbmdTd2l0Y2hDYXNlPVwiJ3N0YWNrJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQga2V5IG9mIGdyb3VwLmNvbnRyb2xzIHwga2V5czsgaW5kZXggYXMgaTtcIiBbeXZjVGFiXT1cIntpZDogJ3QnICsgaSwgXG4gICAgaGVhZGVyU3R5bGVDbGFzczogJ2RpcnR5LScgKyBncm91cC5jb250cm9sc1trZXldLmRpcnR5ICsgJyBpbnZhbGlkLScgKyBncm91cC5jb250cm9sc1trZXldLmludmFsaWQsXG4gICAgbGFiZWw6IGdldE9iamVjdEZvcm1Hcm91cChncm91cC5jb250cm9sc1trZXldKS5sYWJlbH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGFja1wiIFtuZ0NsYXNzXT1cIntzdGFja0Jhc2U6IGdyb3VwLl9lb0Zvcm1Hcm91cC5sYWJlbCA9PT0gJ2RhdGEnfVwiPlxuXG4gICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2Ugc3RrZ3JvdXBcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiXG4gICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiVEFCTEVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgICAgICAgICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxGb3JtRWxlbWVudFRhYmxlOyBjb250ZXh0OiB7ZWxlbWVudCwgZm9ybUVsZW1lbnRSZWZ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RrZ3JvdXA+XG4gICAgICAgICAgPGVvLWZvcm0tZ3JvdXAgW2dyb3VwXT1cImdyb3VwLmNvbnRyb2xzW2tleV1cIiBbbm9Hcm91cExhYmVsc109XCJ0cnVlXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLXRhYnM+XG5cbiAgPCEtLSBncm91cCB3aXRoIGxlZ2VuZCAtLT5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpZWxkc2V0J1wiIGNsYXNzPVwib20tZ3JvdXAgZmllbGRzZXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCI+PHNwYW4+e3tncm91cC5fZW9Gb3JtR3JvdXAubGFiZWx9fTwvc3Bhbj48L2Rpdj5cblxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgZ3JvdXAuY29udHJvbHMgfCBrZXlzXCI+XG4gICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2UgZnNncm91cFwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJUQUJMRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgICAgICAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbEZvcm1FbGVtZW50VGFibGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2VvLWZvcm0tZWxlbWVudD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmc2dyb3VwPlxuICAgICAgICAgIDxlby1mb3JtLWdyb3VwIFtncm91cF09XCJncm91cC5jb250cm9sc1trZXldXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIGdyb3VwIC0tPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwib20tZ3JvdXBcIiAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBncm91cC5jb250cm9scyB8IGtleXNcIj5cblxuICAgICAgPGVvLWZvcm0tZWxlbWVudCBbZWxlbWVudF09XCJncm91cC5jb250cm9sc1trZXldXCJcbiAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2Ugb21ncm91cFwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiVEFCTEVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgICAgICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbEZvcm1FbGVtZW50VGFibGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gICAgICA8bmctdGVtcGxhdGUgI29tZ3JvdXA+XG4gICAgICAgIDxlby1mb3JtLWdyb3VwIFtncm91cF09XCJncm91cC5jb250cm9sc1trZXldXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIiBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlXCI+PC9lby1mb3JtLWdyb3VwPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjdHBsRm9ybUVsZW1lbnRUYWJsZSBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZGl2IGNsYXNzPVwidGFibGVcIj5cbiAgICA8ZW8tdGFibGUgW3BhcmFtc109XCJ7XG5zaXR1YXRpb246IGVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvbixcbmVsZW1lbnQ6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LFxuc2l6ZTogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2l6ZSxcbm9iamVjdDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQub2JqZWN0XG59XCIgW2Zvcm1Db250cm9sXT1cImVsZW1lbnQuZ2V0KGVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lKVwiPjwvZW8tdGFibGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFTekUsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVNVLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXBELFVBQUssR0FBRztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsVUFBVTtTQUNyQixDQUFDO1FBUUYsb0RBQW9EO1FBQzNDLGNBQVMsR0FBRyxNQUFNLENBQUM7S0F1RDdCO0lBcERDLElBQ0ksTUFBTSxDQUFDLENBQWtCO1FBQzNCLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7WUFDbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFJRCxrQkFBa0IsQ0FBQyxPQUFPO1FBQ3hCLE9BQVEsT0FBMkIsQ0FBQyxZQUFZLENBQUM7SUFDbkQsQ0FBQztJQUVELDJCQUEyQixDQUFDLE9BQU87UUFDakMsT0FBUSxPQUFvQyxDQUFDLHFCQUFxQixDQUFDO0lBQ3JFLENBQUM7SUFHTyxZQUFZO1FBQ2xCLDREQUE0RDtRQUM1RCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUU7Z0JBRXBELGtEQUFrRDtnQkFDbEQsbUZBQW1GO2dCQUNuRixtQ0FBbUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFFdkUsOEVBQThFO2dCQUM5RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ3pCO2dCQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUM1SztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQXNCO1FBQzFDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxPQUFPLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLElBQUksS0FBSyxlQUFlLENBQUM7SUFDekUsQ0FBQzs7cUhBdkVVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGdMQ1pyQyxpMUhBaUZjLG15SERyRUQsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsZUFBZSxpQkFJVixpQkFBaUIsQ0FBQyxJQUFJOzhCQW1CNUIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxPQUFPO2dCQVlMLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFb0Zvcm1Hcm91cFdyYXBwZXIsIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcbmltcG9ydCB7RW9Gb3JtR3JvdXAsIE9iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHtPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1mb3JtLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybUdyb3VwQ29tcG9uZW50IHtcblxuICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlID0gaW5qZWN0KE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIHR5cGVzID0ge1xuICAgIFNUQUNLOiAnc3RhY2snLFxuICAgIEdST1VQOiAnZ3JvdXAnLFxuICAgIEZJRUxEU0VUOiAnZmllbGRzZXQnXG4gIH07XG5cbiAgZ3JvdXA6IE9iamVjdEZvcm1Hcm91cDtcbiAgZ3JvdXBUeXBlOiBzdHJpbmc7XG4gIGlzQ29yZTogYm9vbGVhbjtcbiAgaXNEYXRhOiBib29sZWFuO1xuICBsYXlvdXRTZXR0aW5nc0lEPzogc3RyaW5nO1xuXG4gIC8vIGZvcm0gc2l0dWF0aW9uLCBpZiBub3Qgc2V0IGRlZmF1bHQgd2lsbCBiZSAnRURJVCdcbiAgQElucHV0KCkgc2l0dWF0aW9uID0gJ0VESVQnO1xuICBASW5wdXQoKSBza2lwVG9nZ2xlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZ3JvdXAnKVxuICBzZXQgZ3JvdXBkKGc6IE9iamVjdEZvcm1Hcm91cCkge1xuICAgIGlmIChnKSB7XG4gICAgICB0aGlzLmdyb3VwID0gZztcbiAgICAgIHRoaXMuaXNDb3JlID0gdGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAgJiYgdGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAubGFiZWwgPT09ICdjb3JlJztcbiAgICAgIHRoaXMuaXNEYXRhID0gdGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAgJiYgdGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAubGFiZWwgPT09ICdkYXRhJztcbiAgICAgIHRoaXMuZ3JvdXBUeXBlID0gdGhpcy5nZXRHcm91cFR5cGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncm91cCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgbm9Hcm91cExhYmVsczogYm9vbGVhbjtcblxuICBnZXRPYmplY3RGb3JtR3JvdXAoY29udHJvbCk6IEVvRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gKGNvbnRyb2wgYXMgT2JqZWN0Rm9ybUdyb3VwKS5fZW9Gb3JtR3JvdXA7XG4gIH1cblxuICBnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoY29udHJvbCk6IEVvRm9ybUdyb3VwV3JhcHBlciB7XG4gICAgcmV0dXJuIChjb250cm9sIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikuX2VvRm9ybUNvbnRyb2xXcmFwcGVyO1xuICB9XG5cblxuICBwcml2YXRlIGdldEdyb3VwVHlwZSgpIHtcbiAgICAvLyBtYXkgYXMgd2VsbCBiZSBhbiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgc28gY2hlY2sgZmlyc3RcbiAgICAvLyBpZiB3ZSBnb3QgYSByZWFsIGdyb3VwXG4gICAgaWYgKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snKSB7XG5cbiAgICAgICAgLy8gR3JvdXAgc3RhY2tzIGFyZSBhYmxlIHRvIHByZXNlcnZlIHRoZWlyIHN0YXRlLiBcbiAgICAgICAgLy8gVGhleSBhcmUgcmVuZGVyZWQgYXMgdGFicyBhbmQgc2hvdWxkIHJlbWVtYmVyIHRoZSBzZWxlY3RlZCB0YWIsIHNvIHdlJ2xsIHNldCBhbiBcbiAgICAgICAgLy8gSUQgYW5kIHJlZ2lzdGVyIHRoZW0gZm9yIGNsZWFudXBcbiAgICAgICAgdGhpcy5sYXlvdXRTZXR0aW5nc0lEID0gJ2VvLmZvcm0uc3RhY2suJyArIHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmlkO1xuICAgICAgICB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmFkZFRlbXBvcmFyeVN0b3JhZ2VFbnRyeSh0aGlzLmxheW91dFNldHRpbmdzSUQpO1xuXG4gICAgICAgIC8vIGZvciBkYXRhIHNlY3Rpb24gb25seSByZW5kZXIgYXMgc3RhY2sgKHRhYnMpIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZFxuICAgICAgICBpZiAodGhpcy5pc0RhdGEgJiYgT2JqZWN0LmtleXModGhpcy5ncm91cC5jb250cm9scykubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHlwZXMuR1JPVVA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZXMuU1RBQ0s7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA9PT0gJ28ybUdyb3VwJykge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsICYmICEodGhpcy5pc0NvcmUgfHwgdGhpcy5pc0RhdGEpICYmICF0aGlzLm5vR3JvdXBMYWJlbHMgJiYgIXRoaXMucGFyZW50SXNTdGFjayh0aGlzLmdyb3VwKSkgPyB0aGlzLnR5cGVzLkZJRUxEU0VUIDogdGhpcy50eXBlcy5HUk9VUDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnR5cGVzLkdST1VQO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyZW50SXNTdGFjayhncm91cDogT2JqZWN0Rm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgbGV0IHBhcmVudEZvcm1FbGVtZW50ID0gZ3JvdXAucGFyZW50WydfZW9Gb3JtR3JvdXAnXTtcbiAgICByZXR1cm4gcGFyZW50Rm9ybUVsZW1lbnQgJiYgcGFyZW50Rm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZ3JvdXBcIiBbbmdTd2l0Y2hdPVwiZ3JvdXBUeXBlXCJcbiAgY2xhc3M9XCJmb3JtLWVsZW1lbnQge3tncm91cC5fZW9Gb3JtR3JvdXAgPyBncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA6ICdvMm1Db250cm9sV3JhcCd9fSBhbGlnbi17eyhncm91cC5fZW9Gb3JtR3JvdXAgJiYgZ3JvdXAuX2VvRm9ybUdyb3VwLmxheW91dCkgPyBncm91cC5fZW9Gb3JtR3JvdXAubGF5b3V0LmFsaWduIDogJyd9fVwiXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cblxuICA8IS0tIGdyb3VwIHN0YWNrcyAodGFicykgLS0+XG4gIDx5dmMtdGFicyAqbmdTd2l0Y2hDYXNlPVwiJ3N0YWNrJ1wiIFtsYXlvdXRTZXR0aW5nc0lEXT1cImxheW91dFNldHRpbmdzSURcIj5cbiAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IGtleSBvZiBncm91cC5jb250cm9scyB8IGtleXM7IGluZGV4IGFzIGk7XCIgW3l2Y1RhYl09XCJ7aWQ6ICd0JyArIGksIFxuICAgIGhlYWRlclN0eWxlQ2xhc3M6ICdkaXJ0eS0nICsgZ3JvdXAuY29udHJvbHNba2V5XS5kaXJ0eSArICcgaW52YWxpZC0nICsgZ3JvdXAuY29udHJvbHNba2V5XS5pbnZhbGlkLFxuICAgIGxhYmVsOiBnZXRPYmplY3RGb3JtR3JvdXAoZ3JvdXAuY29udHJvbHNba2V5XSkubGFiZWx9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhY2tcIiBbbmdDbGFzc109XCJ7c3RhY2tCYXNlOiBncm91cC5fZW9Gb3JtR3JvdXAubGFiZWwgPT09ICdkYXRhJ31cIj5cblxuICAgICAgICA8ZW8tZm9ybS1lbGVtZW50IFtlbGVtZW50XT1cImdyb3VwLmNvbnRyb2xzW2tleV1cIlxuICAgICAgICAgICpuZ0lmPVwiZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGdyb3VwLmNvbnRyb2xzW2tleV0pOyBlbHNlIHN0a2dyb3VwXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlRBQkxFXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCJcbiAgICAgICAgICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsRm9ybUVsZW1lbnRUYWJsZTsgY29udGV4dDoge2VsZW1lbnQsIGZvcm1FbGVtZW50UmVmfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZW8tZm9ybS1lbGVtZW50PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3N0a2dyb3VwPlxuICAgICAgICAgIDxlby1mb3JtLWdyb3VwIFtncm91cF09XCJncm91cC5jb250cm9sc1trZXldXCIgW25vR3JvdXBMYWJlbHNdPVwidHJ1ZVwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGVcIj48L2VvLWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3l2Yy10YWJzPlxuXG4gIDwhLS0gZ3JvdXAgd2l0aCBsZWdlbmQgLS0+XG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidmaWVsZHNldCdcIiBjbGFzcz1cIm9tLWdyb3VwIGZpZWxkc2V0XCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZFwiPjxzcGFuPnt7Z3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsfX08L3NwYW4+PC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIGdyb3VwLmNvbnRyb2xzIHwga2V5c1wiPlxuICAgICAgICA8ZW8tZm9ybS1lbGVtZW50IFtlbGVtZW50XT1cImdyb3VwLmNvbnRyb2xzW2tleV1cIlxuICAgICAgICAgICpuZ0lmPVwiZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGdyb3VwLmNvbnRyb2xzW2tleV0pOyBlbHNlIGZzZ3JvdXBcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiXG4gICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiVEFCTEVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgICAgICAgICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxGb3JtRWxlbWVudFRhYmxlOyBjb250ZXh0OiB7ZWxlbWVudCwgZm9ybUVsZW1lbnRSZWZ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZnNncm91cD5cbiAgICAgICAgICA8ZW8tZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGVcIj48L2VvLWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBncm91cCAtLT5cbiAgPG5nLWNvbnRhaW5lciBjbGFzcz1cIm9tLWdyb3VwXCIgKm5nU3dpdGNoQ2FzZT1cIidncm91cCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgZ3JvdXAuY29udHJvbHMgfCBrZXlzXCI+XG5cbiAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiXG4gICAgICAgICpuZ0lmPVwiZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGdyb3VwLmNvbnRyb2xzW2tleV0pOyBlbHNlIG9tZ3JvdXBcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiXG4gICAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGVcIj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlRBQkxFXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCJcbiAgICAgICAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxGb3JtRWxlbWVudFRhYmxlOyBjb250ZXh0OiB7ZWxlbWVudCwgZm9ybUVsZW1lbnRSZWZ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvZW8tZm9ybS1lbGVtZW50PlxuICAgICAgPG5nLXRlbXBsYXRlICNvbWdyb3VwPlxuICAgICAgICA8ZW8tZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCIgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj5cblxuXG48bmctdGVtcGxhdGUgI3RwbEZvcm1FbGVtZW50VGFibGUgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgPGRpdiBjbGFzcz1cInRhYmxlXCI+XG4gICAgPGVvLXRhYmxlIFtwYXJhbXNdPVwie1xuc2l0dWF0aW9uOiBlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb24sXG5lbGVtZW50OiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudCxcbnNpemU6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNpemUsXG5vYmplY3Q6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm9iamVjdFxufVwiIFtmb3JtQ29udHJvbF09XCJlbGVtZW50LmdldChlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSlcIj48L2VvLXRhYmxlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -2,4 +2,4 @@ import { UntypedFormGroup } from '@angular/forms';
|
|
|
2
2
|
// extensions of the default angular form groups
|
|
3
3
|
export class ObjectFormGroup extends UntypedFormGroup {
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZ3JvdXAubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1ncm91cC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQWVoRCxnREFBZ0Q7QUFFaEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0NBRXBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW9Gb3JtR3JvdXAge1xuICBpZD86IHN0cmluZztcbiAgLy8gdGhlIGxhYmVsIGZvciB0aGUgZm9ybSBncm91cFxuICBsYWJlbD86IHN0cmluZztcbiAgLy8gb2JqZWN0IGhvbGRpbmcgcHJvcGVydGllcyBkZWZpbmluZyBsYXlvdXQgcHJvcGVydGllcyBvZiB0aGUgZ3JvdXBcbiAgbGF5b3V0OiBhbnk7XG4gIC8vIHR5cGUgb2YgZ3JvdXAgaW5kaWNhdGluZyBpZiB0aGUgZm9ybSBpcyBhIHN0YWNrLCBhIGZpZWxkc2V0IG9yIGEgc2ltcGxlIGdyb3VwXG4gIHR5cGU6IHN0cmluZztcbiAgLy8gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGdyb3VwcyBjaGlsZCBmb3JtIGNvbXBvbmVudHNcbiAgLy8ga2V5IGlzIHRoZSBjb250cm9scyBuYW1lLCB2YWx1ZSB0aGUgYWN0dWFsIGZvcm0gY29udHJvbCBvciAtZ3JvdXBcbiAgLy9jb250cm9scz86IGFueTtcbn1cblxuLy8gZXh0ZW5zaW9ucyBvZiB0aGUgZGVmYXVsdCBhbmd1bGFyIGZvcm0gZ3JvdXBzXG5cbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtR3JvdXAgZXh0ZW5kcyBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgcHVibGljIF9lb0Zvcm1Hcm91cDogRW9Gb3JtR3JvdXA7XG59XG4iXX0=
|
package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs
CHANGED
|
@@ -169,6 +169,7 @@ export class ObjectFormEditComponent {
|
|
|
169
169
|
.subscribe((model) => {
|
|
170
170
|
this.addExceptionIDsForIDReferenceFields(model);
|
|
171
171
|
this.formOptions = {
|
|
172
|
+
layoutSettingsID: dmsObject.type.name,
|
|
172
173
|
formModel: model,
|
|
173
174
|
data: dmsObject.data,
|
|
174
175
|
object: dmsObject,
|
|
@@ -212,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
212
213
|
}], indexDataSaved: [{
|
|
213
214
|
type: Output
|
|
214
215
|
}] } });
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1lZGl0L29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZWRpdC9vYmplY3QtZm9ybS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsT0FBTyxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUt6RSxPQUFPLEVBQTZELEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQVEvRixNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQ2hDLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFFNUIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztR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QyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzVFO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxTQUFvQjtRQUNyQyxPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQy9GLENBQUM7O29IQTVOVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix3TkFXdkIsbUJBQW1CLGdEQzVCaEMseXJEQThCQTsyRkRiYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO2lSQWVDLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVyQixZQUFZO3NCQUFwQixLQUFLO2dCQUdGLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxXQUFXO2dCQWtCUixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbmFsaXplLCBjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFb0Vycm9yLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgU3lzdGVtU2VydmljZSwgRG1zU2VydmljZSwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1mb3JtLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtRWRpdENvbXBvbmVudCB7XG5cbiAgc2hvd0NvbmZsaWN0RGlhbG9nID0gZmFsc2U7XG4gIGNvbmZsaWN0RXJyb3I6IGFueTtcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgLy8gZmV0Y2ggYSByZWZlcmVuY2UgdG8gdGhlIG9wYmplY3QgZm9ybSBjb21wb25lbnQgdG8gYmUgYWJsZSB0b1xuICAvLyBnZXQgdGhlIGZvcm0gZGF0YVxuICBAVmlld0NoaWxkKE9iamVjdEZvcm1Db21wb25lbnQpIG9iamVjdEZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XG5cbiAgQElucHV0KCkgZm9ybURpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZG1zT2JqZWN0JylcbiAgc2V0IGRtc09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIHRoaXMuX2Rtc09iamVjdCA9IGRtc09iamVjdDtcblxuICAgICAgLy8gcmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtXG4gICAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jb250cm9scy52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuY3JlYXRlT2JqZWN0Rm9ybShkbXNPYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkbXNPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rtc09iamVjdDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBpbmRleERhdGFTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBjb250cm9scyA9IHtcbiAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICBzYXZpbmc6IGZhbHNlXG4gIH07XG5cbiAgcHJpdmF0ZSBfZG1zT2JqZWN0OiBEbXNPYmplY3Q7XG4gIHByaXZhdGUgbWVzc2FnZXMgPSB7XG4gICAgZm9ybVN1Y2Nlc3M6IG51bGwsXG4gICAgZm9ybUVycm9yOiBudWxsXG4gIH07XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8uYXBwLmZvcm0uZWRpdCcsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5mb3JtLnRpdGxlJyksXG4gICAgbGFiZWxLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS50aXRsZScsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5mb3JtLmFjdGlvbi5zYXZlJyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnNhdmUnLFxuICAgICAgc2hvcnRjdXQ6ICdTJyxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9ybVN0YXRlIHx8ICF0aGlzLmZvcm1TdGF0ZS5kaXJ0eSB8fCB0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkIHx8ICFVdGlscy5pc1Zpc2libGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnJlc2V0JyksXG4gICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnJlc2V0JyxcbiAgICAgIHNob3J0Y3V0OiAnUicsXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmRpcnR5IHx8ICFVdGlscy5pc1Zpc2libGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLmVkaXQnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24uZWRpdCcsXG4gICAgICBzaG9ydGN1dDogJ0UnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub2JqZWN0Rm9ybS5mb2N1c0Zvcm0oKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKHRhcmdldCkgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9ybU9wdGlvbnMgfHwgIVV0aWxzLmlzVmlzaWJsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KSB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xuICAgICAgfVxuICAgIH1dXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoW1xuICAgICAgJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJyxcbiAgICAgICdlby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuZXJyb3InXG4gICAgXSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZXMuZm9ybVN1Y2Nlc3MgPSByZXNbJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJ107XG4gICAgICB0aGlzLm1lc3NhZ2VzLmZvcm1FcnJvciA9IHJlc1snZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmVycm9yJ107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0KSB7XG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XG4gICAgdGhpcy5jb250cm9scy52aXNpYmxlID0gdGhpcy5mb3JtU3RhdGUuZGlydHk7XG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvLyBzYXZlIHRoZSBjdXJyZW50IGRtcyBvYmplY3RcbiAgc2F2ZShpZ25vcmVDb25mbGljdHM/OiBib29sZWFuKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkgJiYgIXRoaXMuZm9ybVN0YXRlLmludmFsaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9scy5zYXZpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMub2JqZWN0Rm9ybS5nZXRGb3JtRGF0YSgpO1xuICAgICAgICBjb25zdCB7aWQsIHR5cGVOYW1lLCB2ZXJzaW9ufSA9IHRoaXMuX2Rtc09iamVjdDtcblxuICAgICAgICB0aGlzLmRtc1NlcnZpY2UudXBkYXRlT2JqZWN0KGlkLCBmb3JtRGF0YSwgdHlwZU5hbWUsIGlnbm9yZUNvbmZsaWN0cyA/IG51bGwgOiB2ZXJzaW9uLCBmYWxzZSlcbiAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmZpbmlzaFBlbmRpbmcoKSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgodXBkYXRlZE9iamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZG1zT2JqZWN0ID0gdXBkYXRlZE9iamVjdDtcbiAgICAgICAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZGF0YSA9IHVwZGF0ZWRPYmplY3QuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuZm9ybU9wdGlvbnMub2JqZWN0ID0gdXBkYXRlZE9iamVjdDtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMub2JqZWN0Rm9ybS5zZXRGb3JtUHJpc3RpbmUoKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhEYXRhU2F2ZWQuZW1pdChmb3JtRGF0YSk7XG4gICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb250cm9scy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmKGVyci5zdGF0dXMgPT09IDQwOSl7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmxpY3RFcnJvciA9IGVyci5lcnJvcjtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQ29uZmxpY3REaWFsb2coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRW9FcnJvcihlcnIsIHRoaXMuX2Rtc09iamVjdC50aXRsZSwgdGhpcy5tZXNzYWdlcy5mb3JtRXJyb3IsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgb3BlbkNvbmZsaWN0RGlhbG9nKCl7XG4gICAgdGhpcy5zaG93Q29uZmxpY3REaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VDb25mbGljdERpYWxvZygpe1xuICAgIHRoaXMuc2hvd0NvbmZsaWN0RGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBzaG93Q29uZmxpY3RDaGFuZ2VzKCl7XG4gICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHZlcnNpb246IHRoaXMuX2Rtc09iamVjdC52ZXJzaW9uLFxuICAgICAgICB2ZXJzaW9uMjogdGhpcy5jb25mbGljdEVycm9yLmRtc29iamVjdC52ZXJzaW9uXG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgdmVyc2lvbnMvJHt0aGlzLl9kbXNPYmplY3QuaWR9YF0sIG5hdmlnYXRpb25FeHRyYXMpLnRvU3RyaW5nKCkucmVwbGFjZSgvXlxcLysvZywgJycpO1xuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICB9XG5cbiAgY2FuY2VsU2F2aW5nKCl7XG4gICAgdGhpcy5jbG9zZUNvbmZsaWN0RGlhbG9nKCk7XG4gIH1cblxuICAvLyByZXNldCB0aGUgZm9ybSB0byBpdHMgaW5pdGlhbCBzdGF0ZVxuICByZXNldCgpIHtcbiAgICB0aGlzLm9iamVjdEZvcm0ucmVzZXRGb3JtKCk7XG4gIH1cblxuICAvLyBjcmVhdGUgdGhlIGZvcm1PcHRpb25zIHJlcXVpcmVkIGJ5IG9iamVjdCBmb3JtIGNvbXBvbmVudFxuICBwcml2YXRlIGNyZWF0ZU9iamVjdEZvcm0oZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcblxuICAgIHRoaXMuc3lzdGVtU2VydmljZVxuICAgICAgLmdldE9iamVjdFR5cGVGb3JtKGRtc09iamVjdC50eXBlLm5hbWUsICdFRElUJylcbiAgICAgIC5zdWJzY3JpYmUoKG1vZGVsKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRXhjZXB0aW9uSURzRm9ySURSZWZlcmVuY2VGaWVsZHMobW9kZWwpO1xuICAgICAgICB0aGlzLmZvcm1PcHRpb25zID0ge1xuICAgICAgICAgIGZvcm1Nb2RlbDogbW9kZWwsXG4gICAgICAgICAgZGF0YTogZG1zT2JqZWN0LmRhdGEsXG4gICAgICAgICAgb2JqZWN0OiBkbXNPYmplY3QsXG4gICAgICAgICAgb2JqZWN0SWQ6IGRtc09iamVjdC5pZCxcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy5mb3JtRGlzYWJsZWQgfHwgIXRoaXMuaXNFZGl0YWJsZShkbXNPYmplY3QpXG4gICAgICAgIH07XG4gICAgICAgIGlmIChkbXNPYmplY3QuY29udGV4dEZvbGRlcikge1xuICAgICAgICAgIHRoaXMuZm9ybU9wdGlvbnMuY29udGV4dCA9IHtcbiAgICAgICAgICAgIGlkOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci50aXRsZSxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV4Y2VwdGlvbklEc0ZvcklEUmVmZXJlbmNlRmllbGRzKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAobW9kZWwudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgIG1vZGVsLmV4Y2VwdGlvbklEcyA9IFt0aGlzLl9kbXNPYmplY3QuaWRdO1xuICAgIH0gZWxzZSBpZihtb2RlbC5lbGVtZW50cykge1xuICAgICAgbW9kZWwuZWxlbWVudHMuZm9yRWFjaChlbCA9PiB0aGlzLmFkZEV4Y2VwdGlvbklEc0ZvcklEUmVmZXJlbmNlRmllbGRzKGVsKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0VkaXRhYmxlKGRtc09iamVjdDogRG1zT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRtc09iamVjdC5oYXNPd25Qcm9wZXJ0eSgncmlnaHRzJykgJiYgZG1zT2JqZWN0LnJpZ2h0cy5lZGl0ICYmICFkbXNPYmplY3QuaXNGaW5hbGl6ZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvYmplY3QtZm9ybS1lZGl0XCIgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGZvcm1TdGF0ZT8uaW52YWxpZCA9PT0gdHJ1ZX1cIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gIDxlby1vYmplY3QtZm9ybSBbZm9ybU9wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIiAqbmdJZj1cImZvcm1PcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgIChzdGF0dXNDaGFuZ2VkKT1cIm9uRm9ybVN0YXR1c0NoYW5nZWQoJGV2ZW50KVwiPjwvZW8tb2JqZWN0LWZvcm0+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbHNcIiAqbmdJZj1cImNvbnRyb2xzLnZpc2libGVcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJlcnItbXNnXCIgKm5nSWY9XCJmb3JtU3RhdGU/LmludmFsaWRcIiB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5mb3JtLmludmFsaWQ8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicmVzZXQoKVwiIFtkaXNhYmxlZF09XCJjb250cm9scy5zYXZpbmdcIiB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5yZXNldDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiBbbmdDbGFzc109XCJ7c3Bpbm5lcjogY29udHJvbHMuc2F2aW5nfVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGU/LmludmFsaWQgfHwgY29udHJvbHMuc2F2aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmU8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuY29uZmxpY3QuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZSA6IHttb2RpZmllcjogY29uZmxpY3RFcnJvcj8uZG1zb2JqZWN0Lm1vZGlmaWVkLmJ5LmZpcnN0bmFtZSArICcgJyArIGNvbmZsaWN0RXJyb3I/LmRtc29iamVjdC5tb2RpZmllZC5ieS5sYXN0bmFtZX0pXCJcbiAgKGhpZGUpPVwiY29udHJvbHMuc2F2aW5nID0gZmFsc2U7XCIgWyh2aXNpYmxlKV09XCJzaG93Q29uZmxpY3REaWFsb2dcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ2NvbmZsaWN0X19kaWFsb2cnXCI+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGNvbmZsaWN0LS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJjYW5jZWxTYXZpbmcoKVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93Q29uZmxpY3RDaGFuZ2VzKClcIlxuICAgICAgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5jaGFuZ2VzPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUodHJ1ZSk7IGNsb3NlQ29uZmxpY3REaWFsb2coKTtcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz5cbiJdfQ==
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1lZGl0L29iamVjdC1mb3JtLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZWRpdC9vYmplY3QtZm9ybS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsT0FBTyxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUt6RSxPQUFPLEVBQTZELEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQVEvRixNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQ2hDLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFFNUIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztR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UUFBUSxFQUFFO1lBQ3hCLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLFNBQW9CO1FBQ3JDLE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFDL0YsQ0FBQzs7b0hBN05VLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHdOQVd2QixtQkFBbUIsZ0RDNUJoQyx5ckRBOEJBOzJGRGJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7aVJBZUMsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBRXJCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0YsU0FBUztzQkFEWixLQUFLO3VCQUFDLFdBQVc7Z0JBa0JSLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7ZmluYWxpemUsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VvRXJyb3IsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vb2JqZWN0LWZvcm0tb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7RG1zT2JqZWN0LCBTeXN0ZW1TZXJ2aWNlLCBEbXNTZXJ2aWNlLCBOb3RpZmljYXRpb25zU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tb2JqZWN0LWZvcm0tZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZm9ybS1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWZvcm0tZWRpdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1FZGl0Q29tcG9uZW50IHtcblxuICBzaG93Q29uZmxpY3REaWFsb2cgPSBmYWxzZTtcbiAgY29uZmxpY3RFcnJvcjogYW55O1xuXG4gIC8vIElEIHNldCBieSBwZW5kaW5nQ2hhbmdlcyBzZXJ2aWNlIHdoZW4gZWRpdGluZyBpbmRleGRhdGFcbiAgLy8gVXNlZCB0byBmaW5pc2ggdGhlIHBlbmRpbmcgdGFzayB3aGVuIGVkaXRpbmcgaXMgZG9uZVxuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcblxuICAvLyBmZXRjaCBhIHJlZmVyZW5jZSB0byB0aGUgb3BiamVjdCBmb3JtIGNvbXBvbmVudCB0byBiZSBhYmxlIHRvXG4gIC8vIGdldCB0aGUgZm9ybSBkYXRhXG4gIEBWaWV3Q2hpbGQoT2JqZWN0Rm9ybUNvbXBvbmVudCkgb2JqZWN0Rm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcblxuICBASW5wdXQoKSBmb3JtRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCdkbXNPYmplY3QnKVxuICBzZXQgZG1zT2JqZWN0KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XG4gICAgaWYgKGRtc09iamVjdCkge1xuICAgICAgdGhpcy5fZG1zT2JqZWN0ID0gZG1zT2JqZWN0O1xuXG4gICAgICAvLyByZXNldCB0aGUgc3RhdGUgb2YgdGhlIGZvcm1cbiAgICAgIHRoaXMuZm9ybVN0YXRlID0gbnVsbDtcbiAgICAgIHRoaXMuY29udHJvbHMuc2F2aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNvbnRyb2xzLnZpc2libGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5jcmVhdGVPYmplY3RGb3JtKGRtc09iamVjdCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRtc09iamVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG1zT2JqZWN0O1xuICB9XG5cbiAgQE91dHB1dCgpIGluZGV4RGF0YVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICBmb3JtU3RhdGU6IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQ7XG4gIGNvbnRyb2xzID0ge1xuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIHNhdmluZzogZmFsc2VcbiAgfTtcblxuICBwcml2YXRlIF9kbXNPYmplY3Q6IERtc09iamVjdDtcbiAgcHJpdmF0ZSBtZXNzYWdlcyA9IHtcbiAgICBmb3JtU3VjY2VzczogbnVsbCxcbiAgICBmb3JtRXJyb3I6IG51bGxcbiAgfTtcblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5hcHAuZm9ybS5lZGl0JyxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0udGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLnNob3J0Y3V0cy5mb3JtLnRpdGxlJyxcbiAgICBhY3Rpb25zOiBbe1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmZvcm0uYWN0aW9uLnNhdmUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24uc2F2ZScsXG4gICAgICBzaG9ydGN1dDogJ1MnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmRpcnR5IHx8IHRoaXMuZm9ybVN0YXRlLmludmFsaWQgfHwgIVV0aWxzLmlzVmlzaWJsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24ucmVzZXQnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24ucmVzZXQnLFxuICAgICAgc2hvcnRjdXQ6ICdSJyxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZvcm1TdGF0ZSB8fCAhdGhpcy5mb3JtU3RhdGUuZGlydHkgfHwgIVV0aWxzLmlzVmlzaWJsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuZm9ybS5hY3Rpb24uZWRpdCcpLFxuICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5mb3JtLmFjdGlvbi5lZGl0JyxcbiAgICAgIHNob3J0Y3V0OiAnRScsXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5vYmplY3RGb3JtLmZvY3VzRm9ybSgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAodGFyZ2V0KSA9PiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb3JtT3B0aW9ucyB8fCAhVXRpbHMuaXNWaXNpYmxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQpIHx8IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5vdGljYXRpb246IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcblxuICAgIHRoaXMudHJhbnNsYXRlLmdldChbXG4gICAgICAnZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLnN1Y2Nlc3MnLFxuICAgICAgJ2VvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5lcnJvcidcbiAgICBdKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcy5mb3JtU3VjY2VzcyA9IHJlc1snZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLnN1Y2Nlc3MnXTtcbiAgICAgIHRoaXMubWVzc2FnZXMuZm9ybUVycm9yID0gcmVzWydlby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuZXJyb3InXTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQZW5kaW5nKCkge1xuICAgIC8vIGJlY2F1c2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZm9ybSBzdGF0dXMgY2hhbmdlcyxcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2sodGhpcy5wZW5kaW5nVGFza0lkIHx8ICcgJykpIHtcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMuZmluaXNoVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQpO1xuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChldnQpIHtcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IGV2dDtcbiAgICB0aGlzLmNvbnRyb2xzLnZpc2libGUgPSB0aGlzLmZvcm1TdGF0ZS5kaXJ0eTtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNhdmUgdGhlIGN1cnJlbnQgZG1zIG9iamVjdFxuICBzYXZlKGlnbm9yZUNvbmZsaWN0cz86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5vYmplY3RGb3JtLmdldEZvcm1EYXRhKCk7XG4gICAgICAgIGNvbnN0IHtpZCwgdHlwZU5hbWUsIHZlcnNpb259ID0gdGhpcy5fZG1zT2JqZWN0O1xuXG4gICAgICAgIHRoaXMuZG1zU2VydmljZS51cGRhdGVPYmplY3QoaWQsIGZvcm1EYXRhLCB0eXBlTmFtZSwgaWdub3JlQ29uZmxpY3RzID8gbnVsbCA6IHZlcnNpb24sIGZhbHNlKVxuICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuZmluaXNoUGVuZGluZygpKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh1cGRhdGVkT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kbXNPYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5kYXRhID0gdXBkYXRlZE9iamVjdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5vYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy5jb250cm9scy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RGb3JtLnNldEZvcm1QcmlzdGluZSgpO1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFTYXZlZC5lbWl0KGZvcm1EYXRhKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYoZXJyLnN0YXR1cyA9PT0gNDA5KXtcbiAgICAgICAgICAgICAgdGhpcy5jb25mbGljdEVycm9yID0gZXJyLmVycm9yO1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Db25mbGljdERpYWxvZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFb0Vycm9yKGVyciwgdGhpcy5fZG1zT2JqZWN0LnRpdGxlLCB0aGlzLm1lc3NhZ2VzLmZvcm1FcnJvciwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBvcGVuQ29uZmxpY3REaWFsb2coKXtcbiAgICB0aGlzLnNob3dDb25mbGljdERpYWxvZyA9IHRydWU7XG4gIH1cblxuICBjbG9zZUNvbmZsaWN0RGlhbG9nKCl7XG4gICAgdGhpcy5zaG93Q29uZmxpY3REaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25mbGljdENoYW5nZXMoKXtcbiAgICBjb25zdCBuYXZpZ2F0aW9uRXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgdmVyc2lvbjogdGhpcy5fZG1zT2JqZWN0LnZlcnNpb24sXG4gICAgICAgIHZlcnNpb24yOiB0aGlzLmNvbmZsaWN0RXJyb3IuZG1zb2JqZWN0LnZlcnNpb25cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2B2ZXJzaW9ucy8ke3RoaXMuX2Rtc09iamVjdC5pZH1gXSwgbmF2aWdhdGlvbkV4dHJhcykudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFwvKy9nLCAnJyk7XG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gIH1cblxuICBjYW5jZWxTYXZpbmcoKXtcbiAgICB0aGlzLmNsb3NlQ29uZmxpY3REaWFsb2coKTtcbiAgfVxuXG4gIC8vIHJlc2V0IHRoZSBmb3JtIHRvIGl0cyBpbml0aWFsIHN0YXRlXG4gIHJlc2V0KCkge1xuICAgIHRoaXMub2JqZWN0Rm9ybS5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgZm9ybU9wdGlvbnMgcmVxdWlyZWQgYnkgb2JqZWN0IGZvcm0gY29tcG9uZW50XG4gIHByaXZhdGUgY3JlYXRlT2JqZWN0Rm9ybShkbXNPYmplY3Q6IERtc09iamVjdCkge1xuXG4gICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXG4gICAgICAuZ2V0T2JqZWN0VHlwZUZvcm0oZG1zT2JqZWN0LnR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnN1YnNjcmliZSgobW9kZWwpID0+IHtcbiAgICAgICAgdGhpcy5hZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhtb2RlbCk7XG4gICAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XG4gICAgICAgICAgbGF5b3V0U2V0dGluZ3NJRDogZG1zT2JqZWN0LnR5cGUubmFtZSxcbiAgICAgICAgICBmb3JtTW9kZWw6IG1vZGVsLFxuICAgICAgICAgIGRhdGE6IGRtc09iamVjdC5kYXRhLFxuICAgICAgICAgIG9iamVjdDogZG1zT2JqZWN0LFxuICAgICAgICAgIG9iamVjdElkOiBkbXNPYmplY3QuaWQsXG4gICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZm9ybURpc2FibGVkIHx8ICF0aGlzLmlzRWRpdGFibGUoZG1zT2JqZWN0KVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgICAgICB0aGlzLmZvcm1PcHRpb25zLmNvbnRleHQgPSB7XG4gICAgICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgICAgICB0eXBlTmFtZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhtb2RlbDogYW55KSB7XG4gICAgaWYgKG1vZGVsLnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICBtb2RlbC5leGNlcHRpb25JRHMgPSBbdGhpcy5fZG1zT2JqZWN0LmlkXTtcbiAgICB9IGVsc2UgaWYobW9kZWwuZWxlbWVudHMpIHtcbiAgICAgIG1vZGVsLmVsZW1lbnRzLmZvckVhY2goZWwgPT4gdGhpcy5hZGRFeGNlcHRpb25JRHNGb3JJRFJlZmVyZW5jZUZpZWxkcyhlbCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFZGl0YWJsZShkbXNPYmplY3Q6IERtc09iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkbXNPYmplY3QuaGFzT3duUHJvcGVydHkoJ3JpZ2h0cycpICYmIGRtc09iamVjdC5yaWdodHMuZWRpdCAmJiAhZG1zT2JqZWN0LmlzRmluYWxpemVkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tZWRpdFwiIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBmb3JtU3RhdGU/LmludmFsaWQgPT09IHRydWV9XCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiPlxuICA8ZW8tb2JqZWN0LWZvcm0gW2Zvcm1PcHRpb25zXT1cImZvcm1PcHRpb25zXCIgKm5nSWY9XCJmb3JtT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlZCk9XCJvbkZvcm1TdGF0dXNDaGFuZ2VkKCRldmVudClcIj48L2VvLW9iamVjdC1mb3JtPlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2xzXCIgKm5nSWY9XCJjb250cm9scy52aXNpYmxlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyLW1zZ1wiICpuZ0lmPVwiZm9ybVN0YXRlPy5pbnZhbGlkXCIgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEuZm9ybS5pbnZhbGlkPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cInJlc2V0KClcIiBbZGlzYWJsZWRdPVwiY29udHJvbHMuc2F2aW5nXCIgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEucmVzZXQ8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgW25nQ2xhc3NdPVwie3NwaW5uZXI6IGNvbnRyb2xzLnNhdmluZ31cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8IGNvbnRyb2xzLnNhdmluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIiB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIignZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlLmNvbmZsaWN0LmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGUgOiB7bW9kaWZpZXI6IGNvbmZsaWN0RXJyb3I/LmRtc29iamVjdC5tb2RpZmllZC5ieS5maXJzdG5hbWUgKyAnICcgKyBjb25mbGljdEVycm9yPy5kbXNvYmplY3QubW9kaWZpZWQuYnkubGFzdG5hbWV9KVwiXG4gIChoaWRlKT1cImNvbnRyb2xzLnNhdmluZyA9IGZhbHNlO1wiIFsodmlzaWJsZSldPVwic2hvd0NvbmZsaWN0RGlhbG9nXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidjb25mbGljdF9fZGlhbG9nJ1wiPlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBjb25mbGljdC0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsU2F2aW5nKClcIlxuICAgICAgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEuc2F2ZS5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0NvbmZsaWN0Q2hhbmdlcygpXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmUuY2hhbmdlczwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKHRydWUpOyBjbG9zZUNvbmZsaWN0RGlhbG9nKCk7XCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ub2JqZWN0LmluZGV4ZGF0YS5zYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=
|