@ecodev/natural 46.0.0 → 47.0.0
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/esm2020/lib/classes/abstract-controller.mjs +3 -3
- package/esm2020/lib/classes/abstract-detail.mjs +3 -3
- package/esm2020/lib/classes/abstract-editable-list.mjs +5 -5
- package/esm2020/lib/classes/abstract-list.mjs +4 -4
- package/esm2020/lib/classes/abstract-navigable-list.mjs +3 -3
- package/esm2020/lib/classes/utility.mjs +8 -5
- package/esm2020/lib/directives/http-prefix.directive.mjs +3 -3
- package/esm2020/lib/modules/alert/alert.module.mjs +8 -8
- package/esm2020/lib/modules/alert/alert.service.mjs +7 -7
- package/esm2020/lib/modules/alert/confirm.component.mjs +7 -7
- package/esm2020/lib/modules/avatar/avatar.module.mjs +4 -4
- package/esm2020/lib/modules/avatar/component/avatar.component.mjs +3 -3
- package/esm2020/lib/modules/avatar/service/avatar.service.mjs +3 -3
- package/esm2020/lib/modules/columns-picker/columns-picker-column.directive.mjs +3 -3
- package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +24 -24
- package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +9 -9
- package/esm2020/lib/modules/common/common-module.mjs +8 -8
- package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +6 -6
- package/esm2020/lib/modules/common/directives/src-density.directive.mjs +7 -7
- package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/pipes/time-ago.pipe.mjs +3 -3
- package/esm2020/lib/modules/common/services/memory-storage.mjs +3 -3
- package/esm2020/lib/modules/common/services/seo.service.mjs +3 -3
- package/esm2020/lib/modules/detail-header/detail-header.component.mjs +4 -4
- package/esm2020/lib/modules/detail-header/detail-header.module.mjs +6 -6
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +6 -6
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +6 -6
- package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +3 -3
- package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +11 -11
- package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +9 -8
- package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +5 -5
- package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +6 -6
- package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +6 -6
- package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +7 -7
- package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +9 -9
- package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +5 -5
- package/esm2020/lib/modules/file/abstract-file.mjs +4 -4
- package/esm2020/lib/modules/file/component/file.component.mjs +5 -5
- package/esm2020/lib/modules/file/file-drop.directive.mjs +3 -3
- package/esm2020/lib/modules/file/file-select.directive.mjs +3 -3
- package/esm2020/lib/modules/file/file.module.mjs +4 -4
- package/esm2020/lib/modules/file/file.service.mjs +4 -4
- package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +4 -4
- package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +6 -6
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +13 -13
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +6 -6
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +7 -7
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +3 -3
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +8 -8
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +6 -6
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +12 -12
- package/esm2020/lib/modules/icon/icon.component.mjs +3 -3
- package/esm2020/lib/modules/icon/icon.module.mjs +4 -4
- package/esm2020/lib/modules/logger/error-handler.mjs +4 -4
- package/esm2020/lib/modules/logger/error.module.mjs +4 -4
- package/esm2020/lib/modules/matomo/matomo-module.module.mjs +4 -4
- package/esm2020/lib/modules/matomo/matomo.service.mjs +4 -4
- package/esm2020/lib/modules/panels/abstract-panel.mjs +3 -3
- package/esm2020/lib/modules/panels/panels.component.mjs +3 -3
- package/esm2020/lib/modules/panels/panels.module.mjs +6 -6
- package/esm2020/lib/modules/panels/panels.service.mjs +9 -9
- package/esm2020/lib/modules/relations/relations.component.mjs +9 -9
- package/esm2020/lib/modules/relations/relations.module.mjs +11 -11
- package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +5 -5
- package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +3 -3
- package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +4 -4
- package/esm2020/lib/modules/search/group/group.component.mjs +3 -3
- package/esm2020/lib/modules/search/input/input.component.mjs +18 -18
- package/esm2020/lib/modules/search/search/search.component.mjs +4 -4
- package/esm2020/lib/modules/search/search.module.mjs +10 -10
- package/esm2020/lib/modules/select/abstract-select.component.mjs +14 -14
- package/esm2020/lib/modules/select/select/select.component.mjs +12 -12
- package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +6 -6
- package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +8 -8
- package/esm2020/lib/modules/select/select.module.mjs +12 -12
- package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +3 -3
- package/esm2020/lib/modules/sidenav/sidenav.module.mjs +6 -6
- package/esm2020/lib/modules/sidenav/sidenav.service.mjs +3 -3
- package/esm2020/lib/modules/stamp/stamp-module.module.mjs +4 -4
- package/esm2020/lib/modules/stamp/stamp.component.mjs +3 -3
- package/esm2020/lib/modules/table-button/table-button.component.mjs +4 -4
- package/esm2020/lib/modules/table-button/table-button.module.mjs +6 -6
- package/esm2020/lib/services/abstract-model.service.mjs +1 -1
- package/esm2020/lib/services/debounce.service.mjs +3 -3
- package/esm2020/lib/services/enum.service.mjs +3 -3
- package/esm2020/lib/services/link-mutation.service.mjs +3 -3
- package/esm2020/lib/services/persistence.service.mjs +3 -3
- package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +3 -3
- package/esm2020/lib/types/types.mjs +1 -1
- package/fesm2015/ecodev-natural.mjs +516 -512
- package/fesm2015/ecodev-natural.mjs.map +1 -1
- package/fesm2020/ecodev-natural.mjs +516 -512
- package/fesm2020/ecodev-natural.mjs.map +1 -1
- package/lib/classes/abstract-controller.d.ts +1 -1
- package/lib/classes/abstract-detail.d.ts +1 -1
- package/lib/classes/abstract-editable-list.d.ts +2 -2
- package/lib/classes/abstract-list.d.ts +3 -3
- package/lib/classes/abstract-navigable-list.d.ts +3 -3
- package/lib/classes/utility.d.ts +1 -1
- package/lib/directives/http-prefix.directive.d.ts +1 -1
- package/lib/modules/alert/alert.module.d.ts +4 -4
- package/lib/modules/alert/alert.service.d.ts +2 -2
- package/lib/modules/alert/confirm.component.d.ts +1 -1
- package/lib/modules/avatar/component/avatar.component.d.ts +2 -2
- package/lib/modules/avatar/sources/source.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker-column.directive.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker.module.d.ts +5 -5
- package/lib/modules/common/common-module.d.ts +4 -4
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +2 -2
- package/lib/modules/common/directives/src-density.directive.d.ts +1 -1
- package/lib/modules/common/services/memory-storage.d.ts +1 -1
- package/lib/modules/common/services/seo.service.d.ts +4 -4
- package/lib/modules/detail-header/detail-header.component.d.ts +1 -1
- package/lib/modules/detail-header/detail-header.module.d.ts +2 -2
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +4 -4
- package/lib/modules/dialog-trigger/dialog-trigger.module.d.ts +2 -2
- package/lib/modules/dropdown-components/abstract-association-select-component.directive.d.ts +1 -1
- package/lib/modules/dropdown-components/natural-dropdown-components.module.d.ts +7 -7
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.d.ts +2 -2
- package/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +1 -1
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +3 -3
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +1 -1
- package/lib/modules/dropdown-components/types.d.ts +2 -2
- package/lib/modules/file/abstract-file.d.ts +1 -1
- package/lib/modules/file/component/file.component.d.ts +1 -1
- package/lib/modules/file/file-drop.directive.d.ts +1 -1
- package/lib/modules/file/file-select.directive.d.ts +1 -1
- package/lib/modules/file/types.d.ts +1 -1
- package/lib/modules/fixed-button/fixed-button.component.d.ts +1 -1
- package/lib/modules/fixed-button/fixed-button.module.d.ts +2 -2
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +2 -2
- package/lib/modules/fixed-button-detail/fixed-button-detail.module.d.ts +2 -2
- package/lib/modules/hierarchic-selector/classes/hierarchic-configuration.d.ts +1 -1
- package/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.d.ts +1 -1
- package/lib/modules/hierarchic-selector/classes/model-node.d.ts +1 -1
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +1 -1
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +2 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -1
- package/lib/modules/hierarchic-selector/hierarchic-selector.module.d.ts +8 -8
- package/lib/modules/icon/icon.component.d.ts +1 -1
- package/lib/modules/matomo/matomo.service.d.ts +2 -2
- package/lib/modules/panels/abstract-panel.d.ts +1 -1
- package/lib/modules/panels/panels.component.d.ts +1 -1
- package/lib/modules/panels/panels.module.d.ts +2 -2
- package/lib/modules/panels/panels.service.d.ts +1 -1
- package/lib/modules/panels/types.d.ts +2 -2
- package/lib/modules/relations/relations.component.d.ts +2 -2
- package/lib/modules/relations/relations.module.d.ts +7 -7
- package/lib/modules/search/classes/graphql-doctrine.types.d.ts +1 -1
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +1 -1
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -1
- package/lib/modules/search/group/group.component.d.ts +1 -1
- package/lib/modules/search/input/input.component.d.ts +1 -1
- package/lib/modules/search/search/search.component.d.ts +1 -1
- package/lib/modules/search/search.module.d.ts +5 -5
- package/lib/modules/search/types/facet.d.ts +2 -2
- package/lib/modules/search/types/values.d.ts +2 -2
- package/lib/modules/select/abstract-select.component.d.ts +2 -2
- package/lib/modules/select/select/select.component.d.ts +3 -3
- package/lib/modules/select/select-enum/select-enum.component.d.ts +2 -2
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +1 -1
- package/lib/modules/select/select.module.d.ts +8 -8
- package/lib/modules/sidenav/sidenav/sidenav.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav-content/sidenav-content.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav.module.d.ts +2 -2
- package/lib/modules/stamp/stamp.component.d.ts +2 -2
- package/lib/modules/table-button/table-button.component.d.ts +1 -1
- package/lib/modules/table-button/table-button.module.d.ts +2 -2
- package/lib/services/abstract-model.service.d.ts +6 -6
- package/lib/services/debounce.service.d.ts +1 -1
- package/lib/services/persistence.service.d.ts +1 -1
- package/lib/types/types.d.ts +12 -12
- package/package.json +12 -12
|
@@ -6,10 +6,10 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
const declarationsToExport = [NaturalStampComponent];
|
|
7
7
|
export class NaturalStampModule {
|
|
8
8
|
}
|
|
9
|
-
NaturalStampModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
NaturalStampModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
11
|
-
NaturalStampModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
NaturalStampModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalStampModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NaturalStampModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NaturalStampModule, declarations: [NaturalStampComponent], imports: [CommonModule, NaturalCommonModule], exports: [NaturalStampComponent] });
|
|
11
|
+
NaturalStampModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalStampModule, imports: [CommonModule, NaturalCommonModule] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalStampModule, decorators: [{
|
|
13
13
|
type: NgModule,
|
|
14
14
|
args: [{
|
|
15
15
|
declarations: [...declarationsToExport],
|
|
@@ -11,9 +11,9 @@ export class NaturalStampComponent {
|
|
|
11
11
|
return !same && (!!this.item.updateDate || !!this.item.updater);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
NaturalStampComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
15
|
-
NaturalStampComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
NaturalStampComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalStampComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
NaturalStampComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NaturalStampComponent, selector: "natural-stamp", inputs: { item: "item" }, ngImport: i0, template: "<ng-container *ngIf=\"item\">\n <div *ngIf=\"item.creationDate || item.creator\">\n <span class=\"mat-body-2\" i18n>Cr\u00E9ation</span>\n :\n <span *ngIf=\"item.creator\">{{ item.creator.fullName || item.creator.name }}</span>\n <span *ngIf=\"item.creator && item.creationDate\">, </span>\n <span *ngIf=\"item.creationDate\">{{ item.creationDate | swissDate }} ({{ item.creationDate | timeAgo }})</span>\n </div>\n\n <div *ngIf=\"showUpdate()\">\n <span class=\"mat-body-2\" i18n>Modification</span>\n :\n <span *ngIf=\"item.updater\">{{ item.updater.fullName || item.updater.name }}</span>\n <span *ngIf=\"item.updater && item.updateDate\">, </span>\n <span *ngIf=\"item.updateDate\">{{ item.updateDate | swissDate }} ({{ item.updateDate | timeAgo }})</span>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.NaturalSwissDatePipe, name: "swissDate" }, { kind: "pipe", type: i3.NaturalTimeAgoPipe, name: "timeAgo" }] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalStampComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'natural-stamp', template: "<ng-container *ngIf=\"item\">\n <div *ngIf=\"item.creationDate || item.creator\">\n <span class=\"mat-body-2\" i18n>Cr\u00E9ation</span>\n :\n <span *ngIf=\"item.creator\">{{ item.creator.fullName || item.creator.name }}</span>\n <span *ngIf=\"item.creator && item.creationDate\">, </span>\n <span *ngIf=\"item.creationDate\">{{ item.creationDate | swissDate }} ({{ item.creationDate | timeAgo }})</span>\n </div>\n\n <div *ngIf=\"showUpdate()\">\n <span class=\"mat-body-2\" i18n>Modification</span>\n :\n <span *ngIf=\"item.updater\">{{ item.updater.fullName || item.updater.name }}</span>\n <span *ngIf=\"item.updater && item.updateDate\">, </span>\n <span *ngIf=\"item.updateDate\">{{ item.updateDate | swissDate }} ({{ item.updateDate | timeAgo }})</span>\n </div>\n</ng-container>\n" }]
|
|
19
19
|
}], propDecorators: { item: [{
|
|
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angu
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "@angular/material/button";
|
|
5
|
+
import * as i3 from "@angular/material/legacy-button";
|
|
6
6
|
import * as i4 from "../icon/icon.component";
|
|
7
7
|
/**
|
|
8
8
|
* Button that fits well in a `<mat-table>` and support either
|
|
@@ -39,9 +39,9 @@ export class NaturalTableButtonComponent {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
NaturalTableButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
43
|
-
NaturalTableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
42
|
+
NaturalTableButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalTableButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
NaturalTableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NaturalTableButtonComponent, selector: "natural-table-button", inputs: { queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", label: "label", icon: "icon", href: "href", navigate: "navigate", fragment: "fragment", preserveFragment: "preserveFragment", raised: "raised", color: "color" }, outputs: { buttonClick: "buttonClick" }, usesOnChanges: true, ngImport: i0, template: "<!-- Because directives can't be applied conditionally (routerLink, mat-button and mat-icon-button), we have to use different elements -->\n\n<!-- Edge case of a button without any kind of link at all -->\n<span *ngIf=\"type === 'none'\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span *ngIf=\"label\">{{ label }}</span>\n</span>\n\n<ng-container *ngIf=\"!raised\">\n <!-- App routed link with label... -->\n <a\n *ngIf=\"type === 'routerLink' && label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'routerLink' && !label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-icon-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n\n <!-- Click with label... -->\n <a *ngIf=\"type === 'click' && label\" [color]=\"color\" (click)=\"buttonClick.emit($event)\" mat-button>\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a *ngIf=\"type === 'click' && !label\" (click)=\"buttonClick.emit($event)\" mat-icon-button>\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n\n <!-- External link with label... -->\n <a *ngIf=\"type === 'href' && label\" [attr.href]=\"href\" [color]=\"color\" mat-button target=\"_blank\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a *ngIf=\"type === 'href' && !label\" [attr.href]=\"href\" [color]=\"color\" mat-icon-button target=\"_blank\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"raised\">\n <!-- App routed link with label... -->\n <a\n *ngIf=\"type === 'routerLink' && label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-raised-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'routerLink' && !label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-icon-button\n mat-raised-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n <!-- Click with label... -->\n <a *ngIf=\"type === 'click' && label\" [color]=\"color\" (click)=\"buttonClick.emit($event)\" mat-raised-button>\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'click' && !label\"\n [color]=\"color\"\n (click)=\"buttonClick.emit($event)\"\n mat-icon-button\n mat-raised-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n\n <!-- External link with label... -->\n <a *ngIf=\"type === 'href' && label\" [attr.href]=\"href\" [color]=\"color\" mat-raised-button target=\"_blank\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'href' && !label\"\n [attr.href]=\"href\"\n [color]=\"color\"\n mat-icon-button\n mat-raised-button\n target=\"_blank\"\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n</ng-container>\n", styles: ["natural-table-button{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}natural-table-button a.mat-button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:flex-start}natural-table-button a.mat-button .mat-button-wrapper{display:flex;flex-direction:row;align-items:center}natural-table-button a.mat-button .mat-button-wrapper>*{display:flex;flex-direction:row;align-items:center}natural-table-button a.mat-button .mat-button-wrapper>:not(:last-child){margin-right:5px}natural-table-button>span{padding:0 16px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalTableButtonComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
46
|
args: [{ selector: 'natural-table-button', encapsulation: ViewEncapsulation.None, template: "<!-- Because directives can't be applied conditionally (routerLink, mat-button and mat-icon-button), we have to use different elements -->\n\n<!-- Edge case of a button without any kind of link at all -->\n<span *ngIf=\"type === 'none'\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span *ngIf=\"label\">{{ label }}</span>\n</span>\n\n<ng-container *ngIf=\"!raised\">\n <!-- App routed link with label... -->\n <a\n *ngIf=\"type === 'routerLink' && label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'routerLink' && !label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-icon-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n\n <!-- Click with label... -->\n <a *ngIf=\"type === 'click' && label\" [color]=\"color\" (click)=\"buttonClick.emit($event)\" mat-button>\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a *ngIf=\"type === 'click' && !label\" (click)=\"buttonClick.emit($event)\" mat-icon-button>\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n\n <!-- External link with label... -->\n <a *ngIf=\"type === 'href' && label\" [attr.href]=\"href\" [color]=\"color\" mat-button target=\"_blank\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a *ngIf=\"type === 'href' && !label\" [attr.href]=\"href\" [color]=\"color\" mat-icon-button target=\"_blank\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"raised\">\n <!-- App routed link with label... -->\n <a\n *ngIf=\"type === 'routerLink' && label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-raised-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'routerLink' && !label\"\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n mat-icon-button\n mat-raised-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n <!-- Click with label... -->\n <a *ngIf=\"type === 'click' && label\" [color]=\"color\" (click)=\"buttonClick.emit($event)\" mat-raised-button>\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'click' && !label\"\n [color]=\"color\"\n (click)=\"buttonClick.emit($event)\"\n mat-icon-button\n mat-raised-button\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n\n <!-- External link with label... -->\n <a *ngIf=\"type === 'href' && label\" [attr.href]=\"href\" [color]=\"color\" mat-raised-button target=\"_blank\">\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n <span>{{ label }}</span>\n </a>\n\n <!-- ... and without label -->\n <a\n *ngIf=\"type === 'href' && !label\"\n [attr.href]=\"href\"\n [color]=\"color\"\n mat-icon-button\n mat-raised-button\n target=\"_blank\"\n >\n <natural-icon *ngIf=\"icon\" [name]=\"icon\"></natural-icon>\n </a>\n</ng-container>\n", styles: ["natural-table-button{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}natural-table-button a.mat-button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:flex-start}natural-table-button a.mat-button .mat-button-wrapper{display:flex;flex-direction:row;align-items:center}natural-table-button a.mat-button .mat-button-wrapper>*{display:flex;flex-direction:row;align-items:center}natural-table-button a.mat-button .mat-button-wrapper>:not(:last-child){margin-right:5px}natural-table-button>span{padding:0 16px}\n"] }]
|
|
47
47
|
}], propDecorators: { queryParams: [{
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';
|
|
4
4
|
import { RouterModule } from '@angular/router';
|
|
5
5
|
import { NaturalIconModule } from '../icon/icon.module';
|
|
6
6
|
import { NaturalTableButtonComponent } from './table-button.component';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class NaturalTableButtonModule {
|
|
9
9
|
}
|
|
10
|
-
NaturalTableButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
NaturalTableButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
12
|
-
NaturalTableButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10
|
+
NaturalTableButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalTableButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
NaturalTableButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NaturalTableButtonModule, declarations: [NaturalTableButtonComponent], imports: [CommonModule, RouterModule, MatButtonModule, NaturalIconModule], exports: [NaturalTableButtonComponent] });
|
|
12
|
+
NaturalTableButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalTableButtonModule, imports: [CommonModule, RouterModule, MatButtonModule, NaturalIconModule] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalTableButtonModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
declarations: [NaturalTableButtonComponent],
|
|
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
18
18
|
exports: [NaturalTableButtonComponent],
|
|
19
19
|
}]
|
|
20
20
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3RhYmxlLWJ1dHRvbi90YWJsZS1idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxlQUFlLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBT3JFLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFKbEIsMkJBQTJCLGFBQ2hDLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixhQUM5RCwyQkFBMkI7c0hBRTVCLHdCQUF3QixZQUh2QixZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUI7MkZBRy9ELHdCQUF3QjtrQkFMcEMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDM0MsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdExlZ2FjeUJ1dHRvbk1vZHVsZSBhcyBNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1idXR0b24nO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge05hdHVyYWxJY29uTW9kdWxlfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7TmF0dXJhbFRhYmxlQnV0dG9uQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxUYWJsZUJ1dHRvbkNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE5hdHVyYWxJY29uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTmF0dXJhbFRhYmxlQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFRhYmxlQnV0dG9uTW9kdWxlIHt9XG4iXX0=
|
|
@@ -486,4 +486,4 @@ export class NaturalAbstractModelService {
|
|
|
486
486
|
}
|
|
487
487
|
}
|
|
488
488
|
}
|
|
489
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbW9kZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsYUFBYSxFQUF3QixNQUFNLHFCQUFxQixDQUFDO0FBQ3RGLE9BQU8sRUFBb0Msa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwSCxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQUMsNEJBQTRCLEVBQWlCLE1BQU0sbUNBQW1DLENBQUM7QUFFL0YsT0FBTyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQTBCeEcsTUFBTSxPQUFnQiwyQkFBMkI7SUFpQjdDLFlBQ3VCLE1BQWMsRUFDZCxzQkFBOEMsRUFDOUMsSUFBWSxFQUNaLFFBQTZCLEVBQzdCLFFBQTZCLEVBQzdCLGNBQW1DLEVBQ25DLGNBQW1DLEVBQ25DLGNBQW1DO1FBUG5DLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQWIxRDs7V0FFRztRQUNjLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQW9FLENBQUM7SUFXMUcsQ0FBQztJQUVHLHdCQUF3QjtRQUMzQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCw2REFBNkQ7SUFDdEQsaUJBQWlCLENBQUMsS0FBZTtRQUNwQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILDZEQUE2RDtJQUN0RCxzQkFBc0IsQ0FBQyxLQUFlO1FBQ3pDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNkRBQTZEO0lBQ3RELHNCQUFzQixDQUFDLEtBQWU7UUFDekMsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCw2REFBNkQ7SUFDdEQsMkJBQTJCLENBQUMsS0FBZTtRQUM5QyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYztRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFpQixFQUFFLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRXZFLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDOUU7UUFFRCx5Q0FBeUM7UUFDekMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHO2dCQUNkLEtBQUssRUFBRSxLQUFLO2dCQUNaLFFBQVEsRUFBRSxRQUFRO2FBQ3JCLENBQUM7WUFDRixNQUFNLFNBQVMsR0FBRyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xGLE1BQU0sY0FBYyxHQUFHLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFFakcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUNoRjtRQUVELHVFQUF1RTtRQUN2RSxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxTQUFTLEdBQUc7b0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUUsUUFBUTtpQkFDckIsQ0FBQztnQkFFRixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEU7U0FDSjtRQUVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUM1QyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMxRDtpQkFBTTtnQkFDSCxNQUFNLFNBQVMsR0FBRztvQkFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRSxRQUFRO2lCQUNyQixDQUFDO2dCQUVGLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDakY7U0FDSjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxLQUFjO1FBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztZQUM5QyxlQUFlLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQztTQUMzRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsRUFBVTtRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFcEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBYTtnQkFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNwQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsV0FBVyxFQUFFLG1CQUFtQjtnQkFDaEMsZUFBZSxFQUFFLFlBQVk7YUFDaEMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNwQixDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUMvQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQ3ZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFFLE1BQU0sQ0FBQyxJQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHFCQUF5RDtRQUNuRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLElBQUksQ0FDeEMsS0FBSyxFQUFFLEVBQ1AsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFcEMsd0ZBQXdGO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLElBQUksNEJBQTRCLENBQU8scUJBQXFCLENBQUMsQ0FBQztZQUM5RSxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFckQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBYTtnQkFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQyxXQUFXLEVBQUUsY0FBYzthQUM5QixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQ2hCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUNYLHFCQUF5RCxFQUN6RCxjQUFxQyxtQkFBbUI7UUFFeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsT0FBTyxhQUFhLENBQUM7WUFDakIsU0FBUyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJO1lBQzNDLG9DQUFvQztZQUNwQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hCLDBGQUEwRjtZQUMxRiw0Q0FBNEM7WUFDNUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxDQUFDLENBQ3hEO1lBQ0QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1NBQ3JELENBQUMsQ0FBQyxJQUFJLENBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2YsdUNBQXVDO1lBQ3ZDLHdGQUF3RjtZQUN4RixNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUE0QixDQUFPLHFCQUFxQixDQUFDLENBQUM7WUFDOUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUU1RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwQyxPQUFPLElBQUksQ0FBQyxNQUFNO2lCQUNiLFVBQVUsQ0FBYTtnQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQyxXQUFXLEVBQUUsV0FBVzthQUMzQixDQUFDO2lCQUNELFlBQVksQ0FBQyxJQUFJLENBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQ2hCLENBQUM7UUFDVixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGNBQWMsQ0FDakIsTUFBbUQsRUFDbkQsR0FBRyxHQUFHLEtBQUs7UUFFWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUMsb0ZBQW9GO1FBQ3BGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksZUFBZSxFQUFFO1lBQ2pCLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBa0MsQ0FBQyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUVELGlDQUFpQztRQUNqQyxJQUFJLElBQUksSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUM3QixJQUFJLEdBQUcsRUFBRTtnQkFDTCxnSEFBZ0g7Z0JBQ2hILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFrQyxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQWtDLENBQUMsQ0FBQzthQUMxRDtTQUNKO1FBRUQscURBQXFEO1FBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDM0QsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUVGLDhFQUE4RTtRQUM5RSx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTdELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUF3QjtRQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUNuQixFQUFFLEVBQ0YsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxFQUM5QixJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQ25DLENBQUM7UUFFYixPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2IsTUFBTSxDQUFtQjtZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDN0IsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2FBQzNEO2lCQUFNO2dCQUNILE9BQU8sU0FBUyxDQUFDO2FBQ3BCO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFnQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUMsMERBQTBEO1FBQzFELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxNQUFnQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUNuQjtZQUNJLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUMvQixFQUNELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FDakMsQ0FBQztRQUViLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDYixNQUFNLENBQW1CO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUM3QixTQUFTLEVBQUUsU0FBUztTQUN2QixDQUFDO2FBQ0QsSUFBSSxDQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlLENBQUMsTUFBZ0M7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sU0FBUyxHQUFHO1lBQ2QsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDO1NBQ2pDLENBQUM7UUFFYixPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2IsTUFBTSxDQUFtQjtZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDN0IsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQXVCO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFL0MsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUNuQjtZQUNJLEdBQUcsRUFBRSxHQUFHO1NBQ1gsRUFDRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQ2xDLENBQUM7UUFFYixPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2IsTUFBTSxDQUFtQjtZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDN0IsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBRTlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLEVBQVU7UUFDckIsNEJBQTRCO1FBQzVCLElBQUksVUFBVSxDQUFDO1FBQ2YsSUFBSSxFQUFFLEVBQUU7WUFDSixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQzthQUFNO1lBQ0gsVUFBVSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQVUsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNsQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxPQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLE1BQWU7UUFDM0IsOENBQThDO1FBQzlDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEMsNERBQTREO1FBQzVELHNFQUFzRTtRQUN0RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVuRCxnRUFBZ0U7UUFDaEUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMscUJBQXlEO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFFOUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFBO29CQUNMLFNBQVMsY0FBYyxVQUFVO3FCQUNoQyxNQUFNOzs7Y0FHYixDQUFDO1FBRVAsT0FBTyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3pCLHdGQUF3RjtZQUN4RixNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUE0QixDQUFPLHFCQUFxQixDQUFDLENBQUM7WUFDOUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXJELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQWtDO2dCQUN0RCxLQUFLLEVBQUUsS0FBSztnQkFDWixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQyxXQUFXLEVBQUUsY0FBYzthQUM5QixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FDMUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sbUJBQW1CO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxtQkFBbUI7UUFDekIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxNQUFNO1FBQ1osTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFFLE1BQU0sQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlFQUFpRTtJQUN6SCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXLENBQUMsTUFBbUI7UUFDckMsTUFBTSxJQUFJLEdBQUcsUUFBUSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFRLE1BQU0sQ0FBQyxJQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpRUFBaUU7SUFDeEcsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUyxDQUFDLE1BQW1CO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsT0FBUSxNQUFNLENBQUMsSUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUVBQWlFO0lBQ3hHLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVMsQ0FBQyxNQUFtQjtRQUNuQyxNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQVEsTUFBTSxDQUFDLElBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlFQUFpRTtJQUN4RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QjtRQUMvQixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHlCQUF5QjtRQUM1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDZEQUE2RDtJQUNuRCw4QkFBOEIsQ0FBQyxNQUFlO1FBQ3BELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw2REFBNkQ7SUFDbkQsNEJBQTRCLENBQUMsTUFBZTtRQUNsRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNkRBQTZEO0lBQ25ELDRCQUE0QixDQUFDLE9BQWtCO1FBQ3JELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ08saUJBQWlCLENBQUMsS0FBVTtRQUNsQyxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FDWCw4R0FBOEcsQ0FDakgsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCLENBQUMsRUFBVTtRQUNqQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLElBQUksQ0FDeEMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBUyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FDekUsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxLQUEwQjtRQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1NBQ25HO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcG9sbG8sIGdxbH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHtGZXRjaFJlc3VsdCwgTmV0d29ya1N0YXR1cywgV2F0Y2hRdWVyeUZldGNoUG9saWN5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0RvY3VtZW50Tm9kZX0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQge2RlZmF1bHRzLCBtZXJnZSwgbWVyZ2VXaXRoLCBvbWl0LCBwaWNrfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgZmlyc3QsIE9ic2VydmFibGUsIG9mLCBPcGVyYXRvckZ1bmN0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlciwgUXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uL2NsYXNzZXMvcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7bWFrZVBsdXJhbCwgbWVyZ2VPdmVycmlkZUFycmF5LCByZWxhdGlvbnNUb0lkcywgdXBwZXJDYXNlRmlyc3RMZXR0ZXJ9IGZyb20gJy4uL2NsYXNzZXMvdXRpbGl0eSc7XG5pbXBvcnQge1BhZ2luYXRlZERhdGF9IGZyb20gJy4uL2NsYXNzZXMvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtOYXR1cmFsRGVib3VuY2VTZXJ2aWNlfSBmcm9tICcuL2RlYm91bmNlLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1WYWxpZGF0b3JzIHtcbiAgICBba2V5OiBzdHJpbmddOiBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Bc3luY1ZhbGlkYXRvcnMge1xuICAgIFtrZXk6IHN0cmluZ106IEFzeW5jVmFsaWRhdG9yRm5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZXNXaXRoSW5wdXQge1xuICAgIGlucHV0OiBMaXRlcmFsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db250cm9scyB7XG4gICAgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sO1xufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZTxUT25lPiB7XG4gICAgbW9kZWw6IFRPbmU7XG59XG5cbmV4cG9ydCB0eXBlIFdpdGhJZDxUPiA9IHtpZDogc3RyaW5nfSAmIFQ7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgVG9uZSxcbiAgICBWb25lIGV4dGVuZHMge2lkOiBzdHJpbmd9LFxuICAgIFRhbGwgZXh0ZW5kcyBQYWdpbmF0ZWREYXRhPExpdGVyYWw+LFxuICAgIFZhbGwgZXh0ZW5kcyBRdWVyeVZhcmlhYmxlcyxcbiAgICBUY3JlYXRlLFxuICAgIFZjcmVhdGUgZXh0ZW5kcyBWYXJpYWJsZXNXaXRoSW5wdXQsXG4gICAgVHVwZGF0ZSxcbiAgICBWdXBkYXRlIGV4dGVuZHMge2lkOiBzdHJpbmc7IGlucHV0OiBMaXRlcmFsfSxcbiAgICBUZGVsZXRlLFxuICAgIFZkZWxldGUgZXh0ZW5kcyB7aWRzOiBzdHJpbmdbXX0sXG4+IHtcbiAgICAvKipcbiAgICAgKiBTdG9yZSB0aGUgY3JlYXRpb24gbXV0YXRpb25zIHRoYXQgYXJlIHBlbmRpbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWF0aW5nQ2FjaGUgPSBuZXcgTWFwPFZjcmVhdGVbJ2lucHV0J10gfCBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4sIE9ic2VydmFibGU8VGNyZWF0ZT4+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBhcG9sbG86IEFwb2xsbyxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hdHVyYWxEZWJvdW5jZVNlcnZpY2U6IE5hdHVyYWxEZWJvdW5jZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBvbmVRdWVyeTogRG9jdW1lbnROb2RlIHwgbnVsbCxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsbFF1ZXJ5OiBEb2N1bWVudE5vZGUgfCBudWxsLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3JlYXRlTXV0YXRpb246IERvY3VtZW50Tm9kZSB8IG51bGwsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSB1cGRhdGVNdXRhdGlvbjogRG9jdW1lbnROb2RlIHwgbnVsbCxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlbGV0ZU11dGF0aW9uOiBEb2N1bWVudE5vZGUgfCBudWxsLFxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXRDb25zb2xpZGF0ZWRGb3JDbGllbnQoKTogTGl0ZXJhbCB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMuZ2V0RGVmYXVsdEZvclNlcnZlcigpLCB0aGlzLmdldERlZmF1bHRGb3JDbGllbnQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBpbmRpdmlkdWFsIGZpZWxkcyB2YWxpZGF0b3JzXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBnZXRGb3JtVmFsaWRhdG9ycyhtb2RlbD86IExpdGVyYWwpOiBGb3JtVmFsaWRhdG9ycyB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGluZGl2aWR1YWwgYXN5bmMgZmllbGRzIHZhbGlkYXRvcnNcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGdldEZvcm1Bc3luY1ZhbGlkYXRvcnMobW9kZWw/OiBMaXRlcmFsKTogRm9ybUFzeW5jVmFsaWRhdG9ycyB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGdyb3VwZWQgZmllbGRzIHZhbGlkYXRvcnMgKGxpa2UgcGFzc3dvcmQgKyBjb25maXJtIHBhc3N3b3JkKVxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgZ2V0Rm9ybUdyb3VwVmFsaWRhdG9ycyhtb2RlbD86IExpdGVyYWwpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgYXN5bmMgZ3JvdXAgZmllbGRzIHZhbGlkYXRvcnMgKGxpa2UgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVsdGlwbGUgY29sdW1ucylcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGdldEZvcm1Hcm91cEFzeW5jVmFsaWRhdG9ycyhtb2RlbD86IExpdGVyYWwpOiBBc3luY1ZhbGlkYXRvckZuW10ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1Db25maWcobW9kZWw6IExpdGVyYWwpOiBGb3JtQ29udHJvbHMge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldENvbnNvbGlkYXRlZEZvckNsaWVudCgpO1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRGb3JtVmFsaWRhdG9ycyhtb2RlbCk7XG4gICAgICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9ycyA9IHRoaXMuZ2V0Rm9ybUFzeW5jVmFsaWRhdG9ycyhtb2RlbCk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzOiBGb3JtQ29udHJvbHMgPSB7fTtcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBtb2RlbC5wZXJtaXNzaW9ucyA/ICFtb2RlbC5wZXJtaXNzaW9ucy51cGRhdGUgOiBmYWxzZTtcblxuICAgICAgICBpZiAobW9kZWwuaWQpIHtcbiAgICAgICAgICAgIGNvbnRyb2xzWydpZCddID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7dmFsdWU6IG1vZGVsLmlkLCBkaXNhYmxlZDogdHJ1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIGZvcm0gZm9yIGVhY2ggZmllbGQgb2YgbW9kZWxcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWVzKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtb2RlbFtrZXldICE9PSB1bmRlZmluZWQgPyBtb2RlbFtrZXldIDogdmFsdWVzW2tleV07XG4gICAgICAgICAgICBjb25zdCBmb3JtU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB0eXBlb2YgdmFsaWRhdG9yc1trZXldICE9PSAndW5kZWZpbmVkJyA/IHZhbGlkYXRvcnNba2V5XSA6IG51bGw7XG4gICAgICAgICAgICBjb25zdCBhc3luY1ZhbGlkYXRvciA9IHR5cGVvZiBhc3luY1ZhbGlkYXRvcnNba2V5XSAhPT0gJ3VuZGVmaW5lZCcgPyBhc3luY1ZhbGlkYXRvcnNba2V5XSA6IG51bGw7XG5cbiAgICAgICAgICAgIGNvbnRyb2xzW2tleV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZvcm1TdGF0ZSwgdmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb25maWd1cmUgZm9ybSBmb3IgZXh0cmEgdmFsaWRhdG9ycyB0aGF0IGFyZSBub3Qgb24gYSBzcGVjaWZpYyBmaWVsZFxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWxpZGF0b3JzKSkge1xuICAgICAgICAgICAgaWYgKCFjb250cm9sc1trZXldKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybVN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbW9kZWxba2V5XSA/IG1vZGVsW2tleV0gOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnRyb2xzW2tleV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZvcm1TdGF0ZSwgdmFsaWRhdG9yc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGFzeW5jVmFsaWRhdG9ycykpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9sc1trZXldICYmIGFzeW5jVmFsaWRhdG9yc1trZXldKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbHNba2V5XS5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzW2tleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtb2RlbFtrZXldID8gbW9kZWxba2V5XSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29udHJvbHNba2V5XSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZm9ybVN0YXRlLCBudWxsLCBhc3luY1ZhbGlkYXRvcnNba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udHJvbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIHRoZSBmaW5hbCBGb3JtR3JvdXAgZm9yIHRoZSBvYmplY3QsIGluY2x1ZGluZyBhbGwgdmFsaWRhdG9yc1xuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgc2hvdWxkICoqbm90KiogYmUgb3ZlcnJpZGRlbiwgYnV0IGluc3RlYWQgYGdldEZvcm1Db25maWdgLFxuICAgICAqIGBnZXRGb3JtR3JvdXBWYWxpZGF0b3JzYCwgYGdldEZvcm1Hcm91cEFzeW5jVmFsaWRhdG9yc2AgbWlnaHQgYmUuXG4gICAgICovXG4gICAgcHVibGljIGdldEZvcm1Hcm91cChtb2RlbDogTGl0ZXJhbCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gdGhpcy5nZXRGb3JtQ29uZmlnKG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKGZvcm1Db25maWcsIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IHRoaXMuZ2V0Rm9ybUdyb3VwVmFsaWRhdG9ycyhtb2RlbCksXG4gICAgICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMuZ2V0Rm9ybUdyb3VwQXN5bmNWYWxpZGF0b3JzKG1vZGVsKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgc2luZ2xlIG9iamVjdFxuICAgICAqXG4gICAgICogSWYgYXZhaWxhYmxlIGl0IHdpbGwgZW1pdCBvYmplY3QgZnJvbSBjYWNoZSBpbW1lZGlhdGVseSwgdGhlbiBpdFxuICAgICAqIHdpbGwgKiphbHdheXMqKiBmZXRjaCBmcm9tIG5ldHdvcmsgYW5kIHRoZW4gdGhlIG9ic2VydmFibGUgd2lsbCBiZSBjb21wbGV0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T25lKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRvbmU+IHtcbiAgICAgICAgdGhpcy50aHJvd0lmT2JzZXJ2YWJsZShpZCk7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMub25lUXVlcnkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhcmlhYmxlc0Zvck9uZShpZCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCh2YXJpYWJsZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMub25lUXVlcnkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBvbGxvLndhdGNoUXVlcnk8VG9uZSwgVm9uZT4oe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogdGhpcy5vbmVRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoUG9saWN5OiAnY2FjaGUtYW5kLW5ldHdvcmsnLFxuICAgICAgICAgICAgICAgICAgICBuZXh0RmV0Y2hQb2xpY3k6ICdjYWNoZS1vbmx5JyxcbiAgICAgICAgICAgICAgICB9KS52YWx1ZUNoYW5nZXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcihyZXN1bHQgPT4gISFyZXN1bHQuZGF0YSksXG4gICAgICAgICAgICB0YWtlV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5uZXR3b3JrU3RhdHVzICE9PSBOZXR3b3JrU3RhdHVzLnJlYWR5LCB0cnVlKSxcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4gKHJlc3VsdC5kYXRhIGFzIExpdGVyYWwpW3RoaXMubmFtZV0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIGNvbGxlY3Rpb24gb2Ygb2JqZWN0c1xuICAgICAqXG4gICAgICogSXQgd2lsbCAqKmFsd2F5cyoqIGZldGNoIGZyb20gbmV0d29yayBhbmQgdGhlbiB0aGUgb2JzZXJ2YWJsZSB3aWxsIGJlIGNvbXBsZXRlZC5cbiAgICAgKiBObyBjYWNoZSBpcyBldmVyIHVzZWQsIHNvIGl0J3Mgc2xvdyBidXQgY29ycmVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWxsKHF1ZXJ5VmFyaWFibGVzTWFuYWdlcjogTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxWYWxsPik6IE9ic2VydmFibGU8VGFsbD4ge1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLmFsbFF1ZXJ5KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRQYXJ0aWFsVmFyaWFibGVzRm9yQWxsKCkucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAocGFydGlhbFZhcmlhYmxlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHJvd0lmTm90UXVlcnkodGhpcy5hbGxRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDb3B5IG1hbmFnZXIgdG8gcHJldmVudCB0byBhcHBseSBpbnRlcm5hbCB2YXJpYWJsZXMgdG8gZXh0ZXJuYWwgUXVlcnlWYXJpYWJsZXNNYW5hZ2VyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFZhbGw+KHF1ZXJ5VmFyaWFibGVzTWFuYWdlcik7XG4gICAgICAgICAgICAgICAgbWFuYWdlci5tZXJnZSgncGFydGlhbC12YXJpYWJsZXMnLCBwYXJ0aWFsVmFyaWFibGVzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwb2xsby5xdWVyeTxUYWxsLCBWYWxsPih7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLmFsbFF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG1hbmFnZXIudmFyaWFibGVzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMubWFwQWxsKCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgY29sbGVjdGlvbiBvZiBvYmplY3RzXG4gICAgICpcbiAgICAgKiBFdmVyeSB0aW1lIHRoZSBvYnNlcnZhYmxlIHZhcmlhYmxlcyBjaGFuZ2UsIGFuZCB0aGV5IGFyZSBub3QgdW5kZWZpbmVkLFxuICAgICAqIGl0IHdpbGwgcmV0dXJuIHJlc3VsdCBmcm9tIGNhY2hlLCB0aGVuIGl0IHdpbGwgKiphbHdheXMqKiBmZXRjaCBmcm9tIG5ldHdvcmsuXG4gICAgICpcbiAgICAgKiBZb3UgbXVzdCBzdWJzY3JpYmUgdG8gc3RhcnQgZ2V0dGluZyByZXN1bHRzIChhbmQgZmV0Y2ggZnJvbSBuZXR3b3JrKS5cbiAgICAgKlxuICAgICAqIFRoZSBvYnNlcnZhYmxlIHJlc3VsdCB3aWxsIG9ubHkgY29tcGxldGUgd2hlbiB1bnN1YnNjcmliaW5nLiBUaGF0IG1lYW5zIHlvdSAqKm11c3QqKiB1bnN1YnNjcmliZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2F0Y2hBbGwoXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzTWFuYWdlcjogTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxWYWxsPixcbiAgICAgICAgZmV0Y2hQb2xpY3k6IFdhdGNoUXVlcnlGZXRjaFBvbGljeSA9ICdjYWNoZS1hbmQtbmV0d29yaycsXG4gICAgKTogT2JzZXJ2YWJsZTxUYWxsPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMuYWxsUXVlcnkpO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnlWYXJpYWJsZXNNYW5hZ2VyLnZhcmlhYmxlcy5waXBlKFxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB2ZXJ5IGZhc3QgdmFyaWFibGUgY2hhbmdlc1xuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMCksXG4gICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgdmFyaWFibGVzIHRvIGJlIGRlZmluZWQgdG8gcHJldmVudCBkdXBsaWNhdGUgcXVlcnk6IHdpdGggYW5kIHdpdGhvdXQgdmFyaWFibGVzXG4gICAgICAgICAgICAgICAgLy8gTnVsbCBpcyBhY2NlcHRlZCB2YWx1ZSBmb3IgXCJubyB2YXJpYWJsZXNcIlxuICAgICAgICAgICAgICAgIGZpbHRlcih2YXJpYWJsZXMgPT4gdHlwZW9mIHZhcmlhYmxlcyAhPT0gJ3VuZGVmaW5lZCcpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBhcnRpYWxWYXJpYWJsZXM6IHRoaXMuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckFsbCgpLFxuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQXBwbHkgcGFydGlhbCB2YXJpYWJsZXMgZnJvbSBzZXJ2aWNlXG4gICAgICAgICAgICAgICAgLy8gQ29weSBtYW5hZ2VyIHRvIHByZXZlbnQgdG8gYXBwbHkgaW50ZXJuYWwgdmFyaWFibGVzIHRvIGV4dGVybmFsIFF1ZXJ5VmFyaWFibGVzTWFuYWdlclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxWYWxsPihxdWVyeVZhcmlhYmxlc01hbmFnZXIpO1xuICAgICAgICAgICAgICAgIG1hbmFnZXIubWVyZ2UoJ3BhcnRpYWwtdmFyaWFibGVzJywgcmVzdWx0LnBhcnRpYWxWYXJpYWJsZXMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50aHJvd0lmTm90UXVlcnkodGhpcy5hbGxRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG9cbiAgICAgICAgICAgICAgICAgICAgLndhdGNoUXVlcnk8VGFsbCwgVmFsbD4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHRoaXMuYWxsUXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG1hbmFnZXIudmFyaWFibGVzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6IGZldGNoUG9saWN5LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IEVNUFRZKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihyID0+ICEhci5kYXRhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQWxsKCksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9ucyBhbGxvdyB0byBxdWlja2x5IGNyZWF0ZSBvciB1cGRhdGUgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIE1hbmFnZXMgYSBcImNyZWF0aW9uIGlzIHBlbmRpbmdcIiBzdGF0dXMsIGFuZCB1cGRhdGUgd2hlbiBjcmVhdGlvbiBpcyByZWFkeS5cbiAgICAgKiBVc2VzIHJlZ3VsYXIgdXBkYXRlL3VwZGF0ZU5vdyBhbmQgY3JlYXRlIG1ldGhvZHMuXG4gICAgICogVXNlZCBtYWlubHkgd2hlbiBlZGl0aW5nIG11bHRpcGxlIG9iamVjdHMgaW4gc2FtZSBjb250cm9sbGVyIChsaWtlIGluIGVkaXRhYmxlIGFycmF5cylcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlT3JVcGRhdGUoXG4gICAgICAgIG9iamVjdDogVmNyZWF0ZVsnaW5wdXQnXSB8IFdpdGhJZDxWdXBkYXRlWydpbnB1dCddPixcbiAgICAgICAgbm93ID0gZmFsc2UsXG4gICAgKTogT2JzZXJ2YWJsZTxUY3JlYXRlIHwgVHVwZGF0ZT4ge1xuICAgICAgICB0aGlzLnRocm93SWZPYnNlcnZhYmxlKG9iamVjdCk7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMuY3JlYXRlTXV0YXRpb24pO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLnVwZGF0ZU11dGF0aW9uKTtcblxuICAgICAgICAvLyBJZiBjcmVhdGlvbiBpcyBwZW5kaW5nLCBsaXN0ZW4gdG8gY3JlYXRpb24gb2JzZXJ2YWJsZSBhbmQgd2hlbiByZWFkeSwgZmlyZSB1cGRhdGVcbiAgICAgICAgY29uc3QgcGVuZGluZ0NyZWF0aW9uID0gdGhpcy5jcmVhdGluZ0NhY2hlLmdldChvYmplY3QpO1xuICAgICAgICBpZiAocGVuZGluZ0NyZWF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gcGVuZGluZ0NyZWF0aW9uLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKG9iamVjdCBhcyBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIG9iamVjdCBoYXMgSWQsIGp1c3Qgc2F2ZSBpdFxuICAgICAgICBpZiAoJ2lkJyBpbiBvYmplY3QgJiYgb2JqZWN0LmlkKSB7XG4gICAgICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgICAgICAgLy8gdXNlZCBtYWlubHkgZm9yIHRlc3RzLCBiZWNhdXNlIGxvZGFzaCBkZWJvdW5jZWQgdXNlZCBpbiB1cGRhdGUoKSBkb2VzIG5vdCB3b3JrIGZpbmUgd2l0aCBmYWtlQXN5bmMgYW5kIHRpY2soKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU5vdyhvYmplY3QgYXMgV2l0aElkPFZ1cGRhdGVbJ2lucHV0J10+KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKG9iamVjdCBhcyBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgb2JqZWN0IHdhcyBub3Qgc2F2aW5nLCBhbmQgaGFzIG5vIElELCBjcmVhdGUgaXRcbiAgICAgICAgY29uc3QgY3JlYXRpb24gPSB0aGlzLmNyZWF0ZShvYmplY3QpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRpbmdDYWNoZS5kZWxldGUob2JqZWN0KTsgLy8gcmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHN0b3JlcyBjcmVhdGluZyBvYnNlcnZhYmxlIGluIGEgY2FjaGUgcmVwbGF5YWJsZSB2ZXJzaW9uIG9mIHRoZSBvYnNlcnZhYmxlLFxuICAgICAgICAvLyBzbyBzZXZlcmFsIHVwZGF0ZSgpIGNhbiBzdWJzY3JpYmUgdG8gdGhlIHNhbWUgY3JlYXRpb25cbiAgICAgICAgdGhpcy5jcmVhdGluZ0NhY2hlLnNldChvYmplY3QsIGNyZWF0aW9uLnBpcGUoc2hhcmVSZXBsYXkoKSkpO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYW4gb2JqZWN0IGluIERCIGFuZCB0aGVuIHJlZmV0Y2ggdGhlIGxpc3Qgb2Ygb2JqZWN0c1xuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGUob2JqZWN0OiBWY3JlYXRlWydpbnB1dCddKTogT2JzZXJ2YWJsZTxUY3JlYXRlPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk9ic2VydmFibGUob2JqZWN0KTtcbiAgICAgICAgdGhpcy50aHJvd0lmTm90UXVlcnkodGhpcy5jcmVhdGVNdXRhdGlvbik7XG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0gbWVyZ2UoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIHtpbnB1dDogdGhpcy5nZXRJbnB1dChvYmplY3QpfSxcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckNyZWF0aW9uKG9iamVjdCksXG4gICAgICAgICkgYXMgVmNyZWF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG9cbiAgICAgICAgICAgIC5tdXRhdGU8VGNyZWF0ZSwgVmNyZWF0ZT4oe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiB0aGlzLmNyZWF0ZU11dGF0aW9uLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwb2xsby5jbGllbnQucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09iamVjdCA9IHRoaXMubWFwQ3JlYXRpb24ocmVzdWx0KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3T2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VXaXRoKG9iamVjdCwgbmV3T2JqZWN0LCBtZXJnZU92ZXJyaWRlQXJyYXkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld09iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgYW4gb2JqZWN0LCBhZnRlciBhIHNob3J0IGRlYm91bmNlXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShvYmplY3Q6IFdpdGhJZDxWdXBkYXRlWydpbnB1dCddPik6IE9ic2VydmFibGU8VHVwZGF0ZT4ge1xuICAgICAgICB0aGlzLnRocm93SWZPYnNlcnZhYmxlKG9iamVjdCk7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMudXBkYXRlTXV0YXRpb24pO1xuXG4gICAgICAgIC8vIEtlZXAgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIGRlYm91bmNlZCB1cGRhdGUgZnVuY3Rpb25cbiAgICAgICAgY29uc3QgaWQgPSBvYmplY3QuaWQ7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubmF0dXJhbERlYm91bmNlU2VydmljZS5kZWJvdW5jZSh0aGlzLCBpZCwgdGhpcy51cGRhdGVOb3cob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIG9iamVjdCBpbW1lZGlhdGVseSB3aGVuIHN1YnNjcmliaW5nXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZU5vdyhvYmplY3Q6IFdpdGhJZDxWdXBkYXRlWydpbnB1dCddPik6IE9ic2VydmFibGU8VHVwZGF0ZT4ge1xuICAgICAgICB0aGlzLnRocm93SWZPYnNlcnZhYmxlKG9iamVjdCk7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMudXBkYXRlTXV0YXRpb24pO1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IG1lcmdlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBvYmplY3QuaWQsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHRoaXMuZ2V0SW5wdXQob2JqZWN0KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmdldFBhcnRpYWxWYXJpYWJsZXNGb3JVcGRhdGUob2JqZWN0KSxcbiAgICAgICAgKSBhcyBWdXBkYXRlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwb2xsb1xuICAgICAgICAgICAgLm11dGF0ZTxUdXBkYXRlLCBWdXBkYXRlPih7XG4gICAgICAgICAgICAgICAgbXV0YXRpb246IHRoaXMudXBkYXRlTXV0YXRpb24sXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBvbGxvLmNsaWVudC5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkUmVzdWx0ID0gdGhpcy5tYXBVcGRhdGUocmVzdWx0KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VXaXRoKG9iamVjdCwgbWFwcGVkUmVzdWx0LCBtZXJnZU92ZXJyaWRlQXJyYXkpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgYW4gb2JqZWN0IGJ1dCB3aXRob3V0IGF1dG9tYXRpY2FsbHkgaW5qZWN0aW5nIHZhbHVlcyBjb21pbmdcbiAgICAgKiBmcm9tIGBnZXREZWZhdWx0Rm9yU2VydmVyKClgLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVQYXJ0aWFsbHkob2JqZWN0OiBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4pOiBPYnNlcnZhYmxlPFR1cGRhdGU+IHtcbiAgICAgICAgdGhpcy50aHJvd0lmT2JzZXJ2YWJsZShvYmplY3QpO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLnVwZGF0ZU11dGF0aW9uKTtcblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpZDogb2JqZWN0LmlkLFxuICAgICAgICAgICAgaW5wdXQ6IG9taXQocmVsYXRpb25zVG9JZHMob2JqZWN0KSwgJ2lkJyksXG4gICAgICAgIH0gYXMgVnVwZGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG9cbiAgICAgICAgICAgIC5tdXRhdGU8VHVwZGF0ZSwgVnVwZGF0ZT4oe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiB0aGlzLnVwZGF0ZU11dGF0aW9uLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwb2xsby5jbGllbnQucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcFVwZGF0ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGUgb2JqZWN0cyBhbmQgdGhlbiByZWZldGNoIHRoZSBsaXN0IG9mIG9iamVjdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlKG9iamVjdHM6IHtpZDogc3RyaW5nfVtdKTogT2JzZXJ2YWJsZTxUZGVsZXRlPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk9ic2VydmFibGUob2JqZWN0cyk7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMuZGVsZXRlTXV0YXRpb24pO1xuXG4gICAgICAgIGNvbnN0IGlkcyA9IG9iamVjdHMubWFwKG8gPT4ge1xuICAgICAgICAgICAgLy8gQ2FuY2VsIHBlbmRpbmcgdXBkYXRlXG4gICAgICAgICAgICB0aGlzLm5hdHVyYWxEZWJvdW5jZVNlcnZpY2UuY2FuY2VsKHRoaXMsIG8uaWQpO1xuXG4gICAgICAgICAgICByZXR1cm4gby5pZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IG1lcmdlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkczogaWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckRlbGV0ZShvYmplY3RzKSxcbiAgICAgICAgKSBhcyBWZGVsZXRlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwb2xsb1xuICAgICAgICAgICAgLm11dGF0ZTxUZGVsZXRlLCBWZGVsZXRlPih7XG4gICAgICAgICAgICAgICAgbXV0YXRpb246IHRoaXMuZGVsZXRlTXV0YXRpb24sXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBvbGxvLmNsaWVudC5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBEZWxldGUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzb2x2ZSBtb2RlbCBhbmQgaXRlbXMgcmVsYXRlZCB0byB0aGUgbW9kZWwsIGlmIHRoZSBpZCBpcyBwcm92aWRlZCwgaW4gb3JkZXIgdG8gc2hvdyBhIGZvcm1cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzb2x2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXNvbHZlPFRvbmU+PiB7XG4gICAgICAgIC8vIExvYWQgbW9kZWwgaWYgaWQgaXMgZ2l2ZW5cbiAgICAgICAgbGV0IG9ic2VydmFibGU7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgb2JzZXJ2YWJsZSA9IHRoaXMuZ2V0T25lKGlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ic2VydmFibGUgPSBvZih0aGlzLmdldENvbnNvbGlkYXRlZEZvckNsaWVudCgpIGFzIFRvbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGUucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7bW9kZWw6IHJlc3VsdH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IHRoYXQgbWF0Y2ggdGhlIEdyYXBoUUwgaW5wdXQgdHlwZS5cbiAgICAgKiBJdCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIG1hbnVhbGx5IGZpbGxlZCBkYXRhIGFuZCBhZGQgdW5jb21wbGV0ZWQgZGF0YSAobGlrZSByZXF1aXJlZCBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGVtcHR5IHN0cmluZ3MpXG4gICAgICovXG4gICAgcHVibGljIGdldElucHV0KG9iamVjdDogTGl0ZXJhbCk6IFZjcmVhdGVbJ2lucHV0J10gfCBWdXBkYXRlWydpbnB1dCddIHtcbiAgICAgICAgLy8gQ29udmVydCByZWxhdGlvbnMgdG8gdGhlaXIgSURzIGZvciBtdXRhdGlvblxuICAgICAgICBvYmplY3QgPSByZWxhdGlvbnNUb0lkcyhvYmplY3QpO1xuXG4gICAgICAgIC8vIFBpY2sgb25seSBhdHRyaWJ1dGVzIHRoYXQgd2UgY2FuIGZpbmQgaW4gdGhlIGVtcHR5IG9iamVjdFxuICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgcHJldmVudCB0byBzZWxlY3QgZGF0YSB0aGF0IGhhcyB1bndhbnRlZCBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IGVtcHR5T2JqZWN0ID0gdGhpcy5nZXREZWZhdWx0Rm9yU2VydmVyKCk7XG4gICAgICAgIGxldCBpbnB1dCA9IHBpY2sob2JqZWN0LCBPYmplY3Qua2V5cyhlbXB0eU9iamVjdCkpO1xuXG4gICAgICAgIC8vIENvbXBsZXRlIGEgcG90ZW50aWFsbHkgdW5jb21wbGV0ZWQgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgaW5wdXQgPSBkZWZhdWx0cyhpbnB1dCwgZW1wdHlPYmplY3QpO1xuXG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBvYmplY3RzIG1hdGNoaW5nIHRoZSBxdWVyeS4gSXQgbWF5IG5ldmVyIGNvbXBsZXRlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB1c2VkIGZvciB0aGUgdW5pcXVlIHZhbGlkYXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChxdWVyeVZhcmlhYmxlc01hbmFnZXI6IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8VmFsbD4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBwbHVyYWwgPSBtYWtlUGx1cmFsKHRoaXMubmFtZSk7XG4gICAgICAgIGNvbnN0IHF1ZXJ5TmFtZSA9ICdDb3VudCcgKyB1cHBlckNhc2VGaXJzdExldHRlcihwbHVyYWwpO1xuICAgICAgICBjb25zdCBmaWx0ZXJUeXBlID0gdXBwZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy5uYW1lKSArICdGaWx0ZXInO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ3FsYFxuICAgICAgICAgICAgcXVlcnkgJHtxdWVyeU5hbWV9ICgkZmlsdGVyOiAke2ZpbHRlclR5cGV9KSB7XG4gICAgICAgICAgICBjb3VudDogJHtwbHVyYWx9IChmaWx0ZXI6ICRmaWx0ZXIsIHBhZ2luYXRpb246IHtwYWdlU2l6ZTogMCwgcGFnZUluZGV4OiAwfSkge1xuICAgICAgICAgICAgbGVuZ3RoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9YDtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRQYXJ0aWFsVmFyaWFibGVzRm9yQWxsKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChwYXJ0aWFsVmFyaWFibGVzID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDb3B5IG1hbmFnZXIgdG8gcHJldmVudCB0byBhcHBseSBpbnRlcm5hbCB2YXJpYWJsZXMgdG8gZXh0ZXJuYWwgUXVlcnlWYXJpYWJsZXNNYW5hZ2VyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFZhbGw+KHF1ZXJ5VmFyaWFibGVzTWFuYWdlcik7XG4gICAgICAgICAgICAgICAgbWFuYWdlci5tZXJnZSgncGFydGlhbC12YXJpYWJsZXMnLCBwYXJ0aWFsVmFyaWFibGVzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwb2xsby5xdWVyeTx7Y291bnQ6IHtsZW5ndGg6IG51bWJlcn19LCBWYWxsPih7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBtYW5hZ2VyLnZhcmlhYmxlcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhLmNvdW50Lmxlbmd0aCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGVtcHR5IG9iamVjdCB3aXRoIHNvbWUgZGVmYXVsdCB2YWx1ZXMgZnJvbSBzZXJ2ZXIgcGVyc3BlY3RpdmVcbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIHNob3dpbmcgYSBmb3JtIGZvciBjcmVhdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXREZWZhdWx0Rm9yU2VydmVyKCk6IFZjcmVhdGVbJ2lucHV0J10gfCBWdXBkYXRlWydpbnB1dCddIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBlbXB0eSBvYmplY3Qgd2l0aCBzb21lIGRlZmF1bHQgdmFsdWVzIGZyb20gZnJvbnRlbmQgcGVyc3BlY3RpdmVcbiAgICAgKlxuICAgICAqIFdoZXJlIGVtcHR5IG9iamVjdCBtdXN0IHJlc3BlY3QgZ3JhcGhxbCBYWFhJbnB1dCB0eXBlLCBtYXkgbmVlZCBzb21lIGRlZmF1bHQgdmFsdWVzIGZvciBvdGhlciBmaWVsZHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdEZvckNsaWVudCgpOiBMaXRlcmFsIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBleHRyYWN0IG9ubHkgdGhlIGFycmF5IG9mIGZldGNoZWQgb2JqZWN0cyBvdXQgb2YgdGhlIGVudGlyZSBmZXRjaGVkIGRhdGFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbWFwQWxsKCk6IE9wZXJhdG9yRnVuY3Rpb248RmV0Y2hSZXN1bHQ8dW5rbm93bj4sIFRhbGw+IHtcbiAgICAgICAgY29uc3QgcGx1cmFsID0gbWFrZVBsdXJhbCh0aGlzLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWFwKHJlc3VsdCA9PiAocmVzdWx0LmRhdGEgYXMgYW55KVtwbHVyYWxdKTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL2Fwb2xsby1jbGllbnQvaXNzdWVzLzU2NjJcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCBvbmx5IHRoZSBjcmVhdGVkIG9iamVjdCBvdXQgb2YgdGhlIGVudGlyZSBmZXRjaGVkIGRhdGFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbWFwQ3JlYXRpb24ocmVzdWx0OiBGZXRjaFJlc3VsdCk6IFRjcmVhdGUge1xuICAgICAgICBjb25zdCBuYW1lID0gJ2NyZWF0ZScgKyB1cHBlckNhc2VGaXJzdExldHRlcih0aGlzLm5hbWUpO1xuICAgICAgICByZXR1cm4gKHJlc3VsdC5kYXRhIGFzIGFueSlbbmFtZV07IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9hcG9sbG8tY2xpZW50L2lzc3Vlcy81NjYyXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGV4dHJhY3Qgb25seSB0aGUgdXBkYXRlZCBvYmplY3Qgb3V0IG9mIHRoZSBlbnRpcmUgZmV0Y2hlZCBkYXRhXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1hcFVwZGF0ZShyZXN1bHQ6IEZldGNoUmVzdWx0KTogVHVwZGF0ZSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSAndXBkYXRlJyArIHVwcGVyQ2FzZUZpcnN0TGV0dGVyKHRoaXMubmFtZSk7XG4gICAgICAgIHJldHVybiAocmVzdWx0LmRhdGEgYXMgYW55KVtuYW1lXTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL2Fwb2xsby1jbGllbnQvaXNzdWVzLzU2NjJcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCBvbmx5IGZsYWcgd2hlbiBkZWxldGluZyBhbiBvYmplY3RcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbWFwRGVsZXRlKHJlc3VsdDogRmV0Y2hSZXN1bHQpOiBUZGVsZXRlIHtcbiAgICAgICAgY29uc3QgbmFtZSA9ICdkZWxldGUnICsgbWFrZVBsdXJhbCh1cHBlckNhc2VGaXJzdExldHRlcih0aGlzLm5hbWUpKTtcbiAgICAgICAgcmV0dXJuIChyZXN1bHQuZGF0YSBhcyBhbnkpW25hbWVdOyAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2Fwb2xsb2dyYXBocWwvYXBvbGxvLWNsaWVudC9pc3N1ZXMvNTY2MlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gYmUgdXNlZCB3aGVuIGdldHRpbmcgYSBzaW5nbGUgb2JqZWN0XG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHR5cGljYWxseSBhIHNpdGUgb3Igc3RhdGUgSUQsIGFuZCBpcyBuZWVkZWQgdG8gZ2V0IGFwcHJvcHJpYXRlIGFjY2VzcyByaWdodHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UGFydGlhbFZhcmlhYmxlc0Zvck9uZSgpOiBPYnNlcnZhYmxlPFBhcnRpYWw8Vm9uZT4+IHtcbiAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIGJlIHVzZWQgd2hlbiBnZXR0aW5nIG11bHRpcGxlIG9iamVjdHNcbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdHlwaWNhbGx5IGEgc2l0ZSBvciBzdGF0ZSBJRCwgYnV0IGl0IGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlIHRvIGZ1cnRoZXIgZmlsdGVyIHRoZSBxdWVyeVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYXJ0aWFsVmFyaWFibGVzRm9yQWxsKCk6IE9ic2VydmFibGU8UGFydGlhbDxWYWxsPj4ge1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gYmUgdXNlZCB3aGVuIGNyZWF0aW5nIGFuIG9iamVjdFxuICAgICAqXG4gICAgICogVGhpcyBpcyB0eXBpY2FsbHkgYSBzaXRlIG9yIHN0YXRlIElEXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBnZXRQYXJ0aWFsVmFyaWFibGVzRm9yQ3JlYXRpb24ob2JqZWN0OiBMaXRlcmFsKTogUGFydGlhbDxWY3JlYXRlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIGJlIHVzZWQgd2hlbiB1cGRhdGluZyBhbiBvYmplY3RcbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdHlwaWNhbGx5IGEgc2l0ZSBvciBzdGF0ZSBJRFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgZ2V0UGFydGlhbFZhcmlhYmxlc0ZvclVwZGF0ZShvYmplY3Q6IExpdGVyYWwpOiBQYXJ0aWFsPFZ1cGRhdGU+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byBiZSB1c2VkIHdoZW4gZGVsZXRpbmcgYW4gb2JqZWN0XG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHR5cGljYWxseSBhIHNpdGUgb3Igc3RhdGUgSURcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIGdldFBhcnRpYWxWYXJpYWJsZXNGb3JEZWxldGUob2JqZWN0czogTGl0ZXJhbFtdKTogUGFydGlhbDxWZGVsZXRlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaHJvdyBleGNlcHRpb24gdG8gcHJldmVudCBleGVjdXRpbmcgcXVlcmllcyB3aXRoIGludmFsaWQgdmFyaWFibGVzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRocm93SWZPYnNlcnZhYmxlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdDYW5ub3QgdXNlIE9ic2VydmFibGUgYXMgdmFyaWFibGVzLiBJbnN0ZWFkIHlvdSBzaG91bGQgdXNlIC5zdWJzY3JpYmUoKSB0byBjYWxsIHRoZSBtZXRob2Qgd2l0aCBhIHJlYWwgdmFsdWUnLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlIGdpdmVuIElEIHdpdGggYWRkaXRpb25hbCBwYXJ0aWFsIHZhcmlhYmxlcyBpZiB0aGVyZSBpcyBhbnlcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlc0Zvck9uZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxWb25lPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFBhcnRpYWxWYXJpYWJsZXNGb3JPbmUoKS5waXBlKFxuICAgICAgICAgICAgbWFwKHBhcnRpYWxWYXJpYWJsZXMgPT4gbWVyZ2Uoe30sIHtpZDogaWR9IGFzIFZvbmUsIHBhcnRpYWxWYXJpYWJsZXMpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaHJvdyBleGNlcHRpb24gdG8gcHJldmVudCBleGVjdXRpbmcgbnVsbCBxdWVyaWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSB0aHJvd0lmTm90UXVlcnkocXVlcnk6IERvY3VtZW50Tm9kZSB8IG51bGwpOiBhc3NlcnRzIHF1ZXJ5IHtcbiAgICAgICAgaWYgKCFxdWVyeSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIHF1ZXJ5IGZvciB0aGlzIG1ldGhvZCB3YXMgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBzZXJ2aWNlIGNvbnN0cnVjdG9yJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbW9kZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxHQUFHLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFjLGFBQWEsRUFBd0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RixPQUFPLEVBQW9DLGtCQUFrQixFQUFFLGdCQUFnQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEgsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakUsT0FBTyxFQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFtQixNQUFNLE1BQU0sQ0FBQztBQUMvRixPQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakcsT0FBTyxFQUFDLDRCQUE0QixFQUFpQixNQUFNLG1DQUFtQyxDQUFDO0FBRS9GLE9BQU8sRUFBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUEwQnhHLE1BQU0sT0FBZ0IsMkJBQTJCO0lBaUI3QyxZQUN1QixNQUFjLEVBQ2Qsc0JBQThDLEVBQzlDLElBQVksRUFDWixRQUE2QixFQUM3QixRQUE2QixFQUM3QixjQUFtQyxFQUNuQyxjQUFtQyxFQUNuQyxjQUFtQztRQVBuQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDN0IsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFiMUQ7O1dBRUc7UUFDYyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFvRSxDQUFDO0lBVzFHLENBQUM7SUFFRyx3QkFBd0I7UUFDM0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNkRBQTZEO0lBQ3RELGlCQUFpQixDQUFDLEtBQWU7UUFDcEMsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCw2REFBNkQ7SUFDdEQsc0JBQXNCLENBQUMsS0FBZTtRQUN6QyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILDZEQUE2RDtJQUN0RCxzQkFBc0IsQ0FBQyxLQUFlO1FBQ3pDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNkRBQTZEO0lBQ3RELDJCQUEyQixDQUFDLEtBQWU7UUFDOUMsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDL0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLFFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUV2RSxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDVixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBQzlFO1FBRUQseUNBQXlDO1FBQ3pDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRSxNQUFNLFNBQVMsR0FBRztnQkFDZCxLQUFLLEVBQUUsS0FBSztnQkFDWixRQUFRLEVBQUUsUUFBUTthQUNyQixDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQUcsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNsRixNQUFNLGNBQWMsR0FBRyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRWpHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDaEY7UUFFRCx1RUFBdUU7UUFDdkUsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hCLE1BQU0sU0FBUyxHQUFHO29CQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFLFFBQVE7aUJBQ3JCLENBQUM7Z0JBRUYsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0o7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUQ7aUJBQU07Z0JBQ0gsTUFBTSxTQUFTLEdBQUc7b0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUUsUUFBUTtpQkFDckIsQ0FBQztnQkFFRixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2pGO1NBQ0o7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxZQUFZLENBQUMsS0FBYztRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7WUFDOUMsZUFBZSxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUM7U0FDM0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXBDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQWdCO2dCQUN6QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixXQUFXLEVBQUUsbUJBQW1CO2dCQUNoQyxlQUFlLEVBQUUsWUFBWTthQUNoQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQy9CLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFDdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUUsTUFBTSxDQUFDLElBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3JELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMscUJBQXlEO1FBQ25FLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsSUFBSSxDQUN4QyxLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwQyx3RkFBd0Y7WUFDeEYsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBNEIsQ0FBTyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUVyRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFnQjtnQkFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQyxXQUFXLEVBQUUsY0FBYzthQUM5QixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQ2hCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUNYLHFCQUF5RCxFQUN6RCxjQUFxQyxtQkFBbUI7UUFFeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsT0FBTyxhQUFhLENBQUM7WUFDakIsU0FBUyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJO1lBQzNDLG9DQUFvQztZQUNwQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hCLDBGQUEwRjtZQUMxRiw0Q0FBNEM7WUFDNUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxDQUFDLENBQ3hEO1lBQ0QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1NBQ3JELENBQUMsQ0FBQyxJQUFJLENBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2YsdUNBQXVDO1lBQ3ZDLHdGQUF3RjtZQUN4RixNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUE0QixDQUFPLHFCQUFxQixDQUFDLENBQUM7WUFDOUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUU1RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwQyxPQUFPLElBQUksQ0FBQyxNQUFNO2lCQUNiLFVBQVUsQ0FBZ0I7Z0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDcEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSztnQkFDbEMsV0FBVyxFQUFFLFdBQVc7YUFDM0IsQ0FBQztpQkFDRCxZQUFZLENBQUMsSUFBSSxDQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUNoQixDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxjQUFjLENBQ2pCLE1BQW1ELEVBQ25ELEdBQUcsR0FBRyxLQUFLO1FBRVgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLG9GQUFvRjtRQUNwRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLGVBQWUsRUFBRTtZQUNqQixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQWtDLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsZ0hBQWdIO2dCQUNoSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBa0MsQ0FBQyxDQUFDO2FBQzdEO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFrQyxDQUFDLENBQUM7YUFDMUQ7U0FDSjtRQUVELHFEQUFxRDtRQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDckMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBQzNELENBQUMsQ0FBQyxDQUNMLENBQUM7UUFFRiw4RUFBOEU7UUFDOUUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBd0I7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FDbkIsRUFBRSxFQUNGLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUMsRUFDOUIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUNuQyxDQUFDO1FBRWIsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNiLE1BQU0sQ0FBbUI7WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzdCLFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7YUFDRCxJQUFJLENBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzthQUMzRDtpQkFBTTtnQkFDSCxPQUFPLFNBQVMsQ0FBQzthQUNwQjtRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBZ0M7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLDBEQUEwRDtRQUMxRCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBRXJCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsTUFBZ0M7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FDbkI7WUFDSSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDL0IsRUFDRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQ2pDLENBQUM7UUFFYixPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2IsTUFBTSxDQUFtQjtZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDN0IsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUMsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZSxDQUFDLE1BQWdDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUxQyxNQUFNLFNBQVMsR0FBRztZQUNkLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQztTQUNqQyxDQUFDO1FBRWIsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNiLE1BQU0sQ0FBbUI7WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzdCLFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7YUFDRCxJQUFJLENBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUF1QjtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4Qix3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FDbkI7WUFDSSxHQUFHLEVBQUUsR0FBRztTQUNYLEVBQ0QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUNsQyxDQUFDO1FBRWIsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNiLE1BQU0sQ0FBbUI7WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzdCLFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7YUFDRCxJQUFJLENBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUU5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxFQUFVO1FBQ3JCLDRCQUE0QjtRQUM1QixJQUFJLFVBQTRCLENBQUM7UUFDakMsSUFBSSxFQUFFLEVBQUU7WUFDSixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQzthQUFNO1lBQ0gsVUFBVSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQVUsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNsQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxPQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLE1BQWU7UUFDM0IsOENBQThDO1FBQzlDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEMsNERBQTREO1FBQzVELHNFQUFzRTtRQUN0RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVuRCxnRUFBZ0U7UUFDaEUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMscUJBQXlEO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFFOUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFBO29CQUNMLFNBQVMsY0FBYyxVQUFVO3FCQUNoQyxNQUFNOzs7Y0FHYixDQUFDO1FBRVAsT0FBTyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3pCLHdGQUF3RjtZQUN4RixNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUE0QixDQUFPLHFCQUFxQixDQUFDLENBQUM7WUFDOUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXJELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQWtDO2dCQUN0RCxLQUFLLEVBQUUsS0FBSztnQkFDWixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQyxXQUFXLEVBQUUsY0FBYzthQUM5QixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FDMUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sbUJBQW1CO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxtQkFBbUI7UUFDekIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxNQUFNO1FBQ1osTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFFLE1BQU0sQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlFQUFpRTtJQUN6SCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXLENBQUMsTUFBK0I7UUFDakQsTUFBTSxJQUFJLEdBQUcsUUFBUSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFRLE1BQU0sQ0FBQyxJQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpRUFBaUU7SUFDeEcsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUyxDQUFDLE1BQStCO1FBQy9DLE1BQU0sSUFBSSxHQUFHLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsT0FBUSxNQUFNLENBQUMsSUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUVBQWlFO0lBQ3hHLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVMsQ0FBQyxNQUErQjtRQUMvQyxNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQVEsTUFBTSxDQUFDLElBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlFQUFpRTtJQUN4RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QjtRQUMvQixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHlCQUF5QjtRQUM1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDZEQUE2RDtJQUNuRCw4QkFBOEIsQ0FBQyxNQUFlO1FBQ3BELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw2REFBNkQ7SUFDbkQsNEJBQTRCLENBQUMsTUFBZTtRQUNsRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNkRBQTZEO0lBQ25ELDRCQUE0QixDQUFDLE9BQWtCO1FBQ3JELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ08saUJBQWlCLENBQUMsS0FBYztRQUN0QyxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FDWCw4R0FBOEcsQ0FDakgsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCLENBQUMsRUFBVTtRQUNqQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLElBQUksQ0FDeEMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBUyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FDekUsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxLQUEwQjtRQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1NBQ25HO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcG9sbG8sIGdxbCwgTXV0YXRpb25SZXN1bHR9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7RmV0Y2hSZXN1bHQsIE5ldHdvcmtTdGF0dXMsIFdhdGNoUXVlcnlGZXRjaFBvbGljeX0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEb2N1bWVudE5vZGV9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHtkZWZhdWx0cywgbWVyZ2UsIG1lcmdlV2l0aCwgb21pdCwgcGlja30gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgRU1QVFksIGZpcnN0LCBPYnNlcnZhYmxlLCBvZiwgT3BlcmF0b3JGdW5jdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2VXaGlsZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXIsIFF1ZXJ5VmFyaWFibGVzfSBmcm9tICcuLi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge21ha2VQbHVyYWwsIG1lcmdlT3ZlcnJpZGVBcnJheSwgcmVsYXRpb25zVG9JZHMsIHVwcGVyQ2FzZUZpcnN0TGV0dGVyfSBmcm9tICcuLi9jbGFzc2VzL3V0aWxpdHknO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuLi9jbGFzc2VzL2RhdGEtc291cmNlJztcbmltcG9ydCB7TmF0dXJhbERlYm91bmNlU2VydmljZX0gZnJvbSAnLi9kZWJvdW5jZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtVmFsaWRhdG9ycyB7XG4gICAgW2tleTogc3RyaW5nXTogVmFsaWRhdG9yRm5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQXN5bmNWYWxpZGF0b3JzIHtcbiAgICBba2V5OiBzdHJpbmddOiBBc3luY1ZhbGlkYXRvckZuW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzV2l0aElucHV0IHtcbiAgICBpbnB1dDogTGl0ZXJhbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29udHJvbHMge1xuICAgIFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbDtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmU8VE9uZT4ge1xuICAgIG1vZGVsOiBUT25lO1xufVxuXG5leHBvcnQgdHlwZSBXaXRoSWQ8VD4gPSB7aWQ6IHN0cmluZ30gJiBUO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgIFRvbmUsXG4gICAgVm9uZSBleHRlbmRzIHtpZDogc3RyaW5nfSxcbiAgICBUYWxsIGV4dGVuZHMgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPixcbiAgICBWYWxsIGV4dGVuZHMgUXVlcnlWYXJpYWJsZXMsXG4gICAgVGNyZWF0ZSxcbiAgICBWY3JlYXRlIGV4dGVuZHMgVmFyaWFibGVzV2l0aElucHV0LFxuICAgIFR1cGRhdGUsXG4gICAgVnVwZGF0ZSBleHRlbmRzIHtpZDogc3RyaW5nOyBpbnB1dDogTGl0ZXJhbH0sXG4gICAgVGRlbGV0ZSxcbiAgICBWZGVsZXRlIGV4dGVuZHMge2lkczogc3RyaW5nW119LFxuPiB7XG4gICAgLyoqXG4gICAgICogU3RvcmUgdGhlIGNyZWF0aW9uIG11dGF0aW9ucyB0aGF0IGFyZSBwZW5kaW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVhdGluZ0NhY2hlID0gbmV3IE1hcDxWY3JlYXRlWydpbnB1dCddIHwgV2l0aElkPFZ1cGRhdGVbJ2lucHV0J10+LCBPYnNlcnZhYmxlPFRjcmVhdGU+PigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBvbGxvOiBBcG9sbG8sXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBuYXR1cmFsRGVib3VuY2VTZXJ2aWNlOiBOYXR1cmFsRGVib3VuY2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25lUXVlcnk6IERvY3VtZW50Tm9kZSB8IG51bGwsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBhbGxRdWVyeTogRG9jdW1lbnROb2RlIHwgbnVsbCxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNyZWF0ZU11dGF0aW9uOiBEb2N1bWVudE5vZGUgfCBudWxsLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXBkYXRlTXV0YXRpb246IERvY3VtZW50Tm9kZSB8IG51bGwsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBkZWxldGVNdXRhdGlvbjogRG9jdW1lbnROb2RlIHwgbnVsbCxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0Q29uc29saWRhdGVkRm9yQ2xpZW50KCk6IExpdGVyYWwge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldERlZmF1bHRGb3JTZXJ2ZXIoKSwgdGhpcy5nZXREZWZhdWx0Rm9yQ2xpZW50KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgaW5kaXZpZHVhbCBmaWVsZHMgdmFsaWRhdG9yc1xuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgZ2V0Rm9ybVZhbGlkYXRvcnMobW9kZWw/OiBMaXRlcmFsKTogRm9ybVZhbGlkYXRvcnMge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBpbmRpdmlkdWFsIGFzeW5jIGZpZWxkcyB2YWxpZGF0b3JzXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBnZXRGb3JtQXN5bmNWYWxpZGF0b3JzKG1vZGVsPzogTGl0ZXJhbCk6IEZvcm1Bc3luY1ZhbGlkYXRvcnMge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBncm91cGVkIGZpZWxkcyB2YWxpZGF0b3JzIChsaWtlIHBhc3N3b3JkICsgY29uZmlybSBwYXNzd29yZClcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGdldEZvcm1Hcm91cFZhbGlkYXRvcnMobW9kZWw/OiBMaXRlcmFsKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGFzeW5jIGdyb3VwIGZpZWxkcyB2YWxpZGF0b3JzIChsaWtlIHVuaXF1ZSBjb25zdHJhaW50IG9uIG11bHRpcGxlIGNvbHVtbnMpXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBnZXRGb3JtR3JvdXBBc3luY1ZhbGlkYXRvcnMobW9kZWw/OiBMaXRlcmFsKTogQXN5bmNWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtQ29uZmlnKG1vZGVsOiBMaXRlcmFsKTogRm9ybUNvbnRyb2xzIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRDb25zb2xpZGF0ZWRGb3JDbGllbnQoKTtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0Rm9ybVZhbGlkYXRvcnMobW9kZWwpO1xuICAgICAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnMgPSB0aGlzLmdldEZvcm1Bc3luY1ZhbGlkYXRvcnMobW9kZWwpO1xuICAgICAgICBjb25zdCBjb250cm9sczogRm9ybUNvbnRyb2xzID0ge307XG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gbW9kZWwucGVybWlzc2lvbnMgPyAhbW9kZWwucGVybWlzc2lvbnMudXBkYXRlIDogZmFsc2U7XG5cbiAgICAgICAgaWYgKG1vZGVsLmlkKSB7XG4gICAgICAgICAgICBjb250cm9sc1snaWQnXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe3ZhbHVlOiBtb2RlbC5pZCwgZGlzYWJsZWQ6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbmZpZ3VyZSBmb3JtIGZvciBlYWNoIGZpZWxkIG9mIG1vZGVsXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbW9kZWxba2V5XSAhPT0gdW5kZWZpbmVkID8gbW9kZWxba2V5XSA6IHZhbHVlc1trZXldO1xuICAgICAgICAgICAgY29uc3QgZm9ybVN0YXRlID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gdHlwZW9mIHZhbGlkYXRvcnNba2V5XSAhPT0gJ3VuZGVmaW5lZCcgPyB2YWxpZGF0b3JzW2tleV0gOiBudWxsO1xuICAgICAgICAgICAgY29uc3QgYXN5bmNWYWxpZGF0b3IgPSB0eXBlb2YgYXN5bmNWYWxpZGF0b3JzW2tleV0gIT09ICd1bmRlZmluZWQnID8gYXN5bmNWYWxpZGF0b3JzW2tleV0gOiBudWxsO1xuXG4gICAgICAgICAgICBjb250cm9sc1trZXldID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChmb3JtU3RhdGUsIHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIGZvcm0gZm9yIGV4dHJhIHZhbGlkYXRvcnMgdGhhdCBhcmUgbm90IG9uIGEgc3BlY2lmaWMgZmllbGRcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsaWRhdG9ycykpIHtcbiAgICAgICAgICAgIGlmICghY29udHJvbHNba2V5XSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1TdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1vZGVsW2tleV0gPyBtb2RlbFtrZXldIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb250cm9sc1trZXldID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChmb3JtU3RhdGUsIHZhbGlkYXRvcnNba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhc3luY1ZhbGlkYXRvcnMpKSB7XG4gICAgICAgICAgICBpZiAoY29udHJvbHNba2V5XSAmJiBhc3luY1ZhbGlkYXRvcnNba2V5XSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzW2tleV0uc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9yc1trZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybVN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbW9kZWxba2V5XSA/IG1vZGVsW2tleV0gOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnRyb2xzW2tleV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZvcm1TdGF0ZSwgbnVsbCwgYXN5bmNWYWxpZGF0b3JzW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSB0aGUgZmluYWwgRm9ybUdyb3VwIGZvciB0aGUgb2JqZWN0LCBpbmNsdWRpbmcgYWxsIHZhbGlkYXRvcnNcbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCAqKm5vdCoqIGJlIG92ZXJyaWRkZW4sIGJ1dCBpbnN0ZWFkIGBnZXRGb3JtQ29uZmlnYCxcbiAgICAgKiBgZ2V0Rm9ybUdyb3VwVmFsaWRhdG9yc2AsIGBnZXRGb3JtR3JvdXBBc3luY1ZhbGlkYXRvcnNgIG1pZ2h0IGJlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGb3JtR3JvdXAobW9kZWw6IExpdGVyYWwpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IHRoaXMuZ2V0Rm9ybUNvbmZpZyhtb2RlbCk7XG4gICAgICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cChmb3JtQ29uZmlnLCB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzOiB0aGlzLmdldEZvcm1Hcm91cFZhbGlkYXRvcnMobW9kZWwpLFxuICAgICAgICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLmdldEZvcm1Hcm91cEFzeW5jVmFsaWRhdG9ycyhtb2RlbCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHNpbmdsZSBvYmplY3RcbiAgICAgKlxuICAgICAqIElmIGF2YWlsYWJsZSBpdCB3aWxsIGVtaXQgb2JqZWN0IGZyb20gY2FjaGUgaW1tZWRpYXRlbHksIHRoZW4gaXRcbiAgICAgKiB3aWxsICoqYWx3YXlzKiogZmV0Y2ggZnJvbSBuZXR3b3JrIGFuZCB0aGVuIHRoZSBvYnNlcnZhYmxlIHdpbGwgYmUgY29tcGxldGVkXG4gICAgICovXG4gICAgcHVibGljIGdldE9uZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUb25lPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk9ic2VydmFibGUoaWQpO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLm9uZVF1ZXJ5KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYXJpYWJsZXNGb3JPbmUoaWQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAodmFyaWFibGVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLm9uZVF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwb2xsby53YXRjaFF1ZXJ5PHVua25vd24sIFZvbmU+KHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHRoaXMub25lUXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFBvbGljeTogJ2NhY2hlLWFuZC1uZXR3b3JrJyxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZldGNoUG9saWN5OiAnY2FjaGUtb25seScsXG4gICAgICAgICAgICAgICAgfSkudmFsdWVDaGFuZ2VzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIocmVzdWx0ID0+ICEhcmVzdWx0LmRhdGEpLFxuICAgICAgICAgICAgdGFrZVdoaWxlKHJlc3VsdCA9PiByZXN1bHQubmV0d29ya1N0YXR1cyAhPT0gTmV0d29ya1N0YXR1cy5yZWFkeSwgdHJ1ZSksXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IChyZXN1bHQuZGF0YSBhcyBMaXRlcmFsKVt0aGlzLm5hbWVdKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBjb2xsZWN0aW9uIG9mIG9iamVjdHNcbiAgICAgKlxuICAgICAqIEl0IHdpbGwgKiphbHdheXMqKiBmZXRjaCBmcm9tIG5ldHdvcmsgYW5kIHRoZW4gdGhlIG9ic2VydmFibGUgd2lsbCBiZSBjb21wbGV0ZWQuXG4gICAgICogTm8gY2FjaGUgaXMgZXZlciB1c2VkLCBzbyBpdCdzIHNsb3cgYnV0IGNvcnJlY3QuXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbChxdWVyeVZhcmlhYmxlc01hbmFnZXI6IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8VmFsbD4pOiBPYnNlcnZhYmxlPFRhbGw+IHtcbiAgICAgICAgdGhpcy50aHJvd0lmTm90UXVlcnkodGhpcy5hbGxRdWVyeSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckFsbCgpLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKHBhcnRpYWxWYXJpYWJsZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMuYWxsUXVlcnkpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29weSBtYW5hZ2VyIHRvIHByZXZlbnQgdG8gYXBwbHkgaW50ZXJuYWwgdmFyaWFibGVzIHRvIGV4dGVybmFsIFF1ZXJ5VmFyaWFibGVzTWFuYWdlclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxWYWxsPihxdWVyeVZhcmlhYmxlc01hbmFnZXIpO1xuICAgICAgICAgICAgICAgIG1hbmFnZXIubWVyZ2UoJ3BhcnRpYWwtdmFyaWFibGVzJywgcGFydGlhbFZhcmlhYmxlcyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG8ucXVlcnk8dW5rbm93biwgVmFsbD4oe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogdGhpcy5hbGxRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBtYW5hZ2VyLnZhcmlhYmxlcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLm1hcEFsbCgpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIGNvbGxlY3Rpb24gb2Ygb2JqZWN0c1xuICAgICAqXG4gICAgICogRXZlcnkgdGltZSB0aGUgb2JzZXJ2YWJsZSB2YXJpYWJsZXMgY2hhbmdlLCBhbmQgdGhleSBhcmUgbm90IHVuZGVmaW5lZCxcbiAgICAgKiBpdCB3aWxsIHJldHVybiByZXN1bHQgZnJvbSBjYWNoZSwgdGhlbiBpdCB3aWxsICoqYWx3YXlzKiogZmV0Y2ggZnJvbSBuZXR3b3JrLlxuICAgICAqXG4gICAgICogWW91IG11c3Qgc3Vic2NyaWJlIHRvIHN0YXJ0IGdldHRpbmcgcmVzdWx0cyAoYW5kIGZldGNoIGZyb20gbmV0d29yaykuXG4gICAgICpcbiAgICAgKiBUaGUgb2JzZXJ2YWJsZSByZXN1bHQgd2lsbCBvbmx5IGNvbXBsZXRlIHdoZW4gdW5zdWJzY3JpYmluZy4gVGhhdCBtZWFucyB5b3UgKiptdXN0KiogdW5zdWJzY3JpYmUuXG4gICAgICovXG4gICAgcHVibGljIHdhdGNoQWxsKFxuICAgICAgICBxdWVyeVZhcmlhYmxlc01hbmFnZXI6IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8VmFsbD4sXG4gICAgICAgIGZldGNoUG9saWN5OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3kgPSAnY2FjaGUtYW5kLW5ldHdvcmsnLFxuICAgICk6IE9ic2VydmFibGU8VGFsbD4ge1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLmFsbFF1ZXJ5KTtcblxuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5VmFyaWFibGVzTWFuYWdlci52YXJpYWJsZXMucGlwZShcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdmVyeSBmYXN0IHZhcmlhYmxlIGNoYW5nZXNcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjApLFxuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHZhcmlhYmxlcyB0byBiZSBkZWZpbmVkIHRvIHByZXZlbnQgZHVwbGljYXRlIHF1ZXJ5OiB3aXRoIGFuZCB3aXRob3V0IHZhcmlhYmxlc1xuICAgICAgICAgICAgICAgIC8vIE51bGwgaXMgYWNjZXB0ZWQgdmFsdWUgZm9yIFwibm8gdmFyaWFibGVzXCJcbiAgICAgICAgICAgICAgICBmaWx0ZXIodmFyaWFibGVzID0+IHR5cGVvZiB2YXJpYWJsZXMgIT09ICd1bmRlZmluZWQnKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwYXJ0aWFsVmFyaWFibGVzOiB0aGlzLmdldFBhcnRpYWxWYXJpYWJsZXNGb3JBbGwoKSxcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEFwcGx5IHBhcnRpYWwgdmFyaWFibGVzIGZyb20gc2VydmljZVxuICAgICAgICAgICAgICAgIC8vIENvcHkgbWFuYWdlciB0byBwcmV2ZW50IHRvIGFwcGx5IGludGVybmFsIHZhcmlhYmxlcyB0byBleHRlcm5hbCBRdWVyeVZhcmlhYmxlc01hbmFnZXJcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8VmFsbD4ocXVlcnlWYXJpYWJsZXNNYW5hZ2VyKTtcbiAgICAgICAgICAgICAgICBtYW5hZ2VyLm1lcmdlKCdwYXJ0aWFsLXZhcmlhYmxlcycsIHJlc3VsdC5wYXJ0aWFsVmFyaWFibGVzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMuYWxsUXVlcnkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBvbGxvXG4gICAgICAgICAgICAgICAgICAgIC53YXRjaFF1ZXJ5PHVua25vd24sIFZhbGw+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLmFsbFF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBtYW5hZ2VyLnZhcmlhYmxlcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoUG9saWN5OiBmZXRjaFBvbGljeSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBFTVBUWSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIociA9PiAhIXIuZGF0YSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcEFsbCgpLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbnMgYWxsb3cgdG8gcXVpY2tseSBjcmVhdGUgb3IgdXBkYXRlIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBNYW5hZ2VzIGEgXCJjcmVhdGlvbiBpcyBwZW5kaW5nXCIgc3RhdHVzLCBhbmQgdXBkYXRlIHdoZW4gY3JlYXRpb24gaXMgcmVhZHkuXG4gICAgICogVXNlcyByZWd1bGFyIHVwZGF0ZS91cGRhdGVOb3cgYW5kIGNyZWF0ZSBtZXRob2RzLlxuICAgICAqIFVzZWQgbWFpbmx5IHdoZW4gZWRpdGluZyBtdWx0aXBsZSBvYmplY3RzIGluIHNhbWUgY29udHJvbGxlciAobGlrZSBpbiBlZGl0YWJsZSBhcnJheXMpXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU9yVXBkYXRlKFxuICAgICAgICBvYmplY3Q6IFZjcmVhdGVbJ2lucHV0J10gfCBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4sXG4gICAgICAgIG5vdyA9IGZhbHNlLFxuICAgICk6IE9ic2VydmFibGU8VGNyZWF0ZSB8IFR1cGRhdGU+IHtcbiAgICAgICAgdGhpcy50aHJvd0lmT2JzZXJ2YWJsZShvYmplY3QpO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLmNyZWF0ZU11dGF0aW9uKTtcbiAgICAgICAgdGhpcy50aHJvd0lmTm90UXVlcnkodGhpcy51cGRhdGVNdXRhdGlvbik7XG5cbiAgICAgICAgLy8gSWYgY3JlYXRpb24gaXMgcGVuZGluZywgbGlzdGVuIHRvIGNyZWF0aW9uIG9ic2VydmFibGUgYW5kIHdoZW4gcmVhZHksIGZpcmUgdXBkYXRlXG4gICAgICAgIGNvbnN0IHBlbmRpbmdDcmVhdGlvbiA9IHRoaXMuY3JlYXRpbmdDYWNoZS5nZXQob2JqZWN0KTtcbiAgICAgICAgaWYgKHBlbmRpbmdDcmVhdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmdDcmVhdGlvbi5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShvYmplY3QgYXMgV2l0aElkPFZ1cGRhdGVbJ2lucHV0J10+KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBvYmplY3QgaGFzIElkLCBqdXN0IHNhdmUgaXRcbiAgICAgICAgaWYgKCdpZCcgaW4gb2JqZWN0ICYmIG9iamVjdC5pZCkge1xuICAgICAgICAgICAgaWYgKG5vdykge1xuICAgICAgICAgICAgICAgIC8vIHVzZWQgbWFpbmx5IGZvciB0ZXN0cywgYmVjYXVzZSBsb2Rhc2ggZGVib3VuY2VkIHVzZWQgaW4gdXBkYXRlKCkgZG9lcyBub3Qgd29yayBmaW5lIHdpdGggZmFrZUFzeW5jIGFuZCB0aWNrKClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVOb3cob2JqZWN0IGFzIFdpdGhJZDxWdXBkYXRlWydpbnB1dCddPik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShvYmplY3QgYXMgV2l0aElkPFZ1cGRhdGVbJ2lucHV0J10+KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIG9iamVjdCB3YXMgbm90IHNhdmluZywgYW5kIGhhcyBubyBJRCwgY3JlYXRlIGl0XG4gICAgICAgIGNvbnN0IGNyZWF0aW9uID0gdGhpcy5jcmVhdGUob2JqZWN0KS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0aW5nQ2FjaGUuZGVsZXRlKG9iamVjdCk7IC8vIHJlbW92ZSBmcm9tIGNhY2hlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBzdG9yZXMgY3JlYXRpbmcgb2JzZXJ2YWJsZSBpbiBhIGNhY2hlIHJlcGxheWFibGUgdmVyc2lvbiBvZiB0aGUgb2JzZXJ2YWJsZSxcbiAgICAgICAgLy8gc28gc2V2ZXJhbCB1cGRhdGUoKSBjYW4gc3Vic2NyaWJlIHRvIHRoZSBzYW1lIGNyZWF0aW9uXG4gICAgICAgIHRoaXMuY3JlYXRpbmdDYWNoZS5zZXQob2JqZWN0LCBjcmVhdGlvbi5waXBlKHNoYXJlUmVwbGF5KCkpKTtcblxuICAgICAgICByZXR1cm4gY3JlYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIG9iamVjdCBpbiBEQiBhbmQgdGhlbiByZWZldGNoIHRoZSBsaXN0IG9mIG9iamVjdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlKG9iamVjdDogVmNyZWF0ZVsnaW5wdXQnXSk6IE9ic2VydmFibGU8VGNyZWF0ZT4ge1xuICAgICAgICB0aGlzLnRocm93SWZPYnNlcnZhYmxlKG9iamVjdCk7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdFF1ZXJ5KHRoaXMuY3JlYXRlTXV0YXRpb24pO1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IG1lcmdlKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICB7aW5wdXQ6IHRoaXMuZ2V0SW5wdXQob2JqZWN0KX0sXG4gICAgICAgICAgICB0aGlzLmdldFBhcnRpYWxWYXJpYWJsZXNGb3JDcmVhdGlvbihvYmplY3QpLFxuICAgICAgICApIGFzIFZjcmVhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBvbGxvXG4gICAgICAgICAgICAubXV0YXRlPFRjcmVhdGUsIFZjcmVhdGU+KHtcbiAgICAgICAgICAgICAgICBtdXRhdGlvbjogdGhpcy5jcmVhdGVNdXRhdGlvbixcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcG9sbG8uY2xpZW50LnJlRmV0Y2hPYnNlcnZhYmxlUXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPYmplY3QgPSB0aGlzLm1hcENyZWF0aW9uKHJlc3VsdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld09iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlV2l0aChvYmplY3QsIG5ld09iamVjdCwgbWVyZ2VPdmVycmlkZUFycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIG9iamVjdCwgYWZ0ZXIgYSBzaG9ydCBkZWJvdW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUob2JqZWN0OiBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4pOiBPYnNlcnZhYmxlPFR1cGRhdGU+IHtcbiAgICAgICAgdGhpcy50aHJvd0lmT2JzZXJ2YWJsZShvYmplY3QpO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLnVwZGF0ZU11dGF0aW9uKTtcblxuICAgICAgICAvLyBLZWVwIGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoZSBkZWJvdW5jZWQgdXBkYXRlIGZ1bmN0aW9uXG4gICAgICAgIGNvbnN0IGlkID0gb2JqZWN0LmlkO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5hdHVyYWxEZWJvdW5jZVNlcnZpY2UuZGVib3VuY2UodGhpcywgaWQsIHRoaXMudXBkYXRlTm93KG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhbiBvYmplY3QgaW1tZWRpYXRlbHkgd2hlbiBzdWJzY3JpYmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVOb3cob2JqZWN0OiBXaXRoSWQ8VnVwZGF0ZVsnaW5wdXQnXT4pOiBPYnNlcnZhYmxlPFR1cGRhdGU+IHtcbiAgICAgICAgdGhpcy50aHJvd0lmT2JzZXJ2YWJsZShvYmplY3QpO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLnVwZGF0ZU11dGF0aW9uKTtcblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSBtZXJnZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogb2JqZWN0LmlkLFxuICAgICAgICAgICAgICAgIGlucHV0OiB0aGlzLmdldElucHV0KG9iamVjdCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5nZXRQYXJ0aWFsVmFyaWFibGVzRm9yVXBkYXRlKG9iamVjdCksXG4gICAgICAgICkgYXMgVnVwZGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG9cbiAgICAgICAgICAgIC5tdXRhdGU8VHVwZGF0ZSwgVnVwZGF0ZT4oe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiB0aGlzLnVwZGF0ZU11dGF0aW9uLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwb2xsby5jbGllbnQucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZFJlc3VsdCA9IHRoaXMubWFwVXBkYXRlKHJlc3VsdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlV2l0aChvYmplY3QsIG1hcHBlZFJlc3VsdCwgbWVyZ2VPdmVycmlkZUFycmF5KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIG9iamVjdCBidXQgd2l0aG91dCBhdXRvbWF0aWNhbGx5IGluamVjdGluZyB2YWx1ZXMgY29taW5nXG4gICAgICogZnJvbSBgZ2V0RGVmYXVsdEZvclNlcnZlcigpYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlUGFydGlhbGx5KG9iamVjdDogV2l0aElkPFZ1cGRhdGVbJ2lucHV0J10+KTogT2JzZXJ2YWJsZTxUdXBkYXRlPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk9ic2VydmFibGUob2JqZWN0KTtcbiAgICAgICAgdGhpcy50aHJvd0lmTm90UXVlcnkodGhpcy51cGRhdGVNdXRhdGlvbik7XG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0ge1xuICAgICAgICAgICAgaWQ6IG9iamVjdC5pZCxcbiAgICAgICAgICAgIGlucHV0OiBvbWl0KHJlbGF0aW9uc1RvSWRzKG9iamVjdCksICdpZCcpLFxuICAgICAgICB9IGFzIFZ1cGRhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBvbGxvXG4gICAgICAgICAgICAubXV0YXRlPFR1cGRhdGUsIFZ1cGRhdGU+KHtcbiAgICAgICAgICAgICAgICBtdXRhdGlvbjogdGhpcy51cGRhdGVNdXRhdGlvbixcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcG9sbG8uY2xpZW50LnJlRmV0Y2hPYnNlcnZhYmxlUXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBVcGRhdGUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIG9iamVjdHMgYW5kIHRoZW4gcmVmZXRjaCB0aGUgbGlzdCBvZiBvYmplY3RzXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShvYmplY3RzOiB7aWQ6IHN0cmluZ31bXSk6IE9ic2VydmFibGU8VGRlbGV0ZT4ge1xuICAgICAgICB0aGlzLnRocm93SWZPYnNlcnZhYmxlKG9iamVjdHMpO1xuICAgICAgICB0aGlzLnRocm93SWZOb3RRdWVyeSh0aGlzLmRlbGV0ZU11dGF0aW9uKTtcblxuICAgICAgICBjb25zdCBpZHMgPSBvYmplY3RzLm1hcChvID0+IHtcbiAgICAgICAgICAgIC8vIENhbmNlbCBwZW5kaW5nIHVwZGF0ZVxuICAgICAgICAgICAgdGhpcy5uYXR1cmFsRGVib3VuY2VTZXJ2aWNlLmNhbmNlbCh0aGlzLCBvLmlkKTtcblxuICAgICAgICAgICAgcmV0dXJuIG8uaWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSBtZXJnZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZHM6IGlkcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmdldFBhcnRpYWxWYXJpYWJsZXNGb3JEZWxldGUob2JqZWN0cyksXG4gICAgICAgICkgYXMgVmRlbGV0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG9cbiAgICAgICAgICAgIC5tdXRhdGU8VGRlbGV0ZSwgVmRlbGV0ZT4oe1xuICAgICAgICAgICAgICAgIG11dGF0aW9uOiB0aGlzLmRlbGV0ZU11dGF0aW9uLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwb2xsby5jbGllbnQucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwRGVsZXRlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc29sdmUgbW9kZWwgYW5kIGl0ZW1zIHJlbGF0ZWQgdG8gdGhlIG1vZGVsLCBpZiB0aGUgaWQgaXMgcHJvdmlkZWQsIGluIG9yZGVyIHRvIHNob3cgYSBmb3JtXG4gICAgICovXG4gICAgcHVibGljIHJlc29sdmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVzb2x2ZTxUb25lPj4ge1xuICAgICAgICAvLyBMb2FkIG1vZGVsIGlmIGlkIGlzIGdpdmVuXG4gICAgICAgIGxldCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFRvbmU+O1xuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIG9ic2VydmFibGUgPSB0aGlzLmdldE9uZShpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnNlcnZhYmxlID0gb2YodGhpcy5nZXRDb25zb2xpZGF0ZWRGb3JDbGllbnQoKSBhcyBUb25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge21vZGVsOiByZXN1bHR9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGFuIG9iamVjdCB0aGF0IG1hdGNoIHRoZSBHcmFwaFFMIGlucHV0IHR5cGUuXG4gICAgICogSXQgY3JlYXRlcyBhbiBvYmplY3Qgd2l0aCBtYW51YWxseSBmaWxsZWQgZGF0YSBhbmQgYWRkIHVuY29tcGxldGVkIGRhdGEgKGxpa2UgcmVxdWlyZWQgYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBlbXB0eSBzdHJpbmdzKVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbnB1dChvYmplY3Q6IExpdGVyYWwpOiBWY3JlYXRlWydpbnB1dCddIHwgVnVwZGF0ZVsnaW5wdXQnXSB7XG4gICAgICAgIC8vIENvbnZlcnQgcmVsYXRpb25zIHRvIHRoZWlyIElEcyBmb3IgbXV0YXRpb25cbiAgICAgICAgb2JqZWN0ID0gcmVsYXRpb25zVG9JZHMob2JqZWN0KTtcblxuICAgICAgICAvLyBQaWNrIG9ubHkgYXR0cmlidXRlcyB0aGF0IHdlIGNhbiBmaW5kIGluIHRoZSBlbXB0eSBvYmplY3RcbiAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMsIHByZXZlbnQgdG8gc2VsZWN0IGRhdGEgdGhhdCBoYXMgdW53YW50ZWQgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCBlbXB0eU9iamVjdCA9IHRoaXMuZ2V0RGVmYXVsdEZvclNlcnZlcigpO1xuICAgICAgICBsZXQgaW5wdXQgPSBwaWNrKG9iamVjdCwgT2JqZWN0LmtleXMoZW1wdHlPYmplY3QpKTtcblxuICAgICAgICAvLyBDb21wbGV0ZSBhIHBvdGVudGlhbGx5IHVuY29tcGxldGVkIG9iamVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gICAgICAgIGlucHV0ID0gZGVmYXVsdHMoaW5wdXQsIGVtcHR5T2JqZWN0KTtcblxuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBtYXRjaGluZyB0aGUgcXVlcnkuIEl0IG1heSBuZXZlciBjb21wbGV0ZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHVuaXF1ZSB2YWxpZGF0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgY291bnQocXVlcnlWYXJpYWJsZXNNYW5hZ2VyOiBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFZhbGw+KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3QgcGx1cmFsID0gbWFrZVBsdXJhbCh0aGlzLm5hbWUpO1xuICAgICAgICBjb25zdCBxdWVyeU5hbWUgPSAnQ291bnQnICsgdXBwZXJDYXNlRmlyc3RMZXR0ZXIocGx1cmFsKTtcbiAgICAgICAgY29uc3QgZmlsdGVyVHlwZSA9IHVwcGVyQ2FzZUZpcnN0TGV0dGVyKHRoaXMubmFtZSkgKyAnRmlsdGVyJztcblxuICAgICAgICBjb25zdCBxdWVyeSA9IGdxbGBcbiAgICAgICAgICAgIHF1ZXJ5ICR7cXVlcnlOYW1lfSAoJGZpbHRlcjogJHtmaWx0ZXJUeXBlfSkge1xuICAgICAgICAgICAgY291bnQ6ICR7cGx1cmFsfSAoZmlsdGVyOiAkZmlsdGVyLCBwYWdpbmF0aW9uOiB7cGFnZVNpemU6IDAsIHBhZ2VJbmRleDogMH0pIHtcbiAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckFsbCgpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAocGFydGlhbFZhcmlhYmxlcyA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQ29weSBtYW5hZ2VyIHRvIHByZXZlbnQgdG8gYXBwbHkgaW50ZXJuYWwgdmFyaWFibGVzIHRvIGV4dGVybmFsIFF1ZXJ5VmFyaWFibGVzTWFuYWdlclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxWYWxsPihxdWVyeVZhcmlhYmxlc01hbmFnZXIpO1xuICAgICAgICAgICAgICAgIG1hbmFnZXIubWVyZ2UoJ3BhcnRpYWwtdmFyaWFibGVzJywgcGFydGlhbFZhcmlhYmxlcyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG8ucXVlcnk8e2NvdW50OiB7bGVuZ3RoOiBudW1iZXJ9fSwgVmFsbD4oe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogbWFuYWdlci52YXJpYWJsZXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQuZGF0YS5jb3VudC5sZW5ndGgpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBlbXB0eSBvYmplY3Qgd2l0aCBzb21lIGRlZmF1bHQgdmFsdWVzIGZyb20gc2VydmVyIHBlcnNwZWN0aXZlXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VmdWwgd2hlbiBzaG93aW5nIGEgZm9ybSBmb3IgY3JlYXRpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdEZvclNlcnZlcigpOiBWY3JlYXRlWydpbnB1dCddIHwgVnVwZGF0ZVsnaW5wdXQnXSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gZW1wdHkgb2JqZWN0IHdpdGggc29tZSBkZWZhdWx0IHZhbHVlcyBmcm9tIGZyb250ZW5kIHBlcnNwZWN0aXZlXG4gICAgICpcbiAgICAgKiBXaGVyZSBlbXB0eSBvYmplY3QgbXVzdCByZXNwZWN0IGdyYXBocWwgWFhYSW5wdXQgdHlwZSwgbWF5IG5lZWQgc29tZSBkZWZhdWx0IHZhbHVlcyBmb3Igb3RoZXIgZmllbGRzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldERlZmF1bHRGb3JDbGllbnQoKTogTGl0ZXJhbCB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCBvbmx5IHRoZSBhcnJheSBvZiBmZXRjaGVkIG9iamVjdHMgb3V0IG9mIHRoZSBlbnRpcmUgZmV0Y2hlZCBkYXRhXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1hcEFsbCgpOiBPcGVyYXRvckZ1bmN0aW9uPEZldGNoUmVzdWx0PHVua25vd24+LCBUYWxsPiB7XG4gICAgICAgIGNvbnN0IHBsdXJhbCA9IG1ha2VQbHVyYWwodGhpcy5uYW1lKTtcbiAgICAgICAgcmV0dXJuIG1hcChyZXN1bHQgPT4gKHJlc3VsdC5kYXRhIGFzIGFueSlbcGx1cmFsXSk7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9hcG9sbG8tY2xpZW50L2lzc3Vlcy81NjYyXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGV4dHJhY3Qgb25seSB0aGUgY3JlYXRlZCBvYmplY3Qgb3V0IG9mIHRoZSBlbnRpcmUgZmV0Y2hlZCBkYXRhXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1hcENyZWF0aW9uKHJlc3VsdDogTXV0YXRpb25SZXN1bHQ8dW5rbm93bj4pOiBUY3JlYXRlIHtcbiAgICAgICAgY29uc3QgbmFtZSA9ICdjcmVhdGUnICsgdXBwZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy5uYW1lKTtcbiAgICAgICAgcmV0dXJuIChyZXN1bHQuZGF0YSBhcyBhbnkpW25hbWVdOyAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2Fwb2xsb2dyYXBocWwvYXBvbGxvLWNsaWVudC9pc3N1ZXMvNTY2MlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBleHRyYWN0IG9ubHkgdGhlIHVwZGF0ZWQgb2JqZWN0IG91dCBvZiB0aGUgZW50aXJlIGZldGNoZWQgZGF0YVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtYXBVcGRhdGUocmVzdWx0OiBNdXRhdGlvblJlc3VsdDx1bmtub3duPik6IFR1cGRhdGUge1xuICAgICAgICBjb25zdCBuYW1lID0gJ3VwZGF0ZScgKyB1cHBlckNhc2VGaXJzdExldHRlcih0aGlzLm5hbWUpO1xuICAgICAgICByZXR1cm4gKHJlc3VsdC5kYXRhIGFzIGFueSlbbmFtZV07IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9hcG9sbG8tY2xpZW50L2lzc3Vlcy81NjYyXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGV4dHJhY3Qgb25seSBmbGFnIHdoZW4gZGVsZXRpbmcgYW4gb2JqZWN0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1hcERlbGV0ZShyZXN1bHQ6IE11dGF0aW9uUmVzdWx0PHVua25vd24+KTogVGRlbGV0ZSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSAnZGVsZXRlJyArIG1ha2VQbHVyYWwodXBwZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy5uYW1lKSk7XG4gICAgICAgIHJldHVybiAocmVzdWx0LmRhdGEgYXMgYW55KVtuYW1lXTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL2Fwb2xsby1jbGllbnQvaXNzdWVzLzU2NjJcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIGJlIHVzZWQgd2hlbiBnZXR0aW5nIGEgc2luZ2xlIG9iamVjdFxuICAgICAqXG4gICAgICogVGhpcyBpcyB0eXBpY2FsbHkgYSBzaXRlIG9yIHN0YXRlIElELCBhbmQgaXMgbmVlZGVkIHRvIGdldCBhcHByb3ByaWF0ZSBhY2Nlc3MgcmlnaHRzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBhcnRpYWxWYXJpYWJsZXNGb3JPbmUoKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPFZvbmU+PiB7XG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byBiZSB1c2VkIHdoZW4gZ2V0dGluZyBtdWx0aXBsZSBvYmplY3RzXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHR5cGljYWxseSBhIHNpdGUgb3Igc3RhdGUgSUQsIGJ1dCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSB0byBmdXJ0aGVyIGZpbHRlciB0aGUgcXVlcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckFsbCgpOiBPYnNlcnZhYmxlPFBhcnRpYWw8VmFsbD4+IHtcbiAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBhbiBvYmplY3RcbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdHlwaWNhbGx5IGEgc2l0ZSBvciBzdGF0ZSBJRFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckNyZWF0aW9uKG9iamVjdDogTGl0ZXJhbCk6IFBhcnRpYWw8VmNyZWF0ZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byBiZSB1c2VkIHdoZW4gdXBkYXRpbmcgYW4gb2JqZWN0XG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHR5cGljYWxseSBhIHNpdGUgb3Igc3RhdGUgSURcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIGdldFBhcnRpYWxWYXJpYWJsZXNGb3JVcGRhdGUob2JqZWN0OiBMaXRlcmFsKTogUGFydGlhbDxWdXBkYXRlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gYmUgdXNlZCB3aGVuIGRlbGV0aW5nIGFuIG9iamVjdFxuICAgICAqXG4gICAgICogVGhpcyBpcyB0eXBpY2FsbHkgYSBzaXRlIG9yIHN0YXRlIElEXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBnZXRQYXJ0aWFsVmFyaWFibGVzRm9yRGVsZXRlKG9iamVjdHM6IExpdGVyYWxbXSk6IFBhcnRpYWw8VmRlbGV0ZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhyb3cgZXhjZXB0aW9uIHRvIHByZXZlbnQgZXhlY3V0aW5nIHF1ZXJpZXMgd2l0aCBpbnZhbGlkIHZhcmlhYmxlc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCB0aHJvd0lmT2JzZXJ2YWJsZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0Nhbm5vdCB1c2UgT2JzZXJ2YWJsZSBhcyB2YXJpYWJsZXMuIEluc3RlYWQgeW91IHNob3VsZCB1c2UgLnN1YnNjcmliZSgpIHRvIGNhbGwgdGhlIG1ldGhvZCB3aXRoIGEgcmVhbCB2YWx1ZScsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2UgZ2l2ZW4gSUQgd2l0aCBhZGRpdGlvbmFsIHBhcnRpYWwgdmFyaWFibGVzIGlmIHRoZXJlIGlzIGFueVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VmFyaWFibGVzRm9yT25lKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFZvbmU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFydGlhbFZhcmlhYmxlc0Zvck9uZSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAocGFydGlhbFZhcmlhYmxlcyA9PiBtZXJnZSh7fSwge2lkOiBpZH0gYXMgVm9uZSwgcGFydGlhbFZhcmlhYmxlcykpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRocm93IGV4Y2VwdGlvbiB0byBwcmV2ZW50IGV4ZWN1dGluZyBudWxsIHF1ZXJpZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHRocm93SWZOb3RRdWVyeShxdWVyeTogRG9jdW1lbnROb2RlIHwgbnVsbCk6IGFzc2VydHMgcXVlcnkge1xuICAgICAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyYXBoUUwgcXVlcnkgZm9yIHRoaXMgbWV0aG9kIHdhcyBub3QgY29uZmlndXJlZCBpbiB0aGlzIHNlcnZpY2UgY29uc3RydWN0b3InKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -117,9 +117,9 @@ export class NaturalDebounceService {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
NaturalDebounceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
121
|
-
NaturalDebounceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
120
|
+
NaturalDebounceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalDebounceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
121
|
+
NaturalDebounceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalDebounceService, providedIn: 'root' });
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalDebounceService, decorators: [{
|
|
123
123
|
type: Injectable,
|
|
124
124
|
args: [{
|
|
125
125
|
providedIn: 'root',
|
|
@@ -56,9 +56,9 @@ export class NaturalEnumService {
|
|
|
56
56
|
}));
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
NaturalEnumService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
60
|
-
NaturalEnumService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
59
|
+
NaturalEnumService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalEnumService, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
60
|
+
NaturalEnumService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalEnumService, providedIn: 'root' });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalEnumService, decorators: [{
|
|
62
62
|
type: Injectable,
|
|
63
63
|
args: [{
|
|
64
64
|
providedIn: 'root',
|
|
@@ -142,9 +142,9 @@ export class NaturalLinkMutationService {
|
|
|
142
142
|
}`;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
NaturalLinkMutationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
146
|
-
NaturalLinkMutationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
145
|
+
NaturalLinkMutationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalLinkMutationService, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
146
|
+
NaturalLinkMutationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalLinkMutationService, providedIn: 'root' });
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalLinkMutationService, decorators: [{
|
|
148
148
|
type: Injectable,
|
|
149
149
|
args: [{
|
|
150
150
|
providedIn: 'root',
|
|
@@ -104,9 +104,9 @@ export class NaturalPersistenceService {
|
|
|
104
104
|
return this.isValid(key, storageKey, result) ? result : null;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
NaturalPersistenceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
108
|
-
NaturalPersistenceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
107
|
+
NaturalPersistenceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPersistenceService, deps: [{ token: i1.Router }, { token: SESSION_STORAGE }, { token: NATURAL_PERSISTENCE_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
NaturalPersistenceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPersistenceService, providedIn: 'root' });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPersistenceService, decorators: [{
|
|
110
110
|
type: Injectable,
|
|
111
111
|
args: [{
|
|
112
112
|
providedIn: 'root',
|
|
@@ -52,9 +52,9 @@ export class NaturalSwissParsingDateAdapter extends NativeDateAdapter {
|
|
|
52
52
|
return 1;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
NaturalSwissParsingDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
56
|
-
NaturalSwissParsingDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
55
|
+
NaturalSwissParsingDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSwissParsingDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
56
|
+
NaturalSwissParsingDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSwissParsingDateAdapter, providedIn: 'root' });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalSwissParsingDateAdapter, decorators: [{
|
|
58
58
|
type: Injectable,
|
|
59
59
|
args: [{
|
|
60
60
|
providedIn: 'root',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvdHlwZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFnaW5hdGVkRGF0YX0gZnJvbSAnLi4vY2xhc3Nlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZSwgVmFyaWFibGVzV2l0aElucHV0fSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7UXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uL2NsYXNzZXMvcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5cbi8qKlxuICogQW4gb2JqZWN0IGxpdGVyYWwgd2l0aCBhbnkga2V5cyBhbmQgdmFsdWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGl0ZXJhbCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIEFuIG9iamVjdCB3aXRoIGVpdGhlciBhIG5hbWUgb3IgYSBmdWxsTmFtZSAob3IgbWF5YmUgYm90aClcbiAqL1xuZXhwb3J0IHR5cGUgTmFtZU9yRnVsbE5hbWUgPVxuICAgIHwge1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGZ1bGxOYW1lPzogc3RyaW5nO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICBmdWxsTmFtZTogc3RyaW5nO1xuICAgICAgfTtcblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBUb25lIHR5cGUgZnJvbSBhIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZVxuICovXG5leHBvcnQgdHlwZSBFeHRyYWN0VG9uZTxQPiA9IFAgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgaW5mZXIgVG9uZSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueVxuPlxuICAgID8gVG9uZVxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgVm9uZSB0eXBlIGZyb20gYSBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2VcbiAqL1xuZXhwb3J0IHR5cGUgRXh0cmFjdFZvbmU8UD4gPSBQIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgIGFueSxcbiAgICBpbmZlciBWb25lLFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnlcbj5cbiAgICA/IFZvbmUgZXh0ZW5kcyB7aWQ6IHN0cmluZ31cbiAgICAgICAgPyBWb25lXG4gICAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIFRhbGwgdHlwZSBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RUYWxsPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGluZmVyIFRhbGwsXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55XG4+XG4gICAgPyBUYWxsIGV4dGVuZHMgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPlxuICAgICAgICA/IFRhbGxcbiAgICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgVGFsbE9uZSB0eXBlIGZvciBhIHNpbmdsZSBpdGVtIGNvbWluZyBmcm9tIGEgbGlzdCBvZiBpdGVtcyBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RUYWxsT25lPFA+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvdHlwZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFnaW5hdGVkRGF0YX0gZnJvbSAnLi4vY2xhc3Nlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZSwgVmFyaWFibGVzV2l0aElucHV0fSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7UXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uL2NsYXNzZXMvcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5cbi8qKlxuICogQW4gb2JqZWN0IGxpdGVyYWwgd2l0aCBhbnkga2V5cyBhbmQgdmFsdWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGl0ZXJhbCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIEFuIG9iamVjdCB3aXRoIGVpdGhlciBhIG5hbWUgb3IgYSBmdWxsTmFtZSAob3IgbWF5YmUgYm90aClcbiAqL1xuZXhwb3J0IHR5cGUgTmFtZU9yRnVsbE5hbWUgPVxuICAgIHwge1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGZ1bGxOYW1lPzogc3RyaW5nO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICBmdWxsTmFtZTogc3RyaW5nO1xuICAgICAgfTtcblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBUb25lIHR5cGUgZnJvbSBhIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZVxuICovXG5leHBvcnQgdHlwZSBFeHRyYWN0VG9uZTxQPiA9IFAgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgaW5mZXIgVG9uZSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueVxuPlxuICAgID8gVG9uZVxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgVm9uZSB0eXBlIGZyb20gYSBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2VcbiAqL1xuZXhwb3J0IHR5cGUgRXh0cmFjdFZvbmU8UD4gPSBQIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgIGFueSxcbiAgICBpbmZlciBWb25lLFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnlcbj5cbiAgICA/IFZvbmUgZXh0ZW5kcyB7aWQ6IHN0cmluZ31cbiAgICAgICAgPyBWb25lXG4gICAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIFRhbGwgdHlwZSBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RUYWxsPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGluZmVyIFRhbGwsXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55XG4+XG4gICAgPyBUYWxsIGV4dGVuZHMgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPlxuICAgICAgICA/IFRhbGxcbiAgICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgVGFsbE9uZSB0eXBlIGZvciBhIHNpbmdsZSBpdGVtIGNvbWluZyBmcm9tIGEgbGlzdCBvZiBpdGVtcyBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RUYWxsT25lPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIFBhZ2luYXRlZERhdGE8aW5mZXIgVGFsbE9uZSBleHRlbmRzIExpdGVyYWw+LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueVxuPlxuICAgID8gVGFsbE9uZSBleHRlbmRzIExpdGVyYWxcbiAgICAgICAgPyBUYWxsT25lXG4gICAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIFZhbGwgdHlwZSBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RWYWxsPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBpbmZlciBWYWxsLFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55XG4+XG4gICAgPyBWYWxsIGV4dGVuZHMgUXVlcnlWYXJpYWJsZXNcbiAgICAgICAgPyBWYWxsXG4gICAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIFRjcmVhdGUgdHlwZSBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RUY3JlYXRlPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgaW5mZXIgVGNyZWF0ZSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55XG4+XG4gICAgPyBUY3JlYXRlXG4gICAgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBWY3JlYXRlIHR5cGUgZnJvbSBhIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZVxuICovXG5leHBvcnQgdHlwZSBFeHRyYWN0VmNyZWF0ZTxQPiA9IFAgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBpbmZlciBWY3JlYXRlLFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueVxuPlxuICAgID8gVmNyZWF0ZSBleHRlbmRzIFZhcmlhYmxlc1dpdGhJbnB1dFxuICAgICAgICA/IFZjcmVhdGVcbiAgICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgVHVwZGF0ZSB0eXBlIGZyb20gYSBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2VcbiAqL1xuZXhwb3J0IHR5cGUgRXh0cmFjdFR1cGRhdGU8UD4gPSBQIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGluZmVyIFR1cGRhdGUsXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnlcbj5cbiAgICA/IFR1cGRhdGVcbiAgICA6IG5ldmVyO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIFZ1cGRhdGUgdHlwZSBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RWdXBkYXRlPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgaW5mZXIgVnVwZGF0ZSxcbiAgICBhbnksXG4gICAgYW55XG4+XG4gICAgPyBWdXBkYXRlIGV4dGVuZHMge2lkOiBzdHJpbmc7IGlucHV0OiBMaXRlcmFsfVxuICAgICAgICA/IFZ1cGRhdGVcbiAgICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgVGRlbGV0ZSB0eXBlIGZyb20gYSBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2VcbiAqL1xuZXhwb3J0IHR5cGUgRXh0cmFjdFRkZWxldGU8UD4gPSBQIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgaW5mZXIgVGRlbGV0ZSxcbiAgICBhbnlcbj5cbiAgICA/IFRkZWxldGVcbiAgICA6IG5ldmVyO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIFZkZWxldGUgdHlwZSBmcm9tIGEgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RWZGVsZXRlPFA+ID0gUCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBhbnksXG4gICAgYW55LFxuICAgIGFueSxcbiAgICBpbmZlciBWZGVsZXRlXG4+XG4gICAgPyBWZGVsZXRlIGV4dGVuZHMge2lkczogc3RyaW5nW119XG4gICAgICAgID8gVmRlbGV0ZVxuICAgICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcbiJdfQ==
|