@provoly/dashboard 0.20.3 → 0.20.4
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/components/metadata-editor/style/_o-metadata-editor.scss +0 -5
- package/dataset/style/_o-pry-dataset-card.scss +5 -37
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +15 -10
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +3 -3
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -3
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +3 -3
- package/esm2022/components/metadata-editor/style/css.component.mjs +2 -2
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +3 -3
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +1 -2
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +13 -6
- package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/filters/autocomplete/style/css.component.mjs +2 -2
- package/esm2022/filters/list/list-filter.component.mjs +1 -1
- package/esm2022/import/components/import.component.mjs +3 -3
- package/esm2022/lib/core/components/ellipsis.directive.mjs +31 -0
- package/esm2022/lib/core/components/select/select.component.mjs +163 -38
- package/esm2022/lib/core/components/select/select.module.mjs +4 -5
- package/esm2022/lib/core/components/share/share.component.mjs +3 -3
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +7 -8
- package/esm2022/lib/core/core.module.mjs +8 -4
- package/esm2022/lib/core/i18n/en.translations.mjs +7 -5
- package/esm2022/lib/core/i18n/fr.translations.mjs +8 -5
- package/esm2022/lib/core/model/display-options.interface.mjs +18 -4
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +2 -1
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +1 -4
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -15
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +3 -3
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +3 -3
- package/esm2022/lib/dashboard/filter/style/css.component.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -4
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +3 -3
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +3 -3
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +3 -3
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
- package/esm2022/presentation/components/presentation.component.mjs +3 -3
- package/esm2022/presentation/i18n/fr.translations.mjs +9 -9
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +23 -22
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +13 -6
- package/esm2022/restitution/i18n/en.translations.mjs +2 -2
- package/esm2022/restitution/i18n/fr.translations.mjs +4 -4
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +3 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +3 -3
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +3 -3
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +4 -4
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +3 -3
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
- package/esm2022/toolbox/components/toolbox.component.mjs +4 -3
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +8 -2
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +8 -7
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +3 -4
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -3
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +10 -4
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +7 -7
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +3 -3
- package/fesm2022/provoly-dashboard-admin.mjs +38 -33
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +4 -4
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +2 -2
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +5 -6
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +18 -11
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +2 -2
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +14 -14
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +39 -31
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +8 -8
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-supervision.mjs +2 -2
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +22 -21
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +7 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +7 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +2 -3
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +2 -2
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +15 -7
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +6 -6
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +2 -2
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +245 -90
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/filters/autocomplete/autocomplete.component.d.ts +1 -0
- package/filters/autocomplete/autocomplete.module.d.ts +1 -1
- package/filters/autocomplete/style/_m-autocomplete.scss +16 -3
- package/lib/core/components/ellipsis.directive.d.ts +11 -0
- package/lib/core/components/select/select.component.d.ts +39 -19
- package/lib/core/components/select/select.module.d.ts +4 -5
- package/lib/core/components/translate-id/translate-id.pipe.d.ts +1 -3
- package/lib/core/core.module.d.ts +15 -14
- package/lib/core/i18n/en.translations.d.ts +4 -2
- package/lib/core/i18n/fr.translations.d.ts +5 -2
- package/lib/core/model/display-options.interface.d.ts +11 -0
- package/lib/core/model/manifest.interface.d.ts +1 -5
- package/lib/core/public-api.d.ts +1 -0
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +2 -5
- package/lib/dashboard/filter/style/_o-pry-filter-group.scss +0 -11
- package/lib/dashboard/store/dashboard.effects.d.ts +0 -1
- package/lib/dashboard/store/dashboard.selectors.d.ts +0 -9
- package/package.json +1 -2
- package/presentation/style/_o-pry-new-presentation.scss +0 -7
- package/presentation/style/_o-pry-presentation.scss +20 -55
- package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +1 -1
- package/restitution/i18n/en.translations.d.ts +1 -1
- package/restitution/i18n/fr.translations.d.ts +3 -3
- package/schematics/migration.json +6 -1
- package/schematics/ng-update/version-0-20/index.d.ts +2 -0
- package/schematics/ng-update/version-0-20/index.js +19 -0
- package/schematics/ng-update/version-0-20/index.js.map +1 -0
- package/styles/components/_a-pry-select.scss +34 -10
- package/styles/components/_a-tooltip.scss +2 -2
- package/styles/components/_m-filter.scss +11 -20
- package/styles/components/_o-dashboard.scss +4 -0
- package/styles/components/_o-draggable-menu.scss +1 -1
- package/styles/components/_o-widget.scss +2 -2
- package/styles/main.scss +0 -1
- package/styles-theme/abstracts-theme/variables/_variables-typo.scss +9 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +23 -96
- package/styles-theme/components-theme/_a-tooltip.theme.scss +2 -2
- package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +0 -12
- package/toolbox/components/toolbox.component.d.ts +1 -0
- package/tooltips/attribute/attribute-tooltip.component.d.ts +1 -0
- package/widgets/widget-chart/component/widget-chart.component.d.ts +0 -1
- package/widgets/widget-map/component/widget-map.component.d.ts +2 -0
- package/widgets/widget-map/i18n/en.translations.d.ts +1 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +1 -0
- package/widgets/widget-map/style/_o-layer-legend.scss +21 -0
|
@@ -188,7 +188,7 @@ export class PryFilterSettingsComponent extends ToolboxActionComponent {
|
|
|
188
188
|
}
|
|
189
189
|
goToCreation() {
|
|
190
190
|
this.currentFilterComponentType$.next('');
|
|
191
|
-
this.currentStep = FilterSteps.
|
|
191
|
+
this.currentStep = FilterSteps.CREATION;
|
|
192
192
|
}
|
|
193
193
|
submitFilter() {
|
|
194
194
|
this.store.dispatch(DashboardActions.updateFilters({ filter: this.filter }));
|
|
@@ -222,11 +222,11 @@ export class PryFilterSettingsComponent extends ToolboxActionComponent {
|
|
|
222
222
|
});
|
|
223
223
|
}
|
|
224
224
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryFilterSettingsComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.FilterFactoryService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
225
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryFilterSettingsComponent, selector: "pry-filter-settings", inputs: { label: "label" }, viewQueries: [{ propertyName: "templateSettings", first: true, predicate: ["settings"], descendants: true, read: TemplateRef }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-toolbox-css></pry-toolbox-css>\n<div\n class=\"save-manifest-container a-tooltip\"\n [attr.data-tooltip]=\"'@pry.filters.label' | i18n\"\n data-tooltip-position=\"bottom\"\n>\n <div style=\"display: none\">\n <ng-template #container></ng-template>\n </div>\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary -size-md\"\n [disabled]=\"(attributes$ | async)?.length === 0\"\n (click)=\"toggleSettings()\"\n aria-haspopup=\"dialog\"\n >\n <ng-container *ngIf=\"label\">{{ '@pry.filters.label' | i18n }}</ng-container>\n </button>\n</div>\n\n<ng-template #settings>\n <div class=\"o-filters\">\n <div class=\"o-filters__header\">\n <ng-container *ngIf=\"currentStep === FilterSteps.LIST\">\n <h2>Param\u00E9trer les filtres</h2>\n </ng-container>\n <ng-container *ngIf=\"currentStep === FilterSteps.CREATION || currentStep === FilterSteps.EDITION\">\n <div class=\"u-display-flex -row -align-center\">\n <button (click)=\"goBack()\" type=\"button\" class=\"back-button\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n <h2>\n {{\n (currentStep === FilterSteps.CREATION ? '@pry.filters.creation.create' : '@pry.filters.creation.update')\n | i18n\n }}\n </h2>\n </div>\n </ng-container>\n <button (click)=\"toggleSettings()\" type=\"button\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <ng-container *ngIf=\"currentStep === FilterSteps.LIST\">\n <div class=\"o-filters__content\">\n <div *ngIf=\"(attributes$ | async)?.length === 0; else attributesExists\" class=\"a-table-wrapper\"></div>\n <ng-template #attributesExists>\n <table *ngIf=\"filters.length > 0; else noFilters\" class=\"a-table\">\n <tbody cdkDropList [cdkDropListData]=\"filters\" (cdkDropListDropped)=\"drop($event)\">\n <tr *ngFor=\"let filter of filters\" class=\"o-filters__filter\" cdkDrag>\n <td>\n <span>{{ filter.name }}</span>\n </td>\n <td>\n <span>{{ getFilterAttributes(filter, 3) }}</span>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"deleteFilter(filter.id)\">\n {{ '@pry.action.delete' | i18n }}\n </button>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"goToEdition(filter)\">\n {{ '@pry.filters.list.modify' | i18n }}\n </button>\n </td>\n <td cdkDragHandle>\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-template #noFilters>\n <span class=\"o-filters__no-filters\">{{ '@pry.filters.noFilters' | i18n }}</span>\n </ng-template>\n <button (click)=\"goToCreation()\" class=\"a-btn a-btn--primary\">{{ '@pry.filters.list.add' | i18n }}</button>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"currentStep === FilterSteps.CREATION || currentStep === FilterSteps.EDITION\">\n <div class=\"o-filters__content\">\n <div class=\"m-form-label-field\">\n <label for=\"filterName\" class=\"a-label\">{{ '@pry.filters.creation.name' | i18n }}</label>\n <input id=\"filterName\" class=\"a-form-field\" type=\"text\" [(ngModel)]=\"filter.name\" />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"filterType\" class=\"a-label\">{{ '@pry.filters.creation.type' | i18n }}</label>\n <pry-select\n id=\"filterType\"\n [labelTranslate]=\"true\"\n [itemsAsOption]=\"true\"\n [placeholder]=\"'@pry.filters.creation.type' | i18n\"\n [items]=\"types$ | async\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [(ngModel)]=\"filter.type\"\n (ngModelChange)=\"updateFilterType($event)\"\n >\n </pry-select>\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'date'\" class=\"m-form-label-field u-display-flex -row\">\n <label for=\"date-range\" class=\"a-label\">Plage de dates</label>\n <pry-checkbox\n id=\"date-range\"\n [(ngModel)]=\"filter.hasDateRange\"\n (ngModelChange)=\"this.currentOperators$.next(getOperators())\"\n />\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'list'\" class=\"m-form-label-field\">\n <label for=\"possibleValues\" class=\"a-label\">{{ '@pry.filters.creation.values' | i18n }}</label>\n <input\n id=\"possibleValues\"\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"filter.possibleValues\"\n placeholder=\"valeur1, valeur2, valeur3\"\n />\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'autocomplete'\" class=\"m-form-label-field\">\n <label for=\"limit\" class=\"a-label\">{{ '@pry.filters.creation.limit' | i18n }}</label>\n <input id=\"limit\" class=\"a-form-field\" type=\"number\" min=\"0\" max=\"50\" [(ngModel)]=\"filter.limit\" />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"attributes\" class=\"a-label\">{{ '@pry.filters.creation.attributes' | i18n }}</label>\n <pry-select\n id=\"attributes\"\n [labelTranslate]=\"false\"\n [itemsAsOption]=\"true\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [items]=\"attributes$ | async\"\n [ngModel]=\"filter.attributes\"\n (ngModelChange)=\"selectAttribute($event)\"\n [placeholder]=\"'@pry.filters.creation.attributes' | i18n\"\n [autocomplete]=\"true\"\n bindLabel=\"label\"\n >\n </pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"operations\" class=\"a-label\">{{ '@pry.filters.attributes.operator' | i18n }}</label>\n <pry-select\n id=\"operations\"\n [labelTranslate]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"currentOperators$ | async\"\n [(ngModel)]=\"filter.operator\"\n [placeholder]=\"'@pry.filters.attributes.operator' | i18n\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"(currentFilterComponentType$ | async) === 'list'\"\n >\n </pry-select>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"submitFilter()\"\n [disabled]=\"!(filter.name && filter.type && filter.attributes.length !== 0 && filter.operator)\"\n type=\"submit\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.PrySelectGridLayoutCssComponent, selector: "pry-toolbox-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryFilterSettingsComponent, selector: "pry-filter-settings", inputs: { label: "label" }, viewQueries: [{ propertyName: "templateSettings", first: true, predicate: ["settings"], descendants: true, read: TemplateRef }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-toolbox-css></pry-toolbox-css>\n<div class=\"save-manifest-container\">\n <div style=\"display: none\">\n <ng-template #container></ng-template>\n </div>\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary -size-md\"\n [disabled]=\"(attributes$ | async)?.length === 0\"\n (click)=\"toggleSettings()\"\n aria-haspopup=\"dialog\"\n >\n <ng-container *ngIf=\"label\">{{ '@pry.filters.label' | i18n }}</ng-container>\n </button>\n</div>\n\n<ng-template #settings>\n <div class=\"o-filters\">\n <div class=\"o-filters__header\">\n <ng-container *ngIf=\"currentStep === FilterSteps.LIST\">\n <h2>{{ '@pry.filters.label' | i18n }}</h2>\n </ng-container>\n <ng-container *ngIf=\"currentStep === FilterSteps.CREATION || currentStep === FilterSteps.EDITION\">\n <div class=\"u-display-flex -row -align-center\">\n <button (click)=\"goBack()\" type=\"button\" class=\"back-button\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n <h2>\n {{\n (currentStep === FilterSteps.CREATION ? '@pry.filters.creation.create' : '@pry.filters.creation.update')\n | i18n\n }}\n </h2>\n </div>\n </ng-container>\n <button (click)=\"toggleSettings()\" type=\"button\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <ng-container *ngIf=\"currentStep === FilterSteps.LIST\">\n <div class=\"o-filters__content\">\n <div *ngIf=\"(attributes$ | async)?.length === 0; else attributesExists\" class=\"a-table-wrapper\"></div>\n <ng-template #attributesExists>\n <table *ngIf=\"filters.length > 0; else noFilters\" class=\"a-table\">\n <tbody cdkDropList [cdkDropListData]=\"filters\" (cdkDropListDropped)=\"drop($event)\">\n <tr *ngFor=\"let filter of filters\" class=\"o-filters__filter\" cdkDrag>\n <td>\n <span>{{ filter.name }}</span>\n </td>\n <td>\n <span>{{ getFilterAttributes(filter, 3) }}</span>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"deleteFilter(filter.id)\">\n {{ '@pry.action.delete' | i18n }}\n </button>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"goToEdition(filter)\">\n {{ '@pry.filters.list.modify' | i18n }}\n </button>\n </td>\n <td cdkDragHandle>\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-template #noFilters>\n <span class=\"o-filters__no-filters\">{{ '@pry.filters.noFilters' | i18n }}</span>\n </ng-template>\n <button (click)=\"goToCreation()\" class=\"a-btn a-btn--primary\">{{ '@pry.filters.list.add' | i18n }}</button>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"currentStep === FilterSteps.CREATION || currentStep === FilterSteps.EDITION\">\n <div class=\"o-filters__content\">\n <div class=\"m-form-label-field\">\n <label for=\"filterName\" class=\"a-label\">{{ '@pry.filters.creation.name' | i18n }}</label>\n <input id=\"filterName\" class=\"a-form-field\" type=\"text\" [(ngModel)]=\"filter.name\" />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"filterType\" class=\"a-label\">{{ '@pry.filters.creation.type' | i18n }}</label>\n <pry-select\n id=\"filterType\"\n [placeholder]=\"'@pry.filters.creation.type' | i18n\"\n [items]=\"types$ | async\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [(ngModel)]=\"filter.type\"\n (ngModelChange)=\"updateFilterType($event)\"\n >\n </pry-select>\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'date'\" class=\"m-form-label-field u-display-flex -row\">\n <label for=\"date-range\" class=\"a-label\">{{ '@pry.filters.creation.dateRange' | i18n }}</label>\n <pry-checkbox\n id=\"date-range\"\n [(ngModel)]=\"filter.hasDateRange\"\n (ngModelChange)=\"this.currentOperators$.next(getOperators())\"\n />\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'list'\" class=\"m-form-label-field\">\n <label for=\"possibleValues\" class=\"a-label\">{{ '@pry.filters.creation.values' | i18n }}</label>\n <input\n id=\"possibleValues\"\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"filter.possibleValues\"\n placeholder=\"valeur1, valeur2, valeur3\"\n />\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'autocomplete'\" class=\"m-form-label-field\">\n <label for=\"limit\" class=\"a-label\">{{ '@pry.filters.creation.limit' | i18n }}</label>\n <input id=\"limit\" class=\"a-form-field\" type=\"number\" min=\"0\" max=\"50\" [(ngModel)]=\"filter.limit\" />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"attributes\" class=\"a-label\">{{ '@pry.filters.creation.attributes' | i18n }}</label>\n <pry-select\n id=\"attributes\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [items]=\"attributes$ | async\"\n [ngModel]=\"filter.attributes\"\n (ngModelChange)=\"selectAttribute($event)\"\n [placeholder]=\"'@pry.filters.creation.attributes' | i18n\"\n [autocomplete]=\"true\"\n bindLabel=\"label\"\n >\n </pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"operations\" class=\"a-label\">{{ '@pry.filters.attributes.operator' | i18n }}</label>\n <pry-select\n id=\"operations\"\n [items]=\"currentOperators$ | async\"\n [(ngModel)]=\"filter.operator\"\n [placeholder]=\"'@pry.filters.attributes.operator' | i18n\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"(currentFilterComponentType$ | async) === 'list'\"\n >\n </pry-select>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"submitFilter()\"\n [disabled]=\"!(filter.name && filter.type && filter.attributes.length !== 0 && filter.operator)\"\n type=\"submit\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.PrySelectGridLayoutCssComponent, selector: "pry-toolbox-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
226
226
|
}
|
|
227
227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryFilterSettingsComponent, decorators: [{
|
|
228
228
|
type: Component,
|
|
229
|
-
args: [{ selector: 'pry-filter-settings', template: "<pry-toolbox-css></pry-toolbox-css>\n<div
|
|
229
|
+
args: [{ selector: 'pry-filter-settings', template: "<pry-toolbox-css></pry-toolbox-css>\n<div class=\"save-manifest-container\">\n <div style=\"display: none\">\n <ng-template #container></ng-template>\n </div>\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary -size-md\"\n [disabled]=\"(attributes$ | async)?.length === 0\"\n (click)=\"toggleSettings()\"\n aria-haspopup=\"dialog\"\n >\n <ng-container *ngIf=\"label\">{{ '@pry.filters.label' | i18n }}</ng-container>\n </button>\n</div>\n\n<ng-template #settings>\n <div class=\"o-filters\">\n <div class=\"o-filters__header\">\n <ng-container *ngIf=\"currentStep === FilterSteps.LIST\">\n <h2>{{ '@pry.filters.label' | i18n }}</h2>\n </ng-container>\n <ng-container *ngIf=\"currentStep === FilterSteps.CREATION || currentStep === FilterSteps.EDITION\">\n <div class=\"u-display-flex -row -align-center\">\n <button (click)=\"goBack()\" type=\"button\" class=\"back-button\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n <h2>\n {{\n (currentStep === FilterSteps.CREATION ? '@pry.filters.creation.create' : '@pry.filters.creation.update')\n | i18n\n }}\n </h2>\n </div>\n </ng-container>\n <button (click)=\"toggleSettings()\" type=\"button\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <ng-container *ngIf=\"currentStep === FilterSteps.LIST\">\n <div class=\"o-filters__content\">\n <div *ngIf=\"(attributes$ | async)?.length === 0; else attributesExists\" class=\"a-table-wrapper\"></div>\n <ng-template #attributesExists>\n <table *ngIf=\"filters.length > 0; else noFilters\" class=\"a-table\">\n <tbody cdkDropList [cdkDropListData]=\"filters\" (cdkDropListDropped)=\"drop($event)\">\n <tr *ngFor=\"let filter of filters\" class=\"o-filters__filter\" cdkDrag>\n <td>\n <span>{{ filter.name }}</span>\n </td>\n <td>\n <span>{{ getFilterAttributes(filter, 3) }}</span>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"deleteFilter(filter.id)\">\n {{ '@pry.action.delete' | i18n }}\n </button>\n </td>\n <td>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"goToEdition(filter)\">\n {{ '@pry.filters.list.modify' | i18n }}\n </button>\n </td>\n <td cdkDragHandle>\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-template #noFilters>\n <span class=\"o-filters__no-filters\">{{ '@pry.filters.noFilters' | i18n }}</span>\n </ng-template>\n <button (click)=\"goToCreation()\" class=\"a-btn a-btn--primary\">{{ '@pry.filters.list.add' | i18n }}</button>\n </ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"currentStep === FilterSteps.CREATION || currentStep === FilterSteps.EDITION\">\n <div class=\"o-filters__content\">\n <div class=\"m-form-label-field\">\n <label for=\"filterName\" class=\"a-label\">{{ '@pry.filters.creation.name' | i18n }}</label>\n <input id=\"filterName\" class=\"a-form-field\" type=\"text\" [(ngModel)]=\"filter.name\" />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"filterType\" class=\"a-label\">{{ '@pry.filters.creation.type' | i18n }}</label>\n <pry-select\n id=\"filterType\"\n [placeholder]=\"'@pry.filters.creation.type' | i18n\"\n [items]=\"types$ | async\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [(ngModel)]=\"filter.type\"\n (ngModelChange)=\"updateFilterType($event)\"\n >\n </pry-select>\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'date'\" class=\"m-form-label-field u-display-flex -row\">\n <label for=\"date-range\" class=\"a-label\">{{ '@pry.filters.creation.dateRange' | i18n }}</label>\n <pry-checkbox\n id=\"date-range\"\n [(ngModel)]=\"filter.hasDateRange\"\n (ngModelChange)=\"this.currentOperators$.next(getOperators())\"\n />\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'list'\" class=\"m-form-label-field\">\n <label for=\"possibleValues\" class=\"a-label\">{{ '@pry.filters.creation.values' | i18n }}</label>\n <input\n id=\"possibleValues\"\n class=\"a-form-field\"\n type=\"text\"\n [(ngModel)]=\"filter.possibleValues\"\n placeholder=\"valeur1, valeur2, valeur3\"\n />\n </div>\n <div *ngIf=\"(currentFilterComponentType$ | async) === 'autocomplete'\" class=\"m-form-label-field\">\n <label for=\"limit\" class=\"a-label\">{{ '@pry.filters.creation.limit' | i18n }}</label>\n <input id=\"limit\" class=\"a-form-field\" type=\"number\" min=\"0\" max=\"50\" [(ngModel)]=\"filter.limit\" />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"attributes\" class=\"a-label\">{{ '@pry.filters.creation.attributes' | i18n }}</label>\n <pry-select\n id=\"attributes\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [items]=\"attributes$ | async\"\n [ngModel]=\"filter.attributes\"\n (ngModelChange)=\"selectAttribute($event)\"\n [placeholder]=\"'@pry.filters.creation.attributes' | i18n\"\n [autocomplete]=\"true\"\n bindLabel=\"label\"\n >\n </pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"operations\" class=\"a-label\">{{ '@pry.filters.attributes.operator' | i18n }}</label>\n <pry-select\n id=\"operations\"\n [items]=\"currentOperators$ | async\"\n [(ngModel)]=\"filter.operator\"\n [placeholder]=\"'@pry.filters.attributes.operator' | i18n\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"(currentFilterComponentType$ | async) === 'list'\"\n >\n </pry-select>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"submitFilter()\"\n [disabled]=\"!(filter.name && filter.type && filter.attributes.length !== 0 && filter.operator)\"\n type=\"submit\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n" }]
|
|
230
230
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.FilterFactoryService }, { type: i0.Injector }]; }, propDecorators: { label: [{
|
|
231
231
|
type: Input
|
|
232
232
|
}], templateSettings: [{
|
|
@@ -236,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
236
236
|
type: ViewChild,
|
|
237
237
|
args: ['container', { read: ViewContainerRef }]
|
|
238
238
|
}] } });
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9maWx0ZXItc2V0dGluZ3MvZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9maWx0ZXItc2V0dGluZ3MvZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUVMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUVsQixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLFNBQVMsRUFLVCxlQUFlLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7O0FBRXBGLE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZ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QUFjO29CQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0M7b0JBQ0UsT0FBTyxRQUFRLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdFBVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGdMQUVOLFdBQVcsaUdBK0JWLGdCQUFnQixvREM3RWxELHNtT0FzS0E7OzRGRDFIYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0UscUJBQXFCOzJNQUl0QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ3dDLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQStCUSxTQUFTO3NCQUE1RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3MsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb25maWdBY3Rpb25zLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFTb3VyY2UsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEZpbHRlcixcbiAgRmlsdGVyRmFjdG9yeVNlcnZpY2UsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBNb25vQ2xhc3NTZWFyY2hQYXlsb2FkLFxuICBOYW1lZFF1ZXJ5VHlwZXNcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBUb29sYm94QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJveC1hY3Rpb24vdG9vbGJveC1hY3Rpb24uY29tcG9uZW50JztcblxuZXhwb3J0IGVudW0gRmlsdGVyU3RlcHMge1xuICBMSVNUID0gJ2xpc3QnLFxuICBDUkVBVElPTiA9ICdjcmVhdGlvbicsXG4gIEVESVRJT04gPSAnZWRpdGlvbidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBpZDogc3RyaW5nO1xuICB0ZWNobmljYWxOYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRhdGFzb3VyY2U6IHN0cmluZztcbiAgdHlwZTogRmllbGRUeXBlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZmlsdGVyLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5RmlsdGVyU2V0dGluZ3NDb21wb25lbnQgZXh0ZW5kcyBUb29sYm94QWN0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGFiZWwgPSB0cnVlO1xuICBAVmlld0NoaWxkKCdzZXR0aW5ncycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVTZXR0aW5ncyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIG92ZXJsYXlSZWZTZXR0aW5ncz86IE92ZXJsYXlSZWY7XG4gIHNldHRpbmdzT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIG1hbmlmZXN0JDogT2JzZXJ2YWJsZTxHbG9iYWxNYW5pZmVzdD47XG4gIGZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gIHR5cGVzJDogT2JzZXJ2YWJsZTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdPjtcbiAgY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIGN1cnJlbnRTdGVwOiBGaWx0ZXJTdGVwcyA9IEZpbHRlclN0ZXBzLkxJU1Q7XG4gIHN0ZXBzID0gRmlsdGVyU3RlcHM7XG4gIGZpbHRlcjogRmlsdGVyID0ge1xuICAgIGlkOiB2NCgpLFxuICAgIG5hbWU6ICcnLFxuICAgIHR5cGU6ICcnLFxuICAgIGF0dHJpYnV0ZXM6IFtdXG4gIH07XG4gIGRhdGFzb3VyY2UkOiBPYnNlcnZhYmxlPGFueT47XG4gIG9wZXJhdG9ycyA9IFtcbiAgICB7IGxhYmVsOiAnQHByeS5zZWFyY2gub3BlcmF0b3IuZXF1YWxzU3RyaW5nJywgdmFsdWU6ICdFUVVBTFMnIH0sXG4gICAgeyBsYWJlbDogJ0Bwcnkuc2VhcmNoLm9wZXJhdG9yLm5vdEVxdWFsc1N0cmluZycsIHZhbHVlOiAnTk9UX0VRVUFMUycgfSxcbiAgICB7IGxhYmVsOiAnQHByeS5zZWFyY2gub3BlcmF0b3IuY29udGFpbnMnLCB2YWx1ZTogJ0NPTlRBSU5TJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5zdGFydFdpdGgnLCB2YWx1ZTogJ1NUQVJUX1dJVEgnIH0sXG4gICAgeyBsYWJlbDogJ0Bwcnkuc2VhcmNoLm9wZXJhdG9yLmVuZFdpdGgnLCB2YWx1ZTogJ0VORF9XSVRIJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5ncmVhdGVyVGhhbk51bWJlcicsIHZhbHVlOiAnR1JFQVRFUl9USEFOJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5sb3dlclRoYW5OdW1iZXInLCB2YWx1ZTogJ0xPV0VSX1RIQU4nIH0sXG4gICAgeyBsYWJlbDogJ0Bwcnkuc2VhcmNoLm9wZXJhdG9yLmlubmVyQm91bmRzRGF0ZScsIHZhbHVlOiAnSU5TSURFJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5vdXRlckJvdW5kc0RhdGUnLCB2YWx1ZTogJ09VVFNJREUnIH1cbiAgXTtcbiAgY3VycmVudE9wZXJhdG9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMub3BlcmF0b3JzKTtcbiAgY2xhc3NlczogQ2xhc3NbXSA9IFtdO1xuICBhdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmc7IHRlY2huaWNhbE5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgZGF0YXNvdXJjZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdPjtcbiAgc2VsZWN0ZWRBdHRyaWJ1dGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4odGhpcy5maWx0ZXIuYXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IGF0dHIuaWQpKTtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBmaWx0ZXJGYWN0b3J5U2VydmljZTogRmlsdGVyRmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMubWFuaWZlc3QkID0gc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubWFuaWZlc3QkLnN1YnNjcmliZSgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gbWFuaWZlc3QuZmlsdGVycyA/IFsuLi5tYW5pZmVzdC5maWx0ZXJzXSA6IFtdO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kYXRhc291cmNlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5nZXREYXRhU291cmNlcyksXG4gICAgICBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLm5hbWVkUXVlcmllc1VzZXMpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2RhdGFTb3VyY2VzLCBkYXRhU291cmNlc1VzZWRdKSA9PlxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhU291cmNlc1VzZWQpLm1hcCgoaWQpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGRhdGFTb3VyY2VzLmZpbmQoKGRhdGFTb3VyY2UpID0+IGRhdGFTb3VyY2UuaWQgPT09IGlkKT8ubmFtZSxcbiAgICAgICAgICB2YWx1ZTogaWRcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMudHlwZXMkID0gdGhpcy5maWx0ZXJGYWN0b3J5U2VydmljZS50eXBlcyQucGlwZShcbiAgICAgIG1hcCgodHlwZXMpID0+XG4gICAgICAgIHR5cGVzLm1hcCgodHlwZSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogJ0BwcnkuZmlsdGVycy50eXBlcy4nICsgdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdHlwZVxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE9wZXJhdG9ycyQubmV4dCh0aGlzLmdldE9wZXJhdG9ycygpKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYXR0cmlidXRlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmdldERhdGFTb3VyY2VzKSxcbiAgICAgIHN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubmFtZWRRdWVyaWVzVXNlcyksXG4gICAgICBzdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcyksXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJFxuICAgIF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbShzdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRzKSksXG4gICAgICBtYXAoKFtbZGF0YVNvdXJjZXMsIGN1cnJlbnREYXRhU291cmNlcywgY2xhc3NlcywgY29tcG9uZW50VHlwZV0sIGZpZWxkc10pID0+IHtcbiAgICAgICAgbGV0IGRhdGFTb3VyY2VzSW5QcmVzID0gZGF0YVNvdXJjZXMuZmlsdGVyKChkYXRhU291cmNlKSA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnREYXRhU291cmNlcykuaW5jbHVkZXMoZGF0YVNvdXJjZS5pZCkgPyBkYXRhU291cmNlIDogZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcbiAgICAgICAgZGF0YVNvdXJjZXNJblByZXMuZm9yRWFjaCgoZGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsYXp6ID0gdGhpcy5nZXREYXRhc291cmNlQ2xhc3MoZGF0YVNvdXJjZSwgY2xhc3Nlcyk7XG4gICAgICAgICAgY2xheno/LmF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IGF0dHIuaWQsXG4gICAgICAgICAgICAgIHRlY2huaWNhbE5hbWU6IGF0dHIudGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICAgICAgbGFiZWw6IFthdHRyLm5hbWUsIGRhdGFTb3VyY2UubmFtZSwgY2xhenoubmFtZV0uam9pbignIC8gJyksXG4gICAgICAgICAgICAgIGRhdGFzb3VyY2U6IGRhdGFTb3VyY2UuaWQsXG4gICAgICAgICAgICAgIHR5cGU6IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQXR0cmlidXRlcyhjb21wb25lbnRUeXBlLCBhdHRyaWJ1dGVzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldERhdGFzb3VyY2VDbGFzcyhkYXRhU291cmNlOiBEYXRhU291cmNlLCBjbGFzc2VzOiBDbGFzc1tdKTogQ2xhc3MgfCB1bmRlZmluZWQge1xuICAgIGxldCBjbGF6ejogQ2xhc3MgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGRhdGFTb3VyY2Uuc291cmNlVHlwZSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBjbGF6eiA9IGNsYXNzZXMuZmluZCgoY2xhenopID0+IGNsYXp6LmlkID09PSBkYXRhU291cmNlLm9DbGFzcyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGRhdGFTb3VyY2Uuc291cmNlVHlwZSA9PT0gJ25hbWVkUXVlcnknICYmXG4gICAgICBkYXRhU291cmNlLnJlcXVlc3QgJiZcbiAgICAgIGRhdGFTb3VyY2UucmVxdWVzdC50eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTU9OT19DTEFTU1xuICAgICkge1xuICAgICAgY2xhenogPSBjbGFzc2VzLmZpbmQoKGNsYXp6KSA9PiBjbGF6ei5pZCA9PT0gKGRhdGFTb3VyY2UucmVxdWVzdCBhcyBNb25vQ2xhc3NTZWFyY2hQYXlsb2FkKS5vQ2xhc3MpO1xuICAgIH1cbiAgICByZXR1cm4gY2xheno7XG4gIH1cblxuICBmaWx0ZXJBdHRyaWJ1dGVzKGNvbXBvbmVudFR5cGU6IHN0cmluZywgYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBBdHRyaWJ1dGVbXSB7XG4gICAgc3dpdGNoIChjb21wb25lbnRUeXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZmlsdGVyKChhdHRyKSA9PiBhdHRyLnR5cGUgPT09IEZpZWxkVHlwZS5JTlNUQU5UKTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gW0ZpZWxkVHlwZS5JTlRFR0VSLCBGaWVsZFR5cGUuREVDSU1BTCwgRmllbGRUeXBlLkxPTkddLmluY2x1ZGVzKGF0dHIudHlwZSkpO1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gW0ZpZWxkVHlwZS5TVFJJTkcsIEZpZWxkVHlwZS5LRVlXT1JEXS5pbmNsdWRlcyhhdHRyLnR5cGUpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQXR0cmlidXRlJC52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlVHlwZSA9IGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSQudmFsdWVbMF0pPy50eXBlO1xuICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gYXR0ci50eXBlID09PSBhdHRyaWJ1dGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxGaWx0ZXJbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5maWx0ZXJzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgdG9nZ2xlU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5nc09wZW5lZCA9ICF0aGlzLnNldHRpbmdzT3BlbmVkO1xuICAgIGlmICh0aGlzLnNldHRpbmdzT3BlbmVkKSB7XG4gICAgICB0aGlzLm9wZW5TZXR0aW5ncygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZTZXR0aW5ncz8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmU2V0dGluZ3MgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0RmlsdGVycyh7IGZpbHRlcnM6IHRoaXMuZmlsdGVycyB9KSk7XG4gICAgICB0aGlzLmdvQmFjaygpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TZXR0aW5ncygpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWZTZXR0aW5ncyA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlcicsICdvLXNlbGVjdC1ncmlkLWxheW91dC1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZlNldHRpbmdzLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMuZ29CYWNrKCk7XG4gICAgICB0aGlzLnRvZ2dsZVNldHRpbmdzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmU2V0dGluZ3MuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlU2V0dGluZ3MsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICB9XG5cbiAgdXBkYXRlRmlsdGVyVHlwZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyLnR5cGUgPSAkZXZlbnQ7XG4gICAgdGhpcy5maWx0ZXIub3BlcmF0b3IgPSAkZXZlbnQgPT09ICdsaXN0JyA/ICdFUVVBTFMnIDogdGhpcy5maWx0ZXIub3BlcmF0b3I7XG4gICAgaWYgKHRoaXMuZmlsdGVyLnR5cGUgIT09ICcnICYmIHRoaXMuY29udGFpbmVyKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5maWx0ZXJGYWN0b3J5U2VydmljZS5nZW5lcmF0ZUZpbHRlcih0aGlzLmZpbHRlci50eXBlLCB0aGlzLmluamVjdG9yLCB0aGlzLmNvbnRhaW5lcik7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBjb21wb25lbnQuc3Vic2NyaWJlKChjb21wb25lbnRSZWYpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJC5uZXh0KGNvbXBvbmVudFJlZi5pbnN0YW5jZS50eXBlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyLmxpbWl0ID0gdGhpcy5maWx0ZXIudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScgPyB0aGlzLmZpbHRlci5saW1pdCA/PyAxMCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEZpbHRlckF0dHJpYnV0ZXMoZmlsdGVyOiBGaWx0ZXIsIGF0dHJDb3VudDogbnVtYmVyKSB7XG4gICAgYXR0ckNvdW50ID0gYXR0ckNvdW50IDw9IGZpbHRlci5hdHRyaWJ1dGVzLmxlbmd0aCA/IGF0dHJDb3VudCA6IGZpbHRlci5hdHRyaWJ1dGVzLmxlbmd0aDtcbiAgICByZXR1cm4gZmlsdGVyLmF0dHJpYnV0ZXNcbiAgICAgIC5tYXAoKGF0dHIpID0+IGF0dHIudGVjaG5pY2FsTmFtZSlcbiAgICAgIC5zbGljZSgwLCBhdHRyQ291bnQpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLmZpbHRlciA9IHtcbiAgICAgIGlkOiB2NCgpLFxuICAgICAgbmFtZTogJycsXG4gICAgICB0eXBlOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdXG4gICAgfTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gRmlsdGVyU3RlcHMuTElTVDtcbiAgfVxuXG4gIGdvVG9FZGl0aW9uKGZpbHRlcjogRmlsdGVyKSB7XG4gICAgdGhpcy5maWx0ZXIgPSB7IC4uLmZpbHRlciB9O1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBGaWx0ZXJTdGVwcy5FRElUSU9OO1xuICB9XG5cbiAgZ29Ub0NyZWF0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkLm5leHQoJycpO1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBGaWx0ZXJTdGVwcy5FRElUSU9OO1xuICB9XG5cbiAgc3VibWl0RmlsdGVyKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVGaWx0ZXJzKHsgZmlsdGVyOiB0aGlzLmZpbHRlciB9KSk7XG4gICAgdGhpcy5nb0JhY2soKTtcbiAgfVxuXG4gIHNlbGVjdEF0dHJpYnV0ZSgkZXZlbnQ6IEF0dHJpYnV0ZVtdKSB7XG4gICAgdGhpcy5maWx0ZXIuYXR0cmlidXRlcyA9ICRldmVudDtcbiAgICB0aGlzLnNlbGVjdGVkQXR0cmlidXRlJC5uZXh0KCRldmVudC5tYXAoKGF0dHIpID0+IGF0dHIuaWQpKTtcbiAgfVxuXG4gIGRlbGV0ZUZpbHRlcihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnJlbW92ZUZpbHRlcih7IGlkIH0pKTtcbiAgfVxuXG4gIGdldE9wZXJhdG9ycygpOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRvcnMuZmlsdGVyKChvcGVyYXRvcikgPT4ge1xuICAgICAgc3dpdGNoICh0aGlzLmN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJC52YWx1ZSkge1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIuaGFzRGF0ZVJhbmdlXG4gICAgICAgICAgICA/IFsnSU5TSURFJywgJ09VVFNJREUnXS5pbmNsdWRlcyhvcGVyYXRvci52YWx1ZSlcbiAgICAgICAgICAgIDogWydFUVVBTFMnLCAnTk9UX0VRVUFMUycsICdHUkVBVEVSX1RIQU4nLCAnTE9XRVJfVEhBTiddLmluY2x1ZGVzKG9wZXJhdG9yLnZhbHVlKTtcbiAgICAgICAgY2FzZSAnbGlzdCc6XG4gICAgICAgICAgcmV0dXJuIFsnRVFVQUxTJ10uaW5jbHVkZXMob3BlcmF0b3IudmFsdWUpO1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgIHJldHVybiBbJ0VRVUFMUycsICdOT1RfRVFVQUxTJywgJ0dSRUFURVJfVEhBTicsICdMT1dFUl9USEFOJ10uaW5jbHVkZXMob3BlcmF0b3IudmFsdWUpO1xuICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICByZXR1cm4gWydDT05UQUlOUycsICdFUVVBTFMnLCAnTk9UX0VRVUFMUycsICdTVEFSVF9XSVRIJywgJ0VORF9XSVRIJ10uaW5jbHVkZXMob3BlcmF0b3IudmFsdWUpO1xuICAgICAgICBjYXNlICdhdXRvY29tcGxldGUnOlxuICAgICAgICAgIHJldHVybiBbJ0VRVUFMUyddLmluY2x1ZGVzKG9wZXJhdG9yLnZhbHVlKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gb3BlcmF0b3I7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRmlsdGVyU3RlcHMgPSBGaWx0ZXJTdGVwcztcbn1cbiIsIjxwcnktdG9vbGJveC1jc3M+PC9wcnktdG9vbGJveC1jc3M+XG48ZGl2XG4gIGNsYXNzPVwic2F2ZS1tYW5pZmVzdC1jb250YWluZXIgYS10b29sdGlwXCJcbiAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LmZpbHRlcnMubGFiZWwnIHwgaTE4blwiXG4gIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjb250YWluZXI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLXNpemUtbWRcIlxuICAgIFtkaXNhYmxlZF09XCIoYXR0cmlidXRlcyQgfCBhc3luYyk/Lmxlbmd0aCA9PT0gMFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVNldHRpbmdzKClcIlxuICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+e3sgJ0BwcnkuZmlsdGVycy5sYWJlbCcgfCBpMThuIH19PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2V0dGluZ3M+XG4gIDxkaXYgY2xhc3M9XCJvLWZpbHRlcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1maWx0ZXJzX19oZWFkZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gRmlsdGVyU3RlcHMuTElTVFwiPlxuICAgICAgICA8aDI+UGFyYW3DqXRyZXIgbGVzIGZpbHRyZXM8L2gyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAgPT09IEZpbHRlclN0ZXBzLkNSRUFUSU9OIHx8IGN1cnJlbnRTdGVwID09PSBGaWx0ZXJTdGVwcy5FRElUSU9OXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtcm93IC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnb0JhY2soKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJhY2stYnV0dG9uXCI+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNoZXZyb25fcmlnaHRcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxoMj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIChjdXJyZW50U3RlcCA9PT0gRmlsdGVyU3RlcHMuQ1JFQVRJT04gPyAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLmNyZWF0ZScgOiAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLnVwZGF0ZScpXG4gICAgICAgICAgICAgICAgfCBpMThuXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVTZXR0aW5ncygpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gRmlsdGVyU3RlcHMuTElTVFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tZmlsdGVyc19fY29udGVudFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGF0dHJpYnV0ZXMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDA7IGVsc2UgYXR0cmlidXRlc0V4aXN0c1wiIGNsYXNzPVwiYS10YWJsZS13cmFwcGVyXCI+PC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYXR0cmlidXRlc0V4aXN0cz5cbiAgICAgICAgICA8dGFibGUgKm5nSWY9XCJmaWx0ZXJzLmxlbmd0aCA+IDA7IGVsc2Ugbm9GaWx0ZXJzXCIgY2xhc3M9XCJhLXRhYmxlXCI+XG4gICAgICAgICAgICA8dGJvZHkgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJmaWx0ZXJzXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyc1wiIGNsYXNzPVwiby1maWx0ZXJzX19maWx0ZXJcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlci5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0RmlsdGVyQXR0cmlidXRlcyhmaWx0ZXIsIDMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJkZWxldGVGaWx0ZXIoZmlsdGVyLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uZGVsZXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJnb1RvRWRpdGlvbihmaWx0ZXIpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmZpbHRlcnMubGlzdC5tb2RpZnknIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZHJhZ19pbmRpY2F0b3JcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ZpbHRlcnM+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm8tZmlsdGVyc19fbm8tZmlsdGVyc1wiPnt7ICdAcHJ5LmZpbHRlcnMubm9GaWx0ZXJzJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvQ3JlYXRpb24oKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj57eyAnQHByeS5maWx0ZXJzLmxpc3QuYWRkJyB8IGkxOG4gfX08L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gRmlsdGVyU3RlcHMuQ1JFQVRJT04gfHwgY3VycmVudFN0ZXAgPT09IEZpbHRlclN0ZXBzLkVESVRJT05cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWZpbHRlcnNfX2NvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWx0ZXJOYW1lXCIgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZmlsdGVycy5jcmVhdGlvbi5uYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBpZD1cImZpbHRlck5hbWVcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJmaWx0ZXIubmFtZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpbHRlclR5cGVcIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLnR5cGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwiZmlsdGVyVHlwZVwiXG4gICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5maWx0ZXJzLmNyZWF0aW9uLnR5cGUnIHwgaTE4blwiXG4gICAgICAgICAgICBbaXRlbXNdPVwidHlwZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIudHlwZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVGaWx0ZXJUeXBlKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJCB8IGFzeW5jKSA9PT0gJ2RhdGUnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgdS1kaXNwbGF5LWZsZXggLXJvd1wiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJkYXRlLXJhbmdlXCIgY2xhc3M9XCJhLWxhYmVsXCI+UGxhZ2UgZGUgZGF0ZXM8L2xhYmVsPlxuICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgIGlkPVwiZGF0ZS1yYW5nZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlci5oYXNEYXRlUmFuZ2VcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5jdXJyZW50T3BlcmF0b3JzJC5uZXh0KGdldE9wZXJhdG9ycygpKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIoY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkIHwgYXN5bmMpID09PSAnbGlzdCdcIiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJwb3NzaWJsZVZhbHVlc1wiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmZpbHRlcnMuY3JlYXRpb24udmFsdWVzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJwb3NzaWJsZVZhbHVlc1wiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlci5wb3NzaWJsZVZhbHVlc1wiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZhbGV1cjEsIHZhbGV1cjIsIHZhbGV1cjNcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJCB8IGFzeW5jKSA9PT0gJ2F1dG9jb21wbGV0ZSdcIiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJsaW1pdFwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmZpbHRlcnMuY3JlYXRpb24ubGltaXQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwibGltaXRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIHR5cGU9XCJudW1iZXJcIiBtaW49XCIwXCIgbWF4PVwiNTBcIiBbKG5nTW9kZWwpXT1cImZpbHRlci5saW1pdFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImF0dHJpYnV0ZXNcIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLmF0dHJpYnV0ZXMnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwiYXR0cmlidXRlc1wiXG4gICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiYXR0cmlidXRlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJmaWx0ZXIuYXR0cmlidXRlc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RBdHRyaWJ1dGUoJGV2ZW50KVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkuZmlsdGVycy5jcmVhdGlvbi5hdHRyaWJ1dGVzJyB8IGkxOG5cIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJvcGVyYXRpb25zXCIgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZmlsdGVycy5hdHRyaWJ1dGVzLm9wZXJhdG9yJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICBpZD1cIm9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgW2xhYmVsVHJhbnNsYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiY3VycmVudE9wZXJhdG9ycyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlci5vcGVyYXRvclwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkuZmlsdGVycy5hdHRyaWJ1dGVzLm9wZXJhdG9yJyB8IGkxOG5cIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihjdXJyZW50RmlsdGVyQ29tcG9uZW50VHlwZSQgfCBhc3luYykgPT09ICdsaXN0J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgICAoY2xpY2spPVwic3VibWl0RmlsdGVyKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGZpbHRlci5uYW1lICYmIGZpbHRlci50eXBlICYmIGZpbHRlci5hdHRyaWJ1dGVzLmxlbmd0aCAhPT0gMCAmJiBmaWx0ZXIub3BlcmF0b3IpXCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9maWx0ZXItc2V0dGluZ3MvZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9maWx0ZXItc2V0dGluZ3MvZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUVMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUVsQixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLFNBQVMsRUFLVCxlQUFlLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7O0FBRXBGLE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsNEJBQWEsQ0FBQTtJQUNiLG9DQUFxQixDQUFBO0lBQ3JCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQWNELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxzQkFBc0I7SUFtQ3BFLFlBQ0UsS0FBWSxFQUNKLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxvQkFBMEMsRUFDMUMsUUFBa0I7UUFFMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBTEwsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXZDbkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUd0QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQyxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBRXZCLGdDQUEyQixHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELGdCQUFXLEdBQWdCLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDNUMsVUFBSyxHQUFHLFdBQVcsQ0FBQztRQUNwQixXQUFNLEdBQVc7WUFDZixFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsRUFBRTtZQUNSLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVGLGNBQVMsR0FBRztZQUNWLEVBQUUsS0FBSyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDL0QsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN0RSxFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQzdELEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDaEUsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUM1RCxFQUFFLEtBQUssRUFBRSx3Q0FBd0MsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDdEUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNsRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1NBQ3BFLENBQUM7UUFDRixzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsWUFBTyxHQUFZLEVBQUUsQ0FBQztRQUV0Qix1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBd04vRSxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQTdNM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUM7WUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNsRCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSTtZQUNuRSxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2pELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuQixLQUFLLEVBQUUscUJBQXFCLEdBQUcsSUFBSTtZQUNuQyxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUMvQixLQUFLLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQztZQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDO1lBQ2pELEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUNwQyxJQUFJLENBQUMsMkJBQTJCO1NBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQ0wsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ25ELEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDMUUsSUFBSSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUM3RSxDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztZQUNuQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0QsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQzt3QkFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7d0JBQ1gsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUNqQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7d0JBQzNELFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTt3QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsTUFBTTtxQkFDaEYsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFzQixFQUFFLE9BQWdCO1FBQ3pELElBQUksS0FBSyxHQUFzQixTQUFTLENBQUM7UUFDekMsSUFBSSxVQUFVLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUN2QyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakU7YUFBTSxJQUNMLFVBQVUsQ0FBQyxVQUFVLEtBQUssWUFBWTtZQUN0QyxVQUFVLENBQUMsT0FBTztZQUNsQixVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsVUFBVSxFQUN0RDtZQUNBLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFNLFVBQVUsQ0FBQyxPQUFrQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JHO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBcUIsRUFBRSxVQUF1QjtRQUM3RCxRQUFRLGFBQWEsRUFBRTtZQUNyQixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RSxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2pILEtBQUssTUFBTTtnQkFDVCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hHO2dCQUNFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM1QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7b0JBQ3BHLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsQ0FBQztpQkFDakU7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQTRCO1FBQy9CLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUMzQyxJQUFJLGFBQWEsQ0FBQztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxvQ0FBb0MsQ0FBQztZQUNyRSxhQUFhLEVBQUUsVUFBVTtTQUMxQixDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVc7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDM0UsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsU0FBaUI7UUFDbkQsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUN6RixPQUFPLE1BQU0sQ0FBQyxVQUFVO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUNqQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQzthQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNSLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEVBQUU7WUFDUixVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBbUI7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFVO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4QyxRQUFRLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUU7Z0JBQzlDLEtBQUssTUFBTTtvQkFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTt3QkFDN0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO3dCQUNoRCxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0RixLQUFLLE1BQU07b0JBQ1QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdDLEtBQUssUUFBUTtvQkFDWCxPQUFPLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekYsS0FBSyxNQUFNO29CQUNULE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakcsS0FBSyxjQUFjO29CQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0M7b0JBQ0UsT0FBTyxRQUFRLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdFBVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGdMQUVOLFdBQVcsaUdBK0JWLGdCQUFnQixvREM3RWxELDB6TkE0SkE7OzRGRGhIYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0UscUJBQXFCOzJNQUl0QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ3dDLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQStCUSxTQUFTO3NCQUE1RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3MsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb25maWdBY3Rpb25zLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFTb3VyY2UsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEZpbHRlcixcbiAgRmlsdGVyRmFjdG9yeVNlcnZpY2UsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBNb25vQ2xhc3NTZWFyY2hQYXlsb2FkLFxuICBOYW1lZFF1ZXJ5VHlwZXNcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBUb29sYm94QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJveC1hY3Rpb24vdG9vbGJveC1hY3Rpb24uY29tcG9uZW50JztcblxuZXhwb3J0IGVudW0gRmlsdGVyU3RlcHMge1xuICBMSVNUID0gJ2xpc3QnLFxuICBDUkVBVElPTiA9ICdjcmVhdGlvbicsXG4gIEVESVRJT04gPSAnZWRpdGlvbidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBpZDogc3RyaW5nO1xuICB0ZWNobmljYWxOYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRhdGFzb3VyY2U6IHN0cmluZztcbiAgdHlwZTogRmllbGRUeXBlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZmlsdGVyLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5RmlsdGVyU2V0dGluZ3NDb21wb25lbnQgZXh0ZW5kcyBUb29sYm94QWN0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGFiZWwgPSB0cnVlO1xuICBAVmlld0NoaWxkKCdzZXR0aW5ncycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVTZXR0aW5ncyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIG92ZXJsYXlSZWZTZXR0aW5ncz86IE92ZXJsYXlSZWY7XG4gIHNldHRpbmdzT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIG1hbmlmZXN0JDogT2JzZXJ2YWJsZTxHbG9iYWxNYW5pZmVzdD47XG4gIGZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gIHR5cGVzJDogT2JzZXJ2YWJsZTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdPjtcbiAgY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIGN1cnJlbnRTdGVwOiBGaWx0ZXJTdGVwcyA9IEZpbHRlclN0ZXBzLkxJU1Q7XG4gIHN0ZXBzID0gRmlsdGVyU3RlcHM7XG4gIGZpbHRlcjogRmlsdGVyID0ge1xuICAgIGlkOiB2NCgpLFxuICAgIG5hbWU6ICcnLFxuICAgIHR5cGU6ICcnLFxuICAgIGF0dHJpYnV0ZXM6IFtdXG4gIH07XG4gIGRhdGFzb3VyY2UkOiBPYnNlcnZhYmxlPGFueT47XG4gIG9wZXJhdG9ycyA9IFtcbiAgICB7IGxhYmVsOiAnQHByeS5zZWFyY2gub3BlcmF0b3IuZXF1YWxzU3RyaW5nJywgdmFsdWU6ICdFUVVBTFMnIH0sXG4gICAgeyBsYWJlbDogJ0Bwcnkuc2VhcmNoLm9wZXJhdG9yLm5vdEVxdWFsc1N0cmluZycsIHZhbHVlOiAnTk9UX0VRVUFMUycgfSxcbiAgICB7IGxhYmVsOiAnQHByeS5zZWFyY2gub3BlcmF0b3IuY29udGFpbnMnLCB2YWx1ZTogJ0NPTlRBSU5TJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5zdGFydFdpdGgnLCB2YWx1ZTogJ1NUQVJUX1dJVEgnIH0sXG4gICAgeyBsYWJlbDogJ0Bwcnkuc2VhcmNoLm9wZXJhdG9yLmVuZFdpdGgnLCB2YWx1ZTogJ0VORF9XSVRIJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5ncmVhdGVyVGhhbk51bWJlcicsIHZhbHVlOiAnR1JFQVRFUl9USEFOJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5sb3dlclRoYW5OdW1iZXInLCB2YWx1ZTogJ0xPV0VSX1RIQU4nIH0sXG4gICAgeyBsYWJlbDogJ0Bwcnkuc2VhcmNoLm9wZXJhdG9yLmlubmVyQm91bmRzRGF0ZScsIHZhbHVlOiAnSU5TSURFJyB9LFxuICAgIHsgbGFiZWw6ICdAcHJ5LnNlYXJjaC5vcGVyYXRvci5vdXRlckJvdW5kc0RhdGUnLCB2YWx1ZTogJ09VVFNJREUnIH1cbiAgXTtcbiAgY3VycmVudE9wZXJhdG9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMub3BlcmF0b3JzKTtcbiAgY2xhc3NlczogQ2xhc3NbXSA9IFtdO1xuICBhdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmc7IHRlY2huaWNhbE5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgZGF0YXNvdXJjZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdPjtcbiAgc2VsZWN0ZWRBdHRyaWJ1dGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4odGhpcy5maWx0ZXIuYXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IGF0dHIuaWQpKTtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBmaWx0ZXJGYWN0b3J5U2VydmljZTogRmlsdGVyRmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMubWFuaWZlc3QkID0gc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubWFuaWZlc3QkLnN1YnNjcmliZSgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gbWFuaWZlc3QuZmlsdGVycyA/IFsuLi5tYW5pZmVzdC5maWx0ZXJzXSA6IFtdO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kYXRhc291cmNlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5nZXREYXRhU291cmNlcyksXG4gICAgICBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLm5hbWVkUXVlcmllc1VzZXMpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2RhdGFTb3VyY2VzLCBkYXRhU291cmNlc1VzZWRdKSA9PlxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhU291cmNlc1VzZWQpLm1hcCgoaWQpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGRhdGFTb3VyY2VzLmZpbmQoKGRhdGFTb3VyY2UpID0+IGRhdGFTb3VyY2UuaWQgPT09IGlkKT8ubmFtZSxcbiAgICAgICAgICB2YWx1ZTogaWRcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMudHlwZXMkID0gdGhpcy5maWx0ZXJGYWN0b3J5U2VydmljZS50eXBlcyQucGlwZShcbiAgICAgIG1hcCgodHlwZXMpID0+XG4gICAgICAgIHR5cGVzLm1hcCgodHlwZSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogJ0BwcnkuZmlsdGVycy50eXBlcy4nICsgdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdHlwZVxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE9wZXJhdG9ycyQubmV4dCh0aGlzLmdldE9wZXJhdG9ycygpKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYXR0cmlidXRlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmdldERhdGFTb3VyY2VzKSxcbiAgICAgIHN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubmFtZWRRdWVyaWVzVXNlcyksXG4gICAgICBzdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcyksXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJFxuICAgIF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbShzdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRzKSksXG4gICAgICBtYXAoKFtbZGF0YVNvdXJjZXMsIGN1cnJlbnREYXRhU291cmNlcywgY2xhc3NlcywgY29tcG9uZW50VHlwZV0sIGZpZWxkc10pID0+IHtcbiAgICAgICAgbGV0IGRhdGFTb3VyY2VzSW5QcmVzID0gZGF0YVNvdXJjZXMuZmlsdGVyKChkYXRhU291cmNlKSA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnREYXRhU291cmNlcykuaW5jbHVkZXMoZGF0YVNvdXJjZS5pZCkgPyBkYXRhU291cmNlIDogZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcbiAgICAgICAgZGF0YVNvdXJjZXNJblByZXMuZm9yRWFjaCgoZGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsYXp6ID0gdGhpcy5nZXREYXRhc291cmNlQ2xhc3MoZGF0YVNvdXJjZSwgY2xhc3Nlcyk7XG4gICAgICAgICAgY2xheno/LmF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IGF0dHIuaWQsXG4gICAgICAgICAgICAgIHRlY2huaWNhbE5hbWU6IGF0dHIudGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICAgICAgbGFiZWw6IFthdHRyLm5hbWUsIGRhdGFTb3VyY2UubmFtZSwgY2xhenoubmFtZV0uam9pbignIC8gJyksXG4gICAgICAgICAgICAgIGRhdGFzb3VyY2U6IGRhdGFTb3VyY2UuaWQsXG4gICAgICAgICAgICAgIHR5cGU6IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQXR0cmlidXRlcyhjb21wb25lbnRUeXBlLCBhdHRyaWJ1dGVzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldERhdGFzb3VyY2VDbGFzcyhkYXRhU291cmNlOiBEYXRhU291cmNlLCBjbGFzc2VzOiBDbGFzc1tdKTogQ2xhc3MgfCB1bmRlZmluZWQge1xuICAgIGxldCBjbGF6ejogQ2xhc3MgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGRhdGFTb3VyY2Uuc291cmNlVHlwZSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBjbGF6eiA9IGNsYXNzZXMuZmluZCgoY2xhenopID0+IGNsYXp6LmlkID09PSBkYXRhU291cmNlLm9DbGFzcyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGRhdGFTb3VyY2Uuc291cmNlVHlwZSA9PT0gJ25hbWVkUXVlcnknICYmXG4gICAgICBkYXRhU291cmNlLnJlcXVlc3QgJiZcbiAgICAgIGRhdGFTb3VyY2UucmVxdWVzdC50eXBlID09PSBOYW1lZFF1ZXJ5VHlwZXMuTU9OT19DTEFTU1xuICAgICkge1xuICAgICAgY2xhenogPSBjbGFzc2VzLmZpbmQoKGNsYXp6KSA9PiBjbGF6ei5pZCA9PT0gKGRhdGFTb3VyY2UucmVxdWVzdCBhcyBNb25vQ2xhc3NTZWFyY2hQYXlsb2FkKS5vQ2xhc3MpO1xuICAgIH1cbiAgICByZXR1cm4gY2xheno7XG4gIH1cblxuICBmaWx0ZXJBdHRyaWJ1dGVzKGNvbXBvbmVudFR5cGU6IHN0cmluZywgYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBBdHRyaWJ1dGVbXSB7XG4gICAgc3dpdGNoIChjb21wb25lbnRUeXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZmlsdGVyKChhdHRyKSA9PiBhdHRyLnR5cGUgPT09IEZpZWxkVHlwZS5JTlNUQU5UKTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gW0ZpZWxkVHlwZS5JTlRFR0VSLCBGaWVsZFR5cGUuREVDSU1BTCwgRmllbGRUeXBlLkxPTkddLmluY2x1ZGVzKGF0dHIudHlwZSkpO1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gW0ZpZWxkVHlwZS5TVFJJTkcsIEZpZWxkVHlwZS5LRVlXT1JEXS5pbmNsdWRlcyhhdHRyLnR5cGUpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQXR0cmlidXRlJC52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlVHlwZSA9IGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSQudmFsdWVbMF0pPy50eXBlO1xuICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gYXR0ci50eXBlID09PSBhdHRyaWJ1dGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxGaWx0ZXJbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5maWx0ZXJzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgdG9nZ2xlU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5nc09wZW5lZCA9ICF0aGlzLnNldHRpbmdzT3BlbmVkO1xuICAgIGlmICh0aGlzLnNldHRpbmdzT3BlbmVkKSB7XG4gICAgICB0aGlzLm9wZW5TZXR0aW5ncygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZTZXR0aW5ncz8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmU2V0dGluZ3MgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0RmlsdGVycyh7IGZpbHRlcnM6IHRoaXMuZmlsdGVycyB9KSk7XG4gICAgICB0aGlzLmdvQmFjaygpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TZXR0aW5ncygpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWZTZXR0aW5ncyA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlcicsICdvLXNlbGVjdC1ncmlkLWxheW91dC1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZlNldHRpbmdzLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMuZ29CYWNrKCk7XG4gICAgICB0aGlzLnRvZ2dsZVNldHRpbmdzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmU2V0dGluZ3MuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlU2V0dGluZ3MsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICB9XG5cbiAgdXBkYXRlRmlsdGVyVHlwZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyLnR5cGUgPSAkZXZlbnQ7XG4gICAgdGhpcy5maWx0ZXIub3BlcmF0b3IgPSAkZXZlbnQgPT09ICdsaXN0JyA/ICdFUVVBTFMnIDogdGhpcy5maWx0ZXIub3BlcmF0b3I7XG4gICAgaWYgKHRoaXMuZmlsdGVyLnR5cGUgIT09ICcnICYmIHRoaXMuY29udGFpbmVyKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5maWx0ZXJGYWN0b3J5U2VydmljZS5nZW5lcmF0ZUZpbHRlcih0aGlzLmZpbHRlci50eXBlLCB0aGlzLmluamVjdG9yLCB0aGlzLmNvbnRhaW5lcik7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBjb21wb25lbnQuc3Vic2NyaWJlKChjb21wb25lbnRSZWYpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJC5uZXh0KGNvbXBvbmVudFJlZi5pbnN0YW5jZS50eXBlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyLmxpbWl0ID0gdGhpcy5maWx0ZXIudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScgPyB0aGlzLmZpbHRlci5saW1pdCA/PyAxMCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEZpbHRlckF0dHJpYnV0ZXMoZmlsdGVyOiBGaWx0ZXIsIGF0dHJDb3VudDogbnVtYmVyKSB7XG4gICAgYXR0ckNvdW50ID0gYXR0ckNvdW50IDw9IGZpbHRlci5hdHRyaWJ1dGVzLmxlbmd0aCA/IGF0dHJDb3VudCA6IGZpbHRlci5hdHRyaWJ1dGVzLmxlbmd0aDtcbiAgICByZXR1cm4gZmlsdGVyLmF0dHJpYnV0ZXNcbiAgICAgIC5tYXAoKGF0dHIpID0+IGF0dHIudGVjaG5pY2FsTmFtZSlcbiAgICAgIC5zbGljZSgwLCBhdHRyQ291bnQpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLmZpbHRlciA9IHtcbiAgICAgIGlkOiB2NCgpLFxuICAgICAgbmFtZTogJycsXG4gICAgICB0eXBlOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdXG4gICAgfTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gRmlsdGVyU3RlcHMuTElTVDtcbiAgfVxuXG4gIGdvVG9FZGl0aW9uKGZpbHRlcjogRmlsdGVyKSB7XG4gICAgdGhpcy5maWx0ZXIgPSB7IC4uLmZpbHRlciB9O1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBGaWx0ZXJTdGVwcy5FRElUSU9OO1xuICB9XG5cbiAgZ29Ub0NyZWF0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkLm5leHQoJycpO1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBGaWx0ZXJTdGVwcy5DUkVBVElPTjtcbiAgfVxuXG4gIHN1Ym1pdEZpbHRlcigpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRmlsdGVycyh7IGZpbHRlcjogdGhpcy5maWx0ZXIgfSkpO1xuICAgIHRoaXMuZ29CYWNrKCk7XG4gIH1cblxuICBzZWxlY3RBdHRyaWJ1dGUoJGV2ZW50OiBBdHRyaWJ1dGVbXSkge1xuICAgIHRoaXMuZmlsdGVyLmF0dHJpYnV0ZXMgPSAkZXZlbnQ7XG4gICAgdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSQubmV4dCgkZXZlbnQubWFwKChhdHRyKSA9PiBhdHRyLmlkKSk7XG4gIH1cblxuICBkZWxldGVGaWx0ZXIoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5yZW1vdmVGaWx0ZXIoeyBpZCB9KSk7XG4gIH1cblxuICBnZXRPcGVyYXRvcnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0b3JzLmZpbHRlcigob3BlcmF0b3IpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5jdXJyZW50RmlsdGVyQ29tcG9uZW50VHlwZSQudmFsdWUpIHtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLmhhc0RhdGVSYW5nZVxuICAgICAgICAgICAgPyBbJ0lOU0lERScsICdPVVRTSURFJ10uaW5jbHVkZXMob3BlcmF0b3IudmFsdWUpXG4gICAgICAgICAgICA6IFsnRVFVQUxTJywgJ05PVF9FUVVBTFMnLCAnR1JFQVRFUl9USEFOJywgJ0xPV0VSX1RIQU4nXS5pbmNsdWRlcyhvcGVyYXRvci52YWx1ZSk7XG4gICAgICAgIGNhc2UgJ2xpc3QnOlxuICAgICAgICAgIHJldHVybiBbJ0VRVUFMUyddLmluY2x1ZGVzKG9wZXJhdG9yLnZhbHVlKTtcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICByZXR1cm4gWydFUVVBTFMnLCAnTk9UX0VRVUFMUycsICdHUkVBVEVSX1RIQU4nLCAnTE9XRVJfVEhBTiddLmluY2x1ZGVzKG9wZXJhdG9yLnZhbHVlKTtcbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgcmV0dXJuIFsnQ09OVEFJTlMnLCAnRVFVQUxTJywgJ05PVF9FUVVBTFMnLCAnU1RBUlRfV0lUSCcsICdFTkRfV0lUSCddLmluY2x1ZGVzKG9wZXJhdG9yLnZhbHVlKTtcbiAgICAgICAgY2FzZSAnYXV0b2NvbXBsZXRlJzpcbiAgICAgICAgICByZXR1cm4gWydFUVVBTFMnXS5pbmNsdWRlcyhvcGVyYXRvci52YWx1ZSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG9wZXJhdG9yO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZpbHRlclN0ZXBzID0gRmlsdGVyU3RlcHM7XG59XG4iLCI8cHJ5LXRvb2xib3gtY3NzPjwvcHJ5LXRvb2xib3gtY3NzPlxuPGRpdiBjbGFzcz1cInNhdmUtbWFuaWZlc3QtY29udGFpbmVyXCI+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjb250YWluZXI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLXNpemUtbWRcIlxuICAgIFtkaXNhYmxlZF09XCIoYXR0cmlidXRlcyQgfCBhc3luYyk/Lmxlbmd0aCA9PT0gMFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVNldHRpbmdzKClcIlxuICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+e3sgJ0BwcnkuZmlsdGVycy5sYWJlbCcgfCBpMThuIH19PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2V0dGluZ3M+XG4gIDxkaXYgY2xhc3M9XCJvLWZpbHRlcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1maWx0ZXJzX19oZWFkZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gRmlsdGVyU3RlcHMuTElTVFwiPlxuICAgICAgICA8aDI+e3sgJ0BwcnkuZmlsdGVycy5sYWJlbCcgfCBpMThuIH19PC9oMj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwID09PSBGaWx0ZXJTdGVwcy5DUkVBVElPTiB8fCBjdXJyZW50U3RlcCA9PT0gRmlsdGVyU3RlcHMuRURJVElPTlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLXJvdyAtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29CYWNrKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJiYWNrLWJ1dHRvblwiPlxuICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjaGV2cm9uX3JpZ2h0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAoY3VycmVudFN0ZXAgPT09IEZpbHRlclN0ZXBzLkNSRUFUSU9OID8gJ0BwcnkuZmlsdGVycy5jcmVhdGlvbi5jcmVhdGUnIDogJ0BwcnkuZmlsdGVycy5jcmVhdGlvbi51cGRhdGUnKVxuICAgICAgICAgICAgICAgIHwgaTE4blxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU2V0dGluZ3MoKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiPjwvcHJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAgPT09IEZpbHRlclN0ZXBzLkxJU1RcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWZpbHRlcnNfX2NvbnRlbnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihhdHRyaWJ1dGVzJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwOyBlbHNlIGF0dHJpYnV0ZXNFeGlzdHNcIiBjbGFzcz1cImEtdGFibGUtd3JhcHBlclwiPjwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2F0dHJpYnV0ZXNFeGlzdHM+XG4gICAgICAgICAgPHRhYmxlICpuZ0lmPVwiZmlsdGVycy5sZW5ndGggPiAwOyBlbHNlIG5vRmlsdGVyc1wiIGNsYXNzPVwiYS10YWJsZVwiPlxuICAgICAgICAgICAgPHRib2R5IGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwiZmlsdGVyc1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlcnNcIiBjbGFzcz1cIm8tZmlsdGVyc19fZmlsdGVyXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXIubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldEZpbHRlckF0dHJpYnV0ZXMoZmlsdGVyLCAzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwiZGVsZXRlRmlsdGVyKGZpbHRlci5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWN0aW9uLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwiZ29Ub0VkaXRpb24oZmlsdGVyKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5maWx0ZXJzLmxpc3QubW9kaWZ5JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNka0RyYWdIYW5kbGU+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImRyYWdfaW5kaWNhdG9yXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GaWx0ZXJzPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvLWZpbHRlcnNfX25vLWZpbHRlcnNcIj57eyAnQHByeS5maWx0ZXJzLm5vRmlsdGVycycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29Ub0NyZWF0aW9uKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+e3sgJ0BwcnkuZmlsdGVycy5saXN0LmFkZCcgfCBpMThuIH19PC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAgPT09IEZpbHRlclN0ZXBzLkNSRUFUSU9OIHx8IGN1cnJlbnRTdGVwID09PSBGaWx0ZXJTdGVwcy5FRElUSU9OXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1maWx0ZXJzX19jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmlsdGVyTmFtZVwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmZpbHRlcnMuY3JlYXRpb24ubmFtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJmaWx0ZXJOYW1lXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZmlsdGVyLm5hbWVcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWx0ZXJUeXBlXCIgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZmlsdGVycy5jcmVhdGlvbi50eXBlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICBpZD1cImZpbHRlclR5cGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAcHJ5LmZpbHRlcnMuY3JlYXRpb24udHlwZScgfCBpMThuXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJ0eXBlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlci50eXBlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUZpbHRlclR5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIoY3VycmVudEZpbHRlckNvbXBvbmVudFR5cGUkIHwgYXN5bmMpID09PSAnZGF0ZSdcIiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCB1LWRpc3BsYXktZmxleCAtcm93XCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImRhdGUtcmFuZ2VcIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLmRhdGVSYW5nZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICBpZD1cImRhdGUtcmFuZ2VcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIuaGFzRGF0ZVJhbmdlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRoaXMuY3VycmVudE9wZXJhdG9ycyQubmV4dChnZXRPcGVyYXRvcnMoKSlcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJCB8IGFzeW5jKSA9PT0gJ2xpc3QnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwicG9zc2libGVWYWx1ZXNcIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLnZhbHVlcycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwicG9zc2libGVWYWx1ZXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIucG9zc2libGVWYWx1ZXNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWxldXIxLCB2YWxldXIyLCB2YWxldXIzXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihjdXJyZW50RmlsdGVyQ29tcG9uZW50VHlwZSQgfCBhc3luYykgPT09ICdhdXRvY29tcGxldGUnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwibGltaXRcIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5maWx0ZXJzLmNyZWF0aW9uLmxpbWl0JyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBpZD1cImxpbWl0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIG1heD1cIjUwXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXIubGltaXRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJhdHRyaWJ1dGVzXCIgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZmlsdGVycy5jcmVhdGlvbi5hdHRyaWJ1dGVzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICBpZD1cImF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2Nsb3NlT25TZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cImF0dHJpYnV0ZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZmlsdGVyLmF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0QXR0cmlidXRlKCRldmVudClcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAcHJ5LmZpbHRlcnMuY3JlYXRpb24uYXR0cmlidXRlcycgfCBpMThuXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwib3BlcmF0aW9uc1wiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmZpbHRlcnMuYXR0cmlidXRlcy5vcGVyYXRvcicgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgaWQ9XCJvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJjdXJyZW50T3BlcmF0b3JzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyLm9wZXJhdG9yXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5maWx0ZXJzLmF0dHJpYnV0ZXMub3BlcmF0b3InIHwgaTE4blwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiKGN1cnJlbnRGaWx0ZXJDb21wb25lbnRUeXBlJCB8IGFzeW5jKSA9PT0gJ2xpc3QnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAgIChjbGljayk9XCJzdWJtaXRGaWx0ZXIoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiEoZmlsdGVyLm5hbWUgJiYgZmlsdGVyLnR5cGUgJiYgZmlsdGVyLmF0dHJpYnV0ZXMubGVuZ3RoICE9PSAwICYmIGZpbHRlci5vcGVyYXRvcilcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -14,10 +14,10 @@ export class LaunchTabComponent extends ToolboxActionComponent {
|
|
|
14
14
|
this.close();
|
|
15
15
|
}
|
|
16
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LaunchTabComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LaunchTabComponent, selector: "pry-launch-tab", usesInheritance: true, ngImport: i0, template: "<
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LaunchTabComponent, selector: "pry-launch-tab", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" class=\"a-btn a-btn--secondary -size-md\" (click)=\"launchNewWindow()\">\n <ng-container *ngIf=\"displayLabels\"\n ><span class=\"u-visually-hidden\">{{ '@pry.toolbox.launchIndication' | i18n }}</span\n >{{ '@pry.toolbox.launch' | i18n }}\n </ng-container>\n <pry-icon iconSvg=\"launch\"></pry-icon>\n</button>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
18
18
|
}
|
|
19
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LaunchTabComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
|
-
args: [{ selector: 'pry-launch-tab', template: "<
|
|
21
|
+
args: [{ selector: 'pry-launch-tab', template: "<button type=\"button\" class=\"a-btn a-btn--secondary -size-md\" (click)=\"launchNewWindow()\">\n <ng-container *ngIf=\"displayLabels\"\n ><span class=\"u-visually-hidden\">{{ '@pry.toolbox.launchIndication' | i18n }}</span\n >{{ '@pry.toolbox.launch' | i18n }}\n </ng-container>\n <pry-icon iconSvg=\"launch\"></pry-icon>\n</button>\n" }]
|
|
22
22
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvbGF1bmNoLXRhYi9sYXVuY2gtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9sYXVuY2gtdGFiL2xhdW5jaC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7QUFNcEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHNCQUFzQjtJQUM1RCxZQUFZLEtBQVk7UUFDdEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7K0dBUlUsa0JBQWtCO21HQUFsQixrQkFBa0IsNkVDVC9CLDJWQU9BOzs0RkRFYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgVG9vbGJveEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xib3gtYWN0aW9uL3Rvb2xib3gtYWN0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1sYXVuY2gtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xhdW5jaC10YWIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExhdW5jaFRhYkNvbXBvbmVudCBleHRlbmRzIFRvb2xib3hBY3Rpb25Db21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG4gIH1cblxuICBsYXVuY2hOZXdXaW5kb3coKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmNyZWF0ZVRhYigpKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSAtc2l6ZS1tZFwiIChjbGljayk9XCJsYXVuY2hOZXdXaW5kb3coKVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUxhYmVsc1wiXG4gICAgPjxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmxhdW5jaEluZGljYXRpb24nIHwgaTE4biB9fTwvc3BhblxuICAgID57eyAnQHByeS50b29sYm94LmxhdW5jaCcgfCBpMThuIH19XG4gIDwvbmctY29udGFpbmVyPlxuICA8cHJ5LWljb24gaWNvblN2Zz1cImxhdW5jaFwiPjwvcHJ5LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -24,12 +24,12 @@ export class NamedQueryComponent {
|
|
|
24
24
|
this.toggle();
|
|
25
25
|
}
|
|
26
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NamedQueryComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NamedQueryComponent, selector: "pry-named-query", inputs: { label: "label" }, ngImport: i0, template: "<div class=\"o-named-query\">\n <div class=\"combobox-container\" (dragleave)=\"dragLeave($event)\">\n <
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NamedQueryComponent, selector: "pry-named-query", inputs: { label: "label" }, ngImport: i0, template: "<div class=\"o-named-query\">\n <div class=\"combobox-container\" (dragleave)=\"dragLeave($event)\">\n <button type=\"button\" class=\"a-btn a-btn--action\" (click)=\"toggle()\">\n <pry-icon iconSvg=\"data_usage\"></pry-icon>\n <ng-container *ngIf=\"label\">{{ '@pry.toolbox.resultSet' | i18n }}</ng-container>\n </button>\n\n <div class=\"combobox\" *ngIf=\"displayCombo\" (mouseleave)=\"toggle()\">\n <ng-container *ngFor=\"let rs of namedQueries$ | async\">\n <div draggable=\"true\" (dragstart)=\"dragStart($event, rs)\">\n {{ rs | translateId : { type: 'datasource', output: 'name' } | async }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
28
28
|
}
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NamedQueryComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
|
-
args: [{ selector: 'pry-named-query', template: "<div class=\"o-named-query\">\n <div class=\"combobox-container\" (dragleave)=\"dragLeave($event)\">\n <
|
|
31
|
+
args: [{ selector: 'pry-named-query', template: "<div class=\"o-named-query\">\n <div class=\"combobox-container\" (dragleave)=\"dragLeave($event)\">\n <button type=\"button\" class=\"a-btn a-btn--action\" (click)=\"toggle()\">\n <pry-icon iconSvg=\"data_usage\"></pry-icon>\n <ng-container *ngIf=\"label\">{{ '@pry.toolbox.resultSet' | i18n }}</ng-container>\n </button>\n\n <div class=\"combobox\" *ngIf=\"displayCombo\" (mouseleave)=\"toggle()\">\n <ng-container *ngFor=\"let rs of namedQueries$ | async\">\n <div draggable=\"true\" (dragstart)=\"dragStart($event, rs)\">\n {{ rs | translateId : { type: 'datasource', output: 'name' } | async }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
|
|
32
32
|
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { label: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZWQtcXVlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9jb21wb25lbnRzL25hbWVkLXF1ZXJ5L25hbWVkLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9uYW1lZC1xdWVyeS9uYW1lZC1xdWVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPaEcsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBSjVCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFJbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWlCLEVBQUUsRUFBVTtRQUNyQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUNqRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsTUFBaUI7UUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBdEJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLG1GQ1RoQyx5c0JBZ0JBOzs0RkRQYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzRGQUlsQixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycywgRGF0YVNvdXJjZUFjdGlvbnMsIE1JTUVfVFlQRV9SRVNVTFRTRVQgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktbmFtZWQtcXVlcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vbmFtZWQtcXVlcnkuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5hbWVkUXVlcnlDb21wb25lbnQge1xuICBASW5wdXQoKSBsYWJlbCA9IHRydWU7XG4gIGRpc3BsYXlDb21ibyA9IGZhbHNlO1xuICBuYW1lZFF1ZXJpZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMubmFtZWRRdWVyaWVzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5hdmFpbGFibGVOYW1lZFF1ZXJpZXMpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuZGlzcGxheUNvbWJvID0gIXRoaXMuZGlzcGxheUNvbWJvO1xuICB9XG5cbiAgZHJhZ1N0YXJ0KCRldmVudDogRHJhZ0V2ZW50LCByczogc3RyaW5nKSB7XG4gICAgaWYgKCEhJGV2ZW50ICYmICEhJGV2ZW50LmRhdGFUcmFuc2ZlciAmJiAhJGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfUkVTVUxUU0VUKSkge1xuICAgICAgJGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKE1JTUVfVFlQRV9SRVNVTFRTRVQsIHJzKTtcbiAgICB9XG4gIH1cblxuICBkcmFnTGVhdmUoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1uYW1lZC1xdWVyeVwiPlxuICA8ZGl2IGNsYXNzPVwiY29tYm9ib3gtY29udGFpbmVyXCIgKGRyYWdsZWF2ZSk9XCJkcmFnTGVhdmUoJGV2ZW50KVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWFjdGlvblwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkYXRhX3VzYWdlXCI+PC9wcnktaWNvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFwiPnt7ICdAcHJ5LnRvb2xib3gucmVzdWx0U2V0JyB8IGkxOG4gfX08L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb21ib2JveFwiICpuZ0lmPVwiZGlzcGxheUNvbWJvXCIgKG1vdXNlbGVhdmUpPVwidG9nZ2xlKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJzIG9mIG5hbWVkUXVlcmllcyQgfCBhc3luY1wiPlxuICAgICAgICA8ZGl2IGRyYWdnYWJsZT1cInRydWVcIiAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQsIHJzKVwiPlxuICAgICAgICAgIHt7IHJzIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdkYXRhc291cmNlJywgb3V0cHV0OiAnbmFtZScgfSB8IGFzeW5jIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -34,10 +34,10 @@ export class RefreshDatasetsComponent extends ToolboxActionComponent {
|
|
|
34
34
|
this.close();
|
|
35
35
|
}
|
|
36
36
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshDatasetsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RefreshDatasetsComponent, selector: "pry-refresh-datasets", usesInheritance: true, ngImport: i0, template: "<
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RefreshDatasetsComponent, selector: "pry-refresh-datasets", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" class=\"a-btn a-btn--secondary -size-md\" (click)=\"refresh()\" [disabled]=\"datasetCount < 1\">\n <ng-container *ngIf=\"displayLabels\">\n {{ '@pry.toolbox.refresh' | i18n }}\n </ng-container>\n <pry-icon iconSvg=\"refresh_data\"></pry-icon>\n</button>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshDatasetsComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ selector: 'pry-refresh-datasets', template: "<
|
|
41
|
+
args: [{ selector: 'pry-refresh-datasets', template: "<button type=\"button\" class=\"a-btn a-btn--secondary -size-md\" (click)=\"refresh()\" [disabled]=\"datasetCount < 1\">\n <ng-container *ngIf=\"displayLabels\">\n {{ '@pry.toolbox.refresh' | i18n }}\n </ng-container>\n <pry-icon iconSvg=\"refresh_data\"></pry-icon>\n</button>\n" }]
|
|
42
42
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1kYXRhc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvcmVmcmVzaC1kYXRhc2V0cy9yZWZyZXNoLWRhdGFzZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9yZWZyZXNoLWRhdGFzZXRzL3JlZnJlc2gtZGF0YXNldHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7QUFNcEYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHNCQUFzQjtJQUtsRSxZQUFZLEtBQVk7UUFDdEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSGYsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFJZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNYLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFDaEI7Z0JBQ0UsR0FBRyxJQUFJLEdBQUcsQ0FDUixRQUFRLEVBQUUsT0FBTztxQkFDZCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ2xFLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ1AsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQ2xDO2FBQ0YsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQ25CLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUMvRCxDQUFDLEdBQStDLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFO29CQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsYUFBYSxDQUFDLGtCQUFrQixDQUFDO3dCQUMvQixFQUFFLEVBQUUsR0FBRyxDQUFDLFNBQVM7d0JBQ2pCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTt3QkFDMUIsSUFBSSxFQUFFLG9DQUFvQztxQkFDM0MsQ0FBQyxDQUNILENBQUM7aUJBQ0g7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzsrR0ExQ1Usd0JBQXdCO21HQUF4Qix3QkFBd0IsbUZDVnJDLCtSQU1BOzs0RkRJYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycywgR2xvYmFsTWFuaWZlc3QsIE1hbmlmZXN0VXRpbHMsIFNlYXJjaEFjdGlvbnMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJveEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xib3gtYWN0aW9uL3Rvb2xib3gtYWN0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1yZWZyZXNoLWRhdGFzZXRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZnJlc2gtZGF0YXNldHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hEYXRhc2V0c0NvbXBvbmVudCBleHRlbmRzIFRvb2xib3hBY3Rpb25Db21wb25lbnQge1xuICBtYW5pZmVzdCQ6IE9ic2VydmFibGU8R2xvYmFsTWFuaWZlc3Q+O1xuICBtYW5pZmVzdD86IEdsb2JhbE1hbmlmZXN0O1xuICBkYXRhc2V0Q291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBTdG9yZSkge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgICB0aGlzLm1hbmlmZXN0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm1hbmlmZXN0JC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiAodGhpcy5tYW5pZmVzdCA9IG1hbmlmZXN0KSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLm1hbmlmZXN0JC5zdWJzY3JpYmUoXG4gICAgICAgIChtYW5pZmVzdCkgPT5cbiAgICAgICAgICAodGhpcy5kYXRhc2V0Q291bnQgPVxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICAgIG1hbmlmZXN0Py53aW5kb3dzXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aW5kb3cpID0+IHdpbmRvdy53aWRnZXRzLm1hcCgod2lkZ2V0KSA9PiB3aWRnZXQuZGF0YXNvdXJjZSkpXG4gICAgICAgICAgICAgICAgICAuZmxhdCgzKVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZGF0YXNldCkgPT4gISFkYXRhc2V0KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLmxlbmd0aCA/PyAwKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIGlmICh0aGlzLm1hbmlmZXN0KSB7XG4gICAgICBNYW5pZmVzdFV0aWxzLmdldERhdGFzb3VyY2VzVXNlZEJ5TWFuaWZlc3QodGhpcy5tYW5pZmVzdCkuZm9yRWFjaChcbiAgICAgICAgKHJlczogeyBkYXRhc2V0SWQ6IHN0cmluZzsgZXhjbHVkZUdlbzogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5kYXRhc2V0SWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICAgICAgICBpZDogcmVzLmRhdGFzZXRJZCxcbiAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiByZXMuZXhjbHVkZUdlbyxcbiAgICAgICAgICAgICAgICBmcm9tOiAnUmVmcmVzaERhdGFzZXRzQ29tcG9uZW50LnJlZnJlc2goKSdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSAtc2l6ZS1tZFwiIChjbGljayk9XCJyZWZyZXNoKClcIiBbZGlzYWJsZWRdPVwiZGF0YXNldENvdW50IDwgMVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUxhYmVsc1wiPlxuICAgIHt7ICdAcHJ5LnRvb2xib3gucmVmcmVzaCcgfCBpMThuIH19XG4gIDwvbmctY29udGFpbmVyPlxuICA8cHJ5LWljb24gaWNvblN2Zz1cInJlZnJlc2hfZGF0YVwiPjwvcHJ5LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
|