@valtimo/components 12.0.0 → 12.1.1
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/assets/css/carbon.scss +3 -0
- package/assets/css/compatibility.scss +22 -0
- package/esm2022/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.mjs +2 -2
- package/esm2022/lib/components/breadcrumb-navigation/breadcrumb.service.mjs +11 -2
- package/esm2022/lib/components/carbon-list/carbon-list.component.mjs +132 -39
- package/esm2022/lib/components/carbon-list/carbon-list.module.mjs +7 -3
- package/esm2022/lib/components/carbon-list/no-results/carbon-no-results.component.mjs +37 -5
- package/esm2022/lib/components/carbon-list/services/carbon-list-drag-and-drop.service.mjs +165 -0
- package/esm2022/lib/components/carbon-list/services/index.mjs +17 -0
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +1 -1
- package/esm2022/lib/components/form-io/form-io-builder.component.mjs +2 -2
- package/esm2022/lib/components/input/input.component.mjs +1 -1
- package/esm2022/lib/components/input-label/input-label.component.mjs +6 -3
- package/esm2022/lib/components/list/list.module.mjs +22 -4
- package/esm2022/lib/components/multi-input/carbon-multi-input.component.mjs +1 -1
- package/esm2022/lib/components/multi-input-form/multi-input-form.component.mjs +3 -3
- package/esm2022/lib/components/page-header/page-header.component.mjs +2 -2
- package/esm2022/lib/components/radio/radio.component.mjs +1 -1
- package/esm2022/lib/components/right-sidebar/right-sidebar.component.mjs +92 -75
- package/esm2022/lib/components/search-fields/search-fields.component.mjs +23 -13
- package/esm2022/lib/components/select/select.component.mjs +1 -1
- package/esm2022/lib/components/stepper/stepper-footer-step/stepper-footer-step.component.mjs +4 -4
- package/esm2022/lib/components/stepper/stepper.module.mjs +5 -4
- package/esm2022/lib/components/tooltip-icon/tooltip-icon.component.mjs +2 -2
- package/esm2022/lib/components/view-content/type-converters/booleanTypeConverter.mjs +13 -17
- package/esm2022/lib/components/view-content/type-converters/currencyTypeConverter.mjs +37 -0
- package/esm2022/lib/components/view-content/type-converters/dateTimeTypeConverter.mjs +31 -0
- package/esm2022/lib/components/view-content/type-converters/dateTypeConverter.mjs +5 -3
- package/esm2022/lib/components/view-content/type-converters/enumTypeConverter.mjs +2 -2
- package/esm2022/lib/components/view-content/type-converters/numberTypeConverter.mjs +37 -0
- package/esm2022/lib/components/view-content/type-converters/percentTypeConverter.mjs +37 -0
- package/esm2022/lib/components/view-content/type-converters/relatedFilesTypeConverter.mjs +1 -1
- package/esm2022/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.mjs +1 -1
- package/esm2022/lib/components/view-content/type-converters/stringTypeConverter.mjs +1 -1
- package/esm2022/lib/components/view-content/type-converters/type-converters.model.mjs +60 -17
- package/esm2022/lib/components/view-content/view-content.module.mjs +33 -0
- package/esm2022/lib/components/view-content/view-content.service.mjs +11 -22
- package/esm2022/lib/components/widget/widget.component.mjs +2 -2
- package/esm2022/lib/constants/carbon.constants.mjs +2 -1
- package/esm2022/lib/directives/fit-page/fit-page.directive.mjs +2 -2
- package/esm2022/lib/models/carbon-list.model.mjs +5 -2
- package/esm2022/lib/models/carbon-tag.model.mjs +2 -2
- package/esm2022/lib/models/modal.model.mjs +1 -1
- package/esm2022/lib/services/index.mjs +2 -1
- package/esm2022/lib/services/key-generator.service.mjs +50 -0
- package/esm2022/lib/services/key-state.service.mjs +33 -0
- package/fesm2022/valtimo-components.mjs +816 -195
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/breadcrumb-navigation/breadcrumb.service.d.ts +3 -0
- package/lib/components/breadcrumb-navigation/breadcrumb.service.d.ts.map +1 -1
- package/lib/components/carbon-list/carbon-list.component.d.ts +28 -9
- package/lib/components/carbon-list/carbon-list.component.d.ts.map +1 -1
- package/lib/components/carbon-list/carbon-list.module.d.ts +2 -1
- package/lib/components/carbon-list/carbon-list.module.d.ts.map +1 -1
- package/lib/components/carbon-list/no-results/carbon-no-results.component.d.ts +13 -3
- package/lib/components/carbon-list/no-results/carbon-no-results.component.d.ts.map +1 -1
- package/lib/components/carbon-list/services/carbon-list-drag-and-drop.service.d.ts +40 -0
- package/lib/components/carbon-list/services/carbon-list-drag-and-drop.service.d.ts.map +1 -0
- package/lib/components/carbon-list/services/index.d.ts +2 -0
- package/lib/components/carbon-list/services/index.d.ts.map +1 -0
- package/lib/components/form-io/form-io-builder.component.d.ts.map +1 -1
- package/lib/components/input-label/input-label.component.d.ts +2 -1
- package/lib/components/input-label/input-label.component.d.ts.map +1 -1
- package/lib/components/list/list.module.d.ts +2 -1
- package/lib/components/list/list.module.d.ts.map +1 -1
- package/lib/components/right-sidebar/right-sidebar.component.d.ts +17 -20
- package/lib/components/right-sidebar/right-sidebar.component.d.ts.map +1 -1
- package/lib/components/search-fields/search-fields.component.d.ts +4 -4
- package/lib/components/search-fields/search-fields.component.d.ts.map +1 -1
- package/lib/components/stepper/stepper.module.d.ts +2 -1
- package/lib/components/stepper/stepper.module.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/booleanTypeConverter.d.ts +6 -0
- package/lib/components/view-content/type-converters/booleanTypeConverter.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/currencyTypeConverter.d.ts +7 -0
- package/lib/components/view-content/type-converters/currencyTypeConverter.d.ts.map +1 -0
- package/lib/components/view-content/type-converters/dateTimeTypeConverter.d.ts +6 -0
- package/lib/components/view-content/type-converters/dateTimeTypeConverter.d.ts.map +1 -0
- package/lib/components/view-content/type-converters/dateTypeConverter.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/enumTypeConverter.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/numberTypeConverter.d.ts +7 -0
- package/lib/components/view-content/type-converters/numberTypeConverter.d.ts.map +1 -0
- package/lib/components/view-content/type-converters/percentTypeConverter.d.ts +7 -0
- package/lib/components/view-content/type-converters/percentTypeConverter.d.ts.map +1 -0
- package/lib/components/view-content/type-converters/relatedFilesTypeConverter.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/stringTypeConverter.d.ts.map +1 -1
- package/lib/components/view-content/type-converters/type-converters.model.d.ts +13 -1
- package/lib/components/view-content/type-converters/type-converters.model.d.ts.map +1 -1
- package/lib/components/view-content/view-content.module.d.ts +8 -0
- package/lib/components/view-content/view-content.module.d.ts.map +1 -0
- package/lib/components/view-content/view-content.service.d.ts +1 -5
- package/lib/components/view-content/view-content.service.d.ts.map +1 -1
- package/lib/constants/carbon.constants.d.ts +1 -0
- package/lib/constants/carbon.constants.d.ts.map +1 -1
- package/lib/models/carbon-list.model.d.ts +15 -3
- package/lib/models/carbon-list.model.d.ts.map +1 -1
- package/lib/models/carbon-tag.model.d.ts +2 -0
- package/lib/models/carbon-tag.model.d.ts.map +1 -1
- package/lib/models/modal.model.d.ts +2 -1
- package/lib/models/modal.model.d.ts.map +1 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/key-generator.service.d.ts +8 -0
- package/lib/services/key-generator.service.d.ts.map +1 -0
- package/lib/services/key-state.service.d.ts +12 -0
- package/lib/services/key-state.service.d.ts.map +1 -0
- package/package.json +4 -2
package/assets/css/carbon.scss
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
@use '@carbon/colors';
|
|
19
19
|
|
|
20
20
|
$lightThemeVariables: (
|
|
21
|
+
'white': themes.$white,
|
|
21
22
|
'g10': themes.$g10,
|
|
22
23
|
);
|
|
23
24
|
|
|
@@ -117,6 +118,8 @@ $darkThemeOverwriteVariables: (
|
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
|
|
121
|
+
@import '~node_modules/@carbon/charts-angular/styles.min.css';
|
|
122
|
+
|
|
120
123
|
/* default Valtimo colors */
|
|
121
124
|
|
|
122
125
|
:root {
|
|
@@ -639,6 +639,28 @@ valtimo-dossier-assign-user {
|
|
|
639
639
|
|
|
640
640
|
/* FormIO */
|
|
641
641
|
|
|
642
|
+
valtimo-dossier-widgets-container {
|
|
643
|
+
.formio-widget {
|
|
644
|
+
h4,
|
|
645
|
+
dd,
|
|
646
|
+
dt {
|
|
647
|
+
color: var(--cds-text-primary) !important;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
.formio-component {
|
|
651
|
+
.form-group {
|
|
652
|
+
margin-bottom: 0;
|
|
653
|
+
}
|
|
654
|
+
p {
|
|
655
|
+
color: var(--cds-text-primary);
|
|
656
|
+
}
|
|
657
|
+
input.form-control {
|
|
658
|
+
border: none !important;
|
|
659
|
+
background-color: unset !important;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
|
|
642
664
|
.card.card-border {
|
|
643
665
|
border: none;
|
|
644
666
|
background-color: var(--cds-background);
|
|
@@ -45,11 +45,11 @@ export class BreadcrumbNavigationComponent {
|
|
|
45
45
|
this._subscriptions.unsubscribe();
|
|
46
46
|
}
|
|
47
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BreadcrumbNavigationComponent, deps: [{ token: i1.BreadcrumbService }, { token: i2.PageHeaderService }, { token: i2.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BreadcrumbNavigationComponent, selector: "valtimo-breadcrumb-navigation", host: { properties: { "class.valtimo-breadcrumb-navigation--compact": "this.isCompact" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BreadcrumbNavigationComponent, selector: "valtimo-breadcrumb-navigation", host: { properties: { "class.valtimo-breadcrumb-navigation--compact": "this.isCompact" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:8px;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.Breadcrumb, selector: "cds-breadcrumb, ibm-breadcrumb", inputs: ["items", "noTrailingSlash", "ariaLabel", "skeleton", "threshold"], outputs: ["navigation"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
49
49
|
}
|
|
50
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BreadcrumbNavigationComponent, decorators: [{
|
|
51
51
|
type: Component,
|
|
52
|
-
args: [{ selector: 'valtimo-breadcrumb-navigation', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:
|
|
52
|
+
args: [{ selector: 'valtimo-breadcrumb-navigation', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:8px;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
53
53
|
}], ctorParameters: () => [{ type: i1.BreadcrumbService }, { type: i2.PageHeaderService }, { type: i2.PageTitleService }], propDecorators: { isCompact: [{
|
|
54
54
|
type: HostBinding,
|
|
55
55
|
args: ['class.valtimo-breadcrumb-navigation--compact']
|
|
@@ -34,13 +34,15 @@ export class BreadcrumbService {
|
|
|
34
34
|
this.serializer = serializer;
|
|
35
35
|
this._cachedQueryParams = {};
|
|
36
36
|
this._manualSecondBreadcrumb$ = new BehaviorSubject(null);
|
|
37
|
+
this._manualThirdBreadcrumb$ = new BehaviorSubject(null);
|
|
37
38
|
this._breadcrumbItems$ = combineLatest([
|
|
38
39
|
this.menuService.activeParentSequenceNumber$,
|
|
39
40
|
this.menuService.menuItems$,
|
|
40
41
|
this._manualSecondBreadcrumb$,
|
|
42
|
+
this._manualThirdBreadcrumb$,
|
|
41
43
|
this.translateService.stream('key'),
|
|
42
44
|
this.router.events.pipe(startWith(this.router)),
|
|
43
|
-
]).pipe(map(([activeParentSequenceNumber, menuItems, manualSecondBreadcrumb]) => {
|
|
45
|
+
]).pipe(map(([activeParentSequenceNumber, menuItems, manualSecondBreadcrumb, manualThirdBreadcrumb]) => {
|
|
44
46
|
const activeParentBreadcrumbTitle = menuItems.find(menuItem => `${menuItem.sequence}` === activeParentSequenceNumber)?.title;
|
|
45
47
|
const activeParentBreadcrumbTitleTranslation = activeParentBreadcrumbTitle && this.translateService.instant(activeParentBreadcrumbTitle);
|
|
46
48
|
const activeParentBreadcrumbItem = {
|
|
@@ -51,6 +53,7 @@ export class BreadcrumbService {
|
|
|
51
53
|
...(activeParentSequenceNumber ? [activeParentBreadcrumbItem] : []),
|
|
52
54
|
...(manualSecondBreadcrumb ? [manualSecondBreadcrumb] : []),
|
|
53
55
|
...(secondBreadCrumb && !manualSecondBreadcrumb ? [secondBreadCrumb] : []),
|
|
56
|
+
...(!!manualThirdBreadcrumb ? [manualThirdBreadcrumb] : []),
|
|
54
57
|
];
|
|
55
58
|
}), map(breadCrumbItems => this.matchCachedQueryParams(breadCrumbItems)));
|
|
56
59
|
}
|
|
@@ -60,6 +63,12 @@ export class BreadcrumbService {
|
|
|
60
63
|
clearSecondBreadcrumb() {
|
|
61
64
|
this._manualSecondBreadcrumb$.next(null);
|
|
62
65
|
}
|
|
66
|
+
setThirdBreadcrumb(breadcrumb) {
|
|
67
|
+
this._manualThirdBreadcrumb$.next(breadcrumb);
|
|
68
|
+
}
|
|
69
|
+
clearThirdBreadcrumb() {
|
|
70
|
+
this._manualThirdBreadcrumb$.next(null);
|
|
71
|
+
}
|
|
63
72
|
cacheQueryParams(routeMatchString, params) {
|
|
64
73
|
if (routeMatchString && typeof params === 'object' && Object.keys(params).length > 0) {
|
|
65
74
|
this._cachedQueryParams = { ...this._cachedQueryParams, [routeMatchString]: params };
|
|
@@ -115,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
115
124
|
providedIn: 'root',
|
|
116
125
|
}]
|
|
117
126
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ConfigService }, { type: i3.MenuService }, { type: i4.TranslateService }, { type: i1.UrlSerializer }] });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1iLW5hdmlnYXRpb24vYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTbkMsTUFBTSxPQUFPLGlCQUFpQjtJQThCNUIsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ21CLE1BQWMsRUFDZCxLQUFxQixFQUNyQixhQUE0QixFQUM1QixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsVUFBeUI7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQXZDcEMsdUJBQWtCLEdBQXlDLEVBQUUsQ0FBQztRQUNyRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDNUUsc0JBQWlCLEdBQXNDLGFBQWEsQ0FBQztZQUNwRixJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQjtZQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7WUFDM0IsSUFBSSxDQUFDLHdCQUF3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QUUsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFDMUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBQyxHQUFHLGNBQWMsRUFBRSxXQUFXLEVBQUUsRUFBQyxXQUFXLEVBQUUsWUFBWSxFQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFdBQW1CO1FBQzVDLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7OEdBL0dVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0JyZWFkY3J1bWJJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciwgVXJsU2VyaWFsaXplcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4uL21lbnUvbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iU2VydmljZSB7XG4gIHByaXZhdGUgX2NhY2hlZFF1ZXJ5UGFyYW1zOiB7W3JvdXRlTWF0Y2hTdHJpbmc6IHN0cmluZ106IFBhcmFtc30gPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFudWFsU2Vjb25kQnJlYWRjcnVtYiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyZWFkY3J1bWJJdGVtIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyZWFkY3J1bWJJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8QnJlYWRjcnVtYkl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubWVudVNlcnZpY2UuYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkLFxuICAgIHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zJCxcbiAgICB0aGlzLl9tYW51YWxTZWNvbmRCcmVhZGNydW1iJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShzdGFydFdpdGgodGhpcy5yb3V0ZXIpKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFthY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciwgbWVudUl0ZW1zLCBtYW51YWxTZWNvbmRCcmVhZGNydW1iXSkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlID0gbWVudUl0ZW1zLmZpbmQoXG4gICAgICAgIG1lbnVJdGVtID0+IGAke21lbnVJdGVtLnNlcXVlbmNlfWAgPT09IGFjdGl2ZVBhcmVudFNlcXVlbmNlTnVtYmVyXG4gICAgICApPy50aXRsZTtcbiAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZVRyYW5zbGF0aW9uID1cbiAgICAgICAgYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlICYmIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZSk7XG4gICAgICBjb25zdCBhY3RpdmVQYXJlbnRCcmVhZGNydW1iSXRlbSA9IHtcbiAgICAgICAgY29udGVudDogYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlVHJhbnNsYXRpb24sXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2Vjb25kQnJlYWRDcnVtYiA9IHRoaXMuZ2V0U2Vjb25kQnJlYWRjcnVtYigpO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi4oYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIgPyBbYWN0aXZlUGFyZW50QnJlYWRjcnVtYkl0ZW1dIDogW10pLFxuICAgICAgICAuLi4obWFudWFsU2Vjb25kQnJlYWRjcnVtYiA/IFttYW51YWxTZWNvbmRCcmVhZGNydW1iXSA6IFtdKSxcbiAgICAgICAgLi4uKHNlY29uZEJyZWFkQ3J1bWIgJiYgIW1hbnVhbFNlY29uZEJyZWFkY3J1bWIgPyBbc2Vjb25kQnJlYWRDcnVtYl0gOiBbXSksXG4gICAgICBdO1xuICAgIH0pLFxuICAgIG1hcChicmVhZENydW1iSXRlbXMgPT4gdGhpcy5tYXRjaENhY2hlZFF1ZXJ5UGFyYW1zKGJyZWFkQ3J1bWJJdGVtcykpXG4gICk7XG5cbiAgZ2V0IGJyZWFkY3J1bWJJdGVtcyQoKTogT2JzZXJ2YWJsZTxBcnJheTxCcmVhZGNydW1iSXRlbT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYkl0ZW1zJDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXJcbiAgKSB7fVxuXG4gIHNldFNlY29uZEJyZWFkY3J1bWIoYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLl9tYW51YWxTZWNvbmRCcmVhZGNydW1iJC5uZXh0KGJyZWFkY3J1bWIpO1xuICB9XG5cbiAgY2xlYXJTZWNvbmRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFNlY29uZEJyZWFkY3J1bWIkLm5leHQobnVsbCk7XG4gIH1cblxuICBjYWNoZVF1ZXJ5UGFyYW1zKHJvdXRlTWF0Y2hTdHJpbmc6IHN0cmluZywgcGFyYW1zOiBQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAocm91dGVNYXRjaFN0cmluZyAmJiB0eXBlb2YgcGFyYW1zID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zID0gey4uLnRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zLCBbcm91dGVNYXRjaFN0cmluZ106IHBhcmFtc307XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWNvbmRCcmVhZGNydW1iKCk6IEJyZWFkY3J1bWJJdGVtIHwgZmFsc2Uge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBjb25zdCB1cmxXaXRob3V0UGFyYW1zID0gdXJsLmluY2x1ZGVzKCc/JykgPyB1cmwuc3BsaXQoJz8nKVswXSA6IHVybDtcbiAgICBjb25zdCBzcGxpdFVybCA9IHVybFdpdGhvdXRQYXJhbXMuc3BsaXQoJy8nKTtcbiAgICBjb25zdCBmaWx0ZXJlZFNwbGl0VXJsID0gc3BsaXRVcmwuZmlsdGVyKHVybFBhcnQgPT4gISF1cmxQYXJ0KTtcblxuICAgIGlmIChmaWx0ZXJlZFNwbGl0VXJsLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHJvdXRlID0gZmlsdGVyZWRTcGxpdFVybFswXTtcbiAgICAgIGNvbnN0IHJvdXRlU3RyaW5nID0gYC8ke3JvdXRlfWA7XG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQocm91dGVDb25maWcgPT4gcm91dGVDb25maWcucGF0aCA9PT0gcm91dGUpPy5kYXRhXG4gICAgICAgID8udGl0bGU7XG5cbiAgICAgIGlmIChyb3V0ZSAmJiBjb250ZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGU6IFtyb3V0ZVN0cmluZ10sXG4gICAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29udGVudCksXG4gICAgICAgICAgaHJlZjogYCR7cm91dGVTdHJpbmd9YCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoQ2FjaGVkUXVlcnlQYXJhbXMoYnJlYWRjcnVtYkl0ZW1zOiBBcnJheTxCcmVhZGNydW1iSXRlbT4pOiBBcnJheTxCcmVhZGNydW1iSXRlbT4ge1xuICAgIGxldCBoYXNDYWNoZWRQYXJhbXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gYnJlYWRjcnVtYkl0ZW1zLm1hcChicmVhZENydW1iSXRlbSA9PiB7XG4gICAgICBjb25zdCBjYWNoZWRQYXJhbUtleSA9IE9iamVjdC5rZXlzKHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zKS5maW5kKGNhY2hlZFF1ZXJ5UGFyYW1LZXkgPT5cbiAgICAgICAgdGhpcy5yb3V0ZVN0cmluZ1RvUGxhaW4oYnJlYWRDcnVtYkl0ZW0uaHJlZikuaW5jbHVkZXMoXG4gICAgICAgICAgdGhpcy5yb3V0ZVN0cmluZ1RvUGxhaW4oY2FjaGVkUXVlcnlQYXJhbUtleSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNhY2hlZFBhcmFtcyA9IGNhY2hlZFBhcmFtS2V5ICYmIHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zW2NhY2hlZFBhcmFtS2V5XTtcblxuICAgICAgaWYgKGNhY2hlZFBhcmFtcykge1xuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShicmVhZENydW1iSXRlbS5yb3V0ZSwge3F1ZXJ5UGFyYW1zOiBjYWNoZWRQYXJhbXN9KTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFVybCA9IHRoaXMuc2VyaWFsaXplci5zZXJpYWxpemUodHJlZSk7XG4gICAgICAgIGhhc0NhY2hlZFBhcmFtcyA9IHRydWU7XG4gICAgICAgIHJldHVybiB7Li4uYnJlYWRDcnVtYkl0ZW0sIHJvdXRlRXh0cmFzOiB7cXVlcnlQYXJhbXM6IGNhY2hlZFBhcmFtc30sIGhyZWY6IHNlcmlhbGl6ZWRVcmx9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnJlYWRDcnVtYkl0ZW07XG4gICAgfSk7XG5cbiAgICBpZiAoaGFzQ2FjaGVkUGFyYW1zKSB7XG4gICAgICB0aGlzLl9jYWNoZWRRdWVyeVBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgcm91dGVTdHJpbmdUb1BsYWluKHJvdXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZVN0cmluZz8ucmVwbGFjZSgnLycsICcnKS50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICB9XG59XG4iXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1iLW5hdmlnYXRpb24vYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTbkMsTUFBTSxPQUFPLGlCQUFpQjtJQW1DNUIsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ21CLE1BQWMsRUFDZCxLQUFxQixFQUNyQixhQUE0QixFQUM1QixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsVUFBeUI7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQTVDcEMsdUJBQWtCLEdBQXlDLEVBQUUsQ0FBQztRQUNyRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDNUUsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQzNFLHNCQUFpQixHQUFzQyxhQUFhLENBQUM7WUFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkI7WUFD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LFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRofSBmcm9tICdyeGpzJztcbmltcG9ydCB7QnJlYWRjcnVtYkl0ZW19IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyLCBVcmxTZXJpYWxpemVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi4vbWVudS9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfY2FjaGVkUXVlcnlQYXJhbXM6IHtbcm91dGVNYXRjaFN0cmluZzogc3RyaW5nXTogUGFyYW1zfSA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYW51YWxTZWNvbmRCcmVhZGNydW1iJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJlYWRjcnVtYkl0ZW0gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFudWFsVGhpcmRCcmVhZGNydW1iJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJlYWRjcnVtYkl0ZW0gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJlYWRjcnVtYkl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxCcmVhZGNydW1iSXRlbT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tZW51U2VydmljZS5hY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciQsXG4gICAgdGhpcy5tZW51U2VydmljZS5tZW51SXRlbXMkLFxuICAgIHRoaXMuX21hbnVhbFNlY29uZEJyZWFkY3J1bWIkLFxuICAgIHRoaXMuX21hbnVhbFRoaXJkQnJlYWRjcnVtYiQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoc3RhcnRXaXRoKHRoaXMucm91dGVyKSksXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFthY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciwgbWVudUl0ZW1zLCBtYW51YWxTZWNvbmRCcmVhZGNydW1iLCBtYW51YWxUaGlyZEJyZWFkY3J1bWJdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZSA9IG1lbnVJdGVtcy5maW5kKFxuICAgICAgICAgIG1lbnVJdGVtID0+IGAke21lbnVJdGVtLnNlcXVlbmNlfWAgPT09IGFjdGl2ZVBhcmVudFNlcXVlbmNlTnVtYmVyXG4gICAgICAgICk/LnRpdGxlO1xuICAgICAgICBjb25zdCBhY3RpdmVQYXJlbnRCcmVhZGNydW1iVGl0bGVUcmFuc2xhdGlvbiA9XG4gICAgICAgICAgYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlICYmIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJJdGVtID0ge1xuICAgICAgICAgIGNvbnRlbnQ6IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZVRyYW5zbGF0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZWNvbmRCcmVhZENydW1iID0gdGhpcy5nZXRTZWNvbmRCcmVhZGNydW1iKCk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi4oYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIgPyBbYWN0aXZlUGFyZW50QnJlYWRjcnVtYkl0ZW1dIDogW10pLFxuICAgICAgICAgIC4uLihtYW51YWxTZWNvbmRCcmVhZGNydW1iID8gW21hbnVhbFNlY29uZEJyZWFkY3J1bWJdIDogW10pLFxuICAgICAgICAgIC4uLihzZWNvbmRCcmVhZENydW1iICYmICFtYW51YWxTZWNvbmRCcmVhZGNydW1iID8gW3NlY29uZEJyZWFkQ3J1bWJdIDogW10pLFxuICAgICAgICAgIC4uLighIW1hbnVhbFRoaXJkQnJlYWRjcnVtYiA/IFttYW51YWxUaGlyZEJyZWFkY3J1bWJdIDogW10pLFxuICAgICAgICBdO1xuICAgICAgfVxuICAgICksXG4gICAgbWFwKGJyZWFkQ3J1bWJJdGVtcyA9PiB0aGlzLm1hdGNoQ2FjaGVkUXVlcnlQYXJhbXMoYnJlYWRDcnVtYkl0ZW1zKSlcbiAgKTtcblxuICBnZXQgYnJlYWRjcnVtYkl0ZW1zJCgpOiBPYnNlcnZhYmxlPEFycmF5PEJyZWFkY3J1bWJJdGVtPj4ge1xuICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1iSXRlbXMkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplcjogVXJsU2VyaWFsaXplclxuICApIHt9XG5cbiAgc2V0U2Vjb25kQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFNlY29uZEJyZWFkY3J1bWIkLm5leHQoYnJlYWRjcnVtYik7XG4gIH1cblxuICBjbGVhclNlY29uZEJyZWFkY3J1bWIoKTogdm9pZCB7XG4gICAgdGhpcy5fbWFudWFsU2Vjb25kQnJlYWRjcnVtYiQubmV4dChudWxsKTtcbiAgfVxuXG4gIHNldFRoaXJkQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFRoaXJkQnJlYWRjcnVtYiQubmV4dChicmVhZGNydW1iKTtcbiAgfVxuXG4gIGNsZWFyVGhpcmRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFRoaXJkQnJlYWRjcnVtYiQubmV4dChudWxsKTtcbiAgfVxuXG4gIGNhY2hlUXVlcnlQYXJhbXMocm91dGVNYXRjaFN0cmluZzogc3RyaW5nLCBwYXJhbXM6IFBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChyb3V0ZU1hdGNoU3RyaW5nICYmIHR5cGVvZiBwYXJhbXMgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fY2FjaGVkUXVlcnlQYXJhbXMgPSB7Li4udGhpcy5fY2FjaGVkUXVlcnlQYXJhbXMsIFtyb3V0ZU1hdGNoU3RyaW5nXTogcGFyYW1zfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNlY29uZEJyZWFkY3J1bWIoKTogQnJlYWRjcnVtYkl0ZW0gfCBmYWxzZSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGNvbnN0IHVybFdpdGhvdXRQYXJhbXMgPSB1cmwuaW5jbHVkZXMoJz8nKSA/IHVybC5zcGxpdCgnPycpWzBdIDogdXJsO1xuICAgIGNvbnN0IHNwbGl0VXJsID0gdXJsV2l0aG91dFBhcmFtcy5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGZpbHRlcmVkU3BsaXRVcmwgPSBzcGxpdFVybC5maWx0ZXIodXJsUGFydCA9PiAhIXVybFBhcnQpO1xuXG4gICAgaWYgKGZpbHRlcmVkU3BsaXRVcmwubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3Qgcm91dGUgPSBmaWx0ZXJlZFNwbGl0VXJsWzBdO1xuICAgICAgY29uc3Qgcm91dGVTdHJpbmcgPSBgLyR7cm91dGV9YDtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnJvdXRlci5jb25maWcuZmluZChyb3V0ZUNvbmZpZyA9PiByb3V0ZUNvbmZpZy5wYXRoID09PSByb3V0ZSk/LmRhdGFcbiAgICAgICAgPy50aXRsZTtcblxuICAgICAgaWYgKHJvdXRlICYmIGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZTogW3JvdXRlU3RyaW5nXSxcbiAgICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb250ZW50KSxcbiAgICAgICAgICBocmVmOiBgJHtyb3V0ZVN0cmluZ31gLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hDYWNoZWRRdWVyeVBhcmFtcyhicmVhZGNydW1iSXRlbXM6IEFycmF5PEJyZWFkY3J1bWJJdGVtPik6IEFycmF5PEJyZWFkY3J1bWJJdGVtPiB7XG4gICAgbGV0IGhhc0NhY2hlZFBhcmFtcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBicmVhZGNydW1iSXRlbXMubWFwKGJyZWFkQ3J1bWJJdGVtID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZFBhcmFtS2V5ID0gT2JqZWN0LmtleXModGhpcy5fY2FjaGVkUXVlcnlQYXJhbXMpLmZpbmQoY2FjaGVkUXVlcnlQYXJhbUtleSA9PlxuICAgICAgICB0aGlzLnJvdXRlU3RyaW5nVG9QbGFpbihicmVhZENydW1iSXRlbS5ocmVmKS5pbmNsdWRlcyhcbiAgICAgICAgICB0aGlzLnJvdXRlU3RyaW5nVG9QbGFpbihjYWNoZWRRdWVyeVBhcmFtS2V5KVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgY29uc3QgY2FjaGVkUGFyYW1zID0gY2FjaGVkUGFyYW1LZXkgJiYgdGhpcy5fY2FjaGVkUXVlcnlQYXJhbXNbY2FjaGVkUGFyYW1LZXldO1xuXG4gICAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGJyZWFkQ3J1bWJJdGVtLnJvdXRlLCB7cXVlcnlQYXJhbXM6IGNhY2hlZFBhcmFtc30pO1xuICAgICAgICBjb25zdCBzZXJpYWxpemVkVXJsID0gdGhpcy5zZXJpYWxpemVyLnNlcmlhbGl6ZSh0cmVlKTtcbiAgICAgICAgaGFzQ2FjaGVkUGFyYW1zID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsuLi5icmVhZENydW1iSXRlbSwgcm91dGVFeHRyYXM6IHtxdWVyeVBhcmFtczogY2FjaGVkUGFyYW1zfSwgaHJlZjogc2VyaWFsaXplZFVybH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBicmVhZENydW1iSXRlbTtcbiAgICB9KTtcblxuICAgIGlmIChoYXNDYWNoZWRQYXJhbXMpIHtcbiAgICAgIHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBlZEl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSByb3V0ZVN0cmluZ1RvUGxhaW4ocm91dGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlU3RyaW5nPy5yZXBsYWNlKCcvJywgJycpLnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
|