@provoly/dashboard 1.3.27 → 1.3.29
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/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.d.ts +1 -1
- package/admin/components/admin-abac-rules/store/abac-rules.model.d.ts +1 -1
- 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 +10 -6
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.model.mjs +8 -2
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
- 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 +3 -3
- package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +1 -1
- 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 +1 -1
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +1 -1
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +4 -3
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +1 -1
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +1 -1
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +1 -1
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +1 -1
- package/esm2022/filters/list/list-filter.component.mjs +1 -1
- package/esm2022/import/components/form/import-form.component.mjs +1 -1
- package/esm2022/import/components/list/import-list.component.mjs +7 -5
- package/esm2022/import/components/version-modal/version-modal.component.mjs +3 -3
- package/esm2022/import/import.module.mjs +8 -4
- package/esm2022/import/style/css.component.mjs +2 -2
- package/esm2022/lib/core/auth/provoly-roles.contant.mjs +2 -0
- package/esm2022/lib/core/components/select/select.component.mjs +4 -7
- package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +1 -1
- package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +2 -1
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +8 -8
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +2 -2
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
- package/esm2022/lib/dashboard/store/title.service.mjs +1 -1
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +1 -1
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +1 -1
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +1 -1
- package/esm2022/restitution/components/restitution/restitution.component.mjs +1 -1
- package/esm2022/search/i18n/en.translations.mjs +4 -2
- package/esm2022/search/i18n/fr.translations.mjs +4 -2
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +1 -1
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +1 -1
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +1 -1
- package/esm2022/search/search-tools/search-tools.component.mjs +2 -2
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +1 -1
- package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +1 -1
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +1 -1
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +1 -1
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +1 -1
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +1 -1
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
- package/fesm2022/provoly-dashboard-admin.mjs +35 -24
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -1
- 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 +17 -11
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +11 -7
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +16 -19
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/components/list/import-list.component.d.ts +1 -0
- package/import/import.module.d.ts +2 -1
- package/import/style/_o-import.scss +2 -0
- package/lib/core/auth/provoly-roles.contant.d.ts +43 -0
- package/lib/core/components/select/select.component.d.ts +1 -2
- package/lib/core/public-api.d.ts +1 -0
- package/lib/core/store/data-source/data-source.reducer.d.ts +1 -1
- package/package.json +31 -31
- package/search/i18n/en.translations.d.ts +2 -0
- package/search/i18n/fr.translations.d.ts +2 -0
|
@@ -133,7 +133,7 @@ export class AdminClassesCustomizeSymbolComponent extends SubscriptionnerDirecti
|
|
|
133
133
|
this.store.dispatch(ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } }));
|
|
134
134
|
}
|
|
135
135
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminClassesCustomizeSymbolComponent, deps: [{ token: i1.PryI18nService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminClassesCustomizeSymbolComponent, selector: "pry-admin-classes-customize-symbol", inputs: { currentClass: "currentClass" }, outputs: { backPressed: "backPressed" }, usesInheritance: true, ngImport: i0, template: "<ul class=\"m-rule-wrapper\">\n <li\n *ngFor=\"let definition of definitions; let i = index\"\n [class.m-rule--default]=\"definition.isDefault\"\n class=\"m-rule\"\n >\n <div class=\"m-rule__header\">\n <h3 class=\"a-h3\">\n {{ '@pry.admin.rule' | i18n : { id: i + 1 } }}\n <span>{{ definition.isDefault ? ('@pry.admin.defaultRule' | i18n) : '' }}</span>\n </h3>\n\n <div *ngIf=\"!definition.isDefault\" class=\"m-rule__actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i <= 1\"\n [disabled]=\"i <= 1\"\n (click)=\"move(i, i - 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i >= definitions.length - 1\"\n [disabled]=\"i >= definitions.length - 1\"\n (click)=\"move(i, i + 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"removeRule(i)\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div>\n <pry-select-image [iconUrl]=\"definition.iconUrl\" (changed)=\"changeForImage($event, i)\"></pry-select-image>\n\n <ng-container *ngIf=\"definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"size\">{{ '@pry.admin.size' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSize($event)\"\n [items]=\"sizes\"\n [ngModel]=\"definition.iconSize[0]\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"size\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"display_mode\">{{ '@pry.admin.displayModeImage' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePosition($event, i)\"\n [items]=\"positions\"\n [ngModel]=\"definition.position\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"display_mode\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"!!definition.rule\" (click)=\"toggleRule(i)\">{{\n '@pry.admin.classes.condition' | i18n\n }}</pry-checkbox>\n </div>\n </ng-container>\n\n <div *ngIf=\"!!definition.rule && !definition.isDefault\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_attrname\">{{ '@pry.admin.classes.attrName' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAttrName($event, i)\"\n [items]=\"fieldsForClass\"\n [ngModel]=\"definition.rule.attributeName\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"classes_attrname\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_operation\">{{ '@pry.admin.classes.operation' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event, i)\"\n [items]=\"operations\"\n [ngModel]=\"definition.rule.operation\"\n bindLabel=\"label\"\n bindValue=\"name\"\n id=\"classes_operation\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_value\">{{ '@pry.admin.classes.value' | i18n }}</label>\n <input\n id=\"classes_value\"\n type=\"text\"\n class=\"a-form-field\"\n (ngModelChange)=\"changeValue($event, i)\"\n [ngModel]=\"definition.rule.value\"\n />\n </div>\n </div>\n </div>\n </li>\n</ul>\n\n<button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"addRule()\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n Ajouter une r\u00E8gle\n</button>\n\n<div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"restoreSymbols(); goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.customize.updateIcons' | i18n\"\n (click)=\"valid()\"\n ></button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "
|
|
136
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminClassesCustomizeSymbolComponent, selector: "pry-admin-classes-customize-symbol", inputs: { currentClass: "currentClass" }, outputs: { backPressed: "backPressed" }, usesInheritance: true, ngImport: i0, template: "<ul class=\"m-rule-wrapper\">\n <li\n *ngFor=\"let definition of definitions; let i = index\"\n [class.m-rule--default]=\"definition.isDefault\"\n class=\"m-rule\"\n >\n <div class=\"m-rule__header\">\n <h3 class=\"a-h3\">\n {{ '@pry.admin.rule' | i18n : { id: i + 1 } }}\n <span>{{ definition.isDefault ? ('@pry.admin.defaultRule' | i18n) : '' }}</span>\n </h3>\n\n <div *ngIf=\"!definition.isDefault\" class=\"m-rule__actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i <= 1\"\n [disabled]=\"i <= 1\"\n (click)=\"move(i, i - 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i >= definitions.length - 1\"\n [disabled]=\"i >= definitions.length - 1\"\n (click)=\"move(i, i + 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"removeRule(i)\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div>\n <pry-select-image [iconUrl]=\"definition.iconUrl\" (changed)=\"changeForImage($event, i)\"></pry-select-image>\n\n <ng-container *ngIf=\"definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"size\">{{ '@pry.admin.size' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSize($event)\"\n [items]=\"sizes\"\n [ngModel]=\"definition.iconSize[0]\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"size\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"display_mode\">{{ '@pry.admin.displayModeImage' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePosition($event, i)\"\n [items]=\"positions\"\n [ngModel]=\"definition.position\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"display_mode\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"!!definition.rule\" (click)=\"toggleRule(i)\">{{\n '@pry.admin.classes.condition' | i18n\n }}</pry-checkbox>\n </div>\n </ng-container>\n\n <div *ngIf=\"!!definition.rule && !definition.isDefault\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_attrname\">{{ '@pry.admin.classes.attrName' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAttrName($event, i)\"\n [items]=\"fieldsForClass\"\n [ngModel]=\"definition.rule.attributeName\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"classes_attrname\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_operation\">{{ '@pry.admin.classes.operation' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event, i)\"\n [items]=\"operations\"\n [ngModel]=\"definition.rule.operation\"\n bindLabel=\"label\"\n bindValue=\"name\"\n id=\"classes_operation\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_value\">{{ '@pry.admin.classes.value' | i18n }}</label>\n <input\n id=\"classes_value\"\n type=\"text\"\n class=\"a-form-field\"\n (ngModelChange)=\"changeValue($event, i)\"\n [ngModel]=\"definition.rule.value\"\n />\n </div>\n </div>\n </div>\n </li>\n</ul>\n\n<button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"addRule()\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n Ajouter une r\u00E8gle\n</button>\n\n<div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"restoreSymbols(); goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.customize.updateIcons' | i18n\"\n (click)=\"valid()\"\n ></button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
|
|
137
137
|
}
|
|
138
138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminClassesCustomizeSymbolComponent, decorators: [{
|
|
139
139
|
type: Component,
|
|
@@ -125,7 +125,7 @@ export class AdminClassesCustomizeTooltipComponent extends SubscriptionnerDirect
|
|
|
125
125
|
return config;
|
|
126
126
|
}
|
|
127
127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminClassesCustomizeTooltipComponent, deps: [{ token: i1.TooltipFactoryService }, { token: i0.Injector }, { token: i1.PryI18nService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminClassesCustomizeTooltipComponent, selector: "pry-admin-classes-customize-tooltip", inputs: { currentClass: "currentClass" }, outputs: { backPressed: "backPressed" }, viewQueries: [{ propertyName: "example", first: true, predicate: ["example"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"m-form-label-field -width-xl\">\n <label class=\"a-label\" for=\"tooltip_type\">{{ '@pry.admin.customize.type' | i18n }}</label>\n <pry-select\n id=\"tooltip_type\"\n (ngModelChange)=\"tooltipTypeChanged($event)\"\n [ngModel]=\"currentClassConfig.type\"\n [items]=\"possibleTooltipTypes$ | async\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </div>\n\n <div>\n <pry-checkbox [(ngModel)]=\"advancedTooltip\">{{ '@pry.admin.customize.advanced' | i18n }}</pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field -width-xl\" *ngIf=\"!advancedTooltip && currentClassConfig.type === 'attribute'\">\n <label class=\"a-label\" for=\"customize_simplified\">{{ '@pry.admin.customize.simplified' | i18n }}</label>\n <pry-select\n id=\"customize_simplified\"\n (ngModelChange)=\"changeAttributes($event)\"\n [ngModel]=\"currentClassConfig.options.attributes\"\n [items]=\"attributesOfClass$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"advancedTooltip\">\n <textarea\n cols=\"100\"\n rows=\"15\"\n class=\"a-form-field\"\n [(ngModel)]=\"strOptions\"\n (focusout)=\"optionsChanged()\"\n ></textarea>\n </ng-container>\n</div>\n\n<div class=\"m-tooltip m-tooltip--example\" [class.-hidden]=\"noTooltip\">\n <div #example></div>\n</div>\n\n<div class=\"m-btn-group -width-md\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTemplate()\">\n {{ '@pry.admin.customize.update' | i18n }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminClassesCustomizeTooltipComponent, selector: "pry-admin-classes-customize-tooltip", inputs: { currentClass: "currentClass" }, outputs: { backPressed: "backPressed" }, viewQueries: [{ propertyName: "example", first: true, predicate: ["example"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"m-form-label-field -width-xl\">\n <label class=\"a-label\" for=\"tooltip_type\">{{ '@pry.admin.customize.type' | i18n }}</label>\n <pry-select\n id=\"tooltip_type\"\n (ngModelChange)=\"tooltipTypeChanged($event)\"\n [ngModel]=\"currentClassConfig.type\"\n [items]=\"possibleTooltipTypes$ | async\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </div>\n\n <div>\n <pry-checkbox [(ngModel)]=\"advancedTooltip\">{{ '@pry.admin.customize.advanced' | i18n }}</pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field -width-xl\" *ngIf=\"!advancedTooltip && currentClassConfig.type === 'attribute'\">\n <label class=\"a-label\" for=\"customize_simplified\">{{ '@pry.admin.customize.simplified' | i18n }}</label>\n <pry-select\n id=\"customize_simplified\"\n (ngModelChange)=\"changeAttributes($event)\"\n [ngModel]=\"currentClassConfig.options.attributes\"\n [items]=\"attributesOfClass$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"advancedTooltip\">\n <textarea\n cols=\"100\"\n rows=\"15\"\n class=\"a-form-field\"\n [(ngModel)]=\"strOptions\"\n (focusout)=\"optionsChanged()\"\n ></textarea>\n </ng-container>\n</div>\n\n<div class=\"m-tooltip m-tooltip--example\" [class.-hidden]=\"noTooltip\">\n <div #example></div>\n</div>\n\n<div class=\"m-btn-group -width-md\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTemplate()\">\n {{ '@pry.admin.customize.update' | i18n }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
|
|
129
129
|
}
|
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminClassesCustomizeTooltipComponent, decorators: [{
|
|
131
131
|
type: Component,
|
package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs
CHANGED
|
@@ -85,12 +85,12 @@ export class AdminClassesFormComponent extends SubscriptionnerDirective {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminClassesFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminClassesFormComponent, selector: "pry-admin-classes-form", inputs: { currentClass: "currentClass" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"classForm\" (ngSubmit)=\"addClass()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.classes.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n [attr.aria-labelledby]=\"isSubmitted && classForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n class=\"a-form-field\"\n formControlName=\"name\"\n id=\"name\"\n required\n type=\"text\"\n [attr.aria-invalid]=\"isSubmitted && classForm.get('name')?.invalid\"\n />\n <label\n *ngIf=\"isSubmitted && classForm.get('name')?.invalid\"\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"classForm.get('name')?.hasError('same-name')\">{{ '@pry.admin.exists' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('minlength')\">{{ '@pry.admin.minLength' | i18n : { len: 3 } }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('maxlength')\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('whitespace')\">{{ '@pry.admin.noWhitespace' | i18n }}</span>\n </label>\n </div>\n <div class=\"u-display-flex -row -align-center\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"storage_options\">\n {{ '@pry.admin.storage.label' | i18n }}\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n [items]=\"storageOptions$ | async\"\n i18nPrefix=\"@pry.admin.storage.options.\"\n formControlName=\"storage\"\n id=\"storage_options\"\n [
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminClassesFormComponent, selector: "pry-admin-classes-form", inputs: { currentClass: "currentClass" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"classForm\" (ngSubmit)=\"addClass()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.classes.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n [attr.aria-labelledby]=\"isSubmitted && classForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n class=\"a-form-field\"\n formControlName=\"name\"\n id=\"name\"\n required\n type=\"text\"\n [attr.aria-invalid]=\"isSubmitted && classForm.get('name')?.invalid\"\n />\n <label\n *ngIf=\"isSubmitted && classForm.get('name')?.invalid\"\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"classForm.get('name')?.hasError('same-name')\">{{ '@pry.admin.exists' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('minlength')\">{{ '@pry.admin.minLength' | i18n : { len: 3 } }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('maxlength')\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('whitespace')\">{{ '@pry.admin.noWhitespace' | i18n }}</span>\n </label>\n </div>\n <div class=\"u-display-flex -row -align-center\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"storage_options\">\n {{ '@pry.admin.storage.label' | i18n }}\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n [items]=\"storageOptions$ | async\"\n i18nPrefix=\"@pry.admin.storage.options.\"\n formControlName=\"storage\"\n id=\"storage_options\"\n [disabled]=\"!!_currentClass\"\n ></pry-select>\n </div>\n <div class=\"m-info-icon a-tooltip -tooltip-width-md\" [attr.data-tooltip]=\"'@pry.admin.storage.description.' + classForm.get('storage')?.value | i18n\" data-tooltip-position=\"right\">\n <span>i</span>\n </div>\n </div>\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentClass ? '@pry.admin.edit' : '@pry.admin.next') | i18n\"\n ></button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
89
89
|
}
|
|
90
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminClassesFormComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
92
|
-
args: [{ selector: 'pry-admin-classes-form', template: "<form class=\"o-form\" [formGroup]=\"classForm\" (ngSubmit)=\"addClass()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.classes.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n [attr.aria-labelledby]=\"isSubmitted && classForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n class=\"a-form-field\"\n formControlName=\"name\"\n id=\"name\"\n required\n type=\"text\"\n [attr.aria-invalid]=\"isSubmitted && classForm.get('name')?.invalid\"\n />\n <label\n *ngIf=\"isSubmitted && classForm.get('name')?.invalid\"\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"classForm.get('name')?.hasError('same-name')\">{{ '@pry.admin.exists' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('minlength')\">{{ '@pry.admin.minLength' | i18n : { len: 3 } }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('maxlength')\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('whitespace')\">{{ '@pry.admin.noWhitespace' | i18n }}</span>\n </label>\n </div>\n <div class=\"u-display-flex -row -align-center\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"storage_options\">\n {{ '@pry.admin.storage.label' | i18n }}\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n [items]=\"storageOptions$ | async\"\n i18nPrefix=\"@pry.admin.storage.options.\"\n formControlName=\"storage\"\n id=\"storage_options\"\n [
|
|
92
|
+
args: [{ selector: 'pry-admin-classes-form', template: "<form class=\"o-form\" [formGroup]=\"classForm\" (ngSubmit)=\"addClass()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.classes.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n [attr.aria-labelledby]=\"isSubmitted && classForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n class=\"a-form-field\"\n formControlName=\"name\"\n id=\"name\"\n required\n type=\"text\"\n [attr.aria-invalid]=\"isSubmitted && classForm.get('name')?.invalid\"\n />\n <label\n *ngIf=\"isSubmitted && classForm.get('name')?.invalid\"\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"classForm.get('name')?.hasError('same-name')\">{{ '@pry.admin.exists' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('minlength')\">{{ '@pry.admin.minLength' | i18n : { len: 3 } }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('maxlength')\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</span>\n <span *ngIf=\"classForm.get('name')?.hasError('whitespace')\">{{ '@pry.admin.noWhitespace' | i18n }}</span>\n </label>\n </div>\n <div class=\"u-display-flex -row -align-center\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"storage_options\">\n {{ '@pry.admin.storage.label' | i18n }}\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n [items]=\"storageOptions$ | async\"\n i18nPrefix=\"@pry.admin.storage.options.\"\n formControlName=\"storage\"\n id=\"storage_options\"\n [disabled]=\"!!_currentClass\"\n ></pry-select>\n </div>\n <div class=\"m-info-icon a-tooltip -tooltip-width-md\" [attr.data-tooltip]=\"'@pry.admin.storage.description.' + classForm.get('storage')?.value | i18n\" data-tooltip-position=\"right\">\n <span>i</span>\n </div>\n </div>\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentClass ? '@pry.admin.edit' : '@pry.admin.next') | i18n\"\n ></button>\n </div>\n</form>\n" }]
|
|
93
93
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.UntypedFormBuilder }], propDecorators: { currentClass: [{
|
|
94
94
|
type: Input
|
|
95
95
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tY2xhc3Nlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLWZvcm0vYWRtaW4tY2xhc3Nlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLWZvcm0vYWRtaW4tY2xhc3Nlcy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xGLE9BQU8sRUFBUyxZQUFZLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBTXJFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFXckUsSUFBYSxZQUFZLENBQUMsR0FBVTtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lB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VSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkcsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFdBQVcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBeEZVLHlCQUF5QjtrR0FBekIseUJBQXlCLCtIQ2Z0Qyx3bkZBOERBOzsyRkQvQ2EseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHdCQUF3Qjs2SkFjckIsWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ2xhc3MsIENsYXNzQWN0aW9ucywgQ2xhc3NTZWxlY3RvcnMsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hZG1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRtaW5DbGFzc0FjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IEFkbWluQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5zZWxlY3RvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRtaW4tY2xhc3Nlcy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWNsYXNzZXMtZm9ybS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRtaW5DbGFzc2VzRm9ybUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY2xhc3NOYW1lcyQ/OiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgbmFtZUFscmVhZHlFeGlzdHMkPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3RvcmFnZU9wdGlvbnMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcbiAgY2xhc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBfY3VycmVudENsYXNzPzogQ2xhc3M7XG5cbiAgQElucHV0KCkgc2V0IGN1cnJlbnRDbGFzcyh2YWw6IENsYXNzKSB7XG4gICAgdGhpcy5fY3VycmVudENsYXNzID0gdmFsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY2xhc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBpZDogW3V1aWQoKV0sXG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgICBkZXNjcmlwdGlvbjogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIHN0b3JhZ2U6IFsnRUxBU1RJQyddXG4gICAgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkNsYXNzQWN0aW9ucy5nZXRTdG9yYWdlT3B0aW9ucygpKTtcbiAgICB0aGlzLnN0b3JhZ2VPcHRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFkbWluQ2xhc3NTZWxlY3RvcnMuc3RvcmFnZU9wdGlvbnMpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLmNsYXNzTmFtZXMkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKVxuICAgICAgLnBpcGUobWFwKChjbGFzc2VzOiBDbGFzc1tdKSA9PiBjbGFzc2VzLm1hcCgoY2xheno6IENsYXNzKSA9PiBjbGF6ei5uYW1lLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgdGhpcy5uYW1lQWxyZWFkeUV4aXN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2xhc3NGb3JtLmdldCgnbmFtZScpPy52YWx1ZUNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICAgdGhpcy5jbGFzc05hbWVzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt2YWx1ZSwgY2xhc3NOYW1lc10pID0+IGNsYXNzTmFtZXMuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSkgJiYgdmFsdWUgIT0gdGhpcy5fY3VycmVudENsYXNzPy5uYW1lKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jbGFzc0Zvcm0uY29udHJvbHNbJ25hbWUnXS5zZXRFcnJvcnMoeyAnc2FtZS1uYW1lJzogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fY3VycmVudENsYXNzKSB7XG4gICAgICB0aGlzLmNsYXNzRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgaWQ6IHRoaXMuX2N1cnJlbnRDbGFzcy5pZCxcbiAgICAgICAgbmFtZTogdGhpcy5fY3VycmVudENsYXNzLm5hbWUsXG4gICAgICAgIHN0b3JhZ2U6IHRoaXMuX2N1cnJlbnRDbGFzcy5zdG9yYWdlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5fY3VycmVudENsYXNzID8gJy4uLy4uJyA6ICcuLic7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW3JlZGlyZWN0UGF0aF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLmJhY2soeyBwYXRoOiBwYXRoLnRvU3RyaW5nKCkgfSkpO1xuICB9XG5cbiAgYWRkQ2xhc3MoKSB7XG4gICAgdGhpcy5jbGFzc0Zvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBuYW1lOiB0aGlzLmNsYXNzRm9ybS52YWx1ZS5uYW1lLnRyaW0oKVxuICAgIH0pO1xuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNsYXNzRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgICAgbGV0IGNsYXNzVG9TYXZlID0gdGhpcy5jbGFzc0Zvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50Q2xhc3MpIHtcbiAgICAgICAgY2xhc3NUb1NhdmUgPSB7XG4gICAgICAgICAgLi4udGhpcy5fY3VycmVudENsYXNzLFxuICAgICAgICAgIG5hbWU6IHRoaXMuY2xhc3NGb3JtLnZhbHVlLm5hbWVcbiAgICAgICAgfSBhcyBDbGFzcztcbiAgICAgICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4vLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLnNhdmVDbGFzcyh7IGNsYXNzOiBjbGFzc1RvU2F2ZSwgcm91dGU6IHBhdGgudG9TdHJpbmcoKSB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc1RvU2F2ZS5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIGxldCBwYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uJywgY2xhc3NUb1NhdmUuaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5DbGFzc0FjdGlvbnMuc2F2ZUludGVyQ2xhc3MoeyBjbGFzczogY2xhc3NUb1NhdmUsIHJvdXRlOiBwYXRoLnRvU3RyaW5nKCkgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJvLWZvcm1cIiBbZm9ybUdyb3VwXT1cImNsYXNzRm9ybVwiIChuZ1N1Ym1pdCk9XCJhZGRDbGFzcygpXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGlkPVwibmFtZS1sYWJlbFwiIGZvcj1cIm5hbWVcIj5cbiAgICAgIHt7ICdAcHJ5LmFkbWluLmNsYXNzZXMubmFtZScgfCBpMThuIH19ICpcbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpc1N1Ym1pdHRlZCAmJiBjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/LmludmFsaWQgPyAnbmFtZS1sYWJlbCBuYW1lLWVycm9yJyA6ICduYW1lLWxhYmVsJ1wiXG4gICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgIGlkPVwibmFtZVwiXG4gICAgICByZXF1aXJlZFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIGNsYXNzRm9ybS5nZXQoJ25hbWUnKT8uaW52YWxpZFwiXG4gICAgLz5cbiAgICA8bGFiZWxcbiAgICAgICpuZ0lmPVwiaXNTdWJtaXR0ZWQgJiYgY2xhc3NGb3JtLmdldCgnbmFtZScpPy5pbnZhbGlkXCJcbiAgICAgIGlkPVwibmFtZS1lcnJvclwiXG4gICAgICBmb3I9XCJuYW1lXCJcbiAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdzYW1lLW5hbWUnKVwiPnt7ICdAcHJ5LmFkbWluLmV4aXN0cycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY2xhc3NGb3JtLmdldCgnbmFtZScpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj57eyAnQHByeS5hZG1pbi5taW5MZW5ndGgnIHwgaTE4biA6IHsgbGVuOiAzIH0gfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNsYXNzRm9ybS5nZXQoJ25hbWUnKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tcbiAgICAgICAgJ0BwcnkuYWRtaW4ubWF4TGVuZ3RoJyB8IGkxOG4gOiB7IGxlbjogMTAwIH1cbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj57eyAnQHByeS5hZG1pbi5ub1doaXRlc3BhY2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1yb3cgLWFsaWduLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwic3RvcmFnZV9vcHRpb25zXCI+XG4gICAgICAgIHt7ICdAcHJ5LmFkbWluLnN0b3JhZ2UubGFiZWwnIHwgaTE4biB9fVxuICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJzdG9yYWdlT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgIGkxOG5QcmVmaXg9XCJAcHJ5LmFkbWluLnN0b3JhZ2Uub3B0aW9ucy5cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdG9yYWdlXCJcbiAgICAgICAgaWQ9XCJzdG9yYWdlX29wdGlvbnNcIlxuICAgICAgICBbcmVhZG9ubHldPVwiISFfY3VycmVudENsYXNzXCJcbiAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0taW5mby1pY29uIGEtdG9vbHRpcCAtdG9vbHRpcC13aWR0aC1tZFwiIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5hZG1pbi5zdG9yYWdlLmRlc2NyaXB0aW9uLicgKyBjbGFzc0Zvcm0uZ2V0KCdzdG9yYWdlJyk/LnZhbHVlIHwgaTE4blwiIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICA8c3Bhbj5pPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC13aWR0aC1zbVwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCJcbiAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICBbaW5uZXJIVE1MXT1cIidAcHJ5LmFkbWluLmNhbmNlbCcgfCBpMThuXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIFtpbm5lckhUTUxdPVwiKF9jdXJyZW50Q2xhc3MgPyAnQHByeS5hZG1pbi5lZGl0JyA6ICdAcHJ5LmFkbWluLm5leHQnKSB8IGkxOG5cIlxuICAgID48L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tY2xhc3Nlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLWZvcm0vYWRtaW4tY2xhc3Nlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLWZvcm0vYWRtaW4tY2xhc3Nlcy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xGLE9BQU8sRUFBUyxZQUFZLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBTXJFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFXckUsSUFBYSxZQUFZLENBQUMsR0FBVTtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lB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VSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkcsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFdBQVcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBeEZVLHlCQUF5QjtrR0FBekIseUJBQXlCLCtIQ2Z0Qyx3bkZBOERBOzsyRkQvQ2EseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHdCQUF3Qjs2SkFjckIsWUFBWTtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ2xhc3MsIENsYXNzQWN0aW9ucywgQ2xhc3NTZWxlY3RvcnMsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hZG1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRtaW5DbGFzc0FjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IEFkbWluQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5zZWxlY3RvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRtaW4tY2xhc3Nlcy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWNsYXNzZXMtZm9ybS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRtaW5DbGFzc2VzRm9ybUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY2xhc3NOYW1lcyQ/OiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgbmFtZUFscmVhZHlFeGlzdHMkPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3RvcmFnZU9wdGlvbnMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcbiAgY2xhc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBfY3VycmVudENsYXNzPzogQ2xhc3M7XG5cbiAgQElucHV0KCkgc2V0IGN1cnJlbnRDbGFzcyh2YWw6IENsYXNzKSB7XG4gICAgdGhpcy5fY3VycmVudENsYXNzID0gdmFsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY2xhc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBpZDogW3V1aWQoKV0sXG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgICBkZXNjcmlwdGlvbjogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIHN0b3JhZ2U6IFsnRUxBU1RJQyddXG4gICAgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkNsYXNzQWN0aW9ucy5nZXRTdG9yYWdlT3B0aW9ucygpKTtcbiAgICB0aGlzLnN0b3JhZ2VPcHRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFkbWluQ2xhc3NTZWxlY3RvcnMuc3RvcmFnZU9wdGlvbnMpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLmNsYXNzTmFtZXMkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKVxuICAgICAgLnBpcGUobWFwKChjbGFzc2VzOiBDbGFzc1tdKSA9PiBjbGFzc2VzLm1hcCgoY2xheno6IENsYXNzKSA9PiBjbGF6ei5uYW1lLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgdGhpcy5uYW1lQWxyZWFkeUV4aXN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2xhc3NGb3JtLmdldCgnbmFtZScpPy52YWx1ZUNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICAgdGhpcy5jbGFzc05hbWVzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt2YWx1ZSwgY2xhc3NOYW1lc10pID0+IGNsYXNzTmFtZXMuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSkgJiYgdmFsdWUgIT0gdGhpcy5fY3VycmVudENsYXNzPy5uYW1lKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jbGFzc0Zvcm0uY29udHJvbHNbJ25hbWUnXS5zZXRFcnJvcnMoeyAnc2FtZS1uYW1lJzogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fY3VycmVudENsYXNzKSB7XG4gICAgICB0aGlzLmNsYXNzRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgaWQ6IHRoaXMuX2N1cnJlbnRDbGFzcy5pZCxcbiAgICAgICAgbmFtZTogdGhpcy5fY3VycmVudENsYXNzLm5hbWUsXG4gICAgICAgIHN0b3JhZ2U6IHRoaXMuX2N1cnJlbnRDbGFzcy5zdG9yYWdlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5fY3VycmVudENsYXNzID8gJy4uLy4uJyA6ICcuLic7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW3JlZGlyZWN0UGF0aF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLmJhY2soeyBwYXRoOiBwYXRoLnRvU3RyaW5nKCkgfSkpO1xuICB9XG5cbiAgYWRkQ2xhc3MoKSB7XG4gICAgdGhpcy5jbGFzc0Zvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBuYW1lOiB0aGlzLmNsYXNzRm9ybS52YWx1ZS5uYW1lLnRyaW0oKVxuICAgIH0pO1xuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNsYXNzRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgICAgbGV0IGNsYXNzVG9TYXZlID0gdGhpcy5jbGFzc0Zvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50Q2xhc3MpIHtcbiAgICAgICAgY2xhc3NUb1NhdmUgPSB7XG4gICAgICAgICAgLi4udGhpcy5fY3VycmVudENsYXNzLFxuICAgICAgICAgIG5hbWU6IHRoaXMuY2xhc3NGb3JtLnZhbHVlLm5hbWVcbiAgICAgICAgfSBhcyBDbGFzcztcbiAgICAgICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4vLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLnNhdmVDbGFzcyh7IGNsYXNzOiBjbGFzc1RvU2F2ZSwgcm91dGU6IHBhdGgudG9TdHJpbmcoKSB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc1RvU2F2ZS5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIGxldCBwYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uJywgY2xhc3NUb1NhdmUuaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5DbGFzc0FjdGlvbnMuc2F2ZUludGVyQ2xhc3MoeyBjbGFzczogY2xhc3NUb1NhdmUsIHJvdXRlOiBwYXRoLnRvU3RyaW5nKCkgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJvLWZvcm1cIiBbZm9ybUdyb3VwXT1cImNsYXNzRm9ybVwiIChuZ1N1Ym1pdCk9XCJhZGRDbGFzcygpXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGlkPVwibmFtZS1sYWJlbFwiIGZvcj1cIm5hbWVcIj5cbiAgICAgIHt7ICdAcHJ5LmFkbWluLmNsYXNzZXMubmFtZScgfCBpMThuIH19ICpcbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpc1N1Ym1pdHRlZCAmJiBjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/LmludmFsaWQgPyAnbmFtZS1sYWJlbCBuYW1lLWVycm9yJyA6ICduYW1lLWxhYmVsJ1wiXG4gICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgIGlkPVwibmFtZVwiXG4gICAgICByZXF1aXJlZFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIGNsYXNzRm9ybS5nZXQoJ25hbWUnKT8uaW52YWxpZFwiXG4gICAgLz5cbiAgICA8bGFiZWxcbiAgICAgICpuZ0lmPVwiaXNTdWJtaXR0ZWQgJiYgY2xhc3NGb3JtLmdldCgnbmFtZScpPy5pbnZhbGlkXCJcbiAgICAgIGlkPVwibmFtZS1lcnJvclwiXG4gICAgICBmb3I9XCJuYW1lXCJcbiAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdzYW1lLW5hbWUnKVwiPnt7ICdAcHJ5LmFkbWluLmV4aXN0cycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY2xhc3NGb3JtLmdldCgnbmFtZScpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj57eyAnQHByeS5hZG1pbi5taW5MZW5ndGgnIHwgaTE4biA6IHsgbGVuOiAzIH0gfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNsYXNzRm9ybS5nZXQoJ25hbWUnKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tcbiAgICAgICAgJ0BwcnkuYWRtaW4ubWF4TGVuZ3RoJyB8IGkxOG4gOiB7IGxlbjogMTAwIH1cbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzc0Zvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj57eyAnQHByeS5hZG1pbi5ub1doaXRlc3BhY2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1yb3cgLWFsaWduLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwic3RvcmFnZV9vcHRpb25zXCI+XG4gICAgICAgIHt7ICdAcHJ5LmFkbWluLnN0b3JhZ2UubGFiZWwnIHwgaTE4biB9fVxuICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJzdG9yYWdlT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgIGkxOG5QcmVmaXg9XCJAcHJ5LmFkbWluLnN0b3JhZ2Uub3B0aW9ucy5cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdG9yYWdlXCJcbiAgICAgICAgaWQ9XCJzdG9yYWdlX29wdGlvbnNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiISFfY3VycmVudENsYXNzXCJcbiAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0taW5mby1pY29uIGEtdG9vbHRpcCAtdG9vbHRpcC13aWR0aC1tZFwiIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5hZG1pbi5zdG9yYWdlLmRlc2NyaXB0aW9uLicgKyBjbGFzc0Zvcm0uZ2V0KCdzdG9yYWdlJyk/LnZhbHVlIHwgaTE4blwiIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICA8c3Bhbj5pPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC13aWR0aC1zbVwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCJcbiAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICBbaW5uZXJIVE1MXT1cIidAcHJ5LmFkbWluLmNhbmNlbCcgfCBpMThuXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIFtpbm5lckhUTUxdPVwiKF9jdXJyZW50Q2xhc3MgPyAnQHByeS5hZG1pbi5lZGl0JyA6ICdAcHJ5LmFkbWluLm5leHQnKSB8IGkxOG5cIlxuICAgID48L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -136,11 +136,11 @@ export class AdminAttributesFormComponent extends SubscriptionnerDirective {
|
|
|
136
136
|
this.subscriptions.add(ref.component.closeModal.subscribe(() => ref.close()));
|
|
137
137
|
}
|
|
138
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminAttributesFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.UntypedFormBuilder }, { token: i4.PryI18nService }, { token: i4.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminAttributesFormComponent, selector: "pry-admin-attributes-form", inputs: { selectedClass: "selectedClass", interClass: "interClass", selectedAttribute: "selectedAttribute" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</label>\n <input id=\"attr_technicalName\" type=\"text\" class=\"a-form-field\" formControlName=\"technicalName\" required />\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\" *ngIf=\"technicalNameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('technicalName')?.invalid\">\n <div *ngIf=\"attrForm.get('technicalName')?.dirty && attrForm.get('technicalName')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.minLength' | i18n: { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</label>\n </div>\n <div\n *ngIf=\"\n attrForm.get('technicalName')?.hasError('whitespace') && !attrForm.get('technicalName')?.hasError('minlength')\n \"\n >\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.noWhitespace' | i18n\n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" />\n <label class=\"a-label a-label--help -error\" for=\"attr_name\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n: { len: 50 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"type\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AdminAttributesFormComponent, selector: "pry-admin-attributes-form", inputs: { selectedClass: "selectedClass", interClass: "interClass", selectedAttribute: "selectedAttribute" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</label>\n <input id=\"attr_technicalName\" type=\"text\" class=\"a-form-field\" formControlName=\"technicalName\" required />\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\" *ngIf=\"technicalNameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('technicalName')?.invalid\">\n <div *ngIf=\"attrForm.get('technicalName')?.dirty && attrForm.get('technicalName')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.minLength' | i18n: { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</label>\n </div>\n <div\n *ngIf=\"\n attrForm.get('technicalName')?.hasError('whitespace') && !attrForm.get('technicalName')?.hasError('minlength')\n \"\n >\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.noWhitespace' | i18n\n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" />\n <label class=\"a-label a-label--help -error\" for=\"attr_name\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n: { len: 50 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"type\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n [template]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <p>{{ item.name }}</p>\n <div class=\"a-chip\" *ngIf=\"item.crs\">{{ item.crs }}</div>\n </div>\n </ng-template>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"(selectedFieldTypeDescription$ | async) ?? '' | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.dirty && attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"type\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [items]=\"categories$ | async\"\n (click)=\"openModal()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists || technicalNameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
140
140
|
}
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminAttributesFormComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'pry-admin-attributes-form', template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</label>\n <input id=\"attr_technicalName\" type=\"text\" class=\"a-form-field\" formControlName=\"technicalName\" required />\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\" *ngIf=\"technicalNameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('technicalName')?.invalid\">\n <div *ngIf=\"attrForm.get('technicalName')?.dirty && attrForm.get('technicalName')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.minLength' | i18n: { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</label>\n </div>\n <div\n *ngIf=\"\n attrForm.get('technicalName')?.hasError('whitespace') && !attrForm.get('technicalName')?.hasError('minlength')\n \"\n >\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.noWhitespace' | i18n\n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" />\n <label class=\"a-label a-label--help -error\" for=\"attr_name\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n: { len: 50 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"type\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n
|
|
143
|
+
args: [{ selector: 'pry-admin-attributes-form', template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</label>\n <input id=\"attr_technicalName\" type=\"text\" class=\"a-form-field\" formControlName=\"technicalName\" required />\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\" *ngIf=\"technicalNameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('technicalName')?.invalid\">\n <div *ngIf=\"attrForm.get('technicalName')?.dirty && attrForm.get('technicalName')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.minLength' | i18n: { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('technicalName')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</label>\n </div>\n <div\n *ngIf=\"\n attrForm.get('technicalName')?.hasError('whitespace') && !attrForm.get('technicalName')?.hasError('minlength')\n \"\n >\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.noWhitespace' | i18n\n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" />\n <label class=\"a-label a-label--help -error\" for=\"attr_name\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n: { len: 50 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"type\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n [template]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <p>{{ item.name }}</p>\n <div class=\"a-chip\" *ngIf=\"item.crs\">{{ item.crs }}</div>\n </div>\n </ng-template>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"(selectedFieldTypeDescription$ | async) ?? '' | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.dirty && attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"type\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [items]=\"categories$ | async\"\n (click)=\"openModal()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists || technicalNameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n" }]
|
|
144
144
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.UntypedFormBuilder }, { type: i4.PryI18nService }, { type: i4.PryDialogService }], propDecorators: { selectedClass: [{
|
|
145
145
|
type: Input
|
|
146
146
|
}], interClass: [{
|
|
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
148
148
|
}], selectedAttribute: [{
|
|
149
149
|
type: Input
|
|
150
150
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLXZpZXcvYWRtaW4tYXR0cmlidXRlcy1mb3JtL2FkbWluLWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2FkbWluLWNsYXNzZXMvYWRtaW4tY2xhc3Nlcy12aWV3L2FkbWluLWF0dHJpYnV0ZXMtZm9ybS9hZG1pbi1hdHRyaWJ1dGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbEYsT0FBTyxFQUdMLGVBQWUsRUFDZixpQkFBaUIsRUFFakIscUJBQXFCLEVBRXJCLFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUdkLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlD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b21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgQ2F0ZWdvcnksXG4gIENhdGVnb3J5QWN0aW9ucyxcbiAgQ2F0ZWdvcnlTZWxlY3RvcnMsXG4gIENsYXNzLFxuICBERUZBVUxUX0NBVEVHT1JZX1VVSUQsXG4gIEZpZWxkLFxuICBGSUVMRF9JMThOLFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBQcnlEaWFsb2dTZXJ2aWNlLFxuICBQcnlJMThuU2VydmljZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9hZG1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkNsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2FkbWluLWNsYXNzLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWRkQ2F0ZWdvcnlNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9hZGQtY2F0ZWdvcnktbW9kYWwvYWRkLWNhdGVnb3J5LW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hZG1pbi1hdHRyaWJ1dGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pbkF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBhdHRyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICBhdHRyaWJ1dGVOYW1lcz86IHN0cmluZ1tdO1xuICBhdHRyaWJ1dGVUZWNobmljYWxOYW1lcz86IHN0cmluZ1tdO1xuICBuYW1lQWxyZWFkeUV4aXN0cyQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBuYW1lQWxyZWFkeUV4aXN0cyA9IGZhbHNlO1xuICB0ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyA9IGZhbHNlO1xuXG4gIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT47XG4gIHNlbGVjdGVkRmllbGRUeXBlRGVzY3JpcHRpb24kITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjYXRlZ29yaWVzJDogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPjtcblxuICBASW5wdXQoKSBzZWxlY3RlZENsYXNzPzogQ2xhc3M7XG4gIEBJbnB1dCgpIGludGVyQ2xhc3M/OiBDbGFzcztcbiAgQElucHV0KCkgc2VsZWN0ZWRBdHRyaWJ1dGU/OiBBdHRyaWJ1dGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5maWVsZHMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRzKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENhdGVnb3J5QWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuY2F0ZWdvcmllcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDYXRlZ29yeVNlbGVjdG9ycy5jYXRlZ29yaWVzKTtcblxuICAgIHRoaXMuYXR0ckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbdXVpZCgpXSxcbiAgICAgIHRlY2huaWNhbE5hbWU6IFtcbiAgICAgICAgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXVxuICAgICAgXSxcbiAgICAgIG5hbWU6IFsnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgICBkZXNjcmlwdGlvbjogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIGZpZWxkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjYXRlZ29yeTogW0RFRkFVTFRfQ0FURUdPUllfVVVJRF0sXG4gICAgICBtdWx0aVZhbHVlZDogW2ZhbHNlXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IHRoaXMuaW50ZXJDbGFzcz8uYXR0cmlidXRlcy5tYXAoKGF0dHI6IEF0dHJpYnV0ZSkgPT4gYXR0ci5uYW1lKTtcbiAgICB0aGlzLmF0dHJpYnV0ZVRlY2huaWNhbE5hbWVzID0gdGhpcy5pbnRlckNsYXNzPy5hdHRyaWJ1dGVzLm1hcCgoYXR0cjogQXR0cmlidXRlKSA9PiBhdHRyLnRlY2huaWNhbE5hbWUpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDbGFzcykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IHRoaXMuc2VsZWN0ZWRDbGFzcy5hdHRyaWJ1dGVzLm1hcCgoYXR0cjogQXR0cmlidXRlKSA9PiBhdHRyLm5hbWUpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVUZWNobmljYWxOYW1lcyA9IHRoaXMuc2VsZWN0ZWRDbGFzcy5hdHRyaWJ1dGVzLm1hcCgoYXR0cjogQXR0cmlidXRlKSA9PiBhdHRyLnRlY2huaWNhbE5hbWUpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSkge1xuICAgICAgICB0aGlzLmF0dHJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLmlkLFxuICAgICAgICAgIHRlY2huaWNhbE5hbWU6IHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGUudGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLm5hbWUgPz8gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZS50ZWNobmljYWxOYW1lLFxuICAgICAgICAgIGZpZWxkOiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLmZpZWxkLFxuICAgICAgICAgIGNhdGVnb3J5OiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLmNhdGVnb3J5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF0dHJGb3JtLmNvbnRyb2xzWydmaWVsZCddLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVOYW1lcykge1xuICAgICAgdGhpcy5uYW1lQWxyZWFkeUV4aXN0cyQgPSB0aGlzLmF0dHJGb3JtXG4gICAgICAgIC5nZXQoJ25hbWUnKSFcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIG1hcCgodmFsdWUpID0+ICEhdGhpcy5hdHRyaWJ1dGVOYW1lcz8uaW5jbHVkZXModmFsdWUpICYmIHZhbHVlICE9IHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGU/Lm5hbWUpXG4gICAgICAgICk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLm5hbWVBbHJlYWR5RXhpc3RzID0gdmFsdWUpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuYXR0ckZvcm1cbiAgICAgICAgLmdldCgndGVjaG5pY2FsTmFtZScpIVxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdHRyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlLnNsaWNlKDAsIDUwKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVUZWNobmljYWxOYW1lcykge1xuICAgICAgdGhpcy50ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyQgPSB0aGlzLmF0dHJGb3JtXG4gICAgICAgIC5nZXQoJ3RlY2huaWNhbE5hbWUnKSFcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICh2YWx1ZSkgPT4gISF0aGlzLmF0dHJpYnV0ZVRlY2huaWNhbE5hbWVzPy5pbmNsdWRlcyh2YWx1ZSkgJiYgdmFsdWUgIT0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZT8udGVjaG5pY2FsTmFtZVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIHRoaXMudGVjaG5pY2FsTmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnRlY2huaWNhbE5hbWVBbHJlYWR5RXhpc3RzID0gdmFsdWU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZFR5cGVEZXNjcmlwdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuYXR0ckZvcm0uZ2V0KCdmaWVsZCcpIS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5hdHRyRm9ybS5nZXQoJ2ZpZWxkJyk/LnZhbHVlKSksXG4gICAgICB0aGlzLmZpZWxkcyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbc2VsZWN0ZWRGaWVsZElkLCBmaWVsZHNdKSA9PlxuICAgICAgICAhc2VsZWN0ZWRGaWVsZElkXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogRklFTERfSTE4Ti5pbmZvcm1hdGlvbiArXG4gICAgICAgICAgICBmaWVsZHMuZmluZChcbiAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gKHR5cGVvZiBzZWxlY3RlZEZpZWxkSWQgPT09ICdzdHJpbmcnID8gc2VsZWN0ZWRGaWVsZElkIDogc2VsZWN0ZWRGaWVsZElkLmlkKVxuICAgICAgICAgICAgKT8udHlwZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSA/ICcuLi8uLicgOiAnLi4nO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtyZWRpcmVjdFBhdGhdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IHBhdGgudG9TdHJpbmcoKSB9KSk7XG4gIH1cblxuICBhZGRBdHRyaWJ1dGUoKSB7XG4gICAgdGhpcy5hdHRyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIG5hbWU6IHRoaXMuYXR0ckZvcm0udmFsdWUubmFtZS50cmltKClcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5hdHRyRm9ybS52YWx1ZS5uYW1lKSB7XG4gICAgICB0aGlzLmF0dHJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBuYW1lOiB0aGlzLmF0dHJGb3JtLnZhbHVlLnRlY2huaWNhbE5hbWUuc2xpY2UoMCwgNTApXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdHRyRm9ybS52YWxpZCkge1xuICAgICAgbGV0IGF0dHJUb1NhdmUgPSB0aGlzLmF0dHJGb3JtLmdldFJhd1ZhbHVlKCkgYXMgQXR0cmlidXRlO1xuICAgICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSkge1xuICAgICAgICBwYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uLy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDbGFzcykge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIEFkbWluQ2xhc3NBY3Rpb25zLnNhdmVBdHRyaWJ1dGVGb3JDbGFzcyh7XG4gICAgICAgICAgICBjbGFzc0lkOiB0aGlzLnNlbGVjdGVkQ2xhc3MuaWQsXG4gICAgICAgICAgICBhdHRyaWJ1dGU6IGF0dHJUb1NhdmUsXG4gICAgICAgICAgICByb3V0ZTogcGF0aC50b1N0cmluZygpXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnRlckNsYXNzKSB7XG4gICAgICAgIGxldCBpbnRlckF0dHJpYnV0ZSA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuaW50ZXJDbGFzcy5hdHRyaWJ1dGVzKTtcbiAgICAgICAgbGV0IGludGVyQ2xhc3NVcGRhdGVkID0geyAuLi50aGlzLmludGVyQ2xhc3MgfTtcbiAgICAgICAgaW50ZXJBdHRyaWJ1dGUucHVzaChhdHRyVG9TYXZlKTtcbiAgICAgICAgaW50ZXJDbGFzc1VwZGF0ZWQuYXR0cmlidXRlcyA9IGludGVyQXR0cmlidXRlO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLnNhdmVJbnRlckNsYXNzKHsgY2xhc3M6IGludGVyQ2xhc3NVcGRhdGVkLCByb3V0ZTogcGF0aC50b1N0cmluZygpIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBZGRDYXRlZ29yeU1vZGFsQ29tcG9uZW50KTtcbiAgICByZWYuY29tcG9uZW50IS5lbnRpdHlUeXBlID0gJ2F0dHJpYnV0ZSc7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHJlZi5jb21wb25lbnQhLmNhdGVnb3J5LnN1YnNjcmliZSgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgdGhpcy5hdHRyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBjYXRlZ29yeTogY2F0ZWdvcnkuaWRcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChyZWYuY29tcG9uZW50IS5jbG9zZU1vZGFsLnN1YnNjcmliZSgoKSA9PiByZWYuY2xvc2UoKSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZJRUxEX0kxOE4gPSBGSUVMRF9JMThOO1xufVxuIiwiPGZvcm0gY2xhc3M9XCJvLWZvcm1cIiBbZm9ybUdyb3VwXT1cImF0dHJGb3JtXCIgKG5nU3VibWl0KT1cImFkZEF0dHJpYnV0ZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImF0dHJfdGVjaG5pY2FsTmFtZVwiPnt7ICdAcHJ5LmFkbWluLmNsYXNzZXMuYXR0cmlidXRlcy50ZWNobmljYWxOYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxpbnB1dCBpZD1cImF0dHJfdGVjaG5pY2FsTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZWNobmljYWxOYW1lXCIgcmVxdWlyZWQgLz5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwiYXR0cl90ZWNobmljYWxOYW1lXCIgKm5nSWY9XCJ0ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyQgfCBhc3luY1wiPnt7XG4gICAgICAnQHByeS5hZG1pbi5leGlzdHMnIHwgaTE4blxuICAgIH19PC9sYWJlbD5cbiAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCd0ZWNobmljYWxOYW1lJyk/LmludmFsaWRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhdHRyRm9ybS5nZXQoJ3RlY2huaWNhbE5hbWUnKT8uZGlydHkgJiYgYXR0ckZvcm0uZ2V0KCd0ZWNobmljYWxOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIiBmb3I9XCJhdHRyX3RlY2huaWNhbE5hbWVcIj57eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImF0dHJGb3JtLmdldCgndGVjaG5pY2FsTmFtZScpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiIGZvcj1cImF0dHJfdGVjaG5pY2FsTmFtZVwiPnt7XG4gICAgICAgICAgJ0BwcnkuYWRtaW4ubWluTGVuZ3RoJyB8IGkxOG46IHsgbGVuOiAyIH1cbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCd0ZWNobmljYWxOYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwiYXR0cl90ZWNobmljYWxOYW1lXCI+e3tcbiAgICAgICAgICAnQHByeS5hZG1pbi5tYXhMZW5ndGgnIHwgaTE4bjogeyBsZW46IDEwMCB9XG4gICAgICAgIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGF0dHJGb3JtLmdldCgndGVjaG5pY2FsTmFtZScpPy5oYXNFcnJvcignd2hpdGVzcGFjZScpICYmICFhdHRyRm9ybS5nZXQoJ3RlY2huaWNhbE5hbWUnKT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIiBmb3I9XCJhdHRyX3RlY2huaWNhbE5hbWVcIj57e1xuICAgICAgICAgICdAcHJ5LmFkbWluLm5vV2hpdGVzcGFjZScgfCBpMThuXG4gICAgICAgIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJhdHRyX25hbWVcIj57eyAnQHByeS5hZG1pbi5jbGFzc2VzLmF0dHJpYnV0ZXMubmFtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICA8aW5wdXQgaWQ9XCJhdHRyX25hbWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIC8+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiIGZvcj1cImF0dHJfbmFtZVwiICpuZ0lmPVwibmFtZUFscmVhZHlFeGlzdHMkIHwgYXN5bmNcIj57e1xuICAgICAgJ0BwcnkuYWRtaW4uZXhpc3RzJyB8IGkxOG5cbiAgICB9fTwvbGFiZWw+XG4gICAgPGRpdiAqbmdJZj1cImF0dHJGb3JtLmdldCgnbmFtZScpPy5pbnZhbGlkXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwiYXR0cl9uYW1lXCI+e3tcbiAgICAgICAgICAnQHByeS5hZG1pbi5tYXhMZW5ndGgnIHwgaTE4bjogeyBsZW46IDUwIH1cbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiIGZvcj1cImF0dHJfbmFtZVwiPnt7ICdAcHJ5LmFkbWluLm5vV2hpdGVzcGFjZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0eXBlXCI+e3sgJ0BwcnkuYWRtaW4uY2xhc3Nlcy5hdHRyaWJ1dGVzLmZpZWxkJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleFwiPlxuICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgaWQ9XCJ0eXBlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmllbGRcIlxuICAgICAgICBbaXRlbXNdPVwiZmllbGRzJCB8IGFzeW5jXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJ0cnVlXCJcbiAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgW2lzRm9ybV09XCJ0cnVlXCJcbiAgICAgICAgcmVxdWlyZWQ9XCJ0cnVlXCJcbiAgICAgICAgW3RlbXBsYXRlXT1cInRlbXBsYXRlT3B0aW9uXCJcbiAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlT3B0aW9uIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ25lZC1vcHRpb25cIj5cbiAgICAgICAgICA8cD57eyBpdGVtLm5hbWUgfX08L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImEtY2hpcFwiICpuZ0lmPVwiaXRlbS5jcnNcIj57eyBpdGVtLmNycyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibS1pbmZvLWljb24gYS10b29sdGlwIC10b29sdGlwLXdpZHRoLWxnIHUtc2VsZi1jZW50ZXIgdS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIihzZWxlY3RlZEZpZWxkVHlwZURlc2NyaXB0aW9uJCB8IGFzeW5jKSA/PyAnJyB8IGkxOG5cIlxuICAgICAgICBkYXRhLXRvb2x0aXAtcG9zaXRpb249XCJyaWdodFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPmk8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCdmaWVsZCcpPy5pbnZhbGlkXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCdmaWVsZCcpPy5kaXJ0eSAmJiBhdHRyRm9ybS5nZXQoJ2ZpZWxkJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIiBmb3I9XCJ0eXBlXCI+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtc21cIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2F0ZWdvcnlcIj57eyAnQHByeS5hZG1pbi5jbGFzc2VzLmF0dHJpYnV0ZXMuY2F0ZWdvcnknIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHByeS1zZWxlY3RcbiAgICAgIGlkPVwiY2F0ZWdvcnlcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2F0ZWdvcnlcIlxuICAgICAgW2l0ZW1zXT1cImNhdGVnb3JpZXMkIHwgYXN5bmNcIlxuICAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCJcbiAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgW2lzRm9ybV09XCJ0cnVlXCJcbiAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXdpZHRoLXNtXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIlxuICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiJ0BwcnkuYWRtaW4uY2FuY2VsJyB8IGkxOG5cIlxuICAgID48L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdhZG1pbicsIHBhZ2U6ICdjbGFzc2VzJywgYWN0aW9uOiAnYWRkX2F0dHJpYnV0ZScgfVwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgW2Rpc2FibGVkXT1cImF0dHJGb3JtLmludmFsaWQgfHwgbmFtZUFscmVhZHlFeGlzdHMgfHwgdGVjaG5pY2FsTmFtZUFscmVhZHlFeGlzdHNcIlxuICAgICAgW2lubmVySFRNTF09XCIoc2VsZWN0ZWRBdHRyaWJ1dGUgPyAnQHByeS5hZG1pbi5lZGl0JyA6ICdAcHJ5LmFkbWluLmNyZWF0ZScpIHwgaTE4blwiXG4gICAgPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLXZpZXcvYWRtaW4tYXR0cmlidXRlcy1mb3JtL2FkbWluLWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2FkbWluLWNsYXNzZXMvYWRtaW4tY2xhc3Nlcy12aWV3L2FkbWluLWF0dHJpYnV0ZXMtZm9ybS9hZG1pbi1hdHRyaWJ1dGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbEYsT0FBTyxFQUdMLGVBQWUsRUFDZixpQkFBaUIsRUFFakIscUJBQXFCLEVBRXJCLFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUdkLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlD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b21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgQ2F0ZWdvcnksXG4gIENhdGVnb3J5QWN0aW9ucyxcbiAgQ2F0ZWdvcnlTZWxlY3RvcnMsXG4gIENsYXNzLFxuICBERUZBVUxUX0NBVEVHT1JZX1VVSUQsXG4gIEZpZWxkLFxuICBGSUVMRF9JMThOLFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBQcnlEaWFsb2dTZXJ2aWNlLFxuICBQcnlJMThuU2VydmljZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9hZG1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkNsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2FkbWluLWNsYXNzLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWRkQ2F0ZWdvcnlNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9hZGQtY2F0ZWdvcnktbW9kYWwvYWRkLWNhdGVnb3J5LW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hZG1pbi1hdHRyaWJ1dGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pbkF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBhdHRyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICBhdHRyaWJ1dGVOYW1lcz86IHN0cmluZ1tdO1xuICBhdHRyaWJ1dGVUZWNobmljYWxOYW1lcz86IHN0cmluZ1tdO1xuICBuYW1lQWxyZWFkeUV4aXN0cyQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBuYW1lQWxyZWFkeUV4aXN0cyA9IGZhbHNlO1xuICB0ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyA9IGZhbHNlO1xuXG4gIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT47XG4gIHNlbGVjdGVkRmllbGRUeXBlRGVzY3JpcHRpb24kITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjYXRlZ29yaWVzJDogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPjtcblxuICBASW5wdXQoKSBzZWxlY3RlZENsYXNzPzogQ2xhc3M7XG4gIEBJbnB1dCgpIGludGVyQ2xhc3M/OiBDbGFzcztcbiAgQElucHV0KCkgc2VsZWN0ZWRBdHRyaWJ1dGU/OiBBdHRyaWJ1dGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5maWVsZHMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRzKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENhdGVnb3J5QWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuY2F0ZWdvcmllcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDYXRlZ29yeVNlbGVjdG9ycy5jYXRlZ29yaWVzKTtcblxuICAgIHRoaXMuYXR0ckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbdXVpZCgpXSxcbiAgICAgIHRlY2huaWNhbE5hbWU6IFtcbiAgICAgICAgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXVxuICAgICAgXSxcbiAgICAgIG5hbWU6IFsnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgICBkZXNjcmlwdGlvbjogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIGZpZWxkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjYXRlZ29yeTogW0RFRkFVTFRfQ0FURUdPUllfVVVJRF0sXG4gICAgICBtdWx0aVZhbHVlZDogW2ZhbHNlXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IHRoaXMuaW50ZXJDbGFzcz8uYXR0cmlidXRlcy5tYXAoKGF0dHI6IEF0dHJpYnV0ZSkgPT4gYXR0ci5uYW1lKTtcbiAgICB0aGlzLmF0dHJpYnV0ZVRlY2huaWNhbE5hbWVzID0gdGhpcy5pbnRlckNsYXNzPy5hdHRyaWJ1dGVzLm1hcCgoYXR0cjogQXR0cmlidXRlKSA9PiBhdHRyLnRlY2huaWNhbE5hbWUpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDbGFzcykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IHRoaXMuc2VsZWN0ZWRDbGFzcy5hdHRyaWJ1dGVzLm1hcCgoYXR0cjogQXR0cmlidXRlKSA9PiBhdHRyLm5hbWUpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVUZWNobmljYWxOYW1lcyA9IHRoaXMuc2VsZWN0ZWRDbGFzcy5hdHRyaWJ1dGVzLm1hcCgoYXR0cjogQXR0cmlidXRlKSA9PiBhdHRyLnRlY2huaWNhbE5hbWUpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSkge1xuICAgICAgICB0aGlzLmF0dHJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLmlkLFxuICAgICAgICAgIHRlY2huaWNhbE5hbWU6IHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGUudGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLm5hbWUgPz8gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZS50ZWNobmljYWxOYW1lLFxuICAgICAgICAgIGZpZWxkOiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLmZpZWxkLFxuICAgICAgICAgIGNhdGVnb3J5OiB0aGlzLnNlbGVjdGVkQXR0cmlidXRlLmNhdGVnb3J5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF0dHJGb3JtLmNvbnRyb2xzWydmaWVsZCddLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVOYW1lcykge1xuICAgICAgdGhpcy5uYW1lQWxyZWFkeUV4aXN0cyQgPSB0aGlzLmF0dHJGb3JtXG4gICAgICAgIC5nZXQoJ25hbWUnKSFcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIG1hcCgodmFsdWUpID0+ICEhdGhpcy5hdHRyaWJ1dGVOYW1lcz8uaW5jbHVkZXModmFsdWUpICYmIHZhbHVlICE9IHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGU/Lm5hbWUpXG4gICAgICAgICk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLm5hbWVBbHJlYWR5RXhpc3RzID0gdmFsdWUpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuYXR0ckZvcm1cbiAgICAgICAgLmdldCgndGVjaG5pY2FsTmFtZScpIVxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdHRyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlLnNsaWNlKDAsIDUwKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVUZWNobmljYWxOYW1lcykge1xuICAgICAgdGhpcy50ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyQgPSB0aGlzLmF0dHJGb3JtXG4gICAgICAgIC5nZXQoJ3RlY2huaWNhbE5hbWUnKSFcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICh2YWx1ZSkgPT4gISF0aGlzLmF0dHJpYnV0ZVRlY2huaWNhbE5hbWVzPy5pbmNsdWRlcyh2YWx1ZSkgJiYgdmFsdWUgIT0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZT8udGVjaG5pY2FsTmFtZVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIHRoaXMudGVjaG5pY2FsTmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnRlY2huaWNhbE5hbWVBbHJlYWR5RXhpc3RzID0gdmFsdWU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZFR5cGVEZXNjcmlwdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuYXR0ckZvcm0uZ2V0KCdmaWVsZCcpIS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5hdHRyRm9ybS5nZXQoJ2ZpZWxkJyk/LnZhbHVlKSksXG4gICAgICB0aGlzLmZpZWxkcyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbc2VsZWN0ZWRGaWVsZElkLCBmaWVsZHNdKSA9PlxuICAgICAgICAhc2VsZWN0ZWRGaWVsZElkXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogRklFTERfSTE4Ti5pbmZvcm1hdGlvbiArXG4gICAgICAgICAgICBmaWVsZHMuZmluZChcbiAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gKHR5cGVvZiBzZWxlY3RlZEZpZWxkSWQgPT09ICdzdHJpbmcnID8gc2VsZWN0ZWRGaWVsZElkIDogc2VsZWN0ZWRGaWVsZElkLmlkKVxuICAgICAgICAgICAgKT8udHlwZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSA/ICcuLi8uLicgOiAnLi4nO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtyZWRpcmVjdFBhdGhdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IHBhdGgudG9TdHJpbmcoKSB9KSk7XG4gIH1cblxuICBhZGRBdHRyaWJ1dGUoKSB7XG4gICAgdGhpcy5hdHRyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIG5hbWU6IHRoaXMuYXR0ckZvcm0udmFsdWUubmFtZS50cmltKClcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5hdHRyRm9ybS52YWx1ZS5uYW1lKSB7XG4gICAgICB0aGlzLmF0dHJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBuYW1lOiB0aGlzLmF0dHJGb3JtLnZhbHVlLnRlY2huaWNhbE5hbWUuc2xpY2UoMCwgNTApXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdHRyRm9ybS52YWxpZCkge1xuICAgICAgbGV0IGF0dHJUb1NhdmUgPSB0aGlzLmF0dHJGb3JtLmdldFJhd1ZhbHVlKCkgYXMgQXR0cmlidXRlO1xuICAgICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSkge1xuICAgICAgICBwYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uLy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDbGFzcykge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIEFkbWluQ2xhc3NBY3Rpb25zLnNhdmVBdHRyaWJ1dGVGb3JDbGFzcyh7XG4gICAgICAgICAgICBjbGFzc0lkOiB0aGlzLnNlbGVjdGVkQ2xhc3MuaWQsXG4gICAgICAgICAgICBhdHRyaWJ1dGU6IGF0dHJUb1NhdmUsXG4gICAgICAgICAgICByb3V0ZTogcGF0aC50b1N0cmluZygpXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnRlckNsYXNzKSB7XG4gICAgICAgIGxldCBpbnRlckF0dHJpYnV0ZSA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuaW50ZXJDbGFzcy5hdHRyaWJ1dGVzKTtcbiAgICAgICAgbGV0IGludGVyQ2xhc3NVcGRhdGVkID0geyAuLi50aGlzLmludGVyQ2xhc3MgfTtcbiAgICAgICAgaW50ZXJBdHRyaWJ1dGUucHVzaChhdHRyVG9TYXZlKTtcbiAgICAgICAgaW50ZXJDbGFzc1VwZGF0ZWQuYXR0cmlidXRlcyA9IGludGVyQXR0cmlidXRlO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLnNhdmVJbnRlckNsYXNzKHsgY2xhc3M6IGludGVyQ2xhc3NVcGRhdGVkLCByb3V0ZTogcGF0aC50b1N0cmluZygpIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBZGRDYXRlZ29yeU1vZGFsQ29tcG9uZW50KTtcbiAgICByZWYuY29tcG9uZW50IS5lbnRpdHlUeXBlID0gJ2F0dHJpYnV0ZSc7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHJlZi5jb21wb25lbnQhLmNhdGVnb3J5LnN1YnNjcmliZSgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgdGhpcy5hdHRyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBjYXRlZ29yeTogY2F0ZWdvcnkuaWRcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChyZWYuY29tcG9uZW50IS5jbG9zZU1vZGFsLnN1YnNjcmliZSgoKSA9PiByZWYuY2xvc2UoKSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZJRUxEX0kxOE4gPSBGSUVMRF9JMThOO1xufVxuIiwiPGZvcm0gY2xhc3M9XCJvLWZvcm1cIiBbZm9ybUdyb3VwXT1cImF0dHJGb3JtXCIgKG5nU3VibWl0KT1cImFkZEF0dHJpYnV0ZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImF0dHJfdGVjaG5pY2FsTmFtZVwiPnt7ICdAcHJ5LmFkbWluLmNsYXNzZXMuYXR0cmlidXRlcy50ZWNobmljYWxOYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxpbnB1dCBpZD1cImF0dHJfdGVjaG5pY2FsTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZWNobmljYWxOYW1lXCIgcmVxdWlyZWQgLz5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwiYXR0cl90ZWNobmljYWxOYW1lXCIgKm5nSWY9XCJ0ZWNobmljYWxOYW1lQWxyZWFkeUV4aXN0cyQgfCBhc3luY1wiPnt7XG4gICAgICAnQHByeS5hZG1pbi5leGlzdHMnIHwgaTE4blxuICAgIH19PC9sYWJlbD5cbiAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCd0ZWNobmljYWxOYW1lJyk/LmludmFsaWRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhdHRyRm9ybS5nZXQoJ3RlY2huaWNhbE5hbWUnKT8uZGlydHkgJiYgYXR0ckZvcm0uZ2V0KCd0ZWNobmljYWxOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIiBmb3I9XCJhdHRyX3RlY2huaWNhbE5hbWVcIj57eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImF0dHJGb3JtLmdldCgndGVjaG5pY2FsTmFtZScpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiIGZvcj1cImF0dHJfdGVjaG5pY2FsTmFtZVwiPnt7XG4gICAgICAgICAgJ0BwcnkuYWRtaW4ubWluTGVuZ3RoJyB8IGkxOG46IHsgbGVuOiAyIH1cbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCd0ZWNobmljYWxOYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwiYXR0cl90ZWNobmljYWxOYW1lXCI+e3tcbiAgICAgICAgICAnQHByeS5hZG1pbi5tYXhMZW5ndGgnIHwgaTE4bjogeyBsZW46IDEwMCB9XG4gICAgICAgIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGF0dHJGb3JtLmdldCgndGVjaG5pY2FsTmFtZScpPy5oYXNFcnJvcignd2hpdGVzcGFjZScpICYmICFhdHRyRm9ybS5nZXQoJ3RlY2huaWNhbE5hbWUnKT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIiBmb3I9XCJhdHRyX3RlY2huaWNhbE5hbWVcIj57e1xuICAgICAgICAgICdAcHJ5LmFkbWluLm5vV2hpdGVzcGFjZScgfCBpMThuXG4gICAgICAgIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJhdHRyX25hbWVcIj57eyAnQHByeS5hZG1pbi5jbGFzc2VzLmF0dHJpYnV0ZXMubmFtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICA8aW5wdXQgaWQ9XCJhdHRyX25hbWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIC8+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiIGZvcj1cImF0dHJfbmFtZVwiICpuZ0lmPVwibmFtZUFscmVhZHlFeGlzdHMkIHwgYXN5bmNcIj57e1xuICAgICAgJ0BwcnkuYWRtaW4uZXhpc3RzJyB8IGkxOG5cbiAgICB9fTwvbGFiZWw+XG4gICAgPGRpdiAqbmdJZj1cImF0dHJGb3JtLmdldCgnbmFtZScpPy5pbnZhbGlkXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwiYXR0cl9uYW1lXCI+e3tcbiAgICAgICAgICAnQHByeS5hZG1pbi5tYXhMZW5ndGgnIHwgaTE4bjogeyBsZW46IDUwIH1cbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYXR0ckZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiIGZvcj1cImF0dHJfbmFtZVwiPnt7ICdAcHJ5LmFkbWluLm5vV2hpdGVzcGFjZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0eXBlXCI+e3sgJ0BwcnkuYWRtaW4uY2xhc3Nlcy5hdHRyaWJ1dGVzLmZpZWxkJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleFwiPlxuICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgaWQ9XCJ0eXBlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmllbGRcIlxuICAgICAgICBbaXRlbXNdPVwiZmllbGRzJCB8IGFzeW5jXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJ0cnVlXCJcbiAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgICAgIHJlcXVpcmVkPVwidHJ1ZVwiXG4gICAgICAgIFt0ZW1wbGF0ZV09XCJ0ZW1wbGF0ZU9wdGlvblwiXG4gICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZU9wdGlvbiBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduZWQtb3B0aW9uXCI+XG4gICAgICAgICAgPHA+e3sgaXRlbS5uYW1lIH19PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLWNoaXBcIiAqbmdJZj1cIml0ZW0uY3JzXCI+e3sgaXRlbS5jcnMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm0taW5mby1pY29uIGEtdG9vbHRpcCAtdG9vbHRpcC13aWR0aC1sZyB1LXNlbGYtY2VudGVyIHUtZmxleC1zaHJpbmstMFwiXG4gICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCIoc2VsZWN0ZWRGaWVsZFR5cGVEZXNjcmlwdGlvbiQgfCBhc3luYykgPz8gJycgfCBpMThuXCJcbiAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj5pPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImF0dHJGb3JtLmdldCgnZmllbGQnKT8uaW52YWxpZFwiPlxuICAgICAgPGRpdiAqbmdJZj1cImF0dHJGb3JtLmdldCgnZmllbGQnKT8uZGlydHkgJiYgYXR0ckZvcm0uZ2V0KCdmaWVsZCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCIgZm9yPVwidHlwZVwiPnt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNhdGVnb3J5XCI+e3sgJ0BwcnkuYWRtaW4uY2xhc3Nlcy5hdHRyaWJ1dGVzLmNhdGVnb3J5JyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBpZD1cImNhdGVnb3J5XCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCJcbiAgICAgIFtpdGVtc109XCJjYXRlZ29yaWVzJCB8IGFzeW5jXCJcbiAgICAgIChjbGljayk9XCJvcGVuTW9kYWwoKVwiXG4gICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgPjwvcHJ5LXNlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC13aWR0aC1zbVwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCJcbiAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICBbaW5uZXJIVE1MXT1cIidAcHJ5LmFkbWluLmNhbmNlbCcgfCBpMThuXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnYWRtaW4nLCBwYWdlOiAnY2xhc3NlcycsIGFjdGlvbjogJ2FkZF9hdHRyaWJ1dGUnIH1cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIFtkaXNhYmxlZF09XCJhdHRyRm9ybS5pbnZhbGlkIHx8IG5hbWVBbHJlYWR5RXhpc3RzIHx8IHRlY2huaWNhbE5hbWVBbHJlYWR5RXhpc3RzXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiKHNlbGVjdGVkQXR0cmlidXRlID8gJ0BwcnkuYWRtaW4uZWRpdCcgOiAnQHByeS5hZG1pbi5jcmVhdGUnKSB8IGkxOG5cIlxuICAgID48L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs
CHANGED
|
@@ -104,7 +104,7 @@ export class AdminFormDatasetComponent extends SubscriptionnerDirective {
|
|
|
104
104
|
this.subscriptions.add(ref.component.closeModal.subscribe(() => ref.close()));
|
|
105
105
|
}
|
|
106
106
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFormDatasetComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.UntypedFormBuilder }, { token: i4.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFormDatasetComponent, selector: "pry-admin-form-dataset", inputs: { dataset$: "dataset$" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.dataset.name' | i18n }} <span class=\"-error\">*</span>\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (\n (isSubmitted && form.get('name')?.invalid) ||\n (form.get('name')?.touched && form.get('name')?.hasError('required'))\n ) {\n <label class=\"a-label a-label--help -error\" id=\"name-error\" for=\"name\">{{ '@pry.admin.required' | i18n }}</label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"description-label\" for=\"description\"\n >{{ '@pry.admin.fields.description' | i18n }}\n </label>\n <textarea\n class=\"-resizable-both\"\n formControlName=\"description\"\n name=\"description\"\n id=\"description\"\n maxlength=\"500\"\n ></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"class\"\n >{{ '@pry.admin.dataset.oClass' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"class\"\n formControlName=\"oClass\"\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n @if (form.get('oClass')?.touched && form.get('oClass')?.hasError('required')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"type\"\n >{{ '@pry.admin.dataset.type' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"type\"\n formControlName=\"type\"\n [items]=\"datasetTypes\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n <div class=\"u-display-flex -gap-20\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"tags-label\" for=\"tags\">{{ '@pry.dataset.tags' | i18n }}</label>\n <pry-select\n id=\"tags\"\n formControlName=\"categories\"\n [items]=\"categories$ | async\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"tags-label\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n </div>\n <button class=\"a-btn a-btn--primary u-self-center\" type=\"button\" (click)=\"openModal()\">\n {{ '@pry.admin.dataset.addTag' | i18n }}\n </button>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ (dataset$ ? '@pry.admin.edit' : '@pry.admin.create') | i18n }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "
|
|
107
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFormDatasetComponent, selector: "pry-admin-form-dataset", inputs: { dataset$: "dataset$" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.dataset.name' | i18n }} <span class=\"-error\">*</span>\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (\n (isSubmitted && form.get('name')?.invalid) ||\n (form.get('name')?.touched && form.get('name')?.hasError('required'))\n ) {\n <label class=\"a-label a-label--help -error\" id=\"name-error\" for=\"name\">{{ '@pry.admin.required' | i18n }}</label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"description-label\" for=\"description\"\n >{{ '@pry.admin.fields.description' | i18n }}\n </label>\n <textarea\n class=\"-resizable-both\"\n formControlName=\"description\"\n name=\"description\"\n id=\"description\"\n maxlength=\"500\"\n ></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"class\"\n >{{ '@pry.admin.dataset.oClass' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"class\"\n formControlName=\"oClass\"\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n @if (form.get('oClass')?.touched && form.get('oClass')?.hasError('required')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"type\"\n >{{ '@pry.admin.dataset.type' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"type\"\n formControlName=\"type\"\n [items]=\"datasetTypes\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n <div class=\"u-display-flex -gap-20\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"tags-label\" for=\"tags\">{{ '@pry.dataset.tags' | i18n }}</label>\n <pry-select\n id=\"tags\"\n formControlName=\"categories\"\n [items]=\"categories$ | async\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"tags-label\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n </div>\n <button class=\"a-btn a-btn--primary u-self-center\" type=\"button\" (click)=\"openModal()\">\n {{ '@pry.admin.dataset.addTag' | i18n }}\n </button>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ (dataset$ ? '@pry.admin.edit' : '@pry.admin.create') | i18n }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
108
108
|
}
|
|
109
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFormDatasetComponent, decorators: [{
|
|
110
110
|
type: Component,
|