@provoly/dashboard 0.20.3 → 0.20.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/metadata-editor/style/_o-metadata-editor.scss +0 -5
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +2 -1
- package/dataset/i18n/en.translations.d.ts +2 -1
- package/dataset/i18n/fr.translations.d.ts +2 -1
- package/dataset/style/_o-pry-dataset-card.scss +4 -37
- package/dataset/style/_o-pry-dataset-detail.scss +2 -53
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +15 -10
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +3 -3
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +3 -3
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -3
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +3 -3
- package/esm2022/components/metadata-editor/style/css.component.mjs +2 -2
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +3 -3
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +20 -5
- package/esm2022/dataset/i18n/en.translations.mjs +3 -2
- package/esm2022/dataset/i18n/fr.translations.mjs +4 -3
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +19 -6
- package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/filters/autocomplete/style/css.component.mjs +2 -2
- package/esm2022/filters/list/list-filter.component.mjs +1 -1
- package/esm2022/import/components/import.component.mjs +3 -3
- package/esm2022/lib/core/components/about/about.component.mjs +3 -3
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +3 -3
- package/esm2022/lib/core/components/ellipsis.directive.mjs +31 -0
- package/esm2022/lib/core/components/select/select.component.mjs +193 -39
- package/esm2022/lib/core/components/select/select.module.mjs +4 -5
- package/esm2022/lib/core/components/share/share.component.mjs +3 -3
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +7 -8
- package/esm2022/lib/core/core.module.mjs +8 -4
- package/esm2022/lib/core/i18n/en.translations.mjs +7 -6
- package/esm2022/lib/core/i18n/fr.translations.mjs +8 -6
- package/esm2022/lib/core/model/display-options.interface.mjs +18 -4
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +2 -1
- package/esm2022/lib/core/store/class/class.actions.mjs +1 -4
- package/esm2022/lib/core/store/class/class.effects.mjs +1 -4
- package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
- package/esm2022/lib/core/store/class/class.reducer.mjs +3 -13
- package/esm2022/lib/core/store/class/class.selectors.mjs +1 -3
- package/esm2022/lib/core/store/class/class.service.mjs +1 -9
- package/esm2022/lib/core/store/config/config.selectors.mjs +1 -3
- package/esm2022/lib/core/store/config/config.service.mjs +4 -7
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +1 -4
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -15
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +3 -3
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +3 -3
- package/esm2022/lib/dashboard/filter/style/css.component.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -4
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +3 -3
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +3 -3
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +3 -3
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +5 -5
- package/esm2022/presentation/components/presentation.component.mjs +3 -3
- package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +11 -21
- package/esm2022/presentation/i18n/fr.translations.mjs +9 -9
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +23 -22
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +13 -6
- package/esm2022/restitution/i18n/en.translations.mjs +3 -3
- package/esm2022/restitution/i18n/fr.translations.mjs +4 -4
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/search/i18n/en.translations.mjs +2 -1
- package/esm2022/search/i18n/fr.translations.mjs +2 -1
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +3 -3
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +3 -3
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +4 -8
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +3 -3
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
- package/esm2022/toolbox/components/toolbox.component.mjs +4 -3
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +8 -2
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +8 -7
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +3 -4
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -3
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +10 -4
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +7 -7
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +3 -3
- package/fesm2022/provoly-dashboard-admin.mjs +40 -35
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +4 -4
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +2 -2
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +28 -11
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +24 -11
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +2 -2
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +24 -34
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +40 -32
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +10 -8
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +22 -25
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +7 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +7 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +2 -3
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +2 -2
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +15 -7
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +6 -6
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +2 -2
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +286 -135
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/filters/autocomplete/autocomplete.component.d.ts +2 -0
- package/filters/autocomplete/autocomplete.module.d.ts +1 -1
- package/filters/autocomplete/style/_m-autocomplete.scss +16 -3
- package/lib/core/components/ellipsis.directive.d.ts +11 -0
- package/lib/core/components/select/select.component.d.ts +41 -20
- package/lib/core/components/select/select.module.d.ts +4 -5
- package/lib/core/components/translate-id/translate-id.pipe.d.ts +1 -3
- package/lib/core/core.module.d.ts +15 -14
- package/lib/core/i18n/en.translations.d.ts +4 -3
- package/lib/core/i18n/fr.translations.d.ts +5 -3
- package/lib/core/model/display-options.interface.d.ts +11 -0
- package/lib/core/model/manifest.interface.d.ts +1 -5
- package/lib/core/public-api.d.ts +1 -0
- package/lib/core/store/class/class.actions.d.ts +1 -12
- package/lib/core/store/class/class.effects.d.ts +0 -5
- package/lib/core/store/class/class.interface.d.ts +0 -6
- package/lib/core/store/class/class.reducer.d.ts +2 -3
- package/lib/core/store/class/class.selectors.d.ts +0 -1
- package/lib/core/store/class/class.service.d.ts +1 -5
- package/lib/core/store/config/config.selectors.d.ts +0 -1
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +2 -5
- package/lib/dashboard/filter/style/_o-pry-filter-group.scss +0 -11
- package/lib/dashboard/store/dashboard.effects.d.ts +0 -1
- package/lib/dashboard/store/dashboard.selectors.d.ts +0 -9
- package/package.json +1 -8
- package/presentation/components/title-presentation/title-presentation.component.d.ts +3 -5
- package/presentation/style/_o-pry-new-presentation.scss +0 -7
- package/presentation/style/_o-pry-presentation.scss +19 -101
- package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +1 -1
- package/restitution/i18n/en.translations.d.ts +2 -2
- package/restitution/i18n/fr.translations.d.ts +3 -3
- package/restitution/style/_o-restitution.scss +11 -14
- package/schematics/migration.json +6 -1
- package/schematics/ng-update/version-0-20/index.d.ts +2 -0
- package/schematics/ng-update/version-0-20/index.js +19 -0
- package/schematics/ng-update/version-0-20/index.js.map +1 -0
- package/search/i18n/en.translations.d.ts +1 -0
- package/search/i18n/fr.translations.d.ts +1 -0
- package/styles/base/_utils.scss +4 -0
- package/styles/components/_a-pry-select.scss +34 -10
- package/styles/components/_a-tooltip.scss +26 -19
- package/styles/components/_m-filter.scss +11 -20
- package/styles/components/_m-info-icon.scss +16 -0
- package/styles/components/_m-presentation-title.scss +14 -0
- package/styles/components/_o-about.scss +2 -24
- package/styles/components/_o-dashboard.scss +4 -0
- package/styles/components/_o-draggable-menu.scss +1 -1
- package/styles/components/_o-widget.scss +2 -2
- package/styles/main.scss +2 -1
- package/styles-theme/abstracts-theme/variables/_variables-typo.scss +9 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +23 -96
- package/styles-theme/components-theme/_a-tooltip.theme.scss +2 -2
- package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +0 -12
- package/styles-theme/components-theme/_o-pry-dataset.theme.scss +0 -8
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +1 -1
- package/styles-theme/components-theme/_o-restitution.theme.scss +10 -0
- package/toolbox/components/toolbox.component.d.ts +1 -0
- package/tooltips/attribute/attribute-tooltip.component.d.ts +1 -0
- package/widgets/widget-chart/component/widget-chart.component.d.ts +0 -1
- package/widgets/widget-map/component/widget-map.component.d.ts +2 -0
- package/widgets/widget-map/i18n/en.translations.d.ts +1 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +1 -0
- package/widgets/widget-map/style/_o-layer-legend.scss +21 -0
- package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +0 -34
- package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +0 -33
- package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +0 -51
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +0 -27
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +0 -100
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +0 -47
- package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +0 -32
- package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +0 -24
- package/esm2022/supervision/components/supervision.component.mjs +0 -19
- package/esm2022/supervision/i18n/en.translations.mjs +0 -58
- package/esm2022/supervision/i18n/fr.translations.mjs +0 -58
- package/esm2022/supervision/provoly-dashboard-supervision.mjs +0 -5
- package/esm2022/supervision/public-api.mjs +0 -2
- package/esm2022/supervision/store/supervision-api.model.mjs +0 -2
- package/esm2022/supervision/store/supervision.actions.mjs +0 -33
- package/esm2022/supervision/store/supervision.effects.mjs +0 -60
- package/esm2022/supervision/store/supervision.reducer.mjs +0 -111
- package/esm2022/supervision/store/supervision.selectors.mjs +0 -35
- package/esm2022/supervision/store/supervision.service.mjs +0 -54
- package/esm2022/supervision/supervision-routing.module.mjs +0 -96
- package/esm2022/supervision/supervision.module.mjs +0 -96
- package/fesm2022/provoly-dashboard-supervision.mjs +0 -861
- package/fesm2022/provoly-dashboard-supervision.mjs.map +0 -1
- package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +0 -14
- package/supervision/components/supervision-flow/supervision-flow.component.d.ts +0 -14
- package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +0 -18
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +0 -12
- package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +0 -29
- package/supervision/components/supervision-layout/supervision-layout.component.d.ts +0 -21
- package/supervision/components/supervision-menu/supervision-menu.component.d.ts +0 -13
- package/supervision/components/supervision-title/supervision-title.component.d.ts +0 -11
- package/supervision/components/supervision.component.d.ts +0 -9
- package/supervision/i18n/en.translations.d.ts +0 -57
- package/supervision/i18n/fr.translations.d.ts +0 -57
- package/supervision/index.d.ts +0 -5
- package/supervision/public-api.d.ts +0 -1
- package/supervision/store/supervision-api.model.d.ts +0 -36
- package/supervision/store/supervision.actions.d.ts +0 -121
- package/supervision/store/supervision.effects.d.ts +0 -51
- package/supervision/store/supervision.reducer.d.ts +0 -22
- package/supervision/store/supervision.selectors.d.ts +0 -18
- package/supervision/store/supervision.service.d.ts +0 -19
- package/supervision/supervision-routing.module.d.ts +0 -7
- package/supervision/supervision.module.d.ts +0 -25
|
@@ -18,7 +18,7 @@ export declare class PryDatasetDetailComponent implements OnInit {
|
|
|
18
18
|
showModalStatus: boolean;
|
|
19
19
|
selectedDatasetVersion?: DatasetVersion;
|
|
20
20
|
selectedMode: ViewMode;
|
|
21
|
-
activeVersion$: Observable<string
|
|
21
|
+
activeVersion$: Observable<string>;
|
|
22
22
|
constructor(store: Store);
|
|
23
23
|
ngOnInit(): void;
|
|
24
24
|
goBack(): void;
|
|
@@ -27,6 +27,7 @@ export declare class PryDatasetDetailComponent implements OnInit {
|
|
|
27
27
|
switch(number: number): void;
|
|
28
28
|
handleButtonAction(version: DatasetVersion): void;
|
|
29
29
|
consultErrors(version: DatasetVersion): void;
|
|
30
|
+
getVersionTooltipContent(version: DatasetVersion, activeVersionId: string): "error" | "active" | "inactive" | "loading" | "invalid" | "unknown";
|
|
30
31
|
private deactivateVersion;
|
|
31
32
|
private activateVersion;
|
|
32
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<PryDatasetDetailComponent, never>;
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
border-collapse: collapse;
|
|
12
12
|
font-size: toRem(14);
|
|
13
13
|
min-width: toRem(330);
|
|
14
|
+
height: toRem(150);
|
|
14
15
|
|
|
15
16
|
&__header {
|
|
16
17
|
display: flex;
|
|
@@ -22,44 +23,10 @@
|
|
|
22
23
|
&__description-container {
|
|
23
24
|
position: relative;
|
|
24
25
|
width: 100%;
|
|
25
|
-
}
|
|
26
|
-
.description {
|
|
27
|
-
white-space: nowrap;
|
|
28
|
-
text-overflow: ellipsis;
|
|
29
|
-
overflow: hidden;
|
|
30
|
-
display: inherit;
|
|
31
|
-
position: relative;
|
|
32
|
-
line-height: 2rem;
|
|
33
|
-
box-sizing: border-box;
|
|
34
|
-
pointer-events:none;
|
|
35
|
-
}
|
|
36
26
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
position: absolute;
|
|
41
|
-
top: 0;
|
|
42
|
-
right: 0;
|
|
43
|
-
width: 40px;
|
|
44
|
-
height: 48px;
|
|
45
|
-
pointer-events:initial;
|
|
46
|
-
}
|
|
47
|
-
.description-tooltip {
|
|
48
|
-
position: absolute;
|
|
49
|
-
max-width: 50vw;
|
|
50
|
-
visibility: hidden;
|
|
51
|
-
background-color: #fff;
|
|
52
|
-
padding: 20px;
|
|
53
|
-
-webkit-box-shadow: 0 0 50px 0 rgba(0,0,0,0.3);
|
|
54
|
-
opacity: 0;
|
|
55
|
-
transition: opacity 0.5s ease;
|
|
56
|
-
z-index: 2;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.description:hover + .description-tooltip {
|
|
60
|
-
visibility: visible;
|
|
61
|
-
transition: opacity 0.2s ease;
|
|
62
|
-
opacity: 1;
|
|
27
|
+
&.a-tooltip[data-tooltip]:after {
|
|
28
|
+
width: 100%;
|
|
29
|
+
}
|
|
63
30
|
}
|
|
64
31
|
|
|
65
32
|
&__txt {
|
|
@@ -39,29 +39,11 @@ pry-dataset-detail {
|
|
|
39
39
|
text-decoration: underline;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
.
|
|
43
|
-
|
|
42
|
+
.m-info-icon {
|
|
43
|
+
margin: 0 0.5rem;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
.info-icon {
|
|
48
|
-
position: relative;
|
|
49
|
-
width: 1.5rem;
|
|
50
|
-
height: 1.5rem;
|
|
51
|
-
border-radius: 50%;
|
|
52
|
-
cursor: pointer;
|
|
53
|
-
display: inline-flex;
|
|
54
|
-
justify-content: center;
|
|
55
|
-
align-items: center;
|
|
56
|
-
margin-right: 0.5rem;
|
|
57
|
-
margin-left: 0.5rem;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.info-text {
|
|
61
|
-
font-size: 14px;
|
|
62
|
-
color: #6c6c6c;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
47
|
.o-tabs {
|
|
66
48
|
padding-left: 2rem;
|
|
67
49
|
padding-right: 2rem;
|
|
@@ -84,36 +66,3 @@ td {
|
|
|
84
66
|
margin-left: toRem(10);
|
|
85
67
|
}
|
|
86
68
|
}
|
|
87
|
-
|
|
88
|
-
.description:after {
|
|
89
|
-
content:"";
|
|
90
|
-
display: block;
|
|
91
|
-
position: absolute;
|
|
92
|
-
top: 0;
|
|
93
|
-
right: 0;
|
|
94
|
-
width: 40px;
|
|
95
|
-
height: 48px;
|
|
96
|
-
z-index: 1;
|
|
97
|
-
pointer-events:initial;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.description:hover:after {
|
|
101
|
-
cursor: pointer;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.description-tooltip {
|
|
105
|
-
position: absolute;
|
|
106
|
-
max-width: 50vw;
|
|
107
|
-
visibility: hidden;
|
|
108
|
-
padding: 20px;
|
|
109
|
-
-webkit-box-shadow: 0 0 50px 0 rgba(0,0,0,0.3);
|
|
110
|
-
opacity: 0;
|
|
111
|
-
transition: opacity 0.5s ease;
|
|
112
|
-
z-index: 2;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.description:hover + .description-tooltip {
|
|
116
|
-
visibility: visible;
|
|
117
|
-
transition: opacity 0.2s ease;
|
|
118
|
-
opacity: 1;
|
|
119
|
-
}
|
|
@@ -44,14 +44,14 @@ export class AdminAbacRulesFormComponent {
|
|
|
44
44
|
this.store.dispatch(AbacRulesActions.cancelAbacRuleEdition({ redirect: backPath.toString() }));
|
|
45
45
|
}
|
|
46
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdminAbacRulesFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdminAbacRulesFormComponent, selector: "pry-admin-abac-rules-form", inputs: { readonly: "readonly", edit: "edit" }, ngImport: i0, template: "<ng-container *ngIf=\"editAbacRule$ | async as rule\">\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n *ngIf=\"isSubmitted && name.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n class=\"a-pry-select\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [readonly]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [itemsAsOption]=\"true\"\n [templateOption]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n\n <ng-template #templateOption let-item=\"item\">\n <ng-container *ngIf=\"toPredicate(item); let item\">\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n </ng-container>\n </ng-template>\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n *ngIf=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n\n <div class=\"m-form-radio-group\">\n <ng-container *ngIf=\"typeSelected$ | async; else typeNotSelected\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n <span *ngIf=\"!readonly\" style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n </ng-container>\n\n <ng-template #typeNotSelected>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n </ng-template>\n </div>\n </fieldset>\n </div>\n </div>\n\n <ng-container *ngIf=\"editAbacRuleConditionsMasterId$ | async as masterId\">\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"!readonly\" class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i6.ComposedConditionComponent, selector: "pry-composed-condition", inputs: ["id", "readonly", "rootElement"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdminAbacRulesFormComponent, selector: "pry-admin-abac-rules-form", inputs: { readonly: "readonly", edit: "edit" }, ngImport: i0, template: "<ng-container *ngIf=\"editAbacRule$ | async as rule\">\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n *ngIf=\"isSubmitted && name.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [readonly]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [template]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n\n <ng-template #templateOption let-item=\"item\">\n <ng-container *ngIf=\"toPredicate(item); let item\">\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n </ng-container>\n </ng-template>\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n *ngIf=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n\n <div class=\"m-form-radio-group\">\n <ng-container *ngIf=\"typeSelected$ | async; else typeNotSelected\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n <span *ngIf=\"!readonly\" style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n </ng-container>\n\n <ng-template #typeNotSelected>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n </ng-template>\n </div>\n </fieldset>\n </div>\n </div>\n\n <ng-container *ngIf=\"editAbacRuleConditionsMasterId$ | async as masterId\">\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"!readonly\" class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i6.ComposedConditionComponent, selector: "pry-composed-condition", inputs: ["id", "readonly", "rootElement"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
48
48
|
}
|
|
49
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdminAbacRulesFormComponent, decorators: [{
|
|
50
50
|
type: Component,
|
|
51
|
-
args: [{ selector: 'pry-admin-abac-rules-form', template: "<ng-container *ngIf=\"editAbacRule$ | async as rule\">\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n *ngIf=\"isSubmitted && name.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n
|
|
51
|
+
args: [{ selector: 'pry-admin-abac-rules-form', template: "<ng-container *ngIf=\"editAbacRule$ | async as rule\">\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n *ngIf=\"isSubmitted && name.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [readonly]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [template]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n\n <ng-template #templateOption let-item=\"item\">\n <ng-container *ngIf=\"toPredicate(item); let item\">\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n </ng-container>\n </ng-template>\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n *ngIf=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n\n <div class=\"m-form-radio-group\">\n <ng-container *ngIf=\"typeSelected$ | async; else typeNotSelected\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n <span *ngIf=\"!readonly\" style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n </ng-container>\n\n <ng-template #typeNotSelected>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n </ng-template>\n </div>\n </fieldset>\n </div>\n </div>\n\n <ng-container *ngIf=\"editAbacRuleConditionsMasterId$ | async as masterId\">\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"!readonly\" class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n" }]
|
|
52
52
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { readonly: [{
|
|
53
53
|
type: Input
|
|
54
54
|
}], edit: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tYWJhYy1ydWxlcy9hZG1pbi1hYmFjLXJ1bGVzLWZvcm0vYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tYWJhYy1ydWxlcy9hZG1pbi1hYmFjLXJ1bGVzLWZvcm0vYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQU1uRSxNQUFNLE9BQU8sMkJBQTJCO0lBZXRDLFlBQ1UsS0FBaUIsRUFDakIsTUFBYyxFQUNkLEtBQXFCO1FBRnJCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBakJ0QixjQUFTLEdBQWtCLFdBQVcsQ0FBQztRQUN2QyxhQUFRLEdBQWtCLFVBQVUsQ0FBQztRQUNyQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFLdEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFXbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWU7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBd0IsRUFBRSxLQUFhO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzRjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQzsrR0EvQ1UsMkJBQTJCO21HQUEzQiwyQkFBMkIsaUhDZnhDLDRwU0F5T0E7OzRGRDFOYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsMkJBQTJCOzhJQU01QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBQcmVkaWNhdGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJlZGljYXRlc1NlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2FkbWluLXByZWRpY2F0ZXMvc3RvcmUvcHJlZGljYXRlcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQWJhY1J1bGVzQWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlL2FiYWMtcnVsZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBBYmFjUnVsZSwgQWJhY1J1bGVUeXBlLCBDb25kaXRpb25UeXBlIH0gZnJvbSAnLi4vc3RvcmUvYWJhYy1ydWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBBYmFjUnVsZXNTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hYmFjLXJ1bGVzLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hZG1pbi1hYmFjLXJ1bGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pbkFiYWNSdWxlc0Zvcm1Db21wb25lbnQge1xuICByZWFkb25seSBBVFRSSUJVVEU6IENvbmRpdGlvblR5cGUgPSAnQVRUUklCVVRFJztcbiAgcmVhZG9ubHkgTUVUQURBVEE6IENvbmRpdGlvblR5cGUgPSAnTUVUQURBVEEnO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBlZGl0ID0gZmFsc2U7XG5cbiAgcHJlZGljYXRlcyQ6IE9ic2VydmFibGU8UHJlZGljYXRlW10+O1xuICBlZGl0QWJhY1J1bGVUeXBlJDogT2JzZXJ2YWJsZTxBYmFjUnVsZVR5cGUgfCB1bmRlZmluZWQ+O1xuXG4gIGlzU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgZWRpdEFiYWNSdWxlQ29uZGl0aW9uc01hc3RlcklkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgdHlwZVNlbGVjdGVkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBlZGl0QWJhY1J1bGUkOiBPYnNlcnZhYmxlPEFiYWNSdWxlIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMucHJlZGljYXRlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChQcmVkaWNhdGVzU2VsZWN0b3JzLnByZWRpY2F0ZXMpO1xuICAgIHRoaXMuZWRpdEFiYWNSdWxlJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFiYWNSdWxlc1NlbGVjdG9ycy5lZGl0QWJhY1J1bGUpO1xuICAgIHRoaXMuZWRpdEFiYWNSdWxlVHlwZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChBYmFjUnVsZXNTZWxlY3RvcnMuZWRpdEFiYWNSdWxlVHlwZSk7XG4gICAgdGhpcy5lZGl0QWJhY1J1bGVDb25kaXRpb25zTWFzdGVySWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoQWJhY1J1bGVzU2VsZWN0b3JzLmVkaXRBYmFjUnVsZUNvbmRpdGlvbnNNYXN0ZXJJZCk7XG4gICAgdGhpcy50eXBlU2VsZWN0ZWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoQWJhY1J1bGVzU2VsZWN0b3JzLmVkaXRBYmFjUnVsZUNvbmRpdGlvbnNUeXBlU2VsZWN0ZWQpO1xuICB9XG5cbiAgdG9QcmVkaWNhdGUoaXRlbTogUHJlZGljYXRlKTogUHJlZGljYXRlIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIG9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eShwcm9wZXJ0eToga2V5b2YgQWJhY1J1bGUsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFiYWNSdWxlc0FjdGlvbnMudXBkYXRlRWRpdEFiYWNSdWxlQnlQcm9wZXJ0eSh7IHByb3BlcnR5LCB2YWx1ZSB9KSk7XG4gIH1cblxuICBvbkNyZWF0ZUFiYWNSdWxlKGZvcm06IE5nRm9ybSk6IHZvaWQge1xuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChmb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBiYWNrUGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFiYWNSdWxlc0FjdGlvbnMuc2F2ZUVkaXRBYmFjUnVsZSh7IHJlZGlyZWN0OiBiYWNrUGF0aC50b1N0cmluZygpIH0pKTtcbiAgICB9XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgYmFja1BhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWJhY1J1bGVzQWN0aW9ucy5jYW5jZWxBYmFjUnVsZUVkaXRpb24oeyByZWRpcmVjdDogYmFja1BhdGgudG9TdHJpbmcoKSB9KSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0QWJhY1J1bGUkIHwgYXN5bmMgYXMgcnVsZVwiPlxuICA8Zm9ybSBjbGFzcz1cIm8tZm9ybVwiICNhYmFjUnVsZUZvcm09XCJuZ0Zvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgaWQ9XCJuYW1lLWxhYmVsXCIgZm9yPVwiaW5wdXROYW1lXCI+XG4gICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5hYmFjLXJ1bGVzLmZvcm0ubmFtZScgfCBpMThuIH19ICpcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiaW5wdXROYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUubmFtZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZUFiYWNSdWxlUHJvcGVydHkoJ25hbWUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICNuYW1lPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpc1N1Ym1pdHRlZCAmJiBuYW1lPy5pbnZhbGlkID8gJ25hbWUtbGFiZWwgbmFtZS1lcnJvcicgOiAnbmFtZS1sYWJlbCdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIG5hbWU/LmludmFsaWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgICAgaWQ9XCJuYW1lLWVycm9yXCJcbiAgICAgICAgICAgIGZvcj1cImlucHV0TmFtZVwiXG4gICAgICAgICAgICAqbmdJZj1cImlzU3VibWl0dGVkICYmIG5hbWUuaW52YWxpZFwiXG4gICAgICAgICAgICA+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cC13cmFwcGVyXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCI+XG4gICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImEtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS5zdGF0dXMnIHwgaTE4biB9fSAqXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJuZXdSdWxlVHJ1ZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIiFyZWFkb25seSAmJiBvbkNoYW5nZUFiYWNSdWxlUHJvcGVydHkoJ2FjdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5ld1J1bGVUcnVlXCIgY2xhc3M9XCJhLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnN0YXR1c0FjdGl2ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJuZXdSdWxlRmFsc2VcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJhY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIhcmVhZG9ubHkgJiYgb25DaGFuZ2VBYmFjUnVsZVByb3BlcnR5KCdhY3RpdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibmV3UnVsZUZhbHNlXCIgY2xhc3M9XCJhLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnN0YXR1c0luYWN0aXZlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJhYmFjLXJ1bGVzLWRlc2NyaXB0aW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS5kZXNjcmlwdGlvbicgfCBpMThuXG4gICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwiYWJhYy1ydWxlcy1kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJydWxlLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eSgnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjkwXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgaWQ9XCJwcmVkaWNhdGUtbGFiZWxcIiBmb3I9XCJwcmVkaWNhdGVcIiBjbGFzcz1cImEtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS5wcmVkaWNhdGUnIHwgaTE4biB9fSAqXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwicHJlZGljYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQgJiYgYWJhY1J1bGVGb3JtLmZvcm0uZ2V0KCdwcmVkaWNhdGUnKT8uaW52YWxpZFxuICAgICAgICAgICAgICAgID8gJ3ByZWRpY2F0ZS1sYWJlbCBwcmVkaWNhdGUtZXJyb3InXG4gICAgICAgICAgICAgICAgOiAncHJlZGljYXRlLWxhYmVsJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwicHJlZGljYXRlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgW3RlbXBsYXRlT3B0aW9uXT1cInRlbXBsYXRlT3B0aW9uXCJcbiAgICAgICAgICAgIG5hbWU9XCJwcmVkaWNhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS5wcmVkaWNhdGVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VBYmFjUnVsZVByb3BlcnR5KCdwcmVkaWNhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpc0Zvcm1dPVwiIXJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc1N1Ym1pdHRlZCAmJiBhYmFjUnVsZUZvcm0uZm9ybS5nZXQoJ3ByZWRpY2F0ZScpPy5pbnZhbGlkXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVPcHRpb24gbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9QcmVkaWNhdGUoaXRlbSk7IGxldCBpdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+I3t7IGl0ZW0uaWQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgICBpZD1cInByZWRpY2F0ZS1lcnJvclwiXG4gICAgICAgICAgICBmb3I9XCJwcmVkaWNhdGVcIlxuICAgICAgICAgICAgKm5nSWY9XCJpc1N1Ym1pdHRlZCAmJiBhYmFjUnVsZUZvcm0uZm9ybS5nZXQoJ3ByZWRpY2F0ZScpPy5pbnZhbGlkXCJcbiAgICAgICAgICAgID57eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19PC9sYWJlbFxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwibS1mb3JtLXJhZGlvLWdyb3VwLXdyYXBwZXJcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiYS1sYWJlbFwiPlxuICAgICAgICAgICAgPGxhYmVsPnt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS50eXBlJyB8IGkxOG4gfX08L2xhYmVsPiAqXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbGVnZW5kPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGVTZWxlY3RlZCQgfCBhc3luYzsgZWxzZSB0eXBlTm90U2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cF9faXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICBpZD1cIm1ldGFkYXRhSWRcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInR5cGVcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiTUVUQURBVEFcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cIm1ldGFkYXRhSWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS50eXBlTWV0YWRhdGEnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLXJhZGlvLWdyb3VwX19pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIGlkPVwiYXR0cmlidXRlSWRcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInR5cGVcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiQVRUUklCVVRFXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJhdHRyaWJ1dGVJZFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnR5cGVBdHRyaWJ1dGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyZWFkb25seVwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBpdGFsaWNcIj57e1xuICAgICAgICAgICAgICAgICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS50eXBlU2VsZWN0ZWQnIHwgaTE4blxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3R5cGVOb3RTZWxlY3RlZD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cF9faXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwibWV0YWRhdGFJZFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJydWxlLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VBYmFjUnVsZVByb3BlcnR5KCd0eXBlJywgTUVUQURBVEEpXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiTUVUQURBVEFcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJtZXRhZGF0YUlkXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5hYmFjLXJ1bGVzLmZvcm0udHlwZU1ldGFkYXRhJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cF9faXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiYXR0cmlidXRlSWRcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInR5cGVcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eSgndHlwZScsIEFUVFJJQlVURSlcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJBVFRSSUJVVEVcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJhdHRyaWJ1dGVJZFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnR5cGVBdHRyaWJ1dGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRBYmFjUnVsZUNvbmRpdGlvbnNNYXN0ZXJJZCQgfCBhc3luYyBhcyBtYXN0ZXJJZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgPHByeS1jb21wb3NlZC1jb25kaXRpb25cbiAgICAgICAgICAgIGNsYXNzPVwiby1jb21wb25lbnQtcHJ5LWNvbXBvc2VkLWNvbmRpdGlvblwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogMXJlbVwiXG4gICAgICAgICAgICBbcm9vdEVsZW1lbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaWRdPVwibWFzdGVySWRcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICA+PC9wcnktY29tcG9zZWQtY29uZGl0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiAqbmdJZj1cIiFyZWFkb25seVwiIGNsYXNzPVwibS1idG4tZ3JvdXAgLWFsaWduLWNlbnRlciAtd2lkdGgtc21cIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi5jYW5jZWwnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ3JlYXRlQWJhY1J1bGUoYWJhY1J1bGVGb3JtKVwiPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi4nICsgKGVkaXQgPyAnZWRpdCcgOiAnY3JlYXRlJykgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tYWJhYy1ydWxlcy9hZG1pbi1hYmFjLXJ1bGVzLWZvcm0vYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tYWJhYy1ydWxlcy9hZG1pbi1hYmFjLXJ1bGVzLWZvcm0vYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQU1uRSxNQUFNLE9BQU8sMkJBQTJCO0lBZXRDLFlBQ1UsS0FBaUIsRUFDakIsTUFBYyxFQUNkLEtBQXFCO1FBRnJCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBakJ0QixjQUFTLEdBQWtCLFdBQVcsQ0FBQztRQUN2QyxhQUFRLEdBQWtCLFVBQVUsQ0FBQztRQUNyQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFLdEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFXbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWU7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBd0IsRUFBRSxLQUFhO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzRjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQzsrR0EvQ1UsMkJBQTJCO21HQUEzQiwyQkFBMkIsaUhDZnhDLDRrU0F1T0E7OzRGRHhOYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsMkJBQTJCOzhJQU01QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBQcmVkaWNhdGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJlZGljYXRlc1NlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2FkbWluLXByZWRpY2F0ZXMvc3RvcmUvcHJlZGljYXRlcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQWJhY1J1bGVzQWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlL2FiYWMtcnVsZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBBYmFjUnVsZSwgQWJhY1J1bGVUeXBlLCBDb25kaXRpb25UeXBlIH0gZnJvbSAnLi4vc3RvcmUvYWJhYy1ydWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBBYmFjUnVsZXNTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hYmFjLXJ1bGVzLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hZG1pbi1hYmFjLXJ1bGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tYWJhYy1ydWxlcy1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pbkFiYWNSdWxlc0Zvcm1Db21wb25lbnQge1xuICByZWFkb25seSBBVFRSSUJVVEU6IENvbmRpdGlvblR5cGUgPSAnQVRUUklCVVRFJztcbiAgcmVhZG9ubHkgTUVUQURBVEE6IENvbmRpdGlvblR5cGUgPSAnTUVUQURBVEEnO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBlZGl0ID0gZmFsc2U7XG5cbiAgcHJlZGljYXRlcyQ6IE9ic2VydmFibGU8UHJlZGljYXRlW10+O1xuICBlZGl0QWJhY1J1bGVUeXBlJDogT2JzZXJ2YWJsZTxBYmFjUnVsZVR5cGUgfCB1bmRlZmluZWQ+O1xuXG4gIGlzU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgZWRpdEFiYWNSdWxlQ29uZGl0aW9uc01hc3RlcklkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgdHlwZVNlbGVjdGVkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBlZGl0QWJhY1J1bGUkOiBPYnNlcnZhYmxlPEFiYWNSdWxlIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMucHJlZGljYXRlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChQcmVkaWNhdGVzU2VsZWN0b3JzLnByZWRpY2F0ZXMpO1xuICAgIHRoaXMuZWRpdEFiYWNSdWxlJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFiYWNSdWxlc1NlbGVjdG9ycy5lZGl0QWJhY1J1bGUpO1xuICAgIHRoaXMuZWRpdEFiYWNSdWxlVHlwZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChBYmFjUnVsZXNTZWxlY3RvcnMuZWRpdEFiYWNSdWxlVHlwZSk7XG4gICAgdGhpcy5lZGl0QWJhY1J1bGVDb25kaXRpb25zTWFzdGVySWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoQWJhY1J1bGVzU2VsZWN0b3JzLmVkaXRBYmFjUnVsZUNvbmRpdGlvbnNNYXN0ZXJJZCk7XG4gICAgdGhpcy50eXBlU2VsZWN0ZWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoQWJhY1J1bGVzU2VsZWN0b3JzLmVkaXRBYmFjUnVsZUNvbmRpdGlvbnNUeXBlU2VsZWN0ZWQpO1xuICB9XG5cbiAgdG9QcmVkaWNhdGUoaXRlbTogUHJlZGljYXRlKTogUHJlZGljYXRlIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIG9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eShwcm9wZXJ0eToga2V5b2YgQWJhY1J1bGUsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFiYWNSdWxlc0FjdGlvbnMudXBkYXRlRWRpdEFiYWNSdWxlQnlQcm9wZXJ0eSh7IHByb3BlcnR5LCB2YWx1ZSB9KSk7XG4gIH1cblxuICBvbkNyZWF0ZUFiYWNSdWxlKGZvcm06IE5nRm9ybSk6IHZvaWQge1xuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChmb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBiYWNrUGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFiYWNSdWxlc0FjdGlvbnMuc2F2ZUVkaXRBYmFjUnVsZSh7IHJlZGlyZWN0OiBiYWNrUGF0aC50b1N0cmluZygpIH0pKTtcbiAgICB9XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgYmFja1BhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWJhY1J1bGVzQWN0aW9ucy5jYW5jZWxBYmFjUnVsZUVkaXRpb24oeyByZWRpcmVjdDogYmFja1BhdGgudG9TdHJpbmcoKSB9KSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0QWJhY1J1bGUkIHwgYXN5bmMgYXMgcnVsZVwiPlxuICA8Zm9ybSBjbGFzcz1cIm8tZm9ybVwiICNhYmFjUnVsZUZvcm09XCJuZ0Zvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgaWQ9XCJuYW1lLWxhYmVsXCIgZm9yPVwiaW5wdXROYW1lXCI+XG4gICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5hYmFjLXJ1bGVzLmZvcm0ubmFtZScgfCBpMThuIH19ICpcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiaW5wdXROYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUubmFtZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZUFiYWNSdWxlUHJvcGVydHkoJ25hbWUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICNuYW1lPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpc1N1Ym1pdHRlZCAmJiBuYW1lPy5pbnZhbGlkID8gJ25hbWUtbGFiZWwgbmFtZS1lcnJvcicgOiAnbmFtZS1sYWJlbCdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIG5hbWU/LmludmFsaWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgICAgaWQ9XCJuYW1lLWVycm9yXCJcbiAgICAgICAgICAgIGZvcj1cImlucHV0TmFtZVwiXG4gICAgICAgICAgICAqbmdJZj1cImlzU3VibWl0dGVkICYmIG5hbWUuaW52YWxpZFwiXG4gICAgICAgICAgICA+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cC13cmFwcGVyXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCI+XG4gICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImEtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS5zdGF0dXMnIHwgaTE4biB9fSAqXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJuZXdSdWxlVHJ1ZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIiFyZWFkb25seSAmJiBvbkNoYW5nZUFiYWNSdWxlUHJvcGVydHkoJ2FjdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5ld1J1bGVUcnVlXCIgY2xhc3M9XCJhLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnN0YXR1c0FjdGl2ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJuZXdSdWxlRmFsc2VcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJhY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIhcmVhZG9ubHkgJiYgb25DaGFuZ2VBYmFjUnVsZVByb3BlcnR5KCdhY3RpdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibmV3UnVsZUZhbHNlXCIgY2xhc3M9XCJhLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnN0YXR1c0luYWN0aXZlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJhYmFjLXJ1bGVzLWRlc2NyaXB0aW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS5kZXNjcmlwdGlvbicgfCBpMThuXG4gICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwiYWJhYy1ydWxlcy1kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJydWxlLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eSgnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjkwXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgaWQ9XCJwcmVkaWNhdGUtbGFiZWxcIiBmb3I9XCJwcmVkaWNhdGVcIiBjbGFzcz1cImEtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS5wcmVkaWNhdGUnIHwgaTE4biB9fSAqXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwicHJlZGljYXRlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQgJiYgYWJhY1J1bGVGb3JtLmZvcm0uZ2V0KCdwcmVkaWNhdGUnKT8uaW52YWxpZFxuICAgICAgICAgICAgICAgID8gJ3ByZWRpY2F0ZS1sYWJlbCBwcmVkaWNhdGUtZXJyb3InXG4gICAgICAgICAgICAgICAgOiAncHJlZGljYXRlLWxhYmVsJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwicHJlZGljYXRlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJ0ZW1wbGF0ZU9wdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwicHJlZGljYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUucHJlZGljYXRlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eSgncHJlZGljYXRlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICBbaXNGb3JtXT1cIiFyZWFkb25seVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaXNTdWJtaXR0ZWQgJiYgYWJhY1J1bGVGb3JtLmZvcm0uZ2V0KCdwcmVkaWNhdGUnKT8uaW52YWxpZFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlT3B0aW9uIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvUHJlZGljYXRlKGl0ZW0pOyBsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPiN7eyBpdGVtLmlkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgICAgaWQ9XCJwcmVkaWNhdGUtZXJyb3JcIlxuICAgICAgICAgICAgZm9yPVwicHJlZGljYXRlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNTdWJtaXR0ZWQgJiYgYWJhY1J1bGVGb3JtLmZvcm0uZ2V0KCdwcmVkaWNhdGUnKT8uaW52YWxpZFwiXG4gICAgICAgICAgICA+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cC13cmFwcGVyXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCI+XG4gICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImEtbGFiZWxcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyAnQHByeS5hZG1pbi5hYmFjLXJ1bGVzLmZvcm0udHlwZScgfCBpMThuIH19PC9sYWJlbD4gKlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgICAgICA8L2xlZ2VuZD5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlU2VsZWN0ZWQkIHwgYXN5bmM7IGVsc2UgdHlwZU5vdFNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgaWQ9XCJtZXRhZGF0YUlkXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUudHlwZVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIk1FVEFEQVRBXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJtZXRhZGF0YUlkXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5hYmFjLXJ1bGVzLmZvcm0udHlwZU1ldGFkYXRhJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1yYWRpby1ncm91cF9faXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICBpZD1cImF0dHJpYnV0ZUlkXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUudHlwZVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIkFUVFJJQlVURVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiYXR0cmlidXRlSWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS50eXBlQXR0cmlidXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcmVhZG9ubHlcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogaXRhbGljXCI+e3tcbiAgICAgICAgICAgICAgICAnQHByeS5hZG1pbi5hYmFjLXJ1bGVzLmZvcm0udHlwZVNlbGVjdGVkJyB8IGkxOG5cbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0eXBlTm90U2VsZWN0ZWQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICBpZD1cIm1ldGFkYXRhSWRcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInR5cGVcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicnVsZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlQWJhY1J1bGVQcm9wZXJ0eSgndHlwZScsIE1FVEFEQVRBKVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIk1FVEFEQVRBXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwibWV0YWRhdGFJZFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5mb3JtLnR5cGVNZXRhZGF0YScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tcmFkaW8tZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICBpZD1cImF0dHJpYnV0ZUlkXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUudHlwZVwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZUFiYWNSdWxlUHJvcGVydHkoJ3R5cGUnLCBBVFRSSUJVVEUpXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiQVRUUklCVVRFXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiYXR0cmlidXRlSWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZm9ybS50eXBlQXR0cmlidXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0QWJhY1J1bGVDb25kaXRpb25zTWFzdGVySWQkIHwgYXN5bmMgYXMgbWFzdGVySWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgIDxwcnktY29tcG9zZWQtY29uZGl0aW9uXG4gICAgICAgICAgICBjbGFzcz1cIm8tY29tcG9uZW50LXByeS1jb21wb3NlZC1jb25kaXRpb25cIlxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDFyZW1cIlxuICAgICAgICAgICAgW3Jvb3RFbGVtZW50XT1cInRydWVcIlxuICAgICAgICAgICAgW2lkXT1cIm1hc3RlcklkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgPjwvcHJ5LWNvbXBvc2VkLWNvbmRpdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgKm5nSWY9XCIhcmVhZG9ubHlcIiBjbGFzcz1cIm0tYnRuLWdyb3VwIC1hbGlnbi1jZW50ZXIgLXdpZHRoLXNtXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAge3sgJ0BwcnkuYWRtaW4uY2FuY2VsJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJvbkNyZWF0ZUFiYWNSdWxlKGFiYWNSdWxlRm9ybSlcIj5cbiAgICAgICAge3sgJ0BwcnkuYWRtaW4uJyArIChlZGl0ID8gJ2VkaXQnIDogJ2NyZWF0ZScpIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -68,14 +68,14 @@ export class AttributeConditionComponent {
|
|
|
68
68
|
this.store.dispatch(AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId }));
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeConditionComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeConditionComponent, selector: "pry-attribute-condition", inputs: { readonly: "readonly", id: "id" }, ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"attribute$ | async as attr; else noAttribute\">\n <ng-container *ngIf=\"field$ | async as field; else noField\">\n <div class=\"o-pry-attribute-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeConditionComponent, selector: "pry-attribute-condition", inputs: { readonly: "readonly", id: "id" }, ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"attribute$ | async as attr; else noAttribute\">\n <ng-container *ngIf=\"field$ | async as field; else noField\">\n <div class=\"o-pry-attribute-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n id=\"condition_operator\"\n [style.width.px]=\"160\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n [readonly]=\"readonly\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">Name</label>\n <input\n id=\"condition_value\"\n [readonly]=\"readonly\"\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n </div>\n </ng-container>\n <ng-template #noField> Loading field ...</ng-template>\n </ng-container>\n <ng-template #noAttribute> Loading attribute ...</ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "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: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "directive", type: i5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeConditionComponent, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
|
-
args: [{ selector: 'pry-attribute-condition', template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"attribute$ | async as attr; else noAttribute\">\n <ng-container *ngIf=\"field$ | async as field; else noField\">\n <div class=\"o-pry-attribute-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n
|
|
75
|
+
args: [{ selector: 'pry-attribute-condition', template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"attribute$ | async as attr; else noAttribute\">\n <ng-container *ngIf=\"field$ | async as field; else noField\">\n <div class=\"o-pry-attribute-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n id=\"condition_operator\"\n [style.width.px]=\"160\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n [readonly]=\"readonly\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">Name</label>\n <input\n id=\"condition_value\"\n [readonly]=\"readonly\"\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n </div>\n </ng-container>\n <ng-template #noField> Loading field ...</ng-template>\n </ng-container>\n <ng-template #noAttribute> Loading attribute ...</ng-template>\n</ng-container>\n" }]
|
|
76
76
|
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { readonly: [{
|
|
77
77
|
type: Input
|
|
78
78
|
}], id: [{
|
|
79
79
|
type: Input
|
|
80
80
|
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNvbmRpdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2FkbWluLWFiYWMtcnVsZXMvY29tcG9uZW50cy9hdHRyaWJ1dGUtY29uZGl0aW9uL2F0dHJpYnV0ZS1jb25kaXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1hYmFjLXJ1bGVzL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbmRpdGlvbi9hdHRyaWJ1dGUtY29uZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBb0IsY0FBYyxFQUFTLGNBQWMsRUFBRSxTQUFTLEVBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUF1QixnQkFBZ0IsRUFBZ0MsTUFBTSw4QkFBOEIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQU10RSxNQUFNLE9BQU8sMkJBQTJCO0lBSXRDLElBQ0ksRUFBRSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBU0QsWUFB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UUFBUTtzQkFBaEIsS0FBSztnQkFHRixFQUFFO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEF0dHJpYnV0ZSwgQ2xhc3MsIENsYXNzU2VsZWN0b3JzLCBGaWVsZCwgRmllbGRTZWxlY3RvcnMsIEZpZWxkVHlwZSwgSU1ldGFkYXRhIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJhY1J1bGVzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2FiYWMtcnVsZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBOb3JtYWxpemVkQ29uZGl0aW9uLCBPUEVSQVRPUl9PUFRJT05TLCBPcGVyYXRvck9wdGlvbiwgT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi4vLi4vc3RvcmUvYWJhYy1ydWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBBYmFjUnVsZXNTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9hYmFjLXJ1bGVzLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hdHRyaWJ1dGUtY29uZGl0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dHJpYnV0ZS1jb25kaXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUNvbmRpdGlvbkNvbXBvbmVudCB7XG4gIHBhbmVsT3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBpZCh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsO1xuICAgIHRoaXMuYXNzaWduT2JzZXJ2YWJsZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lkPzogc3RyaW5nO1xuICBmaWVsZCQ6IE9ic2VydmFibGU8RmllbGQgfCBudWxsPiA9IG9mKG51bGwpO1xuICBhdHRyaWJ1dGUkOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZSB8IHVuZGVmaW5lZD4gPSBvZih1bmRlZmluZWQpO1xuICBtZXRhZGF0YSQ6IE9ic2VydmFibGU8SU1ldGFkYXRhIHwgdW5kZWZpbmVkPiA9IG9mKHVuZGVmaW5lZCk7XG4gIGNvbmRpdGlvbiQ6IE9ic2VydmFibGU8Tm9ybWFsaXplZENvbmRpdGlvbiB8IG51bGw+ID0gb2YobnVsbCk7XG4gIG9wZXJhdG9yT3B0aW9ucyQ6IE9ic2VydmFibGU8T3BlcmF0b3JPcHRpb25bXT4gPSBvZihbXSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55Pikge31cblxuICBwcml2YXRlIGFzc2lnbk9ic2VydmFibGVzKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9uJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFiYWNSdWxlc1NlbGVjdG9ycy5lZGl0QWJhY1J1bGVDb25kaXRpb25zQnlJZCh0aGlzLl9pZCA/PyAnJykpO1xuICAgIHRoaXMuYXR0cmlidXRlJCA9IHRoaXMuY29uZGl0aW9uJC5waXBlKFxuICAgICAgZmlsdGVyKChjb25kKTogY29uZCBpcyBOb3JtYWxpemVkQ29uZGl0aW9uID0+IGNvbmQgIT09IG51bGwgJiYgY29uZCAhPT0gdW5kZWZpbmVkKSxcbiAgICAgIG1lcmdlTWFwKChjb25kKSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtvZihjb25kKSwgdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NCeUF0dHJpYnV0ZUlkKGNvbmQuYXR0cmlidXRlID8/ICcnKSldKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2NvbmQsIGtsYXNzXSkgPT4ge1xuICAgICAgICByZXR1cm4gKGtsYXNzIGFzIENsYXNzKT8uYXR0cmlidXRlcy5maW5kKChhKSA9PiBhLmlkID09PSBjb25kLmF0dHJpYnV0ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5maWVsZCQgPSB0aGlzLmF0dHJpYnV0ZSQucGlwZShcbiAgICAgIGZpbHRlcigoYXR0cik6IGF0dHIgaXMgQXR0cmlidXRlID0+IGF0dHIgIT09IHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKGF0dHIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkQnlJZChhdHRyLmZpZWxkKSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLm9wZXJhdG9yT3B0aW9ucyQgPSB0aGlzLmZpZWxkJC5waXBlKFxuICAgICAgZmlsdGVyKChmaWVsZCk6IGZpZWxkIGlzIEZpZWxkID0+IGZpZWxkICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWFwKChmaWVsZDogRmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRUeXBlID0gZmllbGQudHlwZTtcbiAgICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlNUUklORyB8fCBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5LRVlXT1JEKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChlbCkgPT4gZWwudHlwZSA9PT0gJ3N0cmluZycpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLklOVEVHRVIgfHwgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuREVDSU1BTCB8fCBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5MT05HKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChlbCkgPT4gZWwudHlwZSA9PT0gJ251bWJlcicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBPUEVSQVRPUl9PUFRJT05TLmZpbHRlcigoZWwpID0+IGVsLnR5cGUgPT09ICdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2hhbmdlT3BlcmF0b3Iob3BlcmF0b3I6IE9wZXJhdG9yVHlwZSwgY29uZGl0aW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBBYmFjUnVsZXNBY3Rpb25zLnVwZGF0ZUVkaXRBYmFjUnVsZUNvbmRpdGlvblByb3BlcnR5KHtcbiAgICAgICAgY29uZGl0aW9uSWQsXG4gICAgICAgIHByb3BlcnR5OiB7IHR5cGU6ICdvcGVyYXRvcicsIHZhbHVlOiBvcGVyYXRvciB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbkNoYW5nZVZhbHVlKGV2dDogYW55LCBjb25kaXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEFiYWNSdWxlc0FjdGlvbnMudXBkYXRlRWRpdEFiYWNSdWxlQ29uZGl0aW9uUHJvcGVydHkoe1xuICAgICAgICBjb25kaXRpb25JZCxcbiAgICAgICAgcHJvcGVydHk6IHsgdHlwZTogJ3ZhbHVlJywgdmFsdWU6IGV2dC50YXJnZXQudmFsdWUgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb25PcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5wYW5lbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb25DbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMucGFuZWxPcGVuID0gZmFsc2U7XG4gIH1cblxuICBvbkRlbGV0ZUF0dHJpYnV0ZUNvbmRpdGlvbihjb25kaXRpb25JZDogc3RyaW5nLCBwYXJlbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEFiYWNSdWxlc0FjdGlvbnMucmVtb3ZlRWRpdEFiYWNSdWxlQ29uZGl0aW9uRnJvbUNvbXBvc2VkKHsgY29uZGl0aW9uSWQ6IHBhcmVudElkLCBjaGlsZHJlbklkOiBjb25kaXRpb25JZCB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24kIHwgYXN5bmMgYXMgY29uZGl0aW9uXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUkIHwgYXN5bmMgYXMgYXR0cjsgZWxzZSBub0F0dHJpYnV0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZCQgfCBhc3luYyBhcyBmaWVsZDsgZWxzZSBub0ZpZWxkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcnktYXR0cmlidXRlLWNvbmRpdGlvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgIChjbGljayk9XCJvbk9wZW5QYW5lbCgpXCJcbiAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICAgI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkcmFnX2luZGljYXRvclwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cInBhbmVsT3BlblwiXG4gICAgICAgICAgICAoYmFja2Ryb3BDbGljayk9XCJvbkNsb3NlUGFuZWwoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tcHJ5LW92ZXJsYXktcGFuZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1wcnktb3ZlcmxheS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJ5LWNvbmRpdGlvbi1kZWxldGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQXR0cmlidXRlQ29uZGl0aW9uKGNvbmRpdGlvbi5pZCwgY29uZGl0aW9uLnBhcmVudElkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIHUtdmlzdWFsbHktaGlkZGVuXCIgZm9yPVwiYXR0cl9uYW1lXCI+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwiYXR0cl9uYW1lXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJhdHRyLm5hbWVcIiByZWFkb25seSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCB1LXZpc3VhbGx5LWhpZGRlblwiIGZvcj1cImNvbmRpdGlvbl9vcGVyYXRvclwiPj8/PzwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgIGlkPVwiY29uZGl0aW9uX29wZXJhdG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIxNjBcIlxuICAgICAgICAgICAgW2xhYmVsVHJhbnNsYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cIm9wZXJhdG9yT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cIm9wZXJhdG9yXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cInRyYW5zbGF0aW9uXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImNvbmRpdGlvbi5vcGVyYXRvclwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZU9wZXJhdG9yKCRldmVudCwgY29uZGl0aW9uLmlkKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIHUtdmlzdWFsbHktaGlkZGVuXCIgZm9yPVwiY29uZGl0aW9uX3ZhbHVlXCI+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImNvbmRpdGlvbl92YWx1ZVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbmRpdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAoZm9jdXNvdXQpPVwib25DaGFuZ2VWYWx1ZSgkZXZlbnQsIGNvbmRpdGlvbi5pZClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub0ZpZWxkPiBMb2FkaW5nIGZpZWxkIC4uLjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vQXR0cmlidXRlPiBMb2FkaW5nIGF0dHJpYnV0ZSAuLi48L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNvbmRpdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2FkbWluLWFiYWMtcnVsZXMvY29tcG9uZW50cy9hdHRyaWJ1dGUtY29uZGl0aW9uL2F0dHJpYnV0ZS1jb25kaXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1hYmFjLXJ1bGVzL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbmRpdGlvbi9hdHRyaWJ1dGUtY29uZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBb0IsY0FBYyxFQUFTLGNBQWMsRUFBRSxTQUFTLEVBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUF1QixnQkFBZ0IsRUFBZ0MsTUFBTSw4QkFBOEIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQU10RSxNQUFNLE9BQU8sMkJBQTJCO0lBSXRDLElBQ0ksRUFBRSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBU0QsWUFB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UUFBUTtzQkFBaEIsS0FBSztnQkFHRixFQUFFO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEF0dHJpYnV0ZSwgQ2xhc3MsIENsYXNzU2VsZWN0b3JzLCBGaWVsZCwgRmllbGRTZWxlY3RvcnMsIEZpZWxkVHlwZSwgSU1ldGFkYXRhIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJhY1J1bGVzQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2FiYWMtcnVsZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBOb3JtYWxpemVkQ29uZGl0aW9uLCBPUEVSQVRPUl9PUFRJT05TLCBPcGVyYXRvck9wdGlvbiwgT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi4vLi4vc3RvcmUvYWJhYy1ydWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBBYmFjUnVsZXNTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9hYmFjLXJ1bGVzLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hdHRyaWJ1dGUtY29uZGl0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dHJpYnV0ZS1jb25kaXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUNvbmRpdGlvbkNvbXBvbmVudCB7XG4gIHBhbmVsT3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBpZCh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsO1xuICAgIHRoaXMuYXNzaWduT2JzZXJ2YWJsZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lkPzogc3RyaW5nO1xuICBmaWVsZCQ6IE9ic2VydmFibGU8RmllbGQgfCBudWxsPiA9IG9mKG51bGwpO1xuICBhdHRyaWJ1dGUkOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZSB8IHVuZGVmaW5lZD4gPSBvZih1bmRlZmluZWQpO1xuICBtZXRhZGF0YSQ6IE9ic2VydmFibGU8SU1ldGFkYXRhIHwgdW5kZWZpbmVkPiA9IG9mKHVuZGVmaW5lZCk7XG4gIGNvbmRpdGlvbiQ6IE9ic2VydmFibGU8Tm9ybWFsaXplZENvbmRpdGlvbiB8IG51bGw+ID0gb2YobnVsbCk7XG4gIG9wZXJhdG9yT3B0aW9ucyQ6IE9ic2VydmFibGU8T3BlcmF0b3JPcHRpb25bXT4gPSBvZihbXSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55Pikge31cblxuICBwcml2YXRlIGFzc2lnbk9ic2VydmFibGVzKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9uJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFiYWNSdWxlc1NlbGVjdG9ycy5lZGl0QWJhY1J1bGVDb25kaXRpb25zQnlJZCh0aGlzLl9pZCA/PyAnJykpO1xuICAgIHRoaXMuYXR0cmlidXRlJCA9IHRoaXMuY29uZGl0aW9uJC5waXBlKFxuICAgICAgZmlsdGVyKChjb25kKTogY29uZCBpcyBOb3JtYWxpemVkQ29uZGl0aW9uID0+IGNvbmQgIT09IG51bGwgJiYgY29uZCAhPT0gdW5kZWZpbmVkKSxcbiAgICAgIG1lcmdlTWFwKChjb25kKSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtvZihjb25kKSwgdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NCeUF0dHJpYnV0ZUlkKGNvbmQuYXR0cmlidXRlID8/ICcnKSldKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2NvbmQsIGtsYXNzXSkgPT4ge1xuICAgICAgICByZXR1cm4gKGtsYXNzIGFzIENsYXNzKT8uYXR0cmlidXRlcy5maW5kKChhKSA9PiBhLmlkID09PSBjb25kLmF0dHJpYnV0ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5maWVsZCQgPSB0aGlzLmF0dHJpYnV0ZSQucGlwZShcbiAgICAgIGZpbHRlcigoYXR0cik6IGF0dHIgaXMgQXR0cmlidXRlID0+IGF0dHIgIT09IHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKGF0dHIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkQnlJZChhdHRyLmZpZWxkKSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLm9wZXJhdG9yT3B0aW9ucyQgPSB0aGlzLmZpZWxkJC5waXBlKFxuICAgICAgZmlsdGVyKChmaWVsZCk6IGZpZWxkIGlzIEZpZWxkID0+IGZpZWxkICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWFwKChmaWVsZDogRmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRUeXBlID0gZmllbGQudHlwZTtcbiAgICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlNUUklORyB8fCBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5LRVlXT1JEKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChlbCkgPT4gZWwudHlwZSA9PT0gJ3N0cmluZycpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLklOVEVHRVIgfHwgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuREVDSU1BTCB8fCBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5MT05HKSB7XG4gICAgICAgICAgcmV0dXJuIE9QRVJBVE9SX09QVElPTlMuZmlsdGVyKChlbCkgPT4gZWwudHlwZSA9PT0gJ251bWJlcicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBPUEVSQVRPUl9PUFRJT05TLmZpbHRlcigoZWwpID0+IGVsLnR5cGUgPT09ICdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2hhbmdlT3BlcmF0b3Iob3BlcmF0b3I6IE9wZXJhdG9yVHlwZSwgY29uZGl0aW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBBYmFjUnVsZXNBY3Rpb25zLnVwZGF0ZUVkaXRBYmFjUnVsZUNvbmRpdGlvblByb3BlcnR5KHtcbiAgICAgICAgY29uZGl0aW9uSWQsXG4gICAgICAgIHByb3BlcnR5OiB7IHR5cGU6ICdvcGVyYXRvcicsIHZhbHVlOiBvcGVyYXRvciB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbkNoYW5nZVZhbHVlKGV2dDogYW55LCBjb25kaXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEFiYWNSdWxlc0FjdGlvbnMudXBkYXRlRWRpdEFiYWNSdWxlQ29uZGl0aW9uUHJvcGVydHkoe1xuICAgICAgICBjb25kaXRpb25JZCxcbiAgICAgICAgcHJvcGVydHk6IHsgdHlwZTogJ3ZhbHVlJywgdmFsdWU6IGV2dC50YXJnZXQudmFsdWUgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb25PcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5wYW5lbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb25DbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMucGFuZWxPcGVuID0gZmFsc2U7XG4gIH1cblxuICBvbkRlbGV0ZUF0dHJpYnV0ZUNvbmRpdGlvbihjb25kaXRpb25JZDogc3RyaW5nLCBwYXJlbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEFiYWNSdWxlc0FjdGlvbnMucmVtb3ZlRWRpdEFiYWNSdWxlQ29uZGl0aW9uRnJvbUNvbXBvc2VkKHsgY29uZGl0aW9uSWQ6IHBhcmVudElkLCBjaGlsZHJlbklkOiBjb25kaXRpb25JZCB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24kIHwgYXN5bmMgYXMgY29uZGl0aW9uXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUkIHwgYXN5bmMgYXMgYXR0cjsgZWxzZSBub0F0dHJpYnV0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZCQgfCBhc3luYyBhcyBmaWVsZDsgZWxzZSBub0ZpZWxkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcnktYXR0cmlidXRlLWNvbmRpdGlvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgIChjbGljayk9XCJvbk9wZW5QYW5lbCgpXCJcbiAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICAgI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkcmFnX2luZGljYXRvclwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFkbWluLmFiYWMtcnVsZXMuZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cInBhbmVsT3BlblwiXG4gICAgICAgICAgICAoYmFja2Ryb3BDbGljayk9XCJvbkNsb3NlUGFuZWwoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tcHJ5LW92ZXJsYXktcGFuZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1wcnktb3ZlcmxheS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJ5LWNvbmRpdGlvbi1kZWxldGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQXR0cmlidXRlQ29uZGl0aW9uKGNvbmRpdGlvbi5pZCwgY29uZGl0aW9uLnBhcmVudElkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uYWJhYy1ydWxlcy5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIHUtdmlzdWFsbHktaGlkZGVuXCIgZm9yPVwiYXR0cl9uYW1lXCI+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwiYXR0cl9uYW1lXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJhdHRyLm5hbWVcIiByZWFkb25seSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCB1LXZpc3VhbGx5LWhpZGRlblwiIGZvcj1cImNvbmRpdGlvbl9vcGVyYXRvclwiPj8/PzwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwiY29uZGl0aW9uX29wZXJhdG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIxNjBcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cIm9wZXJhdG9yT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJvcGVyYXRvclwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJ0cmFuc2xhdGlvblwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjb25kaXRpb24ub3BlcmF0b3JcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VPcGVyYXRvcigkZXZlbnQsIGNvbmRpdGlvbi5pZClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCB1LXZpc3VhbGx5LWhpZGRlblwiIGZvcj1cImNvbmRpdGlvbl92YWx1ZVwiPk5hbWU8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJjb25kaXRpb25fdmFsdWVcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJjb25kaXRpb24udmFsdWVcIlxuICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uQ2hhbmdlVmFsdWUoJGV2ZW50LCBjb25kaXRpb24uaWQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9GaWVsZD4gTG9hZGluZyBmaWVsZCAuLi48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNub0F0dHJpYnV0ZT4gTG9hZGluZyBhdHRyaWJ1dGUgLi4uPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|