@ngrdt/router 0.0.18 → 0.0.19
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/fesm2022/ngrdt-router.mjs +134 -40
- package/fesm2022/ngrdt-router.mjs.map +1 -1
- package/index.d.ts +34 -16
- package/package.json +1 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable, EnvironmentInjector, runInInjectionContext, DestroyRef, Renderer2, ElementRef, Input, Directive, booleanAttribute } from '@angular/core';
|
|
3
|
-
import { defer, of, filter, take } from 'rxjs';
|
|
2
|
+
import { InjectionToken, inject, Injectable, EnvironmentInjector, runInInjectionContext, DestroyRef, Renderer2, ElementRef, Input, Directive, afterNextRender, input, booleanAttribute, effect } from '@angular/core';
|
|
3
|
+
import { defer, of, filter, take, fromEvent } from 'rxjs';
|
|
4
4
|
import { Location, PlatformLocation } from '@angular/common';
|
|
5
5
|
import * as i1 from '@angular/router';
|
|
6
6
|
import { Router, NavigationEnd, RouterModule, RouterLink, GuardsCheckStart } from '@angular/router';
|
|
7
7
|
import { RdtStringUtils } from '@ngrdt/utils';
|
|
8
8
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
|
+
import { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';
|
|
9
10
|
import { RdtComponentGuardStoreService } from '@ngrdt/core';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -176,7 +177,6 @@ class RdtRouterService {
|
|
|
176
177
|
return currentRoute.parseAbsoluteUrl(url);
|
|
177
178
|
}
|
|
178
179
|
isParentOfCurrentLocation(route) {
|
|
179
|
-
console.log(this.parseAbsoluteUrl());
|
|
180
180
|
return true;
|
|
181
181
|
}
|
|
182
182
|
removeQueryParams(...paramNames) {
|
|
@@ -630,7 +630,11 @@ class RdtRoute {
|
|
|
630
630
|
}
|
|
631
631
|
});
|
|
632
632
|
paramNames.forEach((param) => {
|
|
633
|
-
|
|
633
|
+
if (!(param in extendedParamMap)) {
|
|
634
|
+
throw new Error(`Param ${param} is missing for route ${this.absolutePath}. Please pass object with required parameters.`);
|
|
635
|
+
}
|
|
636
|
+
const value = extendedParamMap[param];
|
|
637
|
+
path = path.replace(`:${param}`, `${value}`);
|
|
634
638
|
});
|
|
635
639
|
return path;
|
|
636
640
|
}
|
|
@@ -992,41 +996,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
992
996
|
type: Input
|
|
993
997
|
}] } });
|
|
994
998
|
|
|
999
|
+
class RdtBackLinkDirective {
|
|
1000
|
+
destroyRef = inject(DestroyRef);
|
|
1001
|
+
location = inject(Location);
|
|
1002
|
+
elRef = inject((ElementRef));
|
|
1003
|
+
buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);
|
|
1004
|
+
buttonRef = inject(this.buttonClass, {
|
|
1005
|
+
optional: true,
|
|
1006
|
+
host: true,
|
|
1007
|
+
});
|
|
1008
|
+
constructor() {
|
|
1009
|
+
afterNextRender(() => {
|
|
1010
|
+
if (this.buttonRef) {
|
|
1011
|
+
this.buttonRef.click$
|
|
1012
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
1013
|
+
.subscribe(() => this.location.back());
|
|
1014
|
+
}
|
|
1015
|
+
else {
|
|
1016
|
+
fromEvent(this.elRef.nativeElement, 'click')
|
|
1017
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
1018
|
+
.subscribe(() => this.location.back());
|
|
1019
|
+
}
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
1022
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtBackLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1023
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.7", type: RdtBackLinkDirective, isStandalone: true, selector: "[rdtBackLink]", ngImport: i0 });
|
|
1024
|
+
}
|
|
1025
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtBackLinkDirective, decorators: [{
|
|
1026
|
+
type: Directive,
|
|
1027
|
+
args: [{
|
|
1028
|
+
selector: '[rdtBackLink]',
|
|
1029
|
+
}]
|
|
1030
|
+
}], ctorParameters: () => [] });
|
|
1031
|
+
|
|
1032
|
+
const PERMISSION_DISABLED_KEY = Symbol();
|
|
995
1033
|
class RdtRouterLinkDirective {
|
|
1034
|
+
buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);
|
|
1035
|
+
buttonRef = inject(this.buttonClass, {
|
|
1036
|
+
host: true,
|
|
1037
|
+
optional: true,
|
|
1038
|
+
});
|
|
996
1039
|
routerLinkRef = inject(RouterLink, { self: true });
|
|
997
1040
|
envInjector = inject(EnvironmentInjector);
|
|
998
|
-
route;
|
|
999
|
-
target = '_self';
|
|
1000
|
-
params;
|
|
1001
|
-
queryParams;
|
|
1002
|
-
stateParams;
|
|
1003
|
-
disabled = false
|
|
1004
|
-
|
|
1005
|
-
|
|
1041
|
+
route = input.required(...(ngDevMode ? [{ debugName: "route", alias: 'rdtRouterLink' }] : [{ alias: 'rdtRouterLink' }]));
|
|
1042
|
+
target = input('_self', ...(ngDevMode ? [{ debugName: "target" }] : []));
|
|
1043
|
+
params = input(...(ngDevMode ? [undefined, { debugName: "params" }] : []));
|
|
1044
|
+
queryParams = input(...(ngDevMode ? [undefined, { debugName: "queryParams" }] : []));
|
|
1045
|
+
stateParams = input(...(ngDevMode ? [undefined, { debugName: "stateParams" }] : []));
|
|
1046
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", alias: 'rdtDisabled',
|
|
1047
|
+
transform: booleanAttribute }] : [{
|
|
1048
|
+
alias: 'rdtDisabled',
|
|
1049
|
+
transform: booleanAttribute,
|
|
1050
|
+
}]));
|
|
1051
|
+
updateEffect = effect(() => {
|
|
1052
|
+
if (this.buttonRef) {
|
|
1053
|
+
this.updateButton();
|
|
1054
|
+
}
|
|
1055
|
+
else {
|
|
1056
|
+
this.updateRouterLink();
|
|
1057
|
+
}
|
|
1058
|
+
}, ...(ngDevMode ? [{ debugName: "updateEffect" }] : []));
|
|
1059
|
+
updateButton() {
|
|
1060
|
+
const route = this.route();
|
|
1061
|
+
if (!route) {
|
|
1062
|
+
this.clearButtonLink();
|
|
1063
|
+
return;
|
|
1064
|
+
}
|
|
1065
|
+
if (route.canBeEntered(this.envInjector)) {
|
|
1066
|
+
this.setButtonLink(route);
|
|
1067
|
+
}
|
|
1068
|
+
else {
|
|
1069
|
+
this.disableButtonLink();
|
|
1070
|
+
}
|
|
1006
1071
|
}
|
|
1007
|
-
|
|
1008
|
-
this.
|
|
1072
|
+
setButtonLink(route) {
|
|
1073
|
+
const button = this.buttonRef;
|
|
1074
|
+
try {
|
|
1075
|
+
const ngHref = this.getNgHref(route);
|
|
1076
|
+
button.ngHref.set(ngHref);
|
|
1077
|
+
button.stateParams.set(this.stateParams() ?? route.stateParams);
|
|
1078
|
+
button.queryParams.set(this.queryParams() ?? route.queryParams);
|
|
1079
|
+
button.setDisabledState(false, PERMISSION_DISABLED_KEY);
|
|
1080
|
+
}
|
|
1081
|
+
catch (err) {
|
|
1082
|
+
console.error(err);
|
|
1083
|
+
this.disableButtonLink();
|
|
1084
|
+
}
|
|
1009
1085
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1086
|
+
disableButtonLink() {
|
|
1087
|
+
const button = this.buttonRef;
|
|
1088
|
+
button.ngHref.set(null);
|
|
1089
|
+
button.setDisabledState(true, PERMISSION_DISABLED_KEY);
|
|
1090
|
+
}
|
|
1091
|
+
clearButtonLink() {
|
|
1092
|
+
const button = this.buttonRef;
|
|
1093
|
+
button.ngHref.set(null);
|
|
1094
|
+
button.stateParams.set(undefined);
|
|
1095
|
+
button.queryParams.set(undefined);
|
|
1096
|
+
button.setDisabledState(false, PERMISSION_DISABLED_KEY);
|
|
1097
|
+
}
|
|
1098
|
+
updateRouterLink() {
|
|
1099
|
+
const route = this.route();
|
|
1100
|
+
if (!route) {
|
|
1101
|
+
this.clearRouterLink();
|
|
1102
|
+
}
|
|
1103
|
+
else if (route.canBeEntered(this.envInjector) && !this.disabled()) {
|
|
1104
|
+
this.setRouterLink(route);
|
|
1013
1105
|
}
|
|
1014
1106
|
else {
|
|
1015
|
-
this.
|
|
1107
|
+
this.disableRouterLink();
|
|
1016
1108
|
}
|
|
1017
1109
|
}
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1110
|
+
setRouterLink(route) {
|
|
1111
|
+
try {
|
|
1112
|
+
const ngHref = this.getNgHref(route);
|
|
1113
|
+
this.routerLinkRef.routerLink = ngHref;
|
|
1114
|
+
this.routerLinkRef.state = this.stateParams() ?? route.stateParams;
|
|
1115
|
+
this.routerLinkRef.queryParams = this.queryParams() ?? route.queryParams;
|
|
1116
|
+
this.routerLinkRef.ngOnChanges({});
|
|
1117
|
+
}
|
|
1118
|
+
catch (err) {
|
|
1119
|
+
console.error(err);
|
|
1120
|
+
this.disableRouterLink();
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
disableRouterLink() {
|
|
1124
|
+
this.routerLinkRef.routerLink = null;
|
|
1022
1125
|
this.routerLinkRef.ngOnChanges({});
|
|
1023
1126
|
}
|
|
1024
|
-
|
|
1127
|
+
clearRouterLink() {
|
|
1025
1128
|
this.routerLinkRef.routerLink = null;
|
|
1129
|
+
this.routerLinkRef.state = undefined;
|
|
1130
|
+
this.routerLinkRef.queryParams = undefined;
|
|
1026
1131
|
this.routerLinkRef.ngOnChanges({});
|
|
1027
1132
|
}
|
|
1133
|
+
getNgHref(route) {
|
|
1134
|
+
return route.createAbsoluteUrl(this.params());
|
|
1135
|
+
}
|
|
1028
1136
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1029
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
1137
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: RdtRouterLinkDirective, isStandalone: true, selector: "[rdtRouterLink]", inputs: { route: { classPropertyName: "route", publicName: "rdtRouterLink", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null }, stateParams: { classPropertyName: "stateParams", publicName: "stateParams", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "rdtDisabled", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.RouterLink, inputs: ["target", "target"] }], ngImport: i0 });
|
|
1030
1138
|
}
|
|
1031
1139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{
|
|
1032
1140
|
type: Directive,
|
|
@@ -1040,21 +1148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
1040
1148
|
},
|
|
1041
1149
|
],
|
|
1042
1150
|
}]
|
|
1043
|
-
}]
|
|
1044
|
-
type: Input,
|
|
1045
|
-
args: [{ alias: 'rdtRouterLink', required: true }]
|
|
1046
|
-
}], target: [{
|
|
1047
|
-
type: Input
|
|
1048
|
-
}], params: [{
|
|
1049
|
-
type: Input
|
|
1050
|
-
}], queryParams: [{
|
|
1051
|
-
type: Input
|
|
1052
|
-
}], stateParams: [{
|
|
1053
|
-
type: Input
|
|
1054
|
-
}], disabled: [{
|
|
1055
|
-
type: Input,
|
|
1056
|
-
args: [{ transform: booleanAttribute }]
|
|
1057
|
-
}] } });
|
|
1151
|
+
}] });
|
|
1058
1152
|
|
|
1059
1153
|
const preventDataLossGuardFn = () => {
|
|
1060
1154
|
const guardStore = inject(RdtComponentGuardStoreService);
|
|
@@ -1111,5 +1205,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
1111
1205
|
* Generated bundle index. Do not edit.
|
|
1112
1206
|
*/
|
|
1113
1207
|
|
|
1114
|
-
export { ALWAYS_TRUE, GlobalRouteGuardService, RDT_CANNOT_BE_ENTERED_PROVIDER, RDT_CONFIRM_DATA_LOSS_SERVICE, RDT_ROUTES_PROVIDER, RdtAngularRoute, RdtAnyRouteActiveDirective, RdtConfirmDataLossService, RdtConfirmDataLossServiceAlert, RdtNavigationSource, RdtRoute, RdtRouteBuilder, RdtRouterLinkDirective, RdtRouterService, preventDataLossGuardFn };
|
|
1208
|
+
export { ALWAYS_TRUE, GlobalRouteGuardService, PERMISSION_DISABLED_KEY, RDT_CANNOT_BE_ENTERED_PROVIDER, RDT_CONFIRM_DATA_LOSS_SERVICE, RDT_ROUTES_PROVIDER, RdtAngularRoute, RdtAnyRouteActiveDirective, RdtBackLinkDirective, RdtConfirmDataLossService, RdtConfirmDataLossServiceAlert, RdtNavigationSource, RdtRoute, RdtRouteBuilder, RdtRouterLinkDirective, RdtRouterService, preventDataLossGuardFn };
|
|
1115
1209
|
//# sourceMappingURL=ngrdt-router.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrdt-router.mjs","sources":["../tmp-esm2022/lib/services/rdt-cannot-be-entered.token.js","../tmp-esm2022/lib/services/rdt-confirm-data-loss.service.js","../tmp-esm2022/lib/rdt-route/utils.js","../tmp-esm2022/lib/services/rdt-routes.token.js","../tmp-esm2022/lib/services/rdt-router.service.js","../tmp-esm2022/lib/rdt-route/constants.js","../tmp-esm2022/lib/rdt-route/rdt-angular-route.js","../tmp-esm2022/lib/rdt-route/rdt-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-builder.js","../tmp-esm2022/lib/directives/rdt-any-route-active.directive.js","../tmp-esm2022/lib/directives/rdt-router-link.directive.js","../tmp-esm2022/lib/guards/prevent-data-loss.guard.js","../tmp-esm2022/lib/guards/global-route-guard.service.js","../tmp-esm2022/ngrdt-router.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n/**\n * Injection token that defines behavior when route cannot be entered (canBeEntered returns false).\n * If value is undefined, route will be redirected to ''.\n */\nexport const RDT_CANNOT_BE_ENTERED_PROVIDER = new InjectionToken('RDT_CANNOT_BE_ENTERED', { factory: () => undefined, providedIn: 'root' });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1jYW5ub3QtYmUtZW50ZXJlZC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUU5RCx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0UmVkaXJlY3RGbiwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZWZpbmVzIGJlaGF2aW9yIHdoZW4gcm91dGUgY2Fubm90IGJlIGVudGVyZWQgKGNhbkJlRW50ZXJlZCByZXR1cm5zIGZhbHNlKS5cbiAqIElmIHZhbHVlIGlzIHVuZGVmaW5lZCwgcm91dGUgd2lsbCBiZSByZWRpcmVjdGVkIHRvICcnLlxuICovXG5leHBvcnQgY29uc3QgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRSZWRpcmVjdEZuIHwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlXG4+KCdSRFRfQ0FOTk9UX0JFX0VOVEVSRUQnLCB7IGZhY3Rvcnk6ICgpID0+IHVuZGVmaW5lZCwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { defer, of } from 'rxjs';\nexport const RDT_CONFIRM_DATA_LOSS_SERVICE = new InjectionToken('RDT_CONFIRM_DATA_LOSS_SERVICE', { factory: () => new RdtConfirmDataLossServiceAlert() });\nexport class RdtConfirmDataLossService {\n}\nexport class RdtConfirmDataLossServiceAlert extends RdtConfirmDataLossService {\n confirmDataLoss() {\n return defer(() => of(confirm('Are you sure you want to leave this page?')));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvc2VydmljZXMvcmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQ2hCLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLEVBQUUsQ0FDeEQsQ0FBQztBQUVKLE1BQU0sT0FBZ0IseUJBQXlCO0NBRTlDO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNsRSxlQUFlO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9DT05GSVJNX0RBVEFfTE9TU19TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmR0Q29uZmlybURhdGFMb3NzU2VydmljZT4oXHJcbiAgICAnUkRUX0NPTkZJUk1fREFUQV9MT1NTX1NFUlZJQ0UnLFxyXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBuZXcgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZUFsZXJ0KCkgfVxyXG4gICk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZSB7XHJcbiAgYWJzdHJhY3QgY29uZmlybURhdGFMb3NzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlQWxlcnQgZXh0ZW5kcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlIHtcclxuICBvdmVycmlkZSBjb25maXJtRGF0YUxvc3MoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cclxuICAgICAgb2YoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT8nKSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtReadonlyParameters {\n params;\n constructor(params = {}) {\n this.params = params;\n }\n get(route) {\n return this.params[route.absolutePath] ?? null;\n }\n}\nexport class RdtParameters extends RdtReadonlyParameters {\n set(route, params) {\n this.params[route.absolutePath] = params;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCQSxNQUFNLE9BQU8scUJBQXFCO0lBQ0Q7SUFBL0IsWUFBK0IsU0FBNEIsRUFBRTtRQUE5QixXQUFNLEdBQU4sTUFBTSxDQUF3QjtJQUFHLENBQUM7SUFFakUsR0FBRyxDQUFtQixLQUFrQjtRQUN0QyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBZ0IsSUFBSSxJQUFJLENBQUM7SUFDakUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxxQkFBcUI7SUFDdEQsR0FBRyxDQUFtQixLQUFrQixFQUFFLE1BQWtCO1FBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtVHlwZU1hcDxUPiA9IHtcclxuICBba2V5IGluIGtleW9mIFRdPzogJ3N0cmluZycgfCAnbnVtYmVyJztcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1NYXBwaW5nIHtcclxuICB1cmxOYW1lOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljUm91dGVQYXJhbXMge1xyXG4gIFthYnNvbHV0ZVBhdGg6IHN0cmluZ106IG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmR0UmVkaXJlY3RSZXR1cm5UeXBlID0gc3RyaW5nIHwgdm9pZCB8IHVuZGVmaW5lZDtcclxuXHJcbmV4cG9ydCB0eXBlIFJkdFJlZGlyZWN0Rm4gPSAoXHJcbiAgY3VycmVudFBhdGg6IHN0cmluZyxcclxuICB0YXJnZXRQYXRoOiBzdHJpbmcsXHJcbiAgdGFyZ2V0Um91dGU6IFJkdFJvdXRlXHJcbikgPT4gUmR0UmVkaXJlY3RSZXR1cm5UeXBlO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJlYWRvbmx5UGFyYW1ldGVycyB7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBhcmFtczogU3RhdGljUm91dGVQYXJhbXMgPSB7fSkge31cclxuXHJcbiAgZ2V0PFQgZXh0ZW5kcyBvYmplY3Q+KHJvdXRlOiBSZHRSb3V0ZTxUPik6IFBhcnRpYWw8VD4gfCBudWxsIHtcclxuICAgIHJldHVybiAodGhpcy5wYXJhbXNbcm91dGUuYWJzb2x1dGVQYXRoXSBhcyBQYXJ0aWFsPFQ+KSA/PyBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFBhcmFtZXRlcnMgZXh0ZW5kcyBSZHRSZWFkb25seVBhcmFtZXRlcnMge1xyXG4gIHNldDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4sIHBhcmFtczogUGFydGlhbDxUPikge1xyXG4gICAgdGhpcy5wYXJhbXNbcm91dGUuYWJzb2x1dGVQYXRoXSA9IHBhcmFtcztcclxuICB9XHJcbn1cclxuIl19","import { InjectionToken } from '@angular/core';\nexport const RDT_ROUTES_PROVIDER = new InjectionToken('RDT_ROUTES_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZHQtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSRFRfUk9VVEVTX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJkdFJvdXRlW10+KFxyXG4gICdSRFRfUk9VVEVTX1BST1ZJREVSJ1xyXG4pO1xyXG4iXX0=","import { Location, PlatformLocation } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { filter, take } from 'rxjs';\nimport { RdtReadonlyParameters } from '../rdt-route/utils';\nimport { RDT_ROUTES_PROVIDER } from './rdt-routes.token';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_TARGET = '_self';\nconst RDT_STATE_PARAMS_KEY = 'RdtStateParams';\nexport class RdtRouterService {\n allRoutes = inject(RDT_ROUTES_PROVIDER, { optional: true });\n location = inject(Location);\n router = inject(Router);\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n _previousUrl = null;\n _currentUrl = null;\n get previousUrl() {\n return this._previousUrl;\n }\n get currentUrl() {\n return this._currentUrl;\n }\n parsePreviousUrl() {\n return this._previousUrl ? this.parseAbsoluteUrl(this._previousUrl) : null;\n }\n parseCurrentUrl() {\n return this._currentUrl ? this.parseAbsoluteUrl(this._currentUrl) : null;\n }\n navigationEnd$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n nextNavigationEnd$ = this.navigationEnd$.pipe(take(1));\n constructor() {\n if (this.allRoutes === null) {\n console.warn('All routes not provided. Make sure to provide RDT_ROUTES_PROVIDER with RdtRoute[].');\n this.allRoutes = [];\n }\n this.navigationEnd$.subscribe((e) => {\n this._previousUrl = this._currentUrl;\n this._currentUrl = e.url;\n });\n }\n /**\n * @returns window.history.state extended by state parameters passed from parent window.\n */\n getHistoryState() {\n if ('RdtStateParams' in window &&\n typeof window[RDT_STATE_PARAMS_KEY] === 'object') {\n return { ...window[RDT_STATE_PARAMS_KEY], ...(history.state ?? {}) };\n }\n else {\n return history.state ?? {};\n }\n }\n /**\n * Navigates to the specified route.\n * @param link Route to navigate to.\n * @param params Parameter of route passed as first argument.\n * @param extras Allows you to specify additional parameters for navigation. These extras have higher priority than those defined in the route.\n * @returns Promise that resolves when navigation is complete.\n */\n navigate(link, params, extras) {\n const url = params\n ? link.createAbsoluteUrl(params)\n : link.createAbsoluteUrl();\n const target = extras?.target ?? DEFAULT_TARGET;\n const queryParams = extras?.query ?? link.queryParams;\n const stateParams = extras?.state ?? link.stateParams;\n if (target === '_self') {\n return this.router.navigate([url], {\n queryParams: queryParams,\n state: stateParams,\n replaceUrl: extras?.replaceUrl,\n });\n }\n const absolutePath = RdtStringUtils.createAbsoluteUrl(url, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n const win = window.open(pathWithParams, target);\n if (win) {\n win[RDT_STATE_PARAMS_KEY] = stateParams;\n }\n return Promise.resolve(true);\n }\n navigateHome(extras) {\n return this.router.navigateByUrl(RdtStringUtils.appendQueryParams('/', extras?.query ?? {}), {\n state: extras?.state,\n replaceUrl: extras?.replaceUrl,\n });\n }\n navigateBack(extras) {\n const parsed = this.parseAbsoluteUrl();\n if (parsed) {\n let route = parsed.route.withStaticParams(parsed.params);\n do {\n route = route.parent;\n } while (route && route.entryDisabled);\n // In case route has no ancestor with allowed entry,\n if (!route) {\n return this.navigateHome(extras);\n }\n if (extras) {\n if (extras.query) {\n route = route.withQueryParams(extras.query);\n }\n if (extras.state) {\n route = route.withStateParams(extras.state);\n }\n }\n return this.navigate(route, extras);\n }\n else {\n console.warn(`Cannot go back from ${this.location.path()} because no route matches current url`);\n return null;\n }\n }\n /**\n * This method will try to find matching route for given absolute URL, extract its parameters and return them.\n * If no route matches the URL, it returns null. Parameters are extracted only for the last matching route, not ancestors.\n * @param url Absolute URL to parse (e.g. '/home/details/123?query=abc').\n * @returns Object containing the matching route and its parameters, or null if no route is matching.\n */\n parseAbsoluteUrl(url = this.location.path()) {\n if (this.allRoutes) {\n for (const route of this.allRoutes) {\n const params = route.parseAbsoluteUrl(url);\n if (params) {\n return { route, params };\n }\n }\n }\n return null;\n }\n extractAllParams(currentRoute) {\n if (!currentRoute) {\n const parsed = this.parseAbsoluteUrl();\n if (!parsed) {\n console.warn('No route matches current url.');\n return new RdtReadonlyParameters();\n }\n currentRoute = parsed.route;\n }\n const url = this.location.path();\n return currentRoute.parseAbsoluteUrl(url);\n }\n isParentOfCurrentLocation(route) {\n console.log(this.parseAbsoluteUrl());\n return true;\n }\n removeQueryParams(...paramNames) {\n const regex = new RegExp(`[?&](${paramNames.join('|')})=[^&]*`, 'g');\n return history.replaceState(history.state, '', location.pathname + location.search.replace(regex, '').replace(/^&/, '?'));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVN6RCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUs5QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVwRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFbEUsWUFBWSxHQUFrQixJQUFJLENBQUM7SUFDbkMsV0FBVyxHQUFrQixJQUFJLENBQUM7SUFFMUMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENB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OUMsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDckMsQ0FBQztZQUNELFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFlO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHLFVBQW9CO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FDekIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEVBQ0YsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7dUdBdkxVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uLCBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0U3RyaW5nVXRpbHMgfSBmcm9tICdAbmdyZHQvdXRpbHMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuaW1wb3J0IHsgUmR0UmVhZG9ubHlQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcclxuaW1wb3J0IHsgUkRUX1JPVVRFU19QUk9WSURFUiB9IGZyb20gJy4vcmR0LXJvdXRlcy50b2tlbic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJkdE5hdmlnYXRlRXh0cmFzIHtcclxuICBzdGF0ZT86IFBhcmFtcztcclxuICBxdWVyeT86IFBhcmFtcztcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgcmVwbGFjZVVybD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfVEFSR0VUID0gJ19zZWxmJztcclxuY29uc3QgUkRUX1NUQVRFX1BBUkFNU19LRVkgPSAnUmR0U3RhdGVQYXJhbXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlclNlcnZpY2Uge1xyXG4gIHJlYWRvbmx5IGFsbFJvdXRlcyA9IGluamVjdChSRFRfUk9VVEVTX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZUhyZWYgPSBpbmplY3QoUGxhdGZvcm1Mb2NhdGlvbikuZ2V0QmFzZUhyZWZGcm9tRE9NKCk7XHJcblxyXG4gIHByaXZhdGUgX3ByZXZpb3VzVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9jdXJyZW50VXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IHByZXZpb3VzVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFVybDtcclxuICB9XHJcblxyXG4gIHBhcnNlUHJldmlvdXNVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNVcmwgPyB0aGlzLnBhcnNlQWJzb2x1dGVVcmwodGhpcy5fcHJldmlvdXNVcmwpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHBhcnNlQ3VycmVudFVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VXJsID8gdGhpcy5wYXJzZUFic29sdXRlVXJsKHRoaXMuX2N1cnJlbnRVcmwpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25FbmQkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXHJcbiAgICBmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICkgYXMgT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPjtcclxuXHJcbiAgcmVhZG9ubHkgbmV4dE5hdmlnYXRpb25FbmQkID0gdGhpcy5uYXZpZ2F0aW9uRW5kJC5waXBlKHRha2UoMSkpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGlmICh0aGlzLmFsbFJvdXRlcyA9PT0gbnVsbCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgJ0FsbCByb3V0ZXMgbm90IHByb3ZpZGVkLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBSRFRfUk9VVEVTX1BST1ZJREVSIHdpdGggUmR0Um91dGVbXS4nXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWxsUm91dGVzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5kJC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgdGhpcy5fcHJldmlvdXNVcmwgPSB0aGlzLl9jdXJyZW50VXJsO1xyXG4gICAgICB0aGlzLl9jdXJyZW50VXJsID0gZS51cmw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXR1cm5zIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGV4dGVuZGVkIGJ5IHN0YXRlIHBhcmFtZXRlcnMgcGFzc2VkIGZyb20gcGFyZW50IHdpbmRvdy5cclxuICAgKi9cclxuICBnZXRIaXN0b3J5U3RhdGUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICdSZHRTdGF0ZVBhcmFtcycgaW4gd2luZG93ICYmXHJcbiAgICAgIHR5cGVvZiB3aW5kb3dbUkRUX1NUQVRFX1BBUkFNU19LRVldID09PSAnb2JqZWN0J1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLndpbmRvd1tSRFRfU1RBVEVfUEFSQU1TX0tFWV0sIC4uLihoaXN0b3J5LnN0YXRlID8/IHt9KSB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGhpc3Rvcnkuc3RhdGUgPz8ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHNwZWNpZmllZCByb3V0ZS5cclxuICAgKiBAcGFyYW0gbGluayBSb3V0ZSB0byBuYXZpZ2F0ZSB0by5cclxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlciBvZiByb3V0ZSBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQuXHJcbiAgICogQHBhcmFtIGV4dHJhcyBBbGxvd3MgeW91IHRvIHNwZWNpZnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciBuYXZpZ2F0aW9uLiBUaGVzZSBleHRyYXMgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aG9zZSBkZWZpbmVkIGluIHRoZSByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBuYXZpZ2F0aW9uIGlzIGNvbXBsZXRlLlxyXG4gICAqL1xyXG4gIG5hdmlnYXRlPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgbGluazogUmR0Um91dGU8VD4sXHJcbiAgICBwYXJhbXM/OiBQYXJ0aWFsPFQ+LFxyXG4gICAgZXh0cmFzPzogUmR0TmF2aWdhdGVFeHRyYXNcclxuICApIHtcclxuICAgIGNvbnN0IHVybCA9IHBhcmFtc1xyXG4gICAgICA/IGxpbmsuY3JlYXRlQWJzb2x1dGVVcmwocGFyYW1zKVxyXG4gICAgICA6IGxpbmsuY3JlYXRlQWJzb2x1dGVVcmwoKTtcclxuXHJcbiAgICBjb25zdCB0YXJnZXQgPSBleHRyYXM/LnRhcmdldCA/PyBERUZBVUxUX1RBUkdFVDtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gZXh0cmFzPy5xdWVyeSA/PyBsaW5rLnF1ZXJ5UGFyYW1zO1xyXG4gICAgY29uc3Qgc3RhdGVQYXJhbXMgPSBleHRyYXM/LnN0YXRlID8/IGxpbmsuc3RhdGVQYXJhbXM7XHJcblxyXG4gICAgaWYgKHRhcmdldCA9PT0gJ19zZWxmJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0sIHtcclxuICAgICAgICBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMsXHJcbiAgICAgICAgc3RhdGU6IHN0YXRlUGFyYW1zLFxyXG4gICAgICAgIHJlcGxhY2VVcmw6IGV4dHJhcz8ucmVwbGFjZVVybCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gUmR0U3RyaW5nVXRpbHMuY3JlYXRlQWJzb2x1dGVVcmwodXJsLCB0aGlzLmJhc2VIcmVmKTtcclxuICAgIGNvbnN0IHBhdGhXaXRoUGFyYW1zID0gUmR0U3RyaW5nVXRpbHMuYXBwZW5kUXVlcnlQYXJhbXMoXHJcbiAgICAgIGFic29sdXRlUGF0aCxcclxuICAgICAgcXVlcnlQYXJhbXNcclxuICAgICk7XHJcbiAgICBjb25zdCB3aW4gPSB3aW5kb3cub3BlbihwYXRoV2l0aFBhcmFtcywgdGFyZ2V0KTtcclxuICAgIGlmICh3aW4pIHtcclxuICAgICAgKHdpbiBhcyBhbnkpW1JEVF9TVEFURV9QQVJBTVNfS0VZXSA9IHN0YXRlUGFyYW1zO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlSG9tZShleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhcykge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgIFJkdFN0cmluZ1V0aWxzLmFwcGVuZFF1ZXJ5UGFyYW1zKCcvJywgZXh0cmFzPy5xdWVyeSA/PyB7fSksXHJcbiAgICAgIHtcclxuICAgICAgICBzdGF0ZTogZXh0cmFzPy5zdGF0ZSxcclxuICAgICAgICByZXBsYWNlVXJsOiBleHRyYXM/LnJlcGxhY2VVcmwsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZUJhY2soZXh0cmFzPzogUmR0TmF2aWdhdGVFeHRyYXMpIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VBYnNvbHV0ZVVybCgpO1xyXG4gICAgaWYgKHBhcnNlZCkge1xyXG4gICAgICBsZXQgcm91dGU6IFJkdFJvdXRlIHwgbnVsbCA9IHBhcnNlZC5yb3V0ZS53aXRoU3RhdGljUGFyYW1zKHBhcnNlZC5wYXJhbXMpO1xyXG4gICAgICBkbyB7XHJcbiAgICAgICAgcm91dGUgPSByb3V0ZS5wYXJlbnQ7XHJcbiAgICAgIH0gd2hpbGUgKHJvdXRlICYmIHJvdXRlLmVudHJ5RGlzYWJsZWQpO1xyXG5cclxuICAgICAgLy8gSW4gY2FzZSByb3V0ZSBoYXMgbm8gYW5jZXN0b3Igd2l0aCBhbGxvd2VkIGVudHJ5LFxyXG4gICAgICBpZiAoIXJvdXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVIb21lKGV4dHJhcyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4dHJhcykge1xyXG4gICAgICAgIGlmIChleHRyYXMucXVlcnkpIHtcclxuICAgICAgICAgIHJvdXRlID0gcm91dGUud2l0aFF1ZXJ5UGFyYW1zKGV4dHJhcy5xdWVyeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRyYXMuc3RhdGUpIHtcclxuICAgICAgICAgIHJvdXRlID0gcm91dGUud2l0aFN0YXRlUGFyYW1zKGV4dHJhcy5zdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBDYW5ub3QgZ28gYmFjayBmcm9tICR7dGhpcy5sb2NhdGlvbi5wYXRoKCl9IGJlY2F1c2Ugbm8gcm91dGUgbWF0Y2hlcyBjdXJyZW50IHVybGBcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBmaW5kIG1hdGNoaW5nIHJvdXRlIGZvciBnaXZlbiBhYnNvbHV0ZSBVUkwsIGV4dHJhY3QgaXRzIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0aGVtLlxyXG4gICAqIElmIG5vIHJvdXRlIG1hdGNoZXMgdGhlIFVSTCwgaXQgcmV0dXJucyBudWxsLiBQYXJhbWV0ZXJzIGFyZSBleHRyYWN0ZWQgb25seSBmb3IgdGhlIGxhc3QgbWF0Y2hpbmcgcm91dGUsIG5vdCBhbmNlc3RvcnMuXHJcbiAgICogQHBhcmFtIHVybCBBYnNvbHV0ZSBVUkwgdG8gcGFyc2UgKGUuZy4gJy9ob21lL2RldGFpbHMvMTIzP3F1ZXJ5PWFiYycpLlxyXG4gICAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHRoZSBtYXRjaGluZyByb3V0ZSBhbmQgaXRzIHBhcmFtZXRlcnMsIG9yIG51bGwgaWYgbm8gcm91dGUgaXMgbWF0Y2hpbmcuXHJcbiAgICovXHJcbiAgcGFyc2VBYnNvbHV0ZVVybCh1cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKSkge1xyXG4gICAgaWYgKHRoaXMuYWxsUm91dGVzKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgdGhpcy5hbGxSb3V0ZXMpIHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSByb3V0ZS5wYXJzZUFic29sdXRlVXJsKHVybCk7XHJcbiAgICAgICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAgICAgcmV0dXJuIHsgcm91dGUsIHBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0QWxsUGFyYW1zKGN1cnJlbnRSb3V0ZT86IFJkdFJvdXRlKTogUmR0UmVhZG9ubHlQYXJhbWV0ZXJzIHwgbnVsbCB7XHJcbiAgICBpZiAoIWN1cnJlbnRSb3V0ZSkge1xyXG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlQWJzb2x1dGVVcmwoKTtcclxuICAgICAgaWYgKCFwYXJzZWQpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ05vIHJvdXRlIG1hdGNoZXMgY3VycmVudCB1cmwuJyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZHRSZWFkb25seVBhcmFtZXRlcnMoKTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50Um91dGUgPSBwYXJzZWQucm91dGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcclxuICAgIHJldHVybiBjdXJyZW50Um91dGUucGFyc2VBYnNvbHV0ZVVybCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgaXNQYXJlbnRPZkN1cnJlbnRMb2NhdGlvbihyb3V0ZTogUmR0Um91dGUpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMucGFyc2VBYnNvbHV0ZVVybCgpKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUXVlcnlQYXJhbXMoLi4ucGFyYW1OYW1lczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgWz8mXSgke3BhcmFtTmFtZXMuam9pbignfCcpfSk9W14mXSpgLCAnZycpO1xyXG5cclxuICAgIHJldHVybiBoaXN0b3J5LnJlcGxhY2VTdGF0ZShcclxuICAgICAgaGlzdG9yeS5zdGF0ZSxcclxuICAgICAgJycsXHJcbiAgICAgIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoLnJlcGxhY2UocmVnZXgsICcnKS5yZXBsYWNlKC9eJi8sICc/JylcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export var RdtNavigationSource;\n(function (RdtNavigationSource) {\n RdtNavigationSource[\"BREADCRUMB\"] = \"breadcrumb\";\n})(RdtNavigationSource || (RdtNavigationSource = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19","import { Location } from '@angular/common';\nimport { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { RDT_CANNOT_BE_ENTERED_PROVIDER } from '../services/rdt-cannot-be-entered.token';\nimport { RdtNavigationSource } from './constants';\nexport class RdtAngularRoute {\n route;\n children = [];\n // Must be set from component declaration files\n loadChildren;\n component;\n providers = [];\n resolvers = {};\n canActivate = [];\n canActivateChild = [];\n canDeactivate = [];\n runGuardsAndResolvers;\n data;\n constructor(route) {\n this.route = route;\n }\n provide(...providers) {\n this.providers.push(...providers);\n return this;\n }\n withModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n /**\n * @deprecated Use withModule() instead.\n */\n setModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n withComponent(comp) {\n this.component = comp;\n return this;\n }\n /**\n * @deprecated Use withComponent() instead.\n */\n setComponent(comp) {\n return this.withComponent(comp);\n }\n withChildren(...routes) {\n this.children = routes;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...routes) {\n return this.withChildren(...routes);\n }\n addResolve(paramName, resolver) {\n this.resolvers[paramName] = resolver;\n return this;\n }\n addCanActivate(...fns) {\n this.canActivate.push(...fns);\n return this;\n }\n addCanDeactivate(...fns) {\n this.canDeactivate.push(...fns);\n return this;\n }\n addCanActivateChild(...fns) {\n this.canActivateChild.push(...fns);\n return this;\n }\n withRunGuardsAndResolvers(value) {\n this.runGuardsAndResolvers = value;\n return this;\n }\n /**\n * @deprecated Use withRunGuardsAndResolvers() instead.\n */\n setRunGuardsAndResolvers(value) {\n return this.withRunGuardsAndResolvers(value);\n }\n build() {\n this.checkChildrenMatch();\n let res = {\n path: this.route.path,\n providers: this.providers,\n title: this.route.name,\n canMatch: this.getCanMatch(),\n };\n if (this.component) {\n res.component = this.component;\n }\n else if (this.loadChildren) {\n res.loadChildren = this.loadChildren;\n }\n res.data = this.data ?? {\n breadcrumb: {\n label: this.route.name,\n disable: this.route.entryDisabled,\n staticStateParams: {\n src: RdtNavigationSource.BREADCRUMB,\n },\n },\n ...this.route.data,\n };\n const guard = (route, state) => {\n const injector = inject(EnvironmentInjector);\n if (runInInjectionContext(injector, this.route.canBeEntered.bind(this.route))) {\n return true;\n }\n else {\n const router = inject(Router);\n const location = inject(Location);\n let url = inject(RDT_CANNOT_BE_ENTERED_PROVIDER);\n if (typeof url === 'function') {\n //console.error(this.route.absolutePath);\n url = runInInjectionContext(injector, url.bind(url, location.path(), state.url, this.route));\n }\n if (typeof url === 'string') {\n return router.parseUrl(url);\n }\n else {\n return false;\n }\n }\n };\n this.canActivate.push(guard);\n res.canActivate = this.canActivate;\n res.canDeactivate = this.canDeactivate;\n // If children exist, change\n // {\n // path: '/path',\n // component: FeatureComponent,\n // children: [...]\n // }\n // into\n // {\n // path: '/path',\n // children: [\n // {\n // path: '',\n // component: FeatureComponent\n // },\n // ...\n // ]\n // }\n if (this.children.length > 0) {\n if (this.loadChildren || this.component) {\n const path = res.path;\n res.path = '';\n res.pathMatch = 'full';\n res.canMatch = undefined;\n res = {\n path: path,\n children: [res, ...this.children],\n canActivateChild: this.canActivateChild,\n canMatch: this.getCanMatch(),\n };\n }\n else {\n res.children = this.children;\n }\n }\n if (Object.keys(this.resolvers).length > 0) {\n res.resolve = this.resolvers;\n }\n if (this.runGuardsAndResolvers) {\n res.runGuardsAndResolvers = this.runGuardsAndResolvers;\n }\n return res;\n }\n getCanMatch() {\n const paramMap = this.route.paramMap;\n const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');\n if (!hasNumberParams) {\n return undefined;\n }\n const routeSegmentLength = this.route.path.split('/').length;\n const regex = this.route.regex\n ? new RegExp(`^${this.route.regex.source}$`)\n : this.route.absoluteRegex;\n return [\n (route, segments) => {\n const path = segments\n .slice(0, routeSegmentLength)\n .map((s) => s.path)\n .join('/');\n return regex.test(path);\n },\n ];\n }\n checkChildrenMatch() {\n // Check that all routes are present if route is not\n // lazy loaded module.\n if (!this.loadChildren &&\n (this.route.children.length > 0 || this.children.length > 0)) {\n if (this.children.length < this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children\n .map((ch) => ch.name)\n .join(', ')}`);\n }\n else if (this.children.length > this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children\n .map((ch) => ch.path)\n .join(', ')}`);\n }\n const n1 = this.children.map((ch) => ch.path);\n const n2 = this.route.children.map((ch) => ch.path);\n n1.sort();\n n2.sort();\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n throw new Error(`Paths of children provided in RdtRoute and\r\n RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);\n }\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLE1BQU0sRUFFTixxQkFBcUIsR0FFdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQVVMLE1BQU0sR0FJUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLE9BQU8sZUFBZTtJQUNsQixLQUFLLENBQWM7SUFDbkIsUUFBUSxHQUFZLEVBQUUsQ0FBQztJQUUvQiwrQ0FBK0M7SUFDdkMsWUFBWSxDQUF3QjtJQUNwQyxTQUFTLENBQWE7SUFDdEIsU0FBUyxHQUF3QyxFQUFFLENBQUM7SUFDcEQsU0FBUyxHQUEwQyxFQUFFLENBQUM7SUFDdEQsV0FBVyxHQUFvQixFQUFFLENBQUM7SUFDbEMsZ0JBQWdCLEdBQXlCLEVBQUUsQ0FBQztJQUM1QyxhQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUN6QyxxQkFBcUIsQ0FBeUI7SUFDOUMsSUFBSSxDQUFRO0lBRXBCLFlBQVksS0FBa0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLFNBQTBCO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQThCO1FBQ3ZDLElBQUksQ0FB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QUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUNiOzRDQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXHJcbiAgaW5qZWN0LFxyXG4gIFByb3ZpZGVyLFxyXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuRGVhY3RpdmF0ZUZuLFxyXG4gIENhbk1hdGNoRm4sXHJcbiAgRGF0YSxcclxuICBMb2FkQ2hpbGRyZW5DYWxsYmFjayxcclxuICBSZXNvbHZlRm4sXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgUnVuR3VhcmRzQW5kUmVzb2x2ZXJzLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSIH0gZnJvbSAnLi4vc2VydmljZXMvcmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuJztcclxuaW1wb3J0IHsgUmR0TmF2aWdhdGlvblNvdXJjZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuL3JkdC1yb3V0ZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0QW5ndWxhclJvdXRlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJvdXRlOiBSZHRSb3V0ZTxUPjtcclxuICBwcml2YXRlIGNoaWxkcmVuOiBSb3V0ZVtdID0gW107XHJcblxyXG4gIC8vIE11c3QgYmUgc2V0IGZyb20gY29tcG9uZW50IGRlY2xhcmF0aW9uIGZpbGVzXHJcbiAgcHJpdmF0ZSBsb2FkQ2hpbGRyZW4/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaztcclxuICBwcml2YXRlIGNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuICBwcml2YXRlIHByb3ZpZGVyczogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXTtcclxuICBwcml2YXRlIHJlc29sdmVyczogeyBba2V5OiBzdHJpbmddOiBSZXNvbHZlRm48dW5rbm93bj4gfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGVDaGlsZDogQ2FuQWN0aXZhdGVDaGlsZEZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGU6IENhbkRlYWN0aXZhdGVGbjxUPltdID0gW107XHJcbiAgcHJpdmF0ZSBydW5HdWFyZHNBbmRSZXNvbHZlcnM/OiBSdW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcbiAgcHJpdmF0ZSBkYXRhPzogRGF0YTtcclxuXHJcbiAgY29uc3RydWN0b3Iocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlKC4uLnByb3ZpZGVyczogVHlwZTx1bmtub3duPltdKSB7XHJcbiAgICB0aGlzLnByb3ZpZGVycy5wdXNoKC4uLnByb3ZpZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoTW9kdWxlKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB3aXRoQ29tcG9uZW50KGNvbXA6IFR5cGU8YW55Pikge1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ29tcG9uZW50KCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ29tcG9uZW50KGNvbXApO1xyXG4gIH1cclxuXHJcbiAgd2l0aENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IHJvdXRlcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENoaWxkcmVuKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDaGlsZHJlbiguLi5yb3V0ZXM6IFJvdXRlW10pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDaGlsZHJlbiguLi5yb3V0ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkUmVzb2x2ZShwYXJhbU5hbWU6IHN0cmluZywgcmVzb2x2ZXI6IFJlc29sdmVGbjx1bmtub3duPikge1xyXG4gICAgdGhpcy5yZXNvbHZlcnNbcGFyYW1OYW1lXSA9IHJlc29sdmVyO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZSguLi5mbnM6IENhbkFjdGl2YXRlRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkRlYWN0aXZhdGUoLi4uZm5zOiBDYW5EZWFjdGl2YXRlRm48YW55PltdKSB7XHJcbiAgICB0aGlzLmNhbkRlYWN0aXZhdGUucHVzaCguLi5mbnMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZUNoaWxkKC4uLmZuczogQ2FuQWN0aXZhdGVDaGlsZEZuW10pIHtcclxuICAgIHRoaXMuY2FuQWN0aXZhdGVDaGlsZC5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWU6IFJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgdGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMgPSB2YWx1ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycygpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UnVuR3VhcmRzQW5kUmVzb2x2ZXJzKHZhbHVlOiBSdW5HdWFyZHNBbmRSZXNvbHZlcnMpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGQoKTogUm91dGUge1xyXG4gICAgdGhpcy5jaGVja0NoaWxkcmVuTWF0Y2goKTtcclxuXHJcbiAgICBsZXQgcmVzOiBSb3V0ZSA9IHtcclxuICAgICAgcGF0aDogdGhpcy5yb3V0ZS5wYXRoLFxyXG4gICAgICBwcm92aWRlcnM6IHRoaXMucHJvdmlkZXJzLFxyXG4gICAgICB0aXRsZTogdGhpcy5yb3V0ZS5uYW1lLFxyXG4gICAgICBjYW5NYXRjaDogdGhpcy5nZXRDYW5NYXRjaCgpLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jb21wb25lbnQpIHtcclxuICAgICAgcmVzLmNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmxvYWRDaGlsZHJlbikge1xyXG4gICAgICByZXMubG9hZENoaWxkcmVuID0gdGhpcy5sb2FkQ2hpbGRyZW47XHJcbiAgICB9XHJcblxyXG4gICAgcmVzLmRhdGEgPSB0aGlzLmRhdGEgPz8ge1xyXG4gICAgICBicmVhZGNydW1iOiB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMucm91dGUubmFtZSxcclxuICAgICAgICBkaXNhYmxlOiB0aGlzLnJvdXRlLmVudHJ5RGlzYWJsZWQsXHJcbiAgICAgICAgc3RhdGljU3RhdGVQYXJhbXM6IHtcclxuICAgICAgICAgIHNyYzogUmR0TmF2aWdhdGlvblNvdXJjZS5CUkVBRENSVU1CLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLnRoaXMucm91dGUuZGF0YSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZ3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoXHJcbiAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KFxyXG4gICAgICAgICAgaW5qZWN0b3IsXHJcbiAgICAgICAgICB0aGlzLnJvdXRlLmNhbkJlRW50ZXJlZC5iaW5kKHRoaXMucm91dGUpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XHJcbiAgICAgICAgbGV0IHVybCA9IGluamVjdChSRFRfQ0FOTk9UX0JFX0VOVEVSRURfUFJPVklERVIpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IodGhpcy5yb3V0ZS5hYnNvbHV0ZVBhdGgpO1xyXG4gICAgICAgICAgdXJsID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxyXG4gICAgICAgICAgICBpbmplY3RvcixcclxuICAgICAgICAgICAgdXJsLmJpbmQodXJsLCBsb2NhdGlvbi5wYXRoKCksIHN0YXRlLnVybCwgdGhpcy5yb3V0ZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIHJvdXRlci5wYXJzZVVybCh1cmwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKGd1YXJkKTtcclxuXHJcbiAgICByZXMuY2FuQWN0aXZhdGUgPSB0aGlzLmNhbkFjdGl2YXRlO1xyXG4gICAgcmVzLmNhbkRlYWN0aXZhdGUgPSB0aGlzLmNhbkRlYWN0aXZhdGU7XHJcblxyXG4gICAgLy8gSWYgY2hpbGRyZW4gZXhpc3QsIGNoYW5nZVxyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNvbXBvbmVudDogRmVhdHVyZUNvbXBvbmVudCxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbLi4uXVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaW50b1xyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbXHJcbiAgICAvLyAgICAgIHtcclxuICAgIC8vICAgICAgICBwYXRoOiAnJyxcclxuICAgIC8vICAgICAgICBjb21wb25lbnQ6IEZlYXR1cmVDb21wb25lbnRcclxuICAgIC8vICAgICAgfSxcclxuICAgIC8vICAgIC4uLlxyXG4gICAgLy8gICAgXVxyXG4gICAgLy8gICAgfVxyXG4gICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkQ2hpbGRyZW4gfHwgdGhpcy5jb21wb25lbnQpIHtcclxuICAgICAgICBjb25zdCBwYXRoID0gcmVzLnBhdGg7XHJcbiAgICAgICAgcmVzLnBhdGggPSAnJztcclxuICAgICAgICByZXMucGF0aE1hdGNoID0gJ2Z1bGwnO1xyXG4gICAgICAgIHJlcy5jYW5NYXRjaCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXMgPSB7XHJcbiAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgY2hpbGRyZW46IFtyZXMsIC4uLnRoaXMuY2hpbGRyZW5dLFxyXG4gICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLFxyXG4gICAgICAgICAgY2FuTWF0Y2g6IHRoaXMuZ2V0Q2FuTWF0Y2goKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5yZXNvbHZlcnMpLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmVzLnJlc29sdmUgPSB0aGlzLnJlc29sdmVycztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMpIHtcclxuICAgICAgcmVzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHRoaXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENhbk1hdGNoKCk6IENhbk1hdGNoRm5bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucm91dGUucGFyYW1NYXA7XHJcbiAgICBjb25zdCBoYXNOdW1iZXJQYXJhbXMgPSBPYmplY3Qua2V5cyhwYXJhbU1hcCkuc29tZShcclxuICAgICAgKHApID0+IHBhcmFtTWFwW3AgYXMga2V5b2YgVF0gPT09ICdudW1iZXInXHJcbiAgICApO1xyXG4gICAgaWYgKCFoYXNOdW1iZXJQYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvdXRlU2VnbWVudExlbmd0aCA9IHRoaXMucm91dGUucGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcclxuICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5yb3V0ZS5yZWdleFxyXG4gICAgICA/IG5ldyBSZWdFeHAoYF4ke3RoaXMucm91dGUucmVnZXguc291cmNlfSRgKVxyXG4gICAgICA6IHRoaXMucm91dGUuYWJzb2x1dGVSZWdleDtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIChyb3V0ZTogUm91dGUsIHNlZ21lbnRzOiBVcmxTZWdtZW50W10pID0+IHtcclxuICAgICAgICBjb25zdCBwYXRoID0gc2VnbWVudHNcclxuICAgICAgICAgIC5zbGljZSgwLCByb3V0ZVNlZ21lbnRMZW5ndGgpXHJcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnBhdGgpXHJcbiAgICAgICAgICAuam9pbignLycpO1xyXG4gICAgICAgIHJldHVybiByZWdleC50ZXN0KHBhdGgpO1xyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDaGlsZHJlbk1hdGNoKCkge1xyXG4gICAgLy8gQ2hlY2sgdGhhdCBhbGwgcm91dGVzIGFyZSBwcmVzZW50IGlmIHJvdXRlIGlzIG5vdFxyXG4gICAgLy8gbGF6eSBsb2FkZWQgbW9kdWxlLlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sb2FkQ2hpbGRyZW4gJiZcclxuICAgICAgKHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgUmR0Um91dGUgJHt0aGlzLnJvdXRlLm5hbWV9IGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGlsZHJlbiwgYnV0IFJkdEFuZ3VsYXJSb3V0ZSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0uIFRoZXNlIG51bWJlcnMgbXVzdCBtYXRjaC4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuc2V0Q2hpbGRyZW4oKSBtZXRob2QgaW4gZ2xvYmFsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgbmFtZXMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5yb3V0ZS5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gubmFtZSlcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBSZHRSb3V0ZSAke3RoaXMucm91dGUubmFtZX0gaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9IGNoaWxkcmVuLCBidXQgUmR0QW5ndWxhclJvdXRlIGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfS4gVGhlc2UgbnVtYmVycyBtdXN0IG1hdGNoLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5zZXRDaGlsZHJlbigpIG1ldGhvZCBpbiBmZWF0dXJlIHNoZWxsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgcGF0aHMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gucGF0aClcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbjEgPSB0aGlzLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGghKTtcclxuICAgICAgY29uc3QgbjIgPSB0aGlzLnJvdXRlLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGgpO1xyXG4gICAgICBuMS5zb3J0KCk7XHJcbiAgICAgIG4yLnNvcnQoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChuMVtpXSAhPT0gbjJbaV0pIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYFBhdGhzIG9mIGNoaWxkcmVuIHByb3ZpZGVkIGluIFJkdFJvdXRlIGFuZFxyXG4gICAgICAgICAgICBSZHRBbmd1bGFyUm91dGUgZG8gbm90IG1hdGNoLiAke24xW2ldfSAhPSAke24yW2ldfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { RdtAngularRoute } from './rdt-angular-route';\nimport { RdtReadonlyParameters } from './utils';\nexport function ALWAYS_TRUE() {\n return true;\n}\nexport class RdtRoute {\n orderedParams = [];\n _paramMap = {};\n _regex = null;\n paramMappings = [];\n _staticParams = {};\n _queryParams = {};\n _stateParams = {};\n _data = {};\n _name;\n _path;\n _parent = null;\n _children = [];\n _entryDisabled = false;\n _canBeEntered = ALWAYS_TRUE;\n _built = false;\n _absoluteRegex;\n /**\n * Map of parameters and their types.\n */\n get paramMap() {\n return this._paramMap;\n }\n /**\n * Human readable name for display in breadcrumbs, title, etc.\n */\n get name() {\n return this._name;\n }\n /**\n * Path of the route relative to parent route.\n */\n get path() {\n return this._path;\n }\n /**\n * Parent route.\n */\n get parent() {\n return this._parent;\n }\n /**\n * Child routes.\n */\n get children() {\n return this._children;\n }\n /**\n * Absolute path of parent route or '/' if there is no parent.\n * Hostname excluded.\n */\n get basePath() {\n return this._parent ? this._parent.absolutePath : '/';\n }\n /**\n * Absolute path of the route. Hostname excluded.\n */\n get absolutePath() {\n return RdtStringUtils.joinPaths(this.basePath, this._path);\n }\n /**\n * Regular expression route path relative to parent route.\n * Hostname excluded.\n */\n get regex() {\n return this._regex;\n }\n /**\n * Regular expression to match only this route (not children\n * or parent routes). Hostname excluded.\n */\n get absoluteRegex() {\n if (this._absoluteRegex) {\n return this._absoluteRegex;\n }\n if (!this._regex) {\n this._absoluteRegex = new RegExp('^/$');\n if (this._parent) {\n throw new Error('Nested route with empty path is not allowed.');\n }\n }\n else if (this._parent) {\n // Remove initial ^ and ending $\n const parent = this._parent.absoluteRegex.source.slice(1, -1);\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');\n }\n else {\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');\n }\n return this._absoluteRegex;\n }\n /**\n * Denotes disabled route entry.\n * If true, route should have no NgModule\n * or component and only serves as virtual module\n * for breadcrumb.\n */\n get entryDisabled() {\n return this._entryDisabled;\n }\n /**\n * Statically set state params used when navigating to this instance.\n */\n get stateParams() {\n return this._stateParams;\n }\n /**\n * Statically set query params used when navigating to this instance.\n */\n get queryParams() {\n return this._queryParams;\n }\n /**\n * @param url Absolute path to test.\n * @returns True if url matches this route.\n */\n testUrl(url) {\n return this.absoluteRegex.test(url);\n }\n /**\n * Statically set parameters used when navigating to this instance.\n */\n get staticParams() {\n return { ...this._staticParams };\n }\n get hasCanBeEnteredGuard() {\n return this._canBeEntered !== ALWAYS_TRUE;\n }\n /**\n * Data that is passed to Angular route definition.\n */\n get data() {\n return this._data;\n }\n /**\n * Meta guard that is used by [rdtRouterLink] and RdtMenu\n * to determine if route can be entered.\n * @param injector Environment or custom injector.\n * @returns True if route can be entered.\n */\n canBeEntered(injector) {\n return injector\n ? runInInjectionContext(injector, this._canBeEntered)\n : this._canBeEntered();\n }\n /**\n * Extracts url parameters from absolute path for this path and each parent.\n */\n parseAbsoluteUrl(url) {\n const reg = this.absoluteRegex;\n if (!reg.test(url)) {\n return null;\n }\n const matches = reg.exec(url);\n if (matches) {\n const values = matches.slice(1).reverse();\n const obj = this.fill(values);\n if (obj) {\n return new RdtReadonlyParameters(obj);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n fill(values, res = {}) {\n const params = {};\n const reversedParams = this.orderedParams.slice().reverse();\n for (let i = 0; i < reversedParams.length && i < values.length; i++) {\n const key = reversedParams[i];\n const mappedKey = this.paramMappings.find((m) => m.urlName === key)?.tableName ?? key;\n let val = values[i];\n if (this._paramMap[key] === 'number') {\n val = parseInt(val);\n }\n params[mappedKey] = val;\n }\n res[this.absolutePath] = params;\n if (values.length > reversedParams.length && this._parent) {\n this._parent.fill(values.slice(reversedParams.length), res);\n }\n return res;\n }\n /**\n * Fills parameters in path with values from paramMap.\n * Use withStaticParams() beforehand in case parent paths contain parameters.\n * @param paramMap Must contain all parameters for this route.\n * @returns Absolute path.\n */\n createAbsoluteUrl(paramMap = this._staticParams) {\n if (!this._parent) {\n return this.createUrl(this.absolutePath, paramMap);\n }\n else {\n return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));\n }\n }\n createRelativeUrl(paramMap = this._staticParams) {\n return this.createUrl(this.path, paramMap);\n }\n createUrl(path, paramMap) {\n const paramNames = Object.keys(this._paramMap);\n paramNames.sort((a, b) => b.length - a.length);\n const extendedParamMap = { ...paramMap };\n this.paramMappings.forEach((mapping) => {\n if (mapping.tableName in paramMap) {\n extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];\n }\n });\n paramNames.forEach((param) => {\n path = path.replace(`:${param}`, `${extendedParamMap[param]}`);\n });\n return path;\n }\n toAngularRoute() {\n if (!this._built) {\n throw new Error('You have to first call .build() on route!');\n }\n return new RdtAngularRoute(this);\n }\n /**\n * Provides static mapping for parameter names tableName -> urlName.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with mapped parameter names.\n */\n withParamMappings(mappings) {\n const clone = this.clone();\n clone.paramMappings = mappings;\n return clone;\n }\n /**\n * Sets parameters for itself or parents.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with static parameters set.\n */\n withStaticParams(param1, param2) {\n const clone = this.clone();\n if (param2) {\n const routeAbsPath = param1.absolutePath;\n let current = clone;\n while (current) {\n if (current.absolutePath === routeAbsPath) {\n current._staticParams = param2;\n }\n current = current._parent;\n }\n }\n else {\n clone._staticParams = param1;\n }\n return clone;\n }\n withQueryParams(queryParams) {\n const clone = this.clone();\n clone._queryParams = { ...queryParams };\n return clone;\n }\n withStateParams(stateParams) {\n const clone = this.clone();\n clone._stateParams = { ...stateParams };\n return clone;\n }\n /**\n * @returns Partial of object that only contains properties necessary to create this route.\n */\n extractRouteParams(row) {\n const res = {};\n this.orderedParams.forEach((param) => {\n const mapping = this.paramMappings.find((m) => m.urlName === param);\n const mappedParam = (mapping?.tableName ?? param);\n if (mappedParam in row) {\n res[mappedParam] = row[mappedParam];\n }\n });\n return res;\n }\n /**\n * @returns New instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n */\n clone() {\n const clone = new RdtRoute();\n clone._name = this._name;\n clone._parent = this._parent?.clone() ?? null;\n clone._path = this.path;\n clone._entryDisabled = this._entryDisabled;\n clone.orderedParams = [...this.orderedParams];\n clone._paramMap = { ...this._paramMap };\n clone._regex = this._regex ? new RegExp(this._regex) : null;\n clone.paramMappings = this.paramMappings;\n clone._staticParams = { ...this._staticParams };\n clone._stateParams = { ...this._stateParams };\n return clone;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBOEIscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUUsTUFBTSxVQUFVLFdBQVc7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFDVCxhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBa0IsSUFBSSxDQUFDO0lBQzdCLGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLEtBQUssR0FBUyxFQUFFLENBQUM7SUFFakIsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFVO0lBQ2YsT0FBTyxHQUFvQixJQUFJLENBQUM7SUFDaEMsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGFBQWEsR0FBa0IsV0FBVyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFakIsY0FBYyxDQUFVO0lBRWhDOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUss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Q0FBQyxjQUFjLENBQUM7UUFDM0MsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4QyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxLQUFLLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEQsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRTdHJpbmdVdGlscyB9IGZyb20gJ0BuZ3JkdC91dGlscyc7XHJcbmltcG9ydCB7IFJkdEFuZ3VsYXJSb3V0ZSB9IGZyb20gJy4vcmR0LWFuZ3VsYXItcm91dGUnO1xyXG5pbXBvcnQgeyBQYXJhbU1hcHBpbmcsIFBhcmFtVHlwZU1hcCwgUmR0UmVhZG9ubHlQYXJhbWV0ZXJzIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQUxXQVlTX1RSVUUoKSB7XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZTxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XHJcbiAgcHJvdGVjdGVkIG9yZGVyZWRQYXJhbXM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJvdGVjdGVkIF9wYXJhbU1hcDogUGFyYW1UeXBlTWFwPFQ+ID0ge307XHJcbiAgcHJvdGVjdGVkIF9yZWdleDogUmVnRXhwIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHBhcmFtTWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdID0gW107XHJcbiAgcHJvdGVjdGVkIF9zdGF0aWNQYXJhbXM6IFBhcnRpYWw8VD4gPSB7fTtcclxuICBwcm90ZWN0ZWQgX3F1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcclxuICBwcm90ZWN0ZWQgX3N0YXRlUGFyYW1zOiBQYXJhbXMgPSB7fTtcclxuICBwcm90ZWN0ZWQgX2RhdGE6IERhdGEgPSB7fTtcclxuXHJcbiAgcHJvdGVjdGVkIF9uYW1lITogc3RyaW5nO1xyXG4gIHByb3RlY3RlZCBfcGF0aCE6IHN0cmluZztcclxuICBwcm90ZWN0ZWQgX3BhcmVudDogUmR0Um91dGUgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgX2NoaWxkcmVuOiBSZHRSb3V0ZVtdID0gW107XHJcbiAgcHJvdGVjdGVkIF9lbnRyeURpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIF9jYW5CZUVudGVyZWQ6ICgpID0+IGJvb2xlYW4gPSBBTFdBWVNfVFJVRTtcclxuICBwcm90ZWN0ZWQgX2J1aWx0ID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2Fic29sdXRlUmVnZXg/OiBSZWdFeHA7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCBvZiBwYXJhbWV0ZXJzIGFuZCB0aGVpciB0eXBlcy5cclxuICAgKi9cclxuICBnZXQgcGFyYW1NYXAoKTogUmVhZG9ubHk8UGFyYW1UeXBlTWFwPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1NYXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBkaXNwbGF5IGluIGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLlxyXG4gICAqL1xyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXRoIG9mIHRoZSByb3V0ZSByZWxhdGl2ZSB0byBwYXJlbnQgcm91dGUuXHJcbiAgICovXHJcbiAgZ2V0IHBhdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGF0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcmVudCByb3V0ZS5cclxuICAgKi9cclxuICBnZXQgcGFyZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoaWxkIHJvdXRlcy5cclxuICAgKi9cclxuICBnZXQgY2hpbGRyZW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBYnNvbHV0ZSBwYXRoIG9mIHBhcmVudCByb3V0ZSBvciAnLycgaWYgdGhlcmUgaXMgbm8gcGFyZW50LlxyXG4gICAqIEhvc3RuYW1lIGV4Y2x1ZGVkLlxyXG4gICAqL1xyXG4gIGdldCBiYXNlUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVBhdGggOiAnLyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSByb3V0ZS4gSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGFic29sdXRlUGF0aCgpIHtcclxuICAgIHJldHVybiBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHModGhpcy5iYXNlUGF0aCwgdGhpcy5fcGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gcm91dGUgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQgcm91dGUuXHJcbiAgICogSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IHJlZ2V4KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZ2V4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIG9ubHkgdGhpcyByb3V0ZSAobm90IGNoaWxkcmVuXHJcbiAgICogb3IgcGFyZW50IHJvdXRlcykuIEhvc3RuYW1lIGV4Y2x1ZGVkLlxyXG4gICAqL1xyXG4gIGdldCBhYnNvbHV0ZVJlZ2V4KCk6IFJlZ0V4cCB7XHJcbiAgICBpZiAodGhpcy5fYWJzb2x1dGVSZWdleCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVSZWdleDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuX3JlZ2V4KSB7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKCdeLyQnKTtcclxuICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTmVzdGVkIHJvdXRlIHdpdGggZW1wdHkgcGF0aCBpcyBub3QgYWxsb3dlZC4nKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgLy8gUmVtb3ZlIGluaXRpYWwgXiBhbmQgZW5kaW5nICRcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50LmFic29sdXRlUmVnZXguc291cmNlLnNsaWNlKDEsIC0xKTtcclxuICAgICAgdGhpcy5fYWJzb2x1dGVSZWdleCA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgJ14nICsgUmR0U3RyaW5nVXRpbHMuam9pblBhdGhzKHBhcmVudCwgdGhpcy5fcmVnZXguc291cmNlKSArICckJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fYWJzb2x1dGVSZWdleCA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgJ14nICsgUmR0U3RyaW5nVXRpbHMuam9pblBhdGhzKCcvJywgdGhpcy5fcmVnZXguc291cmNlKSArICckJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlUmVnZXg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZW5vdGVzIGRpc2FibGVkIHJvdXRlIGVudHJ5LlxyXG4gICAqIElmIHRydWUsIHJvdXRlIHNob3VsZCBoYXZlIG5vIE5nTW9kdWxlXHJcbiAgICogb3IgY29tcG9uZW50IGFuZCBvbmx5IHNlcnZlcyBhcyB2aXJ0dWFsIG1vZHVsZVxyXG4gICAqIGZvciBicmVhZGNydW1iLlxyXG4gICAqL1xyXG4gIGdldCBlbnRyeURpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudHJ5RGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGF0aWNhbGx5IHNldCBzdGF0ZSBwYXJhbXMgdXNlZCB3aGVuIG5hdmlnYXRpbmcgdG8gdGhpcyBpbnN0YW5jZS5cclxuICAgKi9cclxuICBnZXQgc3RhdGVQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGF0aWNhbGx5IHNldCBxdWVyeSBwYXJhbXMgdXNlZCB3aGVuIG5hdmlnYXRpbmcgdG8gdGhpcyBpbnN0YW5jZS5cclxuICAgKi9cclxuICBnZXQgcXVlcnlQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gdXJsIEFic29sdXRlIHBhdGggdG8gdGVzdC5cclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHVybCBtYXRjaGVzIHRoaXMgcm91dGUuXHJcbiAgICovXHJcbiAgdGVzdFVybCh1cmw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYWJzb2x1dGVSZWdleC50ZXN0KHVybCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGF0aWNhbGx5IHNldCBwYXJhbWV0ZXJzIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHN0YXRpY1BhcmFtcygpIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuX3N0YXRpY1BhcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0NhbkJlRW50ZXJlZEd1YXJkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkJlRW50ZXJlZCAhPT0gQUxXQVlTX1RSVUU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEYXRhIHRoYXQgaXMgcGFzc2VkIHRvIEFuZ3VsYXIgcm91dGUgZGVmaW5pdGlvbi5cclxuICAgKi9cclxuICBnZXQgZGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0YSBndWFyZCB0aGF0IGlzIHVzZWQgYnkgW3JkdFJvdXRlckxpbmtdIGFuZCBSZHRNZW51XHJcbiAgICogdG8gZGV0ZXJtaW5lIGlmIHJvdXRlIGNhbiBiZSBlbnRlcmVkLlxyXG4gICAqIEBwYXJhbSBpbmplY3RvciBFbnZpcm9ubWVudCBvciBjdXN0b20gaW5qZWN0b3IuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiByb3V0ZSBjYW4gYmUgZW50ZXJlZC5cclxuICAgKi9cclxuICBjYW5CZUVudGVyZWQoaW5qZWN0b3I/OiBJbmplY3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGluamVjdG9yXHJcbiAgICAgID8gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCB0aGlzLl9jYW5CZUVudGVyZWQpXHJcbiAgICAgIDogdGhpcy5fY2FuQmVFbnRlcmVkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHRyYWN0cyB1cmwgcGFyYW1ldGVycyBmcm9tIGFic29sdXRlIHBhdGggZm9yIHRoaXMgcGF0aCBhbmQgZWFjaCBwYXJlbnQuXHJcbiAgICovXHJcbiAgcGFyc2VBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IFJkdFJlYWRvbmx5UGFyYW1ldGVycyB8IG51bGwge1xyXG4gICAgY29uc3QgcmVnID0gdGhpcy5hYnNvbHV0ZVJlZ2V4O1xyXG4gICAgaWYgKCFyZWcudGVzdCh1cmwpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbWF0Y2hlcyA9IHJlZy5leGVjKHVybCk7XHJcbiAgICBpZiAobWF0Y2hlcykge1xyXG4gICAgICBjb25zdCB2YWx1ZXMgPSBtYXRjaGVzLnNsaWNlKDEpLnJldmVyc2UoKTtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5maWxsKHZhbHVlcyk7XHJcbiAgICAgIGlmIChvYmopIHtcclxuICAgICAgICByZXR1cm4gbmV3IFJkdFJlYWRvbmx5UGFyYW1ldGVycyhvYmopO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsbCh2YWx1ZXM6IHN0cmluZ1tdLCByZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSkge1xyXG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXkgaW4ga2V5b2YgVF0/OiBzdHJpbmcgfCBudW1iZXIgfSA9IHt9O1xyXG4gICAgY29uc3QgcmV2ZXJzZWRQYXJhbXMgPSB0aGlzLm9yZGVyZWRQYXJhbXMuc2xpY2UoKS5yZXZlcnNlKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldmVyc2VkUGFyYW1zLmxlbmd0aCAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHJldmVyc2VkUGFyYW1zW2ldIGFzIGtleW9mIFQ7XHJcbiAgICAgIGNvbnN0IG1hcHBlZEtleSA9XHJcbiAgICAgICAgdGhpcy5wYXJhbU1hcHBpbmdzLmZpbmQoKG0pID0+IG0udXJsTmFtZSA9PT0ga2V5KT8udGFibGVOYW1lID8/IGtleTtcclxuICAgICAgbGV0IHZhbDogc3RyaW5nIHwgbnVtYmVyID0gdmFsdWVzW2ldO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX3BhcmFtTWFwW2tleV0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgdmFsID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbXNbbWFwcGVkS2V5IGFzIGtleW9mIFRdID0gdmFsO1xyXG4gICAgfVxyXG4gICAgcmVzW3RoaXMuYWJzb2x1dGVQYXRoXSA9IHBhcmFtcztcclxuXHJcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IHJldmVyc2VkUGFyYW1zLmxlbmd0aCAmJiB0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgdGhpcy5fcGFyZW50LmZpbGwodmFsdWVzLnNsaWNlKHJldmVyc2VkUGFyYW1zLmxlbmd0aCksIHJlcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmlsbHMgcGFyYW1ldGVycyBpbiBwYXRoIHdpdGggdmFsdWVzIGZyb20gcGFyYW1NYXAuXHJcbiAgICogVXNlIHdpdGhTdGF0aWNQYXJhbXMoKSBiZWZvcmVoYW5kIGluIGNhc2UgcGFyZW50IHBhdGhzIGNvbnRhaW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGFyYW1NYXAgTXVzdCBjb250YWluIGFsbCBwYXJhbWV0ZXJzIGZvciB0aGlzIHJvdXRlLlxyXG4gICAqIEByZXR1cm5zIEFic29sdXRlIHBhdGguXHJcbiAgICovXHJcbiAgY3JlYXRlQWJzb2x1dGVVcmwocGFyYW1NYXA6IFBhcnRpYWw8VD4gPSB0aGlzLl9zdGF0aWNQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsKHRoaXMuYWJzb2x1dGVQYXRoLCBwYXJhbU1hcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gUmR0U3RyaW5nVXRpbHMuam9pblBhdGhzKFxyXG4gICAgICAgIHRoaXMuX3BhcmVudC5jcmVhdGVBYnNvbHV0ZVVybCgpLFxyXG4gICAgICAgIHRoaXMuY3JlYXRlUmVsYXRpdmVVcmwocGFyYW1NYXApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVSZWxhdGl2ZVVybChwYXJhbU1hcDogUGFydGlhbDxUPiA9IHRoaXMuX3N0YXRpY1BhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsKHRoaXMucGF0aCwgcGFyYW1NYXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVVcmwocGF0aDogc3RyaW5nLCBwYXJhbU1hcDogUGFydGlhbDxUPikge1xyXG4gICAgY29uc3QgcGFyYW1OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuX3BhcmFtTWFwKTtcclxuICAgIHBhcmFtTmFtZXMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XHJcbiAgICBjb25zdCBleHRlbmRlZFBhcmFtTWFwOiBhbnkgPSB7IC4uLnBhcmFtTWFwIH07XHJcblxyXG4gICAgdGhpcy5wYXJhbU1hcHBpbmdzLmZvckVhY2goKG1hcHBpbmcpID0+IHtcclxuICAgICAgaWYgKG1hcHBpbmcudGFibGVOYW1lIGluIHBhcmFtTWFwKSB7XHJcbiAgICAgICAgZXh0ZW5kZWRQYXJhbU1hcFttYXBwaW5nLnVybE5hbWVdID0gKHBhcmFtTWFwIGFzIGFueSlbXHJcbiAgICAgICAgICBtYXBwaW5nLnRhYmxlTmFtZVxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHBhcmFtTmFtZXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShgOiR7cGFyYW19YCwgYCR7ZXh0ZW5kZWRQYXJhbU1hcFtwYXJhbSBhcyBrZXlvZiBUXX1gKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBwYXRoO1xyXG4gIH1cclxuXHJcbiAgdG9Bbmd1bGFyUm91dGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuX2J1aWx0KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGhhdmUgdG8gZmlyc3QgY2FsbCAuYnVpbGQoKSBvbiByb3V0ZSEnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUmR0QW5ndWxhclJvdXRlPFQ+KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZXMgc3RhdGljIG1hcHBpbmcgZm9yIHBhcmFtZXRlciBuYW1lcyB0YWJsZU5hbWUgLT4gdXJsTmFtZS5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIG1hcHBlZCBwYXJhbWV0ZXIgbmFtZXMuXHJcbiAgICovXHJcbiAgd2l0aFBhcmFtTWFwcGluZ3MobWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgIGNsb25lLnBhcmFtTWFwcGluZ3MgPSBtYXBwaW5ncztcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc3RhdGljIHBhcmFtZXRlcnMgZm9yIHRoaXMgcm91dGUuXHJcbiAgICogQHBhcmFtIHBhcmFtcyBTdGF0aWMgcGFyYW1ldGVycyBmb3IgdGhpcyByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBDbG9uZSBvZiB0aGlzIHdpdGggc3RhdGljIHBhcmFtZXRlcnMgc2V0LlxyXG4gICAqL1xyXG4gIHdpdGhTdGF0aWNQYXJhbXMocGFyYW1zOiBUKTogUmR0Um91dGU8VD47XHJcbiAgd2l0aFN0YXRpY1BhcmFtczxUMiBleHRlbmRzIG9iamVjdD4oXHJcbiAgICByb3V0ZTogUmR0Um91dGU8VDI+LFxyXG4gICAgcGFyYW1zOiBUMlxyXG4gICk6IFJkdFJvdXRlPFQ+O1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHBhcmFtZXRlcnMgZm9yIGl0c2VsZiBvciBwYXJlbnRzLlxyXG4gICAqIFJldHVybnMgbmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKiBAcmV0dXJucyBDbG9uZSBvZiB0aGlzIHJvdXRlIHdpdGggc3RhdGljIHBhcmFtZXRlcnMgc2V0LlxyXG4gICAqL1xyXG4gIHdpdGhTdGF0aWNQYXJhbXM8VDIgZXh0ZW5kcyBvYmplY3Q+KHBhcmFtMTogUmR0Um91dGU8VDI+IHwgVCwgcGFyYW0yPzogVDIpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG5cclxuICAgIGlmIChwYXJhbTIpIHtcclxuICAgICAgY29uc3Qgcm91dGVBYnNQYXRoID0gKHBhcmFtMSBhcyBSZHRSb3V0ZTxUMj4pLmFic29sdXRlUGF0aDtcclxuICAgICAgbGV0IGN1cnJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IGNsb25lO1xyXG5cclxuICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcclxuICAgICAgICBpZiAoY3VycmVudC5hYnNvbHV0ZVBhdGggPT09IHJvdXRlQWJzUGF0aCkge1xyXG4gICAgICAgICAgY3VycmVudC5fc3RhdGljUGFyYW1zID0gcGFyYW0yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5fcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbG9uZS5fc3RhdGljUGFyYW1zID0gcGFyYW0xIGFzIFQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFBhcmFtcykge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBjbG9uZS5fcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICB3aXRoU3RhdGVQYXJhbXMoc3RhdGVQYXJhbXM6IFBhcmFtcykge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBjbG9uZS5fc3RhdGVQYXJhbXMgPSB7IC4uLnN0YXRlUGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyBQYXJ0aWFsIG9mIG9iamVjdCB0aGF0IG9ubHkgY29udGFpbnMgcHJvcGVydGllcyBuZWNlc3NhcnkgdG8gY3JlYXRlIHRoaXMgcm91dGUuXHJcbiAgICovXHJcbiAgZXh0cmFjdFJvdXRlUGFyYW1zKHJvdzogVCk6IFBhcnRpYWw8VD4ge1xyXG4gICAgY29uc3QgcmVzOiBQYXJ0aWFsPFQ+ID0ge307XHJcblxyXG4gICAgdGhpcy5vcmRlcmVkUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hcHBpbmcgPSB0aGlzLnBhcmFtTWFwcGluZ3MuZmluZCgobSkgPT4gbS51cmxOYW1lID09PSBwYXJhbSk7XHJcbiAgICAgIGNvbnN0IG1hcHBlZFBhcmFtID0gKG1hcHBpbmc/LnRhYmxlTmFtZSA/PyBwYXJhbSkgYXMga2V5b2YgVDtcclxuICAgICAgaWYgKG1hcHBlZFBhcmFtIGluIHJvdykge1xyXG4gICAgICAgIHJlc1ttYXBwZWRQYXJhbV0gPSByb3dbbWFwcGVkUGFyYW1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgTmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKi9cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGNsb25lID0gbmV3IFJkdFJvdXRlPFQ+KCk7XHJcbiAgICBjbG9uZS5fbmFtZSA9IHRoaXMuX25hbWU7XHJcbiAgICBjbG9uZS5fcGFyZW50ID0gdGhpcy5fcGFyZW50Py5jbG9uZSgpID8/IG51bGw7XHJcbiAgICBjbG9uZS5fcGF0aCA9IHRoaXMucGF0aDtcclxuICAgIGNsb25lLl9lbnRyeURpc2FibGVkID0gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICAgIGNsb25lLm9yZGVyZWRQYXJhbXMgPSBbLi4udGhpcy5vcmRlcmVkUGFyYW1zXTtcclxuICAgIGNsb25lLl9wYXJhbU1hcCA9IHsgLi4udGhpcy5fcGFyYW1NYXAgfTtcclxuICAgIGNsb25lLl9yZWdleCA9IHRoaXMuX3JlZ2V4ID8gbmV3IFJlZ0V4cCh0aGlzLl9yZWdleCkgOiBudWxsO1xyXG4gICAgY2xvbmUucGFyYW1NYXBwaW5ncyA9IHRoaXMucGFyYW1NYXBwaW5ncztcclxuICAgIGNsb25lLl9zdGF0aWNQYXJhbXMgPSB7IC4uLnRoaXMuX3N0YXRpY1BhcmFtcyB9O1xyXG4gICAgY2xvbmUuX3N0YXRlUGFyYW1zID0geyAuLi50aGlzLl9zdGF0ZVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxufVxyXG4iXX0=","import { RdtRoute } from './rdt-route';\nconst DEFAULT_PARAM_TYPE = 'number';\nexport class RdtRouteBuilder extends RdtRoute {\n /**\n * CanBeEntered function is synchronous function which\n * lets framework hide menu buttons and disable links.\n * Function is run in environment injection context, so\n * you can inject global services, tokens, etc.\n * @param fn\n */\n withCanBeEntered(fn) {\n this._canBeEntered = fn;\n return this;\n }\n /**\n * @deprecated Use withCanBeEntered() instead.\n */\n setCanBeEntered(fn) {\n return this.withCanBeEntered(fn);\n }\n /**\n * Entry disabled route will generate disabled breadcrumb.\n * It should not have any component nor module added to it.\n * @param value\n * @returns\n */\n withEntryDisabled(value = true) {\n this._entryDisabled = value;\n return this;\n }\n /**\n * @deprecated Use withEntryDisabled() instead.\n */\n setEntryDisabled(value = true) {\n return this.withEntryDisabled(value);\n }\n /**\n * Sets path relative to parent. It is defined the same way as Angular route path including parameters.\n * You need to call setParam() for each parameter you use in the path.\n */\n withPath(path) {\n this._path = path;\n const s = path.split('/');\n const params = [];\n s.forEach((part) => {\n if (part.includes(':')) {\n const param = part.split(':')[1];\n if (param) {\n params.push(param);\n if (!this._paramMap[param]) {\n this._paramMap[param] = DEFAULT_PARAM_TYPE;\n }\n }\n }\n });\n this.orderedParams = params;\n return this;\n }\n /**\n * @deprecated Use withPath() instead.\n */\n setPath(path) {\n return this.withPath(path);\n }\n /**\n * Sets Angular route data.\n * @param data Angular route data object. Breadcrumb key is merged into it.\n */\n withData(data) {\n this._data = data;\n return this;\n }\n /**\n * @deprecated Use withData() instead.\n */\n setData(data) {\n return this.withData(data);\n }\n /**\n * Defines parameter type and lets framework parse it.\n * @param paramName\n * @param type\n */\n withParam(paramName, type) {\n this._paramMap[paramName] = type;\n return this;\n }\n /**\n * @deprecated Use withParam() instead.\n */\n setParam(paramName, type) {\n return this.withParam(paramName, type);\n }\n /**\n * Sets name to display in breadcrumb, etc.\n */\n withName(name) {\n this._name = name;\n return this;\n }\n /**\n * @deprecated Use withName() instead.\n */\n setName(name) {\n return this.withName(name);\n }\n /**\n * Call .build() on children before you call this method!\n */\n withChildren(...children) {\n this._children = children;\n for (const child of children) {\n child._parent = this;\n }\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...children) {\n return this.withChildren(...children);\n }\n build() {\n if (typeof this._path !== 'string') {\n throw new Error('Please provide path for route. Empty string is acceptable.');\n }\n this._built = true;\n this.setRegex();\n return this;\n }\n setRegex() {\n const params = Object.keys(this._paramMap);\n params.sort((a, b) => b.length - a.length);\n let substituted = this.path;\n params.forEach((p) => {\n const type = this._paramMap[p];\n if (!type) {\n throw new Error('Params is not set i');\n }\n substituted = substituted.replace(`:${p}`, RdtRouteBuilder.groups[type]);\n });\n if (substituted === '') {\n this._regex = null;\n }\n else {\n this._regex = new RegExp(substituted);\n }\n }\n static groups = {\n string: '(.+)',\n number: '(\\\\d+)',\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFFcEMsTUFBTSxPQUFPLGVBQXdDLFNBQVEsUUFBVztJQUN0RTs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFpQjtRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxFQUFpQjtRQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakIsSUFBSSxJQUFJ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V0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQVUsTUFBTSxHQUFHO1FBQy9CLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGEgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFSQU1fVFlQRSA9ICdudW1iZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQnVpbGRlcjxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlPFQ+IHtcclxuICAvKipcclxuICAgKiBDYW5CZUVudGVyZWQgZnVuY3Rpb24gaXMgc3luY2hyb25vdXMgZnVuY3Rpb24gd2hpY2hcclxuICAgKiBsZXRzIGZyYW1ld29yayBoaWRlIG1lbnUgYnV0dG9ucyBhbmQgZGlzYWJsZSBsaW5rcy5cclxuICAgKiBGdW5jdGlvbiBpcyBydW4gaW4gZW52aXJvbm1lbnQgaW5qZWN0aW9uIGNvbnRleHQsIHNvXHJcbiAgICogeW91IGNhbiBpbmplY3QgZ2xvYmFsIHNlcnZpY2VzLCB0b2tlbnMsIGV0Yy5cclxuICAgKiBAcGFyYW0gZm5cclxuICAgKi9cclxuICB3aXRoQ2FuQmVFbnRlcmVkKGZuOiAoKSA9PiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jYW5CZUVudGVyZWQgPSBmbjtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENhbkJlRW50ZXJlZCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0Q2FuQmVFbnRlcmVkKGZuOiAoKSA9PiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ2FuQmVFbnRlcmVkKGZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVudHJ5IGRpc2FibGVkIHJvdXRlIHdpbGwgZ2VuZXJhdGUgZGlzYWJsZWQgYnJlYWRjcnVtYi5cclxuICAgKiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGNvbXBvbmVudCBub3IgbW9kdWxlIGFkZGVkIHRvIGl0LlxyXG4gICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgd2l0aEVudHJ5RGlzYWJsZWQodmFsdWUgPSB0cnVlKSB7XHJcbiAgICB0aGlzLl9lbnRyeURpc2FibGVkID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhFbnRyeURpc2FibGVkKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRFbnRyeURpc2FibGVkKHZhbHVlID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aEVudHJ5RGlzYWJsZWQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBwYXRoIHJlbGF0aXZlIHRvIHBhcmVudC4gSXQgaXMgZGVmaW5lZCB0aGUgc2FtZSB3YXkgYXMgQW5ndWxhciByb3V0ZSBwYXRoIGluY2x1ZGluZyBwYXJhbWV0ZXJzLlxyXG4gICAqIFlvdSBuZWVkIHRvIGNhbGwgc2V0UGFyYW0oKSBmb3IgZWFjaCBwYXJhbWV0ZXIgeW91IHVzZSBpbiB0aGUgcGF0aC5cclxuICAgKi9cclxuICB3aXRoUGF0aChwYXRoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BhdGggPSBwYXRoO1xyXG4gICAgY29uc3QgcyA9IHBhdGguc3BsaXQoJy8nKTtcclxuICAgIGNvbnN0IHBhcmFtczogc3RyaW5nW10gPSBbXTtcclxuICAgIHMuZm9yRWFjaCgocGFydCkgPT4ge1xyXG4gICAgICBpZiAocGFydC5pbmNsdWRlcygnOicpKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW0gPSBwYXJ0LnNwbGl0KCc6JylbMV0gYXMga2V5b2YgVDtcclxuICAgICAgICBpZiAocGFyYW0pIHtcclxuICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX3BhcmFtTWFwW3BhcmFtXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wYXJhbU1hcFtwYXJhbV0gPSBERUZBVUxUX1BBUkFNX1RZUEU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JkZXJlZFBhcmFtcyA9IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFBhdGgoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoUGF0aChwYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgQW5ndWxhciByb3V0ZSBkYXRhLlxyXG4gICAqIEBwYXJhbSBkYXRhIEFuZ3VsYXIgcm91dGUgZGF0YSBvYmplY3QuIEJyZWFkY3J1bWIga2V5IGlzIG1lcmdlZCBpbnRvIGl0LlxyXG4gICAqL1xyXG4gIHdpdGhEYXRhKGRhdGE6IERhdGEpIHtcclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoRGF0YSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhOiBEYXRhKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoRGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgcGFyYW1ldGVyIHR5cGUgYW5kIGxldHMgZnJhbWV3b3JrIHBhcnNlIGl0LlxyXG4gICAqIEBwYXJhbSBwYXJhbU5hbWVcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqL1xyXG4gIHdpdGhQYXJhbShwYXJhbU5hbWU6IGtleW9mIFQsIHR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicpIHtcclxuICAgIHRoaXMuX3BhcmFtTWFwW3BhcmFtTmFtZV0gPSB0eXBlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUGFyYW0oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFBhcmFtKHBhcmFtTmFtZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIG5hbWUgdG8gZGlzcGxheSBpbiBicmVhZGNydW1iLCBldGMuXHJcbiAgICovXHJcbiAgd2l0aE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aE5hbWUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoTmFtZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGwgLmJ1aWxkKCkgb24gY2hpbGRyZW4gYmVmb3JlIHlvdSBjYWxsIHRoaXMgbWV0aG9kIVxyXG4gICAqL1xyXG4gIHdpdGhDaGlsZHJlbiguLi5jaGlsZHJlbjogUmR0Um91dGVbXSkge1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgKGNoaWxkIGFzIFJkdFJvdXRlQnVpbGRlcikuX3BhcmVudCA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhDaGlsZHJlbigpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0Q2hpbGRyZW4oLi4uY2hpbGRyZW46IFJkdFJvdXRlW10pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDaGlsZHJlbiguLi5jaGlsZHJlbik7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fcGF0aCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdQbGVhc2UgcHJvdmlkZSBwYXRoIGZvciByb3V0ZS4gRW1wdHkgc3RyaW5nIGlzIGFjY2VwdGFibGUuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYnVpbHQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRSZWdleCgpO1xyXG4gICAgcmV0dXJuIHRoaXMgYXMgUmR0Um91dGU8VD47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJlZ2V4KCkge1xyXG4gICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmtleXModGhpcy5fcGFyYW1NYXApO1xyXG4gICAgcGFyYW1zLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xyXG4gICAgbGV0IHN1YnN0aXR1dGVkID0gdGhpcy5wYXRoO1xyXG4gICAgcGFyYW1zLmZvckVhY2goKHApID0+IHtcclxuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuX3BhcmFtTWFwW3AgYXMga2V5b2YgVF07XHJcbiAgICAgIGlmICghdHlwZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyYW1zIGlzIG5vdCBzZXQgaScpO1xyXG4gICAgICB9XHJcbiAgICAgIHN1YnN0aXR1dGVkID0gc3Vic3RpdHV0ZWQucmVwbGFjZShgOiR7cH1gLCBSZHRSb3V0ZUJ1aWxkZXIuZ3JvdXBzW3R5cGVdKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzdWJzdGl0dXRlZCA9PT0gJycpIHtcclxuICAgICAgdGhpcy5fcmVnZXggPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fcmVnZXggPSBuZXcgUmVnRXhwKHN1YnN0aXR1dGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGdyb3VwcyA9IHtcclxuICAgIHN0cmluZzogJyguKyknLFxyXG4gICAgbnVtYmVyOiAnKFxcXFxkKyknLFxyXG4gIH07XHJcbn1cclxuIl19","import { DestroyRef, Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule, } from '@angular/router';\nimport { filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst EXACT_TRUE_OPTS = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\nconst EXACT_FALSE_OPTS = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\n/**\n * Directive that appends class to host if any of the watched routes is active.\n */\nexport class RdtAnyRouteActiveDirective {\n destroyRef = inject(DestroyRef);\n router = inject(Router);\n renderer = inject(Renderer2);\n elRef = inject(ElementRef);\n set anyRouteActive(data) {\n this.classes = this.parseClasses(data);\n }\n watchedRoutes = [];\n set anyRouteActiveOptions(value) {\n this._anyRouteActiveOptions = this.parseOptions(value);\n }\n _anyRouteActiveOptions = EXACT_FALSE_OPTS;\n ariaCurrentWhenActive;\n get isActive() {\n return this._isActive;\n }\n _isActive = false;\n classes = [];\n ngOnInit() {\n this.update();\n this.listenRouterEvents();\n }\n ngOnChanges(changes) {\n if (changes['anyRouteActive']?.previousValue) {\n const prev = this.parseClasses(changes['anyRouteActive'].previousValue);\n prev.forEach((c) => this.removeClass(c));\n }\n this.update();\n }\n update() {\n this._isActive = this.watchedRoutes.some((route) => {\n const param = typeof route === 'string' ? route : this.router.createUrlTree(route);\n return this.router.isActive(param, this._anyRouteActiveOptions);\n });\n this.setClasses();\n this.setAriaCurrent();\n }\n setAriaCurrent() {\n const el = this.elRef.nativeElement;\n if (this._isActive && this.ariaCurrentWhenActive !== undefined) {\n const value = this.ariaCurrentWhenActive.toString();\n this.renderer.setAttribute(el, 'aria-current', value);\n }\n else {\n this.renderer.removeAttribute(el, 'aria-current');\n }\n }\n setClasses() {\n if (this._isActive) {\n this.classes.forEach((c) => this.addClass(c));\n }\n else {\n this.classes.forEach((c) => this.removeClass(c));\n }\n }\n addClass(className) {\n this.renderer.addClass(this.elRef.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.elRef.nativeElement, className);\n }\n listenRouterEvents() {\n this.router.events\n .pipe(filter((ev) => ev instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.update());\n }\n parseClasses(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n return classes.filter((c) => !!c);\n }\n parseOptions(input) {\n if ('exact' in input) {\n if (input.exact) {\n return EXACT_TRUE_OPTS;\n }\n else {\n return EXACT_FALSE_OPTS;\n }\n }\n else {\n return input;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtAnyRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: RdtAnyRouteActiveDirective, isStandalone: true, selector: \"[rdtAnyRouteActive]\", inputs: { anyRouteActive: [\"rdtAnyRouteActive\", \"anyRouteActive\"], watchedRoutes: \"watchedRoutes\", anyRouteActiveOptions: \"anyRouteActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\" }, providers: [RouterModule], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtAnyRouteActiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtAnyRouteActive]',\n standalone: true,\n providers: [RouterModule],\n }]\n }], propDecorators: { anyRouteActive: [{\n type: Input,\n args: [{ required: true, alias: 'rdtAnyRouteActive' }]\n }], watchedRoutes: [{\n type: Input,\n args: [{ required: true }]\n }], anyRouteActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL2RpcmVjdGl2ZXMvcmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU5QixNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsT0FBTztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBeUI7SUFDN0MsS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLElBQ0ksY0FBYyxDQUFDLElBQXVCO1FBQ3hDLElB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QUEwQix1UUFGMUIsQ0FBQyxZQUFZLENBQUM7OzJGQUVkLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjs4QkFRSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7Z0JBTXJELGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXJCLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBFWEFDVF9UUlVFX09QVFM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xyXG4gIHBhdGhzOiAnZXhhY3QnLFxyXG4gIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG5jb25zdCBFWEFDVF9GQUxTRV9PUFRTOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICBwYXRoczogJ3N1YnNldCcsXHJcbiAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXBwZW5kcyBjbGFzcyB0byBob3N0IGlmIGFueSBvZiB0aGUgd2F0Y2hlZCByb3V0ZXMgaXMgYWN0aXZlLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0QW55Um91dGVBY3RpdmVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRBbnlSb3V0ZUFjdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3JkdEFueVJvdXRlQWN0aXZlJyB9KVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZShkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXJzZUNsYXNzZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHdhdGNoZWRSb3V0ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZU9wdGlvbnModmFsdWU6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyh2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FueVJvdXRlQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSBFWEFDVF9GQUxTRV9PUFRTO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFyaWFDdXJyZW50V2hlbkFjdGl2ZT86XHJcbiAgICB8ICdwYWdlJ1xyXG4gICAgfCAnc3RlcCdcclxuICAgIHwgJ2xvY2F0aW9uJ1xyXG4gICAgfCAnZGF0ZSdcclxuICAgIHwgJ3RpbWUnXHJcbiAgICB8IHRydWVcclxuICAgIHwgZmFsc2U7XHJcblxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB0aGlzLmxpc3RlblJvdXRlckV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10/LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJldiA9IHRoaXMucGFyc2VDbGFzc2VzKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIHByZXYuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX2lzQWN0aXZlID0gdGhpcy53YXRjaGVkUm91dGVzLnNvbWUoKHJvdXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID1cclxuICAgICAgICB0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnID8gcm91dGUgOiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHBhcmFtLCB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIHRoaXMuc2V0QXJpYUN1cnJlbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXJpYUN1cnJlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNBY3RpdmUgJiYgdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAnYXJpYS1jdXJyZW50JywgdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoZWwsICdhcmlhLWN1cnJlbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NlcygpIHtcclxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5hZGRDbGFzcyhjKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZXJFdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChldikgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ2xhc3NlcyhkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogZGF0YS5zcGxpdCgnICcpO1xyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjKSA9PiAhIWMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMoaW5wdXQ6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICBpZiAoJ2V4YWN0JyBpbiBpbnB1dCkge1xyXG4gICAgICBpZiAoaW5wdXQuZXhhY3QpIHtcclxuICAgICAgICByZXR1cm4gRVhBQ1RfVFJVRV9PUFRTO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBFWEFDVF9GQUxTRV9PUFRTO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { booleanAttribute, Directive, EnvironmentInjector, inject, Input, } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { RdtRoute } from '../rdt-route/rdt-route';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class RdtRouterLinkDirective {\n routerLinkRef = inject(RouterLink, { self: true });\n envInjector = inject(EnvironmentInjector);\n route;\n target = '_self';\n params;\n queryParams;\n stateParams;\n disabled = false;\n ngOnInit() {\n this.update();\n }\n ngOnChanges() {\n this.update();\n }\n update() {\n if (this.route.canBeEntered(this.envInjector) && !this.disabled) {\n this.setLink();\n }\n else {\n this.disableLink();\n }\n }\n setLink() {\n this.routerLinkRef.routerLink = this.route.createAbsoluteUrl(this.params);\n this.routerLinkRef.state = this.stateParams ?? this.route.stateParams;\n this.routerLinkRef.queryParams = this.queryParams ?? this.route.queryParams;\n this.routerLinkRef.ngOnChanges({});\n }\n disableLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.ngOnChanges({});\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.7\", type: RdtRouterLinkDirective, isStandalone: true, selector: \"[rdtRouterLink]\", inputs: { route: [\"rdtRouterLink\", \"route\"], target: \"target\", params: \"params\", queryParams: \"queryParams\", stateParams: \"stateParams\", disabled: [\"disabled\", \"disabled\", booleanAttribute] }, usesOnChanges: true, hostDirectives: [{ directive: i1.RouterLink, inputs: [\"target\", \"target\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtRouterLink]',\n standalone: true,\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: ['target'],\n },\n ],\n }]\n }], propDecorators: { route: [{\n type: Input,\n args: [{ alias: 'rdtRouterLink', required: true }]\n }], target: [{\n type: Input\n }], params: [{\n type: Input\n }], queryParams: [{\n type: Input\n }], stateParams: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLE1BQU0sRUFDTixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBWWxELE1BQU0sT0FBTyxzQkFBc0I7SUFHaEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFHM0QsS0FBSyxDQUFlO0lBR3BCLE1BQU0sR0FBNEMsT0FBTyxDQUFDO0lBRzFELE1BQU0sQ0FBYztJQUdwQixXQUFXLENBQVU7SUFHckIsV0FBVyxDQUFVO0lBR3JCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7dUdBbERVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLCtOQXFCYixnQkFBZ0I7OzJGQXJCekIsc0JBQXNCO2tCQVZsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ2Q7NEJBQ0UsU0FBUyxFQUFFLFVBQVU7NEJBQ3JCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFDbkI7cUJBQ0Y7aUJBQ0Y7OEJBUUMsS0FBSztzQkFESixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBib29sZWFuQXR0cmlidXRlLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4uL3JkdC1yb3V0ZS9yZHQtcm91dGUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0Um91dGVyTGlua10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaG9zdERpcmVjdGl2ZXM6IFtcclxuICAgIHtcclxuICAgICAgZGlyZWN0aXZlOiBSb3V0ZXJMaW5rLFxyXG4gICAgICBpbnB1dHM6IFsndGFyZ2V0J10sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZXJMaW5rRGlyZWN0aXZlPFQgZXh0ZW5kcyBvYmplY3Q+XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xyXG57XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJMaW5rUmVmID0gaW5qZWN0KFJvdXRlckxpbmssIHsgc2VsZjogdHJ1ZSB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG5cclxuICBASW5wdXQoeyBhbGlhczogJ3JkdFJvdXRlckxpbmsnLCByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHJvdXRlITogUmR0Um91dGU8VD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFyZ2V0OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgPSAnX3NlbGYnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBhcmFtcz86IFBhcnRpYWw8VD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcXVlcnlQYXJhbXM/OiBQYXJhbXM7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3RhdGVQYXJhbXM/OiBQYXJhbXM7XHJcblxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlKCkge1xyXG4gICAgaWYgKHRoaXMucm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpICYmICF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuc2V0TGluaygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNhYmxlTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSB0aGlzLnJvdXRlLmNyZWF0ZUFic29sdXRlVXJsKHRoaXMucGFyYW1zKTtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHRoaXMuc3RhdGVQYXJhbXMgPz8gdGhpcy5yb3V0ZS5zdGF0ZVBhcmFtcztcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5xdWVyeVBhcmFtcyA9IHRoaXMucXVlcnlQYXJhbXMgPz8gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcztcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc2FibGVMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLm5nT25DaGFuZ2VzKHt9KTtcclxuICB9XHJcbn1cclxuIl19","import { inject } from '@angular/core';\nimport { RdtComponentGuardStoreService } from '@ngrdt/core';\nexport const preventDataLossGuardFn = () => {\n const guardStore = inject(RdtComponentGuardStoreService);\n return guardStore.checkCanLeaveGlobal$();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1kYXRhLWxvc3MuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QixHQUFHLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UgfSBmcm9tICdAbmdyZHQvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJldmVudERhdGFMb3NzR3VhcmRGbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4gPSAoKSA9PiB7XHJcbiAgY29uc3QgZ3VhcmRTdG9yZSA9IGluamVjdChSZHRDb21wb25lbnRHdWFyZFN0b3JlU2VydmljZSk7XHJcbiAgcmV0dXJuIGd1YXJkU3RvcmUuY2hlY2tDYW5MZWF2ZUdsb2JhbCQoKTtcclxufTtcclxuIl19","import { Injectable } from '@angular/core';\nimport { GuardsCheckStart, NavigationEnd, Router, } from '@angular/router';\nimport { preventDataLossGuardFn } from './prevent-data-loss.guard';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class GlobalRouteGuardService {\n router;\n constructor(router) {\n this.router = router;\n }\n // This will help ensure that routes are automatically protected by ensuring that global guards are applied to every route\n ensureGlobalGuards() {\n let lastUrl = '';\n this.router.events.subscribe((e) => {\n // Remember last url after successful navigation\n if (e instanceof NavigationEnd) {\n lastUrl = location.href;\n }\n if (e instanceof GuardsCheckStart) {\n let lastChild = e.state.root;\n while (lastChild?.firstChild) {\n lastChild = lastChild.firstChild;\n }\n // Native back button will immediately replace url on click\n // Replace it back to last url before guard check is finished.\n // Angular will set it to correct value afterwards.\n history.replaceState(window.history.state, '', lastUrl);\n if (lastChild?.routeConfig) {\n this.ensureCanDeactivateGuards(lastChild.routeConfig);\n }\n }\n });\n }\n ensureCanDeactivateGuards(routeConfig) {\n if (!routeConfig.canDeactivate) {\n routeConfig.canDeactivate = [];\n }\n const canDeactivateGuards = routeConfig.canDeactivate;\n // ensure that the \"MySpecialCanDeactivateGuard\" is in effect.\n if (!canDeactivateGuards.find((o) => o == preventDataLossGuardFn)) {\n canDeactivateGuards.push(preventDataLossGuardFn);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: GlobalRouteGuardService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: GlobalRouteGuardService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: GlobalRouteGuardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvdXRlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL2dsb2JhbC1yb3V0ZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLDBIQUEwSDtJQUNuSCxrQkFBa0I7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELDJEQUEyRDtnQkFDM0QsOERBQThEO2dCQUM5RCxtREFBbUQ7Z0JBQ25ELE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFdEQsOERBQThEO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDbEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7dUdBeENVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBHdWFyZHNDaGVja1N0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmQsXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZXZlbnREYXRhTG9zc0d1YXJkRm4gfSBmcm9tICcuL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxSb3V0ZUd1YXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb3RlY3RlZCBieSBlbnN1cmluZyB0aGF0IGdsb2JhbCBndWFyZHMgYXJlIGFwcGxpZWQgdG8gZXZlcnkgcm91dGVcclxuICBwdWJsaWMgZW5zdXJlR2xvYmFsR3VhcmRzKCkge1xyXG4gICAgbGV0IGxhc3RVcmwgPSAnJztcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIC8vIFJlbWVtYmVyIGxhc3QgdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBsYXN0VXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpIHtcclxuICAgICAgICBsZXQgbGFzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gZS5zdGF0ZS5yb290O1xyXG4gICAgICAgIHdoaWxlIChsYXN0Q2hpbGQ/LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOYXRpdmUgYmFjayBidXR0b24gd2lsbCBpbW1lZGlhdGVseSByZXBsYWNlIHVybCBvbiBjbGlja1xyXG4gICAgICAgIC8vIFJlcGxhY2UgaXQgYmFjayB0byBsYXN0IHVybCBiZWZvcmUgZ3VhcmQgY2hlY2sgaXMgZmluaXNoZWQuXHJcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHNldCBpdCB0byBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuXHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsICcnLCBsYXN0VXJsKTtcclxuXHJcbiAgICAgICAgaWYgKGxhc3RDaGlsZD8ucm91dGVDb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FuRGVhY3RpdmF0ZUd1YXJkcyhsYXN0Q2hpbGQucm91dGVDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNhbkRlYWN0aXZhdGVHdWFyZHMocm91dGVDb25maWc6IFJvdXRlKSB7XHJcbiAgICBpZiAoIXJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpIHtcclxuICAgICAgcm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGVHdWFyZHMgPSByb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBcIk15U3BlY2lhbENhbkRlYWN0aXZhdGVHdWFyZFwiIGlzIGluIGVmZmVjdC5cclxuICAgIGlmICghY2FuRGVhY3RpdmF0ZUd1YXJkcy5maW5kKChvKSA9PiBvID09IHByZXZlbnREYXRhTG9zc0d1YXJkRm4pKSB7XHJcbiAgICAgIGNhbkRlYWN0aXZhdGVHdWFyZHMucHVzaChwcmV2ZW50RGF0YUxvc3NHdWFyZEZuKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbmdyZHQtcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngrdt-router.mjs","sources":["../tmp-esm2022/lib/services/rdt-cannot-be-entered.token.js","../tmp-esm2022/lib/services/rdt-confirm-data-loss.service.js","../tmp-esm2022/lib/rdt-route/utils.js","../tmp-esm2022/lib/services/rdt-routes.token.js","../tmp-esm2022/lib/services/rdt-router.service.js","../tmp-esm2022/lib/rdt-route/constants.js","../tmp-esm2022/lib/rdt-route/rdt-angular-route.js","../tmp-esm2022/lib/rdt-route/rdt-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-builder.js","../tmp-esm2022/lib/directives/rdt-any-route-active.directive.js","../tmp-esm2022/lib/directives/rdt-back-link.directive.js","../tmp-esm2022/lib/directives/rdt-router-link.directive.js","../tmp-esm2022/lib/guards/prevent-data-loss.guard.js","../tmp-esm2022/lib/guards/global-route-guard.service.js","../tmp-esm2022/ngrdt-router.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n/**\n * Injection token that defines behavior when route cannot be entered (canBeEntered returns false).\n * If value is undefined, route will be redirected to ''.\n */\nexport const RDT_CANNOT_BE_ENTERED_PROVIDER = new InjectionToken('RDT_CANNOT_BE_ENTERED', { factory: () => undefined, providedIn: 'root' });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1jYW5ub3QtYmUtZW50ZXJlZC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUU5RCx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0UmVkaXJlY3RGbiwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZWZpbmVzIGJlaGF2aW9yIHdoZW4gcm91dGUgY2Fubm90IGJlIGVudGVyZWQgKGNhbkJlRW50ZXJlZCByZXR1cm5zIGZhbHNlKS5cbiAqIElmIHZhbHVlIGlzIHVuZGVmaW5lZCwgcm91dGUgd2lsbCBiZSByZWRpcmVjdGVkIHRvICcnLlxuICovXG5leHBvcnQgY29uc3QgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRSZWRpcmVjdEZuIHwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlXG4+KCdSRFRfQ0FOTk9UX0JFX0VOVEVSRUQnLCB7IGZhY3Rvcnk6ICgpID0+IHVuZGVmaW5lZCwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { defer, of } from 'rxjs';\nexport const RDT_CONFIRM_DATA_LOSS_SERVICE = new InjectionToken('RDT_CONFIRM_DATA_LOSS_SERVICE', { factory: () => new RdtConfirmDataLossServiceAlert() });\nexport class RdtConfirmDataLossService {\n}\nexport class RdtConfirmDataLossServiceAlert extends RdtConfirmDataLossService {\n confirmDataLoss() {\n return defer(() => of(confirm('Are you sure you want to leave this page?')));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvc2VydmljZXMvcmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQ2hCLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLEVBQUUsQ0FDeEQsQ0FBQztBQUVKLE1BQU0sT0FBZ0IseUJBQXlCO0NBRTlDO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNsRSxlQUFlO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9DT05GSVJNX0RBVEFfTE9TU19TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmR0Q29uZmlybURhdGFMb3NzU2VydmljZT4oXHJcbiAgICAnUkRUX0NPTkZJUk1fREFUQV9MT1NTX1NFUlZJQ0UnLFxyXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBuZXcgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZUFsZXJ0KCkgfVxyXG4gICk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZSB7XHJcbiAgYWJzdHJhY3QgY29uZmlybURhdGFMb3NzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlQWxlcnQgZXh0ZW5kcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlIHtcclxuICBvdmVycmlkZSBjb25maXJtRGF0YUxvc3MoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cclxuICAgICAgb2YoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT8nKSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtReadonlyParameters {\n params;\n constructor(params = {}) {\n this.params = params;\n }\n get(route) {\n return this.params[route.absolutePath] ?? null;\n }\n}\nexport class RdtParameters extends RdtReadonlyParameters {\n set(route, params) {\n this.params[route.absolutePath] = params;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCQSxNQUFNLE9BQU8scUJBQXFCO0lBQ0Q7SUFBL0IsWUFBK0IsU0FBNEIsRUFBRTtRQUE5QixXQUFNLEdBQU4sTUFBTSxDQUF3QjtJQUFHLENBQUM7SUFFakUsR0FBRyxDQUFtQixLQUFrQjtRQUN0QyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBZ0IsSUFBSSxJQUFJLENBQUM7SUFDakUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxxQkFBcUI7SUFDdEQsR0FBRyxDQUFtQixLQUFrQixFQUFFLE1BQWtCO1FBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtVHlwZU1hcDxUPiA9IHtcclxuICBba2V5IGluIGtleW9mIFRdPzogJ3N0cmluZycgfCAnbnVtYmVyJztcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1NYXBwaW5nIHtcclxuICB1cmxOYW1lOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljUm91dGVQYXJhbXMge1xyXG4gIFthYnNvbHV0ZVBhdGg6IHN0cmluZ106IG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmR0UmVkaXJlY3RSZXR1cm5UeXBlID0gc3RyaW5nIHwgdm9pZCB8IHVuZGVmaW5lZDtcclxuXHJcbmV4cG9ydCB0eXBlIFJkdFJlZGlyZWN0Rm4gPSAoXHJcbiAgY3VycmVudFBhdGg6IHN0cmluZyxcclxuICB0YXJnZXRQYXRoOiBzdHJpbmcsXHJcbiAgdGFyZ2V0Um91dGU6IFJkdFJvdXRlXHJcbikgPT4gUmR0UmVkaXJlY3RSZXR1cm5UeXBlO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJlYWRvbmx5UGFyYW1ldGVycyB7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBhcmFtczogU3RhdGljUm91dGVQYXJhbXMgPSB7fSkge31cclxuXHJcbiAgZ2V0PFQgZXh0ZW5kcyBvYmplY3Q+KHJvdXRlOiBSZHRSb3V0ZTxUPik6IFBhcnRpYWw8VD4gfCBudWxsIHtcclxuICAgIHJldHVybiAodGhpcy5wYXJhbXNbcm91dGUuYWJzb2x1dGVQYXRoXSBhcyBQYXJ0aWFsPFQ+KSA/PyBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFBhcmFtZXRlcnMgZXh0ZW5kcyBSZHRSZWFkb25seVBhcmFtZXRlcnMge1xyXG4gIHNldDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4sIHBhcmFtczogUGFydGlhbDxUPikge1xyXG4gICAgdGhpcy5wYXJhbXNbcm91dGUuYWJzb2x1dGVQYXRoXSA9IHBhcmFtcztcclxuICB9XHJcbn1cclxuIl19","import { InjectionToken } from '@angular/core';\nexport const RDT_ROUTES_PROVIDER = new InjectionToken('RDT_ROUTES_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZHQtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSRFRfUk9VVEVTX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJkdFJvdXRlW10+KFxyXG4gICdSRFRfUk9VVEVTX1BST1ZJREVSJ1xyXG4pO1xyXG4iXX0=","import { Location, PlatformLocation } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { filter, take } from 'rxjs';\nimport { RdtReadonlyParameters } from '../rdt-route/utils';\nimport { RDT_ROUTES_PROVIDER } from './rdt-routes.token';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_TARGET = '_self';\nconst RDT_STATE_PARAMS_KEY = 'RdtStateParams';\nexport class RdtRouterService {\n allRoutes = inject(RDT_ROUTES_PROVIDER, { optional: true });\n location = inject(Location);\n router = inject(Router);\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n _previousUrl = null;\n _currentUrl = null;\n get previousUrl() {\n return this._previousUrl;\n }\n get currentUrl() {\n return this._currentUrl;\n }\n parsePreviousUrl() {\n return this._previousUrl ? this.parseAbsoluteUrl(this._previousUrl) : null;\n }\n parseCurrentUrl() {\n return this._currentUrl ? this.parseAbsoluteUrl(this._currentUrl) : null;\n }\n navigationEnd$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n nextNavigationEnd$ = this.navigationEnd$.pipe(take(1));\n constructor() {\n if (this.allRoutes === null) {\n console.warn('All routes not provided. Make sure to provide RDT_ROUTES_PROVIDER with RdtRoute[].');\n this.allRoutes = [];\n }\n this.navigationEnd$.subscribe((e) => {\n this._previousUrl = this._currentUrl;\n this._currentUrl = e.url;\n });\n }\n /**\n * @returns window.history.state extended by state parameters passed from parent window.\n */\n getHistoryState() {\n if ('RdtStateParams' in window &&\n typeof window[RDT_STATE_PARAMS_KEY] === 'object') {\n return { ...window[RDT_STATE_PARAMS_KEY], ...(history.state ?? {}) };\n }\n else {\n return history.state ?? {};\n }\n }\n /**\n * Navigates to the specified route.\n * @param link Route to navigate to.\n * @param params Parameter of route passed as first argument.\n * @param extras Allows you to specify additional parameters for navigation. These extras have higher priority than those defined in the route.\n * @returns Promise that resolves when navigation is complete.\n */\n navigate(link, params, extras) {\n const url = params\n ? link.createAbsoluteUrl(params)\n : link.createAbsoluteUrl();\n const target = extras?.target ?? DEFAULT_TARGET;\n const queryParams = extras?.query ?? link.queryParams;\n const stateParams = extras?.state ?? link.stateParams;\n if (target === '_self') {\n return this.router.navigate([url], {\n queryParams: queryParams,\n state: stateParams,\n replaceUrl: extras?.replaceUrl,\n });\n }\n const absolutePath = RdtStringUtils.createAbsoluteUrl(url, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n const win = window.open(pathWithParams, target);\n if (win) {\n win[RDT_STATE_PARAMS_KEY] = stateParams;\n }\n return Promise.resolve(true);\n }\n navigateHome(extras) {\n return this.router.navigateByUrl(RdtStringUtils.appendQueryParams('/', extras?.query ?? {}), {\n state: extras?.state,\n replaceUrl: extras?.replaceUrl,\n });\n }\n navigateBack(extras) {\n const parsed = this.parseAbsoluteUrl();\n if (parsed) {\n let route = parsed.route.withStaticParams(parsed.params);\n do {\n route = route.parent;\n } while (route && route.entryDisabled);\n // In case route has no ancestor with allowed entry,\n if (!route) {\n return this.navigateHome(extras);\n }\n if (extras) {\n if (extras.query) {\n route = route.withQueryParams(extras.query);\n }\n if (extras.state) {\n route = route.withStateParams(extras.state);\n }\n }\n return this.navigate(route, extras);\n }\n else {\n console.warn(`Cannot go back from ${this.location.path()} because no route matches current url`);\n return null;\n }\n }\n /**\n * This method will try to find matching route for given absolute URL, extract its parameters and return them.\n * If no route matches the URL, it returns null. Parameters are extracted only for the last matching route, not ancestors.\n * @param url Absolute URL to parse (e.g. '/home/details/123?query=abc').\n * @returns Object containing the matching route and its parameters, or null if no route is matching.\n */\n parseAbsoluteUrl(url = this.location.path()) {\n if (this.allRoutes) {\n for (const route of this.allRoutes) {\n const params = route.parseAbsoluteUrl(url);\n if (params) {\n return { route, params };\n }\n }\n }\n return null;\n }\n extractAllParams(currentRoute) {\n if (!currentRoute) {\n const parsed = this.parseAbsoluteUrl();\n if (!parsed) {\n console.warn('No route matches current url.');\n return new RdtReadonlyParameters();\n }\n currentRoute = parsed.route;\n }\n const url = this.location.path();\n return currentRoute.parseAbsoluteUrl(url);\n }\n isParentOfCurrentLocation(route) {\n return true;\n }\n removeQueryParams(...paramNames) {\n const regex = new RegExp(`[?&](${paramNames.join('|')})=[^&]*`, 'g');\n return history.replaceState(history.state, '', location.pathname + location.search.replace(regex, '').replace(/^&/, '?'));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVN6RCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUs5QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVwRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFbEUsWUFBWSxHQUFrQixJQUFJLENBQUM7SUFDbkMsV0FBVyxHQUFrQixJQUFJLENBQUM7SUFFMUMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENB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OUMsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDckMsQ0FBQztZQUNELFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFlO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUcsVUFBb0I7UUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFckUsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUN6QixPQUFPLENBQUMsS0FBSyxFQUNiLEVBQUUsRUFDRixRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUMxRSxDQUFDO0lBQ0osQ0FBQzt1R0F0TFUsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24sIFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRTdHJpbmdVdGlscyB9IGZyb20gJ0BuZ3JkdC91dGlscyc7XHJcbmltcG9ydCB7IGZpbHRlciwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4uL3JkdC1yb3V0ZS9yZHQtcm91dGUnO1xyXG5pbXBvcnQgeyBSZHRSZWFkb25seVBhcmFtZXRlcnMgfSBmcm9tICcuLi9yZHQtcm91dGUvdXRpbHMnO1xyXG5pbXBvcnQgeyBSRFRfUk9VVEVTX1BST1ZJREVSIH0gZnJvbSAnLi9yZHQtcm91dGVzLnRva2VuJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmR0TmF2aWdhdGVFeHRyYXMge1xyXG4gIHN0YXRlPzogUGFyYW1zO1xyXG4gIHF1ZXJ5PzogUGFyYW1zO1xyXG4gIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJztcclxuICByZXBsYWNlVXJsPzogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgREVGQVVMVF9UQVJHRVQgPSAnX3NlbGYnO1xyXG5jb25zdCBSRFRfU1RBVEVfUEFSQU1TX0tFWSA9ICdSZHRTdGF0ZVBhcmFtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0Um91dGVyU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgYWxsUm91dGVzID0gaW5qZWN0KFJEVF9ST1VURVNfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlSHJlZiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKS5nZXRCYXNlSHJlZkZyb21ET00oKTtcclxuXHJcbiAgcHJpdmF0ZSBfcHJldmlvdXNVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgcHJldmlvdXNVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNVcmw7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VXJsO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VQcmV2aW91c1VybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1VybCA/IHRoaXMucGFyc2VBYnNvbHV0ZVVybCh0aGlzLl9wcmV2aW91c1VybCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VDdXJyZW50VXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRVcmwgPyB0aGlzLnBhcnNlQWJzb2x1dGVVcmwodGhpcy5fY3VycmVudFVybCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgbmF2aWdhdGlvbkVuZCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuICAgIGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXHJcbiAgKSBhcyBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+O1xyXG5cclxuICByZWFkb25seSBuZXh0TmF2aWdhdGlvbkVuZCQgPSB0aGlzLm5hdmlnYXRpb25FbmQkLnBpcGUodGFrZSgxKSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgaWYgKHRoaXMuYWxsUm91dGVzID09PSBudWxsKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAnQWxsIHJvdXRlcyBub3QgcHJvdmlkZWQuIE1ha2Ugc3VyZSB0byBwcm92aWRlIFJEVF9ST1VURVNfUFJPVklERVIgd2l0aCBSZHRSb3V0ZVtdLidcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5hbGxSb3V0ZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLl9wcmV2aW91c1VybCA9IHRoaXMuX2N1cnJlbnRVcmw7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRVcmwgPSBlLnVybDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgd2luZG93Lmhpc3Rvcnkuc3RhdGUgZXh0ZW5kZWQgYnkgc3RhdGUgcGFyYW1ldGVycyBwYXNzZWQgZnJvbSBwYXJlbnQgd2luZG93LlxyXG4gICAqL1xyXG4gIGdldEhpc3RvcnlTdGF0ZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgJ1JkdFN0YXRlUGFyYW1zJyBpbiB3aW5kb3cgJiZcclxuICAgICAgdHlwZW9mIHdpbmRvd1tSRFRfU1RBVEVfUEFSQU1TX0tFWV0gPT09ICdvYmplY3QnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHsgLi4ud2luZG93W1JEVF9TVEFURV9QQVJBTVNfS0VZXSwgLi4uKGhpc3Rvcnkuc3RhdGUgPz8ge30pIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaGlzdG9yeS5zdGF0ZSA/PyB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIHJvdXRlLlxyXG4gICAqIEBwYXJhbSBsaW5rIFJvdXRlIHRvIG5hdmlnYXRlIHRvLlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVyIG9mIHJvdXRlIHBhc3NlZCBhcyBmaXJzdCBhcmd1bWVudC5cclxuICAgKiBAcGFyYW0gZXh0cmFzIEFsbG93cyB5b3UgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIG5hdmlnYXRpb24uIFRoZXNlIGV4dHJhcyBoYXZlIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRob3NlIGRlZmluZWQgaW4gdGhlIHJvdXRlLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIG5hdmlnYXRpb24gaXMgY29tcGxldGUuXHJcbiAgICovXHJcbiAgbmF2aWdhdGU8VCBleHRlbmRzIG9iamVjdD4oXHJcbiAgICBsaW5rOiBSZHRSb3V0ZTxUPixcclxuICAgIHBhcmFtcz86IFBhcnRpYWw8VD4sXHJcbiAgICBleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhc1xyXG4gICkge1xyXG4gICAgY29uc3QgdXJsID0gcGFyYW1zXHJcbiAgICAgID8gbGluay5jcmVhdGVBYnNvbHV0ZVVybChwYXJhbXMpXHJcbiAgICAgIDogbGluay5jcmVhdGVBYnNvbHV0ZVVybCgpO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IGV4dHJhcz8udGFyZ2V0ID8/IERFRkFVTFRfVEFSR0VUO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBleHRyYXM/LnF1ZXJ5ID8/IGxpbmsucXVlcnlQYXJhbXM7XHJcbiAgICBjb25zdCBzdGF0ZVBhcmFtcyA9IGV4dHJhcz8uc3RhdGUgPz8gbGluay5zdGF0ZVBhcmFtcztcclxuXHJcbiAgICBpZiAodGFyZ2V0ID09PSAnX3NlbGYnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcclxuICAgICAgICBzdGF0ZTogc3RhdGVQYXJhbXMsXHJcbiAgICAgICAgcmVwbGFjZVVybDogZXh0cmFzPy5yZXBsYWNlVXJsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBSZHRTdHJpbmdVdGlscy5jcmVhdGVBYnNvbHV0ZVVybCh1cmwsIHRoaXMuYmFzZUhyZWYpO1xyXG4gICAgY29uc3QgcGF0aFdpdGhQYXJhbXMgPSBSZHRTdHJpbmdVdGlscy5hcHBlbmRRdWVyeVBhcmFtcyhcclxuICAgICAgYWJzb2x1dGVQYXRoLFxyXG4gICAgICBxdWVyeVBhcmFtc1xyXG4gICAgKTtcclxuICAgIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKHBhdGhXaXRoUGFyYW1zLCB0YXJnZXQpO1xyXG4gICAgaWYgKHdpbikge1xyXG4gICAgICAod2luIGFzIGFueSlbUkRUX1NUQVRFX1BBUkFNU19LRVldID0gc3RhdGVQYXJhbXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVIb21lKGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcclxuICAgICAgUmR0U3RyaW5nVXRpbHMuYXBwZW5kUXVlcnlQYXJhbXMoJy8nLCBleHRyYXM/LnF1ZXJ5ID8/IHt9KSxcclxuICAgICAge1xyXG4gICAgICAgIHN0YXRlOiBleHRyYXM/LnN0YXRlLFxyXG4gICAgICAgIHJlcGxhY2VVcmw6IGV4dHJhcz8ucmVwbGFjZVVybCxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlQmFjayhleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhcykge1xyXG4gICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICBpZiAocGFyc2VkKSB7XHJcbiAgICAgIGxldCByb3V0ZTogUmR0Um91dGUgfCBudWxsID0gcGFyc2VkLnJvdXRlLndpdGhTdGF0aWNQYXJhbXMocGFyc2VkLnBhcmFtcyk7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICByb3V0ZSA9IHJvdXRlLnBhcmVudDtcclxuICAgICAgfSB3aGlsZSAocm91dGUgJiYgcm91dGUuZW50cnlEaXNhYmxlZCk7XHJcblxyXG4gICAgICAvLyBJbiBjYXNlIHJvdXRlIGhhcyBubyBhbmNlc3RvciB3aXRoIGFsbG93ZWQgZW50cnksXHJcbiAgICAgIGlmICghcm91dGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUhvbWUoZXh0cmFzKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXh0cmFzKSB7XHJcbiAgICAgICAgaWYgKGV4dHJhcy5xdWVyeSkge1xyXG4gICAgICAgICAgcm91dGUgPSByb3V0ZS53aXRoUXVlcnlQYXJhbXMoZXh0cmFzLnF1ZXJ5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dHJhcy5zdGF0ZSkge1xyXG4gICAgICAgICAgcm91dGUgPSByb3V0ZS53aXRoU3RhdGVQYXJhbXMoZXh0cmFzLnN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUocm91dGUsIGV4dHJhcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYENhbm5vdCBnbyBiYWNrIGZyb20gJHt0aGlzLmxvY2F0aW9uLnBhdGgoKX0gYmVjYXVzZSBubyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGZpbmQgbWF0Y2hpbmcgcm91dGUgZm9yIGdpdmVuIGFic29sdXRlIFVSTCwgZXh0cmFjdCBpdHMgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZW0uXHJcbiAgICogSWYgbm8gcm91dGUgbWF0Y2hlcyB0aGUgVVJMLCBpdCByZXR1cm5zIG51bGwuIFBhcmFtZXRlcnMgYXJlIGV4dHJhY3RlZCBvbmx5IGZvciB0aGUgbGFzdCBtYXRjaGluZyByb3V0ZSwgbm90IGFuY2VzdG9ycy5cclxuICAgKiBAcGFyYW0gdXJsIEFic29sdXRlIFVSTCB0byBwYXJzZSAoZS5nLiAnL2hvbWUvZGV0YWlscy8xMjM/cXVlcnk9YWJjJykuXHJcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hdGNoaW5nIHJvdXRlIGFuZCBpdHMgcGFyYW1ldGVycywgb3IgbnVsbCBpZiBubyByb3V0ZSBpcyBtYXRjaGluZy5cclxuICAgKi9cclxuICBwYXJzZUFic29sdXRlVXJsKHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpKSB7XHJcbiAgICBpZiAodGhpcy5hbGxSb3V0ZXMpIHtcclxuICAgICAgZm9yIChjb25zdCByb3V0ZSBvZiB0aGlzLmFsbFJvdXRlcykge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHJvdXRlLnBhcnNlQWJzb2x1dGVVcmwodXJsKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICByZXR1cm4geyByb3V0ZSwgcGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RBbGxQYXJhbXMoY3VycmVudFJvdXRlPzogUmR0Um91dGUpOiBSZHRSZWFkb25seVBhcmFtZXRlcnMgfCBudWxsIHtcclxuICAgIGlmICghY3VycmVudFJvdXRlKSB7XHJcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VBYnNvbHV0ZVVybCgpO1xyXG4gICAgICBpZiAoIXBhcnNlZCkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybignTm8gcm91dGUgbWF0Y2hlcyBjdXJyZW50IHVybC4nKTtcclxuICAgICAgICByZXR1cm4gbmV3IFJkdFJlYWRvbmx5UGFyYW1ldGVycygpO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnRSb3V0ZSA9IHBhcnNlZC5yb3V0ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZS5wYXJzZUFic29sdXRlVXJsKHVybCk7XHJcbiAgfVxyXG5cclxuICBpc1BhcmVudE9mQ3VycmVudExvY2F0aW9uKHJvdXRlOiBSZHRSb3V0ZSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVRdWVyeVBhcmFtcyguLi5wYXJhbU5hbWVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBbPyZdKCR7cGFyYW1OYW1lcy5qb2luKCd8Jyl9KT1bXiZdKmAsICdnJyk7XHJcblxyXG4gICAgcmV0dXJuIGhpc3RvcnkucmVwbGFjZVN0YXRlKFxyXG4gICAgICBoaXN0b3J5LnN0YXRlLFxyXG4gICAgICAnJyxcclxuICAgICAgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2gucmVwbGFjZShyZWdleCwgJycpLnJlcGxhY2UoL14mLywgJz8nKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19","export var RdtNavigationSource;\n(function (RdtNavigationSource) {\n RdtNavigationSource[\"BREADCRUMB\"] = \"breadcrumb\";\n})(RdtNavigationSource || (RdtNavigationSource = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19","import { Location } from '@angular/common';\nimport { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { RDT_CANNOT_BE_ENTERED_PROVIDER } from '../services/rdt-cannot-be-entered.token';\nimport { RdtNavigationSource } from './constants';\nexport class RdtAngularRoute {\n route;\n children = [];\n // Must be set from component declaration files\n loadChildren;\n component;\n providers = [];\n resolvers = {};\n canActivate = [];\n canActivateChild = [];\n canDeactivate = [];\n runGuardsAndResolvers;\n data;\n constructor(route) {\n this.route = route;\n }\n provide(...providers) {\n this.providers.push(...providers);\n return this;\n }\n withModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n /**\n * @deprecated Use withModule() instead.\n */\n setModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n withComponent(comp) {\n this.component = comp;\n return this;\n }\n /**\n * @deprecated Use withComponent() instead.\n */\n setComponent(comp) {\n return this.withComponent(comp);\n }\n withChildren(...routes) {\n this.children = routes;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...routes) {\n return this.withChildren(...routes);\n }\n addResolve(paramName, resolver) {\n this.resolvers[paramName] = resolver;\n return this;\n }\n addCanActivate(...fns) {\n this.canActivate.push(...fns);\n return this;\n }\n addCanDeactivate(...fns) {\n this.canDeactivate.push(...fns);\n return this;\n }\n addCanActivateChild(...fns) {\n this.canActivateChild.push(...fns);\n return this;\n }\n withRunGuardsAndResolvers(value) {\n this.runGuardsAndResolvers = value;\n return this;\n }\n /**\n * @deprecated Use withRunGuardsAndResolvers() instead.\n */\n setRunGuardsAndResolvers(value) {\n return this.withRunGuardsAndResolvers(value);\n }\n build() {\n this.checkChildrenMatch();\n let res = {\n path: this.route.path,\n providers: this.providers,\n title: this.route.name,\n canMatch: this.getCanMatch(),\n };\n if (this.component) {\n res.component = this.component;\n }\n else if (this.loadChildren) {\n res.loadChildren = this.loadChildren;\n }\n res.data = this.data ?? {\n breadcrumb: {\n label: this.route.name,\n disable: this.route.entryDisabled,\n staticStateParams: {\n src: RdtNavigationSource.BREADCRUMB,\n },\n },\n ...this.route.data,\n };\n const guard = (route, state) => {\n const injector = inject(EnvironmentInjector);\n if (runInInjectionContext(injector, this.route.canBeEntered.bind(this.route))) {\n return true;\n }\n else {\n const router = inject(Router);\n const location = inject(Location);\n let url = inject(RDT_CANNOT_BE_ENTERED_PROVIDER);\n if (typeof url === 'function') {\n //console.error(this.route.absolutePath);\n url = runInInjectionContext(injector, url.bind(url, location.path(), state.url, this.route));\n }\n if (typeof url === 'string') {\n return router.parseUrl(url);\n }\n else {\n return false;\n }\n }\n };\n this.canActivate.push(guard);\n res.canActivate = this.canActivate;\n res.canDeactivate = this.canDeactivate;\n // If children exist, change\n // {\n // path: '/path',\n // component: FeatureComponent,\n // children: [...]\n // }\n // into\n // {\n // path: '/path',\n // children: [\n // {\n // path: '',\n // component: FeatureComponent\n // },\n // ...\n // ]\n // }\n if (this.children.length > 0) {\n if (this.loadChildren || this.component) {\n const path = res.path;\n res.path = '';\n res.pathMatch = 'full';\n res.canMatch = undefined;\n res = {\n path: path,\n children: [res, ...this.children],\n canActivateChild: this.canActivateChild,\n canMatch: this.getCanMatch(),\n };\n }\n else {\n res.children = this.children;\n }\n }\n if (Object.keys(this.resolvers).length > 0) {\n res.resolve = this.resolvers;\n }\n if (this.runGuardsAndResolvers) {\n res.runGuardsAndResolvers = this.runGuardsAndResolvers;\n }\n return res;\n }\n getCanMatch() {\n const paramMap = this.route.paramMap;\n const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');\n if (!hasNumberParams) {\n return undefined;\n }\n const routeSegmentLength = this.route.path.split('/').length;\n const regex = this.route.regex\n ? new RegExp(`^${this.route.regex.source}$`)\n : this.route.absoluteRegex;\n return [\n (route, segments) => {\n const path = segments\n .slice(0, routeSegmentLength)\n .map((s) => s.path)\n .join('/');\n return regex.test(path);\n },\n ];\n }\n checkChildrenMatch() {\n // Check that all routes are present if route is not\n // lazy loaded module.\n if (!this.loadChildren &&\n (this.route.children.length > 0 || this.children.length > 0)) {\n if (this.children.length < this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children\n .map((ch) => ch.name)\n .join(', ')}`);\n }\n else if (this.children.length > this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children\n .map((ch) => ch.path)\n .join(', ')}`);\n }\n const n1 = this.children.map((ch) => ch.path);\n const n2 = this.route.children.map((ch) => ch.path);\n n1.sort();\n n2.sort();\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n throw new Error(`Paths of children provided in RdtRoute and\r\n RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);\n }\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLE1BQU0sRUFFTixxQkFBcUIsR0FFdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQVVMLE1BQU0sR0FJUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLE9BQU8sZUFBZTtJQUNsQixLQUFLLENBQWM7SUFDbkIsUUFBUSxHQUFZLEVBQUUsQ0FBQztJQUUvQiwrQ0FBK0M7SUFDdkMsWUFBWSxDQUF3QjtJQUNwQyxTQUFTLENBQWE7SUFDdEIsU0FBUyxHQUF3QyxFQUFFLENBQUM7SUFDcEQsU0FBUyxHQUEwQyxFQUFFLENBQUM7SUFDdEQsV0FBVyxHQUFvQixFQUFFLENBQUM7SUFDbEMsZ0JBQWdCLEdBQXlCLEVBQUUsQ0FBQztJQUM1QyxhQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUN6QyxxQkFBcUIsQ0FBeUI7SUFDOUMsSUFBSSxDQUFRO0lBRXBCLFlBQVksS0FBa0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLFNBQTBCO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQThCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFFBQThCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFlO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLElBQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBRyxNQUFlO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEdBQUcsTUFBZTtRQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWlCLEVBQUUsUUFBNEI7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQUcsR0FBb0I7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHLEdBQTJCO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBRyxHQUF5QjtRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBNEI7UUFDcEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILHdCQUF3QixDQUFDLEtBQTRCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxHQUFHLEdBQVU7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQzdCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2dCQUNqQyxpQkFBaUIsRUFBRTtvQkFDakIsR0FBRyxFQUFFLG1CQUFtQixDQUFDLFVBQVU7aUJBQ3BDO2FBQ0Y7WUFDRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtTQUNuQixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQWtCLENBQzNCLEtBQTZCLEVBQzdCLEtBQTBCLEVBQzFCLEVBQUU7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM3QyxJQUNFLHFCQUFxQixDQUNuQixRQUFRLEVBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDekMsRUFDRCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztnQkFDakQsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDOUIseUNBQXlDO29CQUN6QyxHQUFHLEdBQUcscUJBQXFCLENBQ3pCLFFBQVEsRUFDUixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQ3RELENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM1QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNuQyxHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFdkMsNEJBQTRCO1FBQzVCLElBQUk7UUFDSixvQkFBb0I7UUFDcEIsa0NBQWtDO1FBQ2xDLHFCQUFxQjtRQUNyQixJQUFJO1FBQ0osT0FBTztRQUNQLElBQUk7UUFDSixvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLFNBQVM7UUFDVCxtQkFBbUI7UUFDbkIscUNBQXFDO1FBQ3JDLFVBQVU7UUFDVixTQUFTO1FBQ1QsT0FBTztRQUNQLE9BQU87UUFDUCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNkLEdBQUcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO2dCQUN2QixHQUFHLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztnQkFDekIsR0FBRyxHQUFHO29CQUNKLElBQUksRUFBRSxJQUFJO29CQUNWLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ2pDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7b0JBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO2lCQUM3QixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3pELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3JDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUNoRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQVksQ0FBQyxLQUFLLFFBQVEsQ0FDM0MsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUM1QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM1QyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDN0IsT0FBTztZQUNMLENBQUMsS0FBWSxFQUFFLFFBQXNCLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUTtxQkFDbEIsS0FBSyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQztxQkFDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3FCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixvREFBb0Q7UUFDcEQsc0JBQXNCO1FBQ3RCLElBQ0UsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNsQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQzVELENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0RCxNQUFNLElBQUksS0FBSyxDQUNiLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQ3RCLHNDQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFDaEIsd0pBQXdKLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtxQkFDeEssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLEtBQUssQ0FDYixZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUN0QixzQ0FDRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQ2hCLCtKQUErSixJQUFJLENBQUMsUUFBUTtxQkFDekssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUNiOzRDQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXHJcbiAgaW5qZWN0LFxyXG4gIFByb3ZpZGVyLFxyXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuRGVhY3RpdmF0ZUZuLFxyXG4gIENhbk1hdGNoRm4sXHJcbiAgRGF0YSxcclxuICBMb2FkQ2hpbGRyZW5DYWxsYmFjayxcclxuICBSZXNvbHZlRm4sXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgUnVuR3VhcmRzQW5kUmVzb2x2ZXJzLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSIH0gZnJvbSAnLi4vc2VydmljZXMvcmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuJztcclxuaW1wb3J0IHsgUmR0TmF2aWdhdGlvblNvdXJjZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuL3JkdC1yb3V0ZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0QW5ndWxhclJvdXRlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJvdXRlOiBSZHRSb3V0ZTxUPjtcclxuICBwcml2YXRlIGNoaWxkcmVuOiBSb3V0ZVtdID0gW107XHJcblxyXG4gIC8vIE11c3QgYmUgc2V0IGZyb20gY29tcG9uZW50IGRlY2xhcmF0aW9uIGZpbGVzXHJcbiAgcHJpdmF0ZSBsb2FkQ2hpbGRyZW4/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaztcclxuICBwcml2YXRlIGNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuICBwcml2YXRlIHByb3ZpZGVyczogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXTtcclxuICBwcml2YXRlIHJlc29sdmVyczogeyBba2V5OiBzdHJpbmddOiBSZXNvbHZlRm48dW5rbm93bj4gfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGVDaGlsZDogQ2FuQWN0aXZhdGVDaGlsZEZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGU6IENhbkRlYWN0aXZhdGVGbjxUPltdID0gW107XHJcbiAgcHJpdmF0ZSBydW5HdWFyZHNBbmRSZXNvbHZlcnM/OiBSdW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcbiAgcHJpdmF0ZSBkYXRhPzogRGF0YTtcclxuXHJcbiAgY29uc3RydWN0b3Iocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlKC4uLnByb3ZpZGVyczogVHlwZTx1bmtub3duPltdKSB7XHJcbiAgICB0aGlzLnByb3ZpZGVycy5wdXNoKC4uLnByb3ZpZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoTW9kdWxlKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB3aXRoQ29tcG9uZW50KGNvbXA6IFR5cGU8YW55Pikge1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ29tcG9uZW50KCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ29tcG9uZW50KGNvbXApO1xyXG4gIH1cclxuXHJcbiAgd2l0aENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IHJvdXRlcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENoaWxkcmVuKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDaGlsZHJlbiguLi5yb3V0ZXM6IFJvdXRlW10pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDaGlsZHJlbiguLi5yb3V0ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkUmVzb2x2ZShwYXJhbU5hbWU6IHN0cmluZywgcmVzb2x2ZXI6IFJlc29sdmVGbjx1bmtub3duPikge1xyXG4gICAgdGhpcy5yZXNvbHZlcnNbcGFyYW1OYW1lXSA9IHJlc29sdmVyO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZSguLi5mbnM6IENhbkFjdGl2YXRlRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkRlYWN0aXZhdGUoLi4uZm5zOiBDYW5EZWFjdGl2YXRlRm48YW55PltdKSB7XHJcbiAgICB0aGlzLmNhbkRlYWN0aXZhdGUucHVzaCguLi5mbnMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZUNoaWxkKC4uLmZuczogQ2FuQWN0aXZhdGVDaGlsZEZuW10pIHtcclxuICAgIHRoaXMuY2FuQWN0aXZhdGVDaGlsZC5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWU6IFJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgdGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMgPSB2YWx1ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycygpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UnVuR3VhcmRzQW5kUmVzb2x2ZXJzKHZhbHVlOiBSdW5HdWFyZHNBbmRSZXNvbHZlcnMpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGQoKTogUm91dGUge1xyXG4gICAgdGhpcy5jaGVja0NoaWxkcmVuTWF0Y2goKTtcclxuXHJcbiAgICBsZXQgcmVzOiBSb3V0ZSA9IHtcclxuICAgICAgcGF0aDogdGhpcy5yb3V0ZS5wYXRoLFxyXG4gICAgICBwcm92aWRlcnM6IHRoaXMucHJvdmlkZXJzLFxyXG4gICAgICB0aXRsZTogdGhpcy5yb3V0ZS5uYW1lLFxyXG4gICAgICBjYW5NYXRjaDogdGhpcy5nZXRDYW5NYXRjaCgpLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jb21wb25lbnQpIHtcclxuICAgICAgcmVzLmNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmxvYWRDaGlsZHJlbikge1xyXG4gICAgICByZXMubG9hZENoaWxkcmVuID0gdGhpcy5sb2FkQ2hpbGRyZW47XHJcbiAgICB9XHJcblxyXG4gICAgcmVzLmRhdGEgPSB0aGlzLmRhdGEgPz8ge1xyXG4gICAgICBicmVhZGNydW1iOiB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMucm91dGUubmFtZSxcclxuICAgICAgICBkaXNhYmxlOiB0aGlzLnJvdXRlLmVudHJ5RGlzYWJsZWQsXHJcbiAgICAgICAgc3RhdGljU3RhdGVQYXJhbXM6IHtcclxuICAgICAgICAgIHNyYzogUmR0TmF2aWdhdGlvblNvdXJjZS5CUkVBRENSVU1CLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLnRoaXMucm91dGUuZGF0YSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZ3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoXHJcbiAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KFxyXG4gICAgICAgICAgaW5qZWN0b3IsXHJcbiAgICAgICAgICB0aGlzLnJvdXRlLmNhbkJlRW50ZXJlZC5iaW5kKHRoaXMucm91dGUpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XHJcbiAgICAgICAgbGV0IHVybCA9IGluamVjdChSRFRfQ0FOTk9UX0JFX0VOVEVSRURfUFJPVklERVIpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IodGhpcy5yb3V0ZS5hYnNvbHV0ZVBhdGgpO1xyXG4gICAgICAgICAgdXJsID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxyXG4gICAgICAgICAgICBpbmplY3RvcixcclxuICAgICAgICAgICAgdXJsLmJpbmQodXJsLCBsb2NhdGlvbi5wYXRoKCksIHN0YXRlLnVybCwgdGhpcy5yb3V0ZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIHJvdXRlci5wYXJzZVVybCh1cmwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKGd1YXJkKTtcclxuXHJcbiAgICByZXMuY2FuQWN0aXZhdGUgPSB0aGlzLmNhbkFjdGl2YXRlO1xyXG4gICAgcmVzLmNhbkRlYWN0aXZhdGUgPSB0aGlzLmNhbkRlYWN0aXZhdGU7XHJcblxyXG4gICAgLy8gSWYgY2hpbGRyZW4gZXhpc3QsIGNoYW5nZVxyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNvbXBvbmVudDogRmVhdHVyZUNvbXBvbmVudCxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbLi4uXVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaW50b1xyXG4gICAgLy8ge1xyXG4gICAgLy8gICAgcGF0aDogJy9wYXRoJyxcclxuICAgIC8vICAgIGNoaWxkcmVuOiBbXHJcbiAgICAvLyAgICAgIHtcclxuICAgIC8vICAgICAgICBwYXRoOiAnJyxcclxuICAgIC8vICAgICAgICBjb21wb25lbnQ6IEZlYXR1cmVDb21wb25lbnRcclxuICAgIC8vICAgICAgfSxcclxuICAgIC8vICAgIC4uLlxyXG4gICAgLy8gICAgXVxyXG4gICAgLy8gICAgfVxyXG4gICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkQ2hpbGRyZW4gfHwgdGhpcy5jb21wb25lbnQpIHtcclxuICAgICAgICBjb25zdCBwYXRoID0gcmVzLnBhdGg7XHJcbiAgICAgICAgcmVzLnBhdGggPSAnJztcclxuICAgICAgICByZXMucGF0aE1hdGNoID0gJ2Z1bGwnO1xyXG4gICAgICAgIHJlcy5jYW5NYXRjaCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXMgPSB7XHJcbiAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgY2hpbGRyZW46IFtyZXMsIC4uLnRoaXMuY2hpbGRyZW5dLFxyXG4gICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLFxyXG4gICAgICAgICAgY2FuTWF0Y2g6IHRoaXMuZ2V0Q2FuTWF0Y2goKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5yZXNvbHZlcnMpLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmVzLnJlc29sdmUgPSB0aGlzLnJlc29sdmVycztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMpIHtcclxuICAgICAgcmVzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHRoaXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENhbk1hdGNoKCk6IENhbk1hdGNoRm5bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucm91dGUucGFyYW1NYXA7XHJcbiAgICBjb25zdCBoYXNOdW1iZXJQYXJhbXMgPSBPYmplY3Qua2V5cyhwYXJhbU1hcCkuc29tZShcclxuICAgICAgKHApID0+IHBhcmFtTWFwW3AgYXMga2V5b2YgVF0gPT09ICdudW1iZXInXHJcbiAgICApO1xyXG4gICAgaWYgKCFoYXNOdW1iZXJQYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvdXRlU2VnbWVudExlbmd0aCA9IHRoaXMucm91dGUucGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcclxuICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5yb3V0ZS5yZWdleFxyXG4gICAgICA/IG5ldyBSZWdFeHAoYF4ke3RoaXMucm91dGUucmVnZXguc291cmNlfSRgKVxyXG4gICAgICA6IHRoaXMucm91dGUuYWJzb2x1dGVSZWdleDtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIChyb3V0ZTogUm91dGUsIHNlZ21lbnRzOiBVcmxTZWdtZW50W10pID0+IHtcclxuICAgICAgICBjb25zdCBwYXRoID0gc2VnbWVudHNcclxuICAgICAgICAgIC5zbGljZSgwLCByb3V0ZVNlZ21lbnRMZW5ndGgpXHJcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnBhdGgpXHJcbiAgICAgICAgICAuam9pbignLycpO1xyXG4gICAgICAgIHJldHVybiByZWdleC50ZXN0KHBhdGgpO1xyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDaGlsZHJlbk1hdGNoKCkge1xyXG4gICAgLy8gQ2hlY2sgdGhhdCBhbGwgcm91dGVzIGFyZSBwcmVzZW50IGlmIHJvdXRlIGlzIG5vdFxyXG4gICAgLy8gbGF6eSBsb2FkZWQgbW9kdWxlLlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sb2FkQ2hpbGRyZW4gJiZcclxuICAgICAgKHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgUmR0Um91dGUgJHt0aGlzLnJvdXRlLm5hbWV9IGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGlsZHJlbiwgYnV0IFJkdEFuZ3VsYXJSb3V0ZSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0uIFRoZXNlIG51bWJlcnMgbXVzdCBtYXRjaC4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuc2V0Q2hpbGRyZW4oKSBtZXRob2QgaW4gZ2xvYmFsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgbmFtZXMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5yb3V0ZS5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gubmFtZSlcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBSZHRSb3V0ZSAke3RoaXMucm91dGUubmFtZX0gaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9IGNoaWxkcmVuLCBidXQgUmR0QW5ndWxhclJvdXRlIGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfS4gVGhlc2UgbnVtYmVycyBtdXN0IG1hdGNoLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5zZXRDaGlsZHJlbigpIG1ldGhvZCBpbiBmZWF0dXJlIHNoZWxsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgcGF0aHMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gucGF0aClcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbjEgPSB0aGlzLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGghKTtcclxuICAgICAgY29uc3QgbjIgPSB0aGlzLnJvdXRlLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGgpO1xyXG4gICAgICBuMS5zb3J0KCk7XHJcbiAgICAgIG4yLnNvcnQoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChuMVtpXSAhPT0gbjJbaV0pIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYFBhdGhzIG9mIGNoaWxkcmVuIHByb3ZpZGVkIGluIFJkdFJvdXRlIGFuZFxyXG4gICAgICAgICAgICBSZHRBbmd1bGFyUm91dGUgZG8gbm90IG1hdGNoLiAke24xW2ldfSAhPSAke24yW2ldfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { RdtAngularRoute } from './rdt-angular-route';\nimport { RdtReadonlyParameters } from './utils';\nexport function ALWAYS_TRUE() {\n return true;\n}\nexport class RdtRoute {\n orderedParams = [];\n _paramMap = {};\n _regex = null;\n paramMappings = [];\n _staticParams = {};\n _queryParams = {};\n _stateParams = {};\n _data = {};\n _name;\n _path;\n _parent = null;\n _children = [];\n _entryDisabled = false;\n _canBeEntered = ALWAYS_TRUE;\n _built = false;\n _absoluteRegex;\n /**\n * Map of parameters and their types.\n */\n get paramMap() {\n return this._paramMap;\n }\n /**\n * Human readable name for display in breadcrumbs, title, etc.\n */\n get name() {\n return this._name;\n }\n /**\n * Path of the route relative to parent route.\n */\n get path() {\n return this._path;\n }\n /**\n * Parent route.\n */\n get parent() {\n return this._parent;\n }\n /**\n * Child routes.\n */\n get children() {\n return this._children;\n }\n /**\n * Absolute path of parent route or '/' if there is no parent.\n * Hostname excluded.\n */\n get basePath() {\n return this._parent ? this._parent.absolutePath : '/';\n }\n /**\n * Absolute path of the route. Hostname excluded.\n */\n get absolutePath() {\n return RdtStringUtils.joinPaths(this.basePath, this._path);\n }\n /**\n * Regular expression route path relative to parent route.\n * Hostname excluded.\n */\n get regex() {\n return this._regex;\n }\n /**\n * Regular expression to match only this route (not children\n * or parent routes). Hostname excluded.\n */\n get absoluteRegex() {\n if (this._absoluteRegex) {\n return this._absoluteRegex;\n }\n if (!this._regex) {\n this._absoluteRegex = new RegExp('^/$');\n if (this._parent) {\n throw new Error('Nested route with empty path is not allowed.');\n }\n }\n else if (this._parent) {\n // Remove initial ^ and ending $\n const parent = this._parent.absoluteRegex.source.slice(1, -1);\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');\n }\n else {\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');\n }\n return this._absoluteRegex;\n }\n /**\n * Denotes disabled route entry.\n * If true, route should have no NgModule\n * or component and only serves as virtual module\n * for breadcrumb.\n */\n get entryDisabled() {\n return this._entryDisabled;\n }\n /**\n * Statically set state params used when navigating to this instance.\n */\n get stateParams() {\n return this._stateParams;\n }\n /**\n * Statically set query params used when navigating to this instance.\n */\n get queryParams() {\n return this._queryParams;\n }\n /**\n * @param url Absolute path to test.\n * @returns True if url matches this route.\n */\n testUrl(url) {\n return this.absoluteRegex.test(url);\n }\n /**\n * Statically set parameters used when navigating to this instance.\n */\n get staticParams() {\n return { ...this._staticParams };\n }\n get hasCanBeEnteredGuard() {\n return this._canBeEntered !== ALWAYS_TRUE;\n }\n /**\n * Data that is passed to Angular route definition.\n */\n get data() {\n return this._data;\n }\n /**\n * Meta guard that is used by [rdtRouterLink] and RdtMenu\n * to determine if route can be entered.\n * @param injector Environment or custom injector.\n * @returns True if route can be entered.\n */\n canBeEntered(injector) {\n return injector\n ? runInInjectionContext(injector, this._canBeEntered)\n : this._canBeEntered();\n }\n /**\n * Extracts url parameters from absolute path for this path and each parent.\n */\n parseAbsoluteUrl(url) {\n const reg = this.absoluteRegex;\n if (!reg.test(url)) {\n return null;\n }\n const matches = reg.exec(url);\n if (matches) {\n const values = matches.slice(1).reverse();\n const obj = this.fill(values);\n if (obj) {\n return new RdtReadonlyParameters(obj);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n fill(values, res = {}) {\n const params = {};\n const reversedParams = this.orderedParams.slice().reverse();\n for (let i = 0; i < reversedParams.length && i < values.length; i++) {\n const key = reversedParams[i];\n const mappedKey = this.paramMappings.find((m) => m.urlName === key)?.tableName ?? key;\n let val = values[i];\n if (this._paramMap[key] === 'number') {\n val = parseInt(val);\n }\n params[mappedKey] = val;\n }\n res[this.absolutePath] = params;\n if (values.length > reversedParams.length && this._parent) {\n this._parent.fill(values.slice(reversedParams.length), res);\n }\n return res;\n }\n /**\n * Fills parameters in path with values from paramMap.\n * Use withStaticParams() beforehand in case parent paths contain parameters.\n * @param paramMap Must contain all parameters for this route.\n * @returns Absolute path.\n */\n createAbsoluteUrl(paramMap = this._staticParams) {\n if (!this._parent) {\n return this.createUrl(this.absolutePath, paramMap);\n }\n else {\n return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));\n }\n }\n createRelativeUrl(paramMap = this._staticParams) {\n return this.createUrl(this.path, paramMap);\n }\n createUrl(path, paramMap) {\n const paramNames = Object.keys(this._paramMap);\n paramNames.sort((a, b) => b.length - a.length);\n const extendedParamMap = { ...paramMap };\n this.paramMappings.forEach((mapping) => {\n if (mapping.tableName in paramMap) {\n extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];\n }\n });\n paramNames.forEach((param) => {\n if (!(param in extendedParamMap)) {\n throw new Error(`Param ${param} is missing for route ${this.absolutePath}. Please pass object with required parameters.`);\n }\n const value = extendedParamMap[param];\n path = path.replace(`:${param}`, `${value}`);\n });\n return path;\n }\n toAngularRoute() {\n if (!this._built) {\n throw new Error('You have to first call .build() on route!');\n }\n return new RdtAngularRoute(this);\n }\n /**\n * Provides static mapping for parameter names tableName -> urlName.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with mapped parameter names.\n */\n withParamMappings(mappings) {\n const clone = this.clone();\n clone.paramMappings = mappings;\n return clone;\n }\n /**\n * Sets parameters for itself or parents.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with static parameters set.\n */\n withStaticParams(param1, param2) {\n const clone = this.clone();\n if (param2) {\n const routeAbsPath = param1.absolutePath;\n let current = clone;\n while (current) {\n if (current.absolutePath === routeAbsPath) {\n current._staticParams = param2;\n }\n current = current._parent;\n }\n }\n else {\n clone._staticParams = param1;\n }\n return clone;\n }\n withQueryParams(queryParams) {\n const clone = this.clone();\n clone._queryParams = { ...queryParams };\n return clone;\n }\n withStateParams(stateParams) {\n const clone = this.clone();\n clone._stateParams = { ...stateParams };\n return clone;\n }\n /**\n * @returns Partial of object that only contains properties necessary to create this route.\n */\n extractRouteParams(row) {\n const res = {};\n this.orderedParams.forEach((param) => {\n const mapping = this.paramMappings.find((m) => m.urlName === param);\n const mappedParam = (mapping?.tableName ?? param);\n if (mappedParam in row) {\n res[mappedParam] = row[mappedParam];\n }\n });\n return res;\n }\n /**\n * @returns New instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n */\n clone() {\n const clone = new RdtRoute();\n clone._name = this._name;\n clone._parent = this._parent?.clone() ?? null;\n clone._path = this.path;\n clone._entryDisabled = this._entryDisabled;\n clone.orderedParams = [...this.orderedParams];\n clone._paramMap = { ...this._paramMap };\n clone._regex = this._regex ? new RegExp(this._regex) : null;\n clone.paramMappings = this.paramMappings;\n clone._staticParams = { ...this._staticParams };\n clone._stateParams = { ...this._stateParams };\n return clone;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBOEIscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUUsTUFBTSxVQUFVLFdBQVc7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFDVCxhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBa0IsSUFBSSxDQUFDO0lBQzdCLGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLEtBQUssR0FBUyxFQUFFLENBQUM7SUFFakIsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFVO0lBQ2YsT0FBTyxHQUFvQixJQUFJLENBQUM7SUFDaEMsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGFBQWEsR0FBa0IsV0FBVyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFakIsY0FBYyxDQUFVO0lBRWhDOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsZ0NBQWdDO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FDOUIsR0FBRyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUNqRSxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksTUFBTSxDQUM5QixHQUFHLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQzlELENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLFFBQW1CO1FBQzlCLE9BQU8sUUFBUTtZQUNiLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNyRCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sSUFBSSxDQUFDLE1BQWdCLEVBQUUsTUFBMkIsRUFBRTtRQUMxRCxNQUFNLE1BQU0sR0FBMkMsRUFBRSxDQUFDO1FBQzFELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwRSxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFZLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUUsU0FBUyxJQUFJLEdBQUcsQ0FBQztZQUN0RSxJQUFJLEdBQUcsR0FBb0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQW9CLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckMsQ0FBQztRQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRWhDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxXQUF1QixJQUFJLENBQUMsYUFBYTtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxjQUFjLENBQUMsU0FBUyxDQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FDakMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBdUIsSUFBSSxDQUFDLGFBQWE7UUFDekQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFZLEVBQUUsUUFBb0I7UUFDbEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sZ0JBQWdCLEdBQVEsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckMsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUksUUFBZ0IsQ0FDbkQsT0FBTyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUNiLFNBQVMsS0FBSyx5QkFBeUIsSUFBSSxDQUFDLFlBQVksZ0RBQWdELENBQ3pHLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO1lBQ2pELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLElBQUksZUFBZSxDQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLFFBQXdCO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFhRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFvQixNQUF3QixFQUFFLE1BQVc7UUFDdkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFlBQVksR0FBSSxNQUF1QixDQUFDLFlBQVksQ0FBQztZQUMzRCxJQUFJLE9BQU8sR0FBb0IsS0FBSyxDQUFDO1lBRXJDLE9BQU8sT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLFlBQVksRUFBRSxDQUFDO29CQUMxQyxPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFDakMsQ0FBQztnQkFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsYUFBYSxHQUFHLE1BQVcsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQW1CO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxlQUFlLENBQUMsV0FBbUI7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsR0FBTTtRQUN2QixNQUFNLEdBQUcsR0FBZSxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNwRSxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFZLENBQUM7WUFDN0QsSUFBSSxXQUFXLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxFQUFLLENBQUM7UUFDaEMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDOUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUQsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoRCxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGEsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFN0cmluZ1V0aWxzIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgUmR0QW5ndWxhclJvdXRlIH0gZnJvbSAnLi9yZHQtYW5ndWxhci1yb3V0ZSc7XHJcbmltcG9ydCB7IFBhcmFtTWFwcGluZywgUGFyYW1UeXBlTWFwLCBSZHRSZWFkb25seVBhcmFtZXRlcnMgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBTFdBWVNfVFJVRSgpIHtcclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IHtcclxuICBwcm90ZWN0ZWQgb3JkZXJlZFBhcmFtczogc3RyaW5nW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX3BhcmFtTWFwOiBQYXJhbVR5cGVNYXA8VD4gPSB7fTtcclxuICBwcm90ZWN0ZWQgX3JlZ2V4OiBSZWdFeHAgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgcGFyYW1NYXBwaW5nczogUGFyYW1NYXBwaW5nW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX3N0YXRpY1BhcmFtczogUGFydGlhbDxUPiA9IHt9O1xyXG4gIHByb3RlY3RlZCBfcXVlcnlQYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG4gIHByb3RlY3RlZCBfc3RhdGVQYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG4gIHByb3RlY3RlZCBfZGF0YTogRGF0YSA9IHt9O1xyXG5cclxuICBwcm90ZWN0ZWQgX25hbWUhOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIF9wYXRoITogc3RyaW5nO1xyXG4gIHByb3RlY3RlZCBfcGFyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCBfY2hpbGRyZW46IFJkdFJvdXRlW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX2VudHJ5RGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX2NhbkJlRW50ZXJlZDogKCkgPT4gYm9vbGVhbiA9IEFMV0FZU19UUlVFO1xyXG4gIHByb3RlY3RlZCBfYnVpbHQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfYWJzb2x1dGVSZWdleD86IFJlZ0V4cDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWFwIG9mIHBhcmFtZXRlcnMgYW5kIHRoZWlyIHR5cGVzLlxyXG4gICAqL1xyXG4gIGdldCBwYXJhbU1hcCgpOiBSZWFkb25seTxQYXJhbVR5cGVNYXA8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9wYXJhbU1hcDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIGRpc3BsYXkgaW4gYnJlYWRjcnVtYnMsIHRpdGxlLCBldGMuXHJcbiAgICovXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhdGggb2YgdGhlIHJvdXRlIHJlbGF0aXZlIHRvIHBhcmVudCByb3V0ZS5cclxuICAgKi9cclxuICBnZXQgcGF0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wYXRoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyZW50IHJvdXRlLlxyXG4gICAqL1xyXG4gIGdldCBwYXJlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hpbGQgcm91dGVzLlxyXG4gICAqL1xyXG4gIGdldCBjaGlsZHJlbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgcGFyZW50IHJvdXRlIG9yICcvJyBpZiB0aGVyZSBpcyBubyBwYXJlbnQuXHJcbiAgICogSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGJhc2VQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50ID8gdGhpcy5fcGFyZW50LmFic29sdXRlUGF0aCA6ICcvJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgdGhlIHJvdXRlLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVQYXRoKCkge1xyXG4gICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyh0aGlzLmJhc2VQYXRoLCB0aGlzLl9wYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiByb3V0ZSBwYXRoIHJlbGF0aXZlIHRvIHBhcmVudCByb3V0ZS5cclxuICAgKiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgcmVnZXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVnZXg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggb25seSB0aGlzIHJvdXRlIChub3QgY2hpbGRyZW5cclxuICAgKiBvciBwYXJlbnQgcm91dGVzKS4gSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGFic29sdXRlUmVnZXgoKTogUmVnRXhwIHtcclxuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVJlZ2V4KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVJlZ2V4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5fcmVnZXgpIHtcclxuICAgICAgdGhpcy5fYWJzb2x1dGVSZWdleCA9IG5ldyBSZWdFeHAoJ14vJCcpO1xyXG4gICAgICBpZiAodGhpcy5fcGFyZW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXN0ZWQgcm91dGUgd2l0aCBlbXB0eSBwYXRoIGlzIG5vdCBhbGxvd2VkLicpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BhcmVudCkge1xyXG4gICAgICAvLyBSZW1vdmUgaW5pdGlhbCBeIGFuZCBlbmRpbmcgJFxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9wYXJlbnQuYWJzb2x1dGVSZWdleC5zb3VyY2Uuc2xpY2UoMSwgLTEpO1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgICAnXicgKyBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHMocGFyZW50LCB0aGlzLl9yZWdleC5zb3VyY2UpICsgJyQnXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgICAnXicgKyBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHMoJy8nLCB0aGlzLl9yZWdleC5zb3VyY2UpICsgJyQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVSZWdleDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbm90ZXMgZGlzYWJsZWQgcm91dGUgZW50cnkuXHJcbiAgICogSWYgdHJ1ZSwgcm91dGUgc2hvdWxkIGhhdmUgbm8gTmdNb2R1bGVcclxuICAgKiBvciBjb21wb25lbnQgYW5kIG9ubHkgc2VydmVzIGFzIHZpcnR1YWwgbW9kdWxlXHJcbiAgICogZm9yIGJyZWFkY3J1bWIuXHJcbiAgICovXHJcbiAgZ2V0IGVudHJ5RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXRpY2FsbHkgc2V0IHN0YXRlIHBhcmFtcyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBzdGF0ZVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGF0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXRpY2FsbHkgc2V0IHF1ZXJ5IHBhcmFtcyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBxdWVyeVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSB1cmwgQWJzb2x1dGUgcGF0aCB0byB0ZXN0LlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdXJsIG1hdGNoZXMgdGhpcyByb3V0ZS5cclxuICAgKi9cclxuICB0ZXN0VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZVJlZ2V4LnRlc3QodXJsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXRpY2FsbHkgc2V0IHBhcmFtZXRlcnMgdXNlZCB3aGVuIG5hdmlnYXRpbmcgdG8gdGhpcyBpbnN0YW5jZS5cclxuICAgKi9cclxuICBnZXQgc3RhdGljUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5fc3RhdGljUGFyYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQ2FuQmVFbnRlcmVkR3VhcmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQmVFbnRlcmVkICE9PSBBTFdBWVNfVFJVRTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGEgdGhhdCBpcyBwYXNzZWQgdG8gQW5ndWxhciByb3V0ZSBkZWZpbml0aW9uLlxyXG4gICAqL1xyXG4gIGdldCBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRhIGd1YXJkIHRoYXQgaXMgdXNlZCBieSBbcmR0Um91dGVyTGlua10gYW5kIFJkdE1lbnVcclxuICAgKiB0byBkZXRlcm1pbmUgaWYgcm91dGUgY2FuIGJlIGVudGVyZWQuXHJcbiAgICogQHBhcmFtIGluamVjdG9yIEVudmlyb25tZW50IG9yIGN1c3RvbSBpbmplY3Rvci5cclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHJvdXRlIGNhbiBiZSBlbnRlcmVkLlxyXG4gICAqL1xyXG4gIGNhbkJlRW50ZXJlZChpbmplY3Rvcj86IEluamVjdG9yKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5qZWN0b3JcclxuICAgICAgPyBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsIHRoaXMuX2NhbkJlRW50ZXJlZClcclxuICAgICAgOiB0aGlzLl9jYW5CZUVudGVyZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3RzIHVybCBwYXJhbWV0ZXJzIGZyb20gYWJzb2x1dGUgcGF0aCBmb3IgdGhpcyBwYXRoIGFuZCBlYWNoIHBhcmVudC5cclxuICAgKi9cclxuICBwYXJzZUFic29sdXRlVXJsKHVybDogc3RyaW5nKTogUmR0UmVhZG9ubHlQYXJhbWV0ZXJzIHwgbnVsbCB7XHJcbiAgICBjb25zdCByZWcgPSB0aGlzLmFic29sdXRlUmVnZXg7XHJcbiAgICBpZiAoIXJlZy50ZXN0KHVybCkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtYXRjaGVzID0gcmVnLmV4ZWModXJsKTtcclxuICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlcyA9IG1hdGNoZXMuc2xpY2UoMSkucmV2ZXJzZSgpO1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmZpbGwodmFsdWVzKTtcclxuICAgICAgaWYgKG9iaikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmR0UmVhZG9ubHlQYXJhbWV0ZXJzKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsKHZhbHVlczogc3RyaW5nW10sIHJlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleSBpbiBrZXlvZiBUXT86IHN0cmluZyB8IG51bWJlciB9ID0ge307XHJcbiAgICBjb25zdCByZXZlcnNlZFBhcmFtcyA9IHRoaXMub3JkZXJlZFBhcmFtcy5zbGljZSgpLnJldmVyc2UoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV2ZXJzZWRQYXJhbXMubGVuZ3RoICYmIGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qga2V5ID0gcmV2ZXJzZWRQYXJhbXNbaV0gYXMga2V5b2YgVDtcclxuICAgICAgY29uc3QgbWFwcGVkS2V5ID1cclxuICAgICAgICB0aGlzLnBhcmFtTWFwcGluZ3MuZmluZCgobSkgPT4gbS51cmxOYW1lID09PSBrZXkpPy50YWJsZU5hbWUgPz8ga2V5O1xyXG4gICAgICBsZXQgdmFsOiBzdHJpbmcgfCBudW1iZXIgPSB2YWx1ZXNbaV07XHJcblxyXG4gICAgICBpZiAodGhpcy5fcGFyYW1NYXBba2V5XSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICB2YWwgPSBwYXJzZUludCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtc1ttYXBwZWRLZXkgYXMga2V5b2YgVF0gPSB2YWw7XHJcbiAgICB9XHJcbiAgICByZXNbdGhpcy5hYnNvbHV0ZVBhdGhdID0gcGFyYW1zO1xyXG5cclxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gcmV2ZXJzZWRQYXJhbXMubGVuZ3RoICYmIHRoaXMuX3BhcmVudCkge1xyXG4gICAgICB0aGlzLl9wYXJlbnQuZmlsbCh2YWx1ZXMuc2xpY2UocmV2ZXJzZWRQYXJhbXMubGVuZ3RoKSwgcmVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWxscyBwYXJhbWV0ZXJzIGluIHBhdGggd2l0aCB2YWx1ZXMgZnJvbSBwYXJhbU1hcC5cclxuICAgKiBVc2Ugd2l0aFN0YXRpY1BhcmFtcygpIGJlZm9yZWhhbmQgaW4gY2FzZSBwYXJlbnQgcGF0aHMgY29udGFpbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXJhbU1hcCBNdXN0IGNvbnRhaW4gYWxsIHBhcmFtZXRlcnMgZm9yIHRoaXMgcm91dGUuXHJcbiAgICogQHJldHVybnMgQWJzb2x1dGUgcGF0aC5cclxuICAgKi9cclxuICBjcmVhdGVBYnNvbHV0ZVVybChwYXJhbU1hcDogUGFydGlhbDxUPiA9IHRoaXMuX3N0YXRpY1BhcmFtcyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmwodGhpcy5hYnNvbHV0ZVBhdGgsIHBhcmFtTWFwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHMoXHJcbiAgICAgICAgdGhpcy5fcGFyZW50LmNyZWF0ZUFic29sdXRlVXJsKCksXHJcbiAgICAgICAgdGhpcy5jcmVhdGVSZWxhdGl2ZVVybChwYXJhbU1hcClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZVJlbGF0aXZlVXJsKHBhcmFtTWFwOiBQYXJ0aWFsPFQ+ID0gdGhpcy5fc3RhdGljUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmwodGhpcy5wYXRoLCBwYXJhbU1hcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVVybChwYXRoOiBzdHJpbmcsIHBhcmFtTWFwOiBQYXJ0aWFsPFQ+KSB7XHJcbiAgICBjb25zdCBwYXJhbU5hbWVzID0gT2JqZWN0LmtleXModGhpcy5fcGFyYW1NYXApO1xyXG4gICAgcGFyYW1OYW1lcy5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcclxuICAgIGNvbnN0IGV4dGVuZGVkUGFyYW1NYXA6IGFueSA9IHsgLi4ucGFyYW1NYXAgfTtcclxuXHJcbiAgICB0aGlzLnBhcmFtTWFwcGluZ3MuZm9yRWFjaCgobWFwcGluZykgPT4ge1xyXG4gICAgICBpZiAobWFwcGluZy50YWJsZU5hbWUgaW4gcGFyYW1NYXApIHtcclxuICAgICAgICBleHRlbmRlZFBhcmFtTWFwW21hcHBpbmcudXJsTmFtZV0gPSAocGFyYW1NYXAgYXMgYW55KVtcclxuICAgICAgICAgIG1hcHBpbmcudGFibGVOYW1lXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcGFyYW1OYW1lcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBpZiAoIShwYXJhbSBpbiBleHRlbmRlZFBhcmFtTWFwKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBQYXJhbSAke3BhcmFtfSBpcyBtaXNzaW5nIGZvciByb3V0ZSAke3RoaXMuYWJzb2x1dGVQYXRofS4gUGxlYXNlIHBhc3Mgb2JqZWN0IHdpdGggcmVxdWlyZWQgcGFyYW1ldGVycy5gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV4dGVuZGVkUGFyYW1NYXBbcGFyYW0gYXMga2V5b2YgVF07XHJcbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYDoke3BhcmFtfWAsIGAke3ZhbHVlfWApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICB0b0FuZ3VsYXJSb3V0ZSgpIHtcclxuICAgIGlmICghdGhpcy5fYnVpbHQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBmaXJzdCBjYWxsIC5idWlsZCgpIG9uIHJvdXRlIScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSZHRBbmd1bGFyUm91dGU8VD4odGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlcyBzdGF0aWMgbWFwcGluZyBmb3IgcGFyYW1ldGVyIG5hbWVzIHRhYmxlTmFtZSAtPiB1cmxOYW1lLlxyXG4gICAqIFJldHVybnMgbmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKiBAcmV0dXJucyBDbG9uZSBvZiB0aGlzIHJvdXRlIHdpdGggbWFwcGVkIHBhcmFtZXRlciBuYW1lcy5cclxuICAgKi9cclxuICB3aXRoUGFyYW1NYXBwaW5ncyhtYXBwaW5nczogUGFyYW1NYXBwaW5nW10pIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUucGFyYW1NYXBwaW5ncyA9IG1hcHBpbmdzO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBzdGF0aWMgcGFyYW1ldGVycyBmb3IgdGhpcyByb3V0ZS5cclxuICAgKiBAcGFyYW0gcGFyYW1zIFN0YXRpYyBwYXJhbWV0ZXJzIGZvciB0aGlzIHJvdXRlLlxyXG4gICAqIEByZXR1cm5zIENsb25lIG9mIHRoaXMgd2l0aCBzdGF0aWMgcGFyYW1ldGVycyBzZXQuXHJcbiAgICovXHJcbiAgd2l0aFN0YXRpY1BhcmFtcyhwYXJhbXM6IFQpOiBSZHRSb3V0ZTxUPjtcclxuICB3aXRoU3RhdGljUGFyYW1zPFQyIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIHJvdXRlOiBSZHRSb3V0ZTxUMj4sXHJcbiAgICBwYXJhbXM6IFQyXHJcbiAgKTogUmR0Um91dGU8VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgcGFyYW1ldGVycyBmb3IgaXRzZWxmIG9yIHBhcmVudHMuXHJcbiAgICogUmV0dXJucyBuZXcgaW5zdGFuY2Ugb2YgUmR0Um91dGU8VD4gdGhhdCBpcyBjbG9uZSBvZlxyXG4gICAqIHRoaXMgcm91dGUgYW5kIGl0cyBwYXJlbnRzIChOT1QgY2hpbGRyZW4pLlxyXG4gICAqIEByZXR1cm5zIENsb25lIG9mIHRoaXMgcm91dGUgd2l0aCBzdGF0aWMgcGFyYW1ldGVycyBzZXQuXHJcbiAgICovXHJcbiAgd2l0aFN0YXRpY1BhcmFtczxUMiBleHRlbmRzIG9iamVjdD4ocGFyYW0xOiBSZHRSb3V0ZTxUMj4gfCBULCBwYXJhbTI/OiBUMikge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcblxyXG4gICAgaWYgKHBhcmFtMikge1xyXG4gICAgICBjb25zdCByb3V0ZUFic1BhdGggPSAocGFyYW0xIGFzIFJkdFJvdXRlPFQyPikuYWJzb2x1dGVQYXRoO1xyXG4gICAgICBsZXQgY3VycmVudDogUmR0Um91dGUgfCBudWxsID0gY2xvbmU7XHJcblxyXG4gICAgICB3aGlsZSAoY3VycmVudCkge1xyXG4gICAgICAgIGlmIChjdXJyZW50LmFic29sdXRlUGF0aCA9PT0gcm91dGVBYnNQYXRoKSB7XHJcbiAgICAgICAgICBjdXJyZW50Ll9zdGF0aWNQYXJhbXMgPSBwYXJhbTI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Ll9wYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsb25lLl9zdGF0aWNQYXJhbXMgPSBwYXJhbTEgYXMgVDtcclxuICAgIH1cclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHdpdGhRdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogUGFyYW1zKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgIGNsb25lLl9xdWVyeVBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHdpdGhTdGF0ZVBhcmFtcyhzdGF0ZVBhcmFtczogUGFyYW1zKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgIGNsb25lLl9zdGF0ZVBhcmFtcyA9IHsgLi4uc3RhdGVQYXJhbXMgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXR1cm5zIFBhcnRpYWwgb2Ygb2JqZWN0IHRoYXQgb25seSBjb250YWlucyBwcm9wZXJ0aWVzIG5lY2Vzc2FyeSB0byBjcmVhdGUgdGhpcyByb3V0ZS5cclxuICAgKi9cclxuICBleHRyYWN0Um91dGVQYXJhbXMocm93OiBUKTogUGFydGlhbDxUPiB7XHJcbiAgICBjb25zdCByZXM6IFBhcnRpYWw8VD4gPSB7fTtcclxuXHJcbiAgICB0aGlzLm9yZGVyZWRQYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgY29uc3QgbWFwcGluZyA9IHRoaXMucGFyYW1NYXBwaW5ncy5maW5kKChtKSA9PiBtLnVybE5hbWUgPT09IHBhcmFtKTtcclxuICAgICAgY29uc3QgbWFwcGVkUGFyYW0gPSAobWFwcGluZz8udGFibGVOYW1lID8/IHBhcmFtKSBhcyBrZXlvZiBUO1xyXG4gICAgICBpZiAobWFwcGVkUGFyYW0gaW4gcm93KSB7XHJcbiAgICAgICAgcmVzW21hcHBlZFBhcmFtXSA9IHJvd1ttYXBwZWRQYXJhbV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyBOZXcgaW5zdGFuY2Ugb2YgUmR0Um91dGU8VD4gdGhhdCBpcyBjbG9uZSBvZlxyXG4gICAqIHRoaXMgcm91dGUgYW5kIGl0cyBwYXJlbnRzIChOT1QgY2hpbGRyZW4pLlxyXG4gICAqL1xyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgY2xvbmUgPSBuZXcgUmR0Um91dGU8VD4oKTtcclxuICAgIGNsb25lLl9uYW1lID0gdGhpcy5fbmFtZTtcclxuICAgIGNsb25lLl9wYXJlbnQgPSB0aGlzLl9wYXJlbnQ/LmNsb25lKCkgPz8gbnVsbDtcclxuICAgIGNsb25lLl9wYXRoID0gdGhpcy5wYXRoO1xyXG4gICAgY2xvbmUuX2VudHJ5RGlzYWJsZWQgPSB0aGlzLl9lbnRyeURpc2FibGVkO1xyXG4gICAgY2xvbmUub3JkZXJlZFBhcmFtcyA9IFsuLi50aGlzLm9yZGVyZWRQYXJhbXNdO1xyXG4gICAgY2xvbmUuX3BhcmFtTWFwID0geyAuLi50aGlzLl9wYXJhbU1hcCB9O1xyXG4gICAgY2xvbmUuX3JlZ2V4ID0gdGhpcy5fcmVnZXggPyBuZXcgUmVnRXhwKHRoaXMuX3JlZ2V4KSA6IG51bGw7XHJcbiAgICBjbG9uZS5wYXJhbU1hcHBpbmdzID0gdGhpcy5wYXJhbU1hcHBpbmdzO1xyXG4gICAgY2xvbmUuX3N0YXRpY1BhcmFtcyA9IHsgLi4udGhpcy5fc3RhdGljUGFyYW1zIH07XHJcbiAgICBjbG9uZS5fc3RhdGVQYXJhbXMgPSB7IC4uLnRoaXMuX3N0YXRlUGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { RdtRoute } from './rdt-route';\nconst DEFAULT_PARAM_TYPE = 'number';\nexport class RdtRouteBuilder extends RdtRoute {\n /**\n * CanBeEntered function is synchronous function which\n * lets framework hide menu buttons and disable links.\n * Function is run in environment injection context, so\n * you can inject global services, tokens, etc.\n * @param fn\n */\n withCanBeEntered(fn) {\n this._canBeEntered = fn;\n return this;\n }\n /**\n * @deprecated Use withCanBeEntered() instead.\n */\n setCanBeEntered(fn) {\n return this.withCanBeEntered(fn);\n }\n /**\n * Entry disabled route will generate disabled breadcrumb.\n * It should not have any component nor module added to it.\n * @param value\n * @returns\n */\n withEntryDisabled(value = true) {\n this._entryDisabled = value;\n return this;\n }\n /**\n * @deprecated Use withEntryDisabled() instead.\n */\n setEntryDisabled(value = true) {\n return this.withEntryDisabled(value);\n }\n /**\n * Sets path relative to parent. It is defined the same way as Angular route path including parameters.\n * You need to call setParam() for each parameter you use in the path.\n */\n withPath(path) {\n this._path = path;\n const s = path.split('/');\n const params = [];\n s.forEach((part) => {\n if (part.includes(':')) {\n const param = part.split(':')[1];\n if (param) {\n params.push(param);\n if (!this._paramMap[param]) {\n this._paramMap[param] = DEFAULT_PARAM_TYPE;\n }\n }\n }\n });\n this.orderedParams = params;\n return this;\n }\n /**\n * @deprecated Use withPath() instead.\n */\n setPath(path) {\n return this.withPath(path);\n }\n /**\n * Sets Angular route data.\n * @param data Angular route data object. Breadcrumb key is merged into it.\n */\n withData(data) {\n this._data = data;\n return this;\n }\n /**\n * @deprecated Use withData() instead.\n */\n setData(data) {\n return this.withData(data);\n }\n /**\n * Defines parameter type and lets framework parse it.\n * @param paramName\n * @param type\n */\n withParam(paramName, type) {\n this._paramMap[paramName] = type;\n return this;\n }\n /**\n * @deprecated Use withParam() instead.\n */\n setParam(paramName, type) {\n return this.withParam(paramName, type);\n }\n /**\n * Sets name to display in breadcrumb, etc.\n */\n withName(name) {\n this._name = name;\n return this;\n }\n /**\n * @deprecated Use withName() instead.\n */\n setName(name) {\n return this.withName(name);\n }\n /**\n * Call .build() on children before you call this method!\n */\n withChildren(...children) {\n this._children = children;\n for (const child of children) {\n child._parent = this;\n }\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...children) {\n return this.withChildren(...children);\n }\n build() {\n if (typeof this._path !== 'string') {\n throw new Error('Please provide path for route. Empty string is acceptable.');\n }\n this._built = true;\n this.setRegex();\n return this;\n }\n setRegex() {\n const params = Object.keys(this._paramMap);\n params.sort((a, b) => b.length - a.length);\n let substituted = this.path;\n params.forEach((p) => {\n const type = this._paramMap[p];\n if (!type) {\n throw new Error('Params is not set i');\n }\n substituted = substituted.replace(`:${p}`, RdtRouteBuilder.groups[type]);\n });\n if (substituted === '') {\n this._regex = null;\n }\n else {\n this._regex = new RegExp(substituted);\n }\n }\n static groups = {\n string: '(.+)',\n number: '(\\\\d+)',\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFFcEMsTUFBTSxPQUFPLGVBQXdDLFNBQVEsUUFBVztJQUN0RTs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFpQjtRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxFQUFpQjtRQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakIsSUFBSSxJQUFJ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V0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQVUsTUFBTSxHQUFHO1FBQy9CLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGEgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFSQU1fVFlQRSA9ICdudW1iZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQnVpbGRlcjxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlPFQ+IHtcclxuICAvKipcclxuICAgKiBDYW5CZUVudGVyZWQgZnVuY3Rpb24gaXMgc3luY2hyb25vdXMgZnVuY3Rpb24gd2hpY2hcclxuICAgKiBsZXRzIGZyYW1ld29yayBoaWRlIG1lbnUgYnV0dG9ucyBhbmQgZGlzYWJsZSBsaW5rcy5cclxuICAgKiBGdW5jdGlvbiBpcyBydW4gaW4gZW52aXJvbm1lbnQgaW5qZWN0aW9uIGNvbnRleHQsIHNvXHJcbiAgICogeW91IGNhbiBpbmplY3QgZ2xvYmFsIHNlcnZpY2VzLCB0b2tlbnMsIGV0Yy5cclxuICAgKiBAcGFyYW0gZm5cclxuICAgKi9cclxuICB3aXRoQ2FuQmVFbnRlcmVkKGZuOiAoKSA9PiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jYW5CZUVudGVyZWQgPSBmbjtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENhbkJlRW50ZXJlZCgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0Q2FuQmVFbnRlcmVkKGZuOiAoKSA9PiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ2FuQmVFbnRlcmVkKGZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVudHJ5IGRpc2FibGVkIHJvdXRlIHdpbGwgZ2VuZXJhdGUgZGlzYWJsZWQgYnJlYWRjcnVtYi5cclxuICAgKiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGNvbXBvbmVudCBub3IgbW9kdWxlIGFkZGVkIHRvIGl0LlxyXG4gICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgd2l0aEVudHJ5RGlzYWJsZWQodmFsdWUgPSB0cnVlKSB7XHJcbiAgICB0aGlzLl9lbnRyeURpc2FibGVkID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhFbnRyeURpc2FibGVkKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRFbnRyeURpc2FibGVkKHZhbHVlID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aEVudHJ5RGlzYWJsZWQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBwYXRoIHJlbGF0aXZlIHRvIHBhcmVudC4gSXQgaXMgZGVmaW5lZCB0aGUgc2FtZSB3YXkgYXMgQW5ndWxhciByb3V0ZSBwYXRoIGluY2x1ZGluZyBwYXJhbWV0ZXJzLlxyXG4gICAqIFlvdSBuZWVkIHRvIGNhbGwgc2V0UGFyYW0oKSBmb3IgZWFjaCBwYXJhbWV0ZXIgeW91IHVzZSBpbiB0aGUgcGF0aC5cclxuICAgKi9cclxuICB3aXRoUGF0aChwYXRoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BhdGggPSBwYXRoO1xyXG4gICAgY29uc3QgcyA9IHBhdGguc3BsaXQoJy8nKTtcclxuICAgIGNvbnN0IHBhcmFtczogc3RyaW5nW10gPSBbXTtcclxuICAgIHMuZm9yRWFjaCgocGFydCkgPT4ge1xyXG4gICAgICBpZiAocGFydC5pbmNsdWRlcygnOicpKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW0gPSBwYXJ0LnNwbGl0KCc6JylbMV0gYXMga2V5b2YgVDtcclxuICAgICAgICBpZiAocGFyYW0pIHtcclxuICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX3BhcmFtTWFwW3BhcmFtXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wYXJhbU1hcFtwYXJhbV0gPSBERUZBVUxUX1BBUkFNX1RZUEU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JkZXJlZFBhcmFtcyA9IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFBhdGgoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoUGF0aChwYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgQW5ndWxhciByb3V0ZSBkYXRhLlxyXG4gICAqIEBwYXJhbSBkYXRhIEFuZ3VsYXIgcm91dGUgZGF0YSBvYmplY3QuIEJyZWFkY3J1bWIga2V5IGlzIG1lcmdlZCBpbnRvIGl0LlxyXG4gICAqL1xyXG4gIHdpdGhEYXRhKGRhdGE6IERhdGEpIHtcclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoRGF0YSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhOiBEYXRhKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoRGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgcGFyYW1ldGVyIHR5cGUgYW5kIGxldHMgZnJhbWV3b3JrIHBhcnNlIGl0LlxyXG4gICAqIEBwYXJhbSBwYXJhbU5hbWVcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqL1xyXG4gIHdpdGhQYXJhbShwYXJhbU5hbWU6IGtleW9mIFQsIHR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicpIHtcclxuICAgIHRoaXMuX3BhcmFtTWFwW3BhcmFtTmFtZV0gPSB0eXBlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUGFyYW0oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFBhcmFtKHBhcmFtTmFtZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIG5hbWUgdG8gZGlzcGxheSBpbiBicmVhZGNydW1iLCBldGMuXHJcbiAgICovXHJcbiAgd2l0aE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aE5hbWUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoTmFtZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGwgLmJ1aWxkKCkgb24gY2hpbGRyZW4gYmVmb3JlIHlvdSBjYWxsIHRoaXMgbWV0aG9kIVxyXG4gICAqL1xyXG4gIHdpdGhDaGlsZHJlbiguLi5jaGlsZHJlbjogUmR0Um91dGVbXSkge1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgKGNoaWxkIGFzIFJkdFJvdXRlQnVpbGRlcikuX3BhcmVudCA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhDaGlsZHJlbigpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0Q2hpbGRyZW4oLi4uY2hpbGRyZW46IFJkdFJvdXRlW10pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDaGlsZHJlbiguLi5jaGlsZHJlbik7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fcGF0aCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdQbGVhc2UgcHJvdmlkZSBwYXRoIGZvciByb3V0ZS4gRW1wdHkgc3RyaW5nIGlzIGFjY2VwdGFibGUuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYnVpbHQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRSZWdleCgpO1xyXG4gICAgcmV0dXJuIHRoaXMgYXMgUmR0Um91dGU8VD47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJlZ2V4KCkge1xyXG4gICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmtleXModGhpcy5fcGFyYW1NYXApO1xyXG4gICAgcGFyYW1zLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xyXG4gICAgbGV0IHN1YnN0aXR1dGVkID0gdGhpcy5wYXRoO1xyXG4gICAgcGFyYW1zLmZvckVhY2goKHApID0+IHtcclxuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuX3BhcmFtTWFwW3AgYXMga2V5b2YgVF07XHJcbiAgICAgIGlmICghdHlwZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyYW1zIGlzIG5vdCBzZXQgaScpO1xyXG4gICAgICB9XHJcbiAgICAgIHN1YnN0aXR1dGVkID0gc3Vic3RpdHV0ZWQucmVwbGFjZShgOiR7cH1gLCBSZHRSb3V0ZUJ1aWxkZXIuZ3JvdXBzW3R5cGVdKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzdWJzdGl0dXRlZCA9PT0gJycpIHtcclxuICAgICAgdGhpcy5fcmVnZXggPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fcmVnZXggPSBuZXcgUmVnRXhwKHN1YnN0aXR1dGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGdyb3VwcyA9IHtcclxuICAgIHN0cmluZzogJyguKyknLFxyXG4gICAgbnVtYmVyOiAnKFxcXFxkKyknLFxyXG4gIH07XHJcbn1cclxuIl19","import { DestroyRef, Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule, } from '@angular/router';\nimport { filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst EXACT_TRUE_OPTS = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\nconst EXACT_FALSE_OPTS = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\n/**\n * Directive that appends class to host if any of the watched routes is active.\n */\nexport class RdtAnyRouteActiveDirective {\n destroyRef = inject(DestroyRef);\n router = inject(Router);\n renderer = inject(Renderer2);\n elRef = inject(ElementRef);\n set anyRouteActive(data) {\n this.classes = this.parseClasses(data);\n }\n watchedRoutes = [];\n set anyRouteActiveOptions(value) {\n this._anyRouteActiveOptions = this.parseOptions(value);\n }\n _anyRouteActiveOptions = EXACT_FALSE_OPTS;\n ariaCurrentWhenActive;\n get isActive() {\n return this._isActive;\n }\n _isActive = false;\n classes = [];\n ngOnInit() {\n this.update();\n this.listenRouterEvents();\n }\n ngOnChanges(changes) {\n if (changes['anyRouteActive']?.previousValue) {\n const prev = this.parseClasses(changes['anyRouteActive'].previousValue);\n prev.forEach((c) => this.removeClass(c));\n }\n this.update();\n }\n update() {\n this._isActive = this.watchedRoutes.some((route) => {\n const param = typeof route === 'string' ? route : this.router.createUrlTree(route);\n return this.router.isActive(param, this._anyRouteActiveOptions);\n });\n this.setClasses();\n this.setAriaCurrent();\n }\n setAriaCurrent() {\n const el = this.elRef.nativeElement;\n if (this._isActive && this.ariaCurrentWhenActive !== undefined) {\n const value = this.ariaCurrentWhenActive.toString();\n this.renderer.setAttribute(el, 'aria-current', value);\n }\n else {\n this.renderer.removeAttribute(el, 'aria-current');\n }\n }\n setClasses() {\n if (this._isActive) {\n this.classes.forEach((c) => this.addClass(c));\n }\n else {\n this.classes.forEach((c) => this.removeClass(c));\n }\n }\n addClass(className) {\n this.renderer.addClass(this.elRef.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.elRef.nativeElement, className);\n }\n listenRouterEvents() {\n this.router.events\n .pipe(filter((ev) => ev instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.update());\n }\n parseClasses(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n return classes.filter((c) => !!c);\n }\n parseOptions(input) {\n if ('exact' in input) {\n if (input.exact) {\n return EXACT_TRUE_OPTS;\n }\n else {\n return EXACT_FALSE_OPTS;\n }\n }\n else {\n return input;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtAnyRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: RdtAnyRouteActiveDirective, isStandalone: true, selector: \"[rdtAnyRouteActive]\", inputs: { anyRouteActive: [\"rdtAnyRouteActive\", \"anyRouteActive\"], watchedRoutes: \"watchedRoutes\", anyRouteActiveOptions: \"anyRouteActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\" }, providers: [RouterModule], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtAnyRouteActiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtAnyRouteActive]',\n standalone: true,\n providers: [RouterModule],\n }]\n }], propDecorators: { anyRouteActive: [{\n type: Input,\n args: [{ required: true, alias: 'rdtAnyRouteActive' }]\n }], watchedRoutes: [{\n type: Input,\n args: [{ required: true }]\n }], anyRouteActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL2RpcmVjdGl2ZXMvcmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU5QixNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsT0FBTztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBeUI7SUFDN0MsS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLElBQ0ksY0FBYyxDQUFDLElBQXVCO1FBQ3hDLElB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QUEwQix1UUFGMUIsQ0FBQyxZQUFZLENBQUM7OzJGQUVkLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjs4QkFRSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7Z0JBTXJELGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXJCLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBFWEFDVF9UUlVFX09QVFM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xyXG4gIHBhdGhzOiAnZXhhY3QnLFxyXG4gIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG5jb25zdCBFWEFDVF9GQUxTRV9PUFRTOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICBwYXRoczogJ3N1YnNldCcsXHJcbiAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXBwZW5kcyBjbGFzcyB0byBob3N0IGlmIGFueSBvZiB0aGUgd2F0Y2hlZCByb3V0ZXMgaXMgYWN0aXZlLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0QW55Um91dGVBY3RpdmVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRBbnlSb3V0ZUFjdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3JkdEFueVJvdXRlQWN0aXZlJyB9KVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZShkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXJzZUNsYXNzZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHdhdGNoZWRSb3V0ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZU9wdGlvbnModmFsdWU6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyh2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FueVJvdXRlQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSBFWEFDVF9GQUxTRV9PUFRTO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFyaWFDdXJyZW50V2hlbkFjdGl2ZT86XHJcbiAgICB8ICdwYWdlJ1xyXG4gICAgfCAnc3RlcCdcclxuICAgIHwgJ2xvY2F0aW9uJ1xyXG4gICAgfCAnZGF0ZSdcclxuICAgIHwgJ3RpbWUnXHJcbiAgICB8IHRydWVcclxuICAgIHwgZmFsc2U7XHJcblxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB0aGlzLmxpc3RlblJvdXRlckV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10/LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJldiA9IHRoaXMucGFyc2VDbGFzc2VzKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIHByZXYuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX2lzQWN0aXZlID0gdGhpcy53YXRjaGVkUm91dGVzLnNvbWUoKHJvdXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID1cclxuICAgICAgICB0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnID8gcm91dGUgOiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHBhcmFtLCB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIHRoaXMuc2V0QXJpYUN1cnJlbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXJpYUN1cnJlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNBY3RpdmUgJiYgdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAnYXJpYS1jdXJyZW50JywgdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoZWwsICdhcmlhLWN1cnJlbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NlcygpIHtcclxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5hZGRDbGFzcyhjKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZXJFdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChldikgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ2xhc3NlcyhkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogZGF0YS5zcGxpdCgnICcpO1xyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjKSA9PiAhIWMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMoaW5wdXQ6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICBpZiAoJ2V4YWN0JyBpbiBpbnB1dCkge1xyXG4gICAgICBpZiAoaW5wdXQuZXhhY3QpIHtcclxuICAgICAgICByZXR1cm4gRVhBQ1RfVFJVRV9PUFRTO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBFWEFDVF9GQUxTRV9PUFRTO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Location } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, ElementRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport { fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class RdtBackLinkDirective {\n destroyRef = inject(DestroyRef);\n location = inject(Location);\n elRef = inject((ElementRef));\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n optional: true,\n host: true,\n });\n constructor() {\n afterNextRender(() => {\n if (this.buttonRef) {\n this.buttonRef.click$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.location.back());\n }\n else {\n fromEvent(this.elRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.location.back());\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtBackLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: RdtBackLinkDirective, isStandalone: true, selector: \"[rdtBackLink]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtBackLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtBackLink]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJhY2stbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZGlyZWN0aXZlcy9yZHQtYmFjay1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS2pDLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELFFBQVEsRUFBRSxJQUFJO1FBQ2QsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSDtRQUNFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtxQkFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztxQkFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQXRCVSxvQkFBb0I7MkZBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJEVF9CVVRUT05fQkFTRV9QUk9WSURFUiB9IGZyb20gJ0BuZ3JkdC9idXR0b24nO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tyZHRCYWNrTGlua10nLFxufSlcbmV4cG9ydCBjbGFzcyBSZHRCYWNrTGlua0RpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xuICBwcml2YXRlIHJlYWRvbmx5IGVsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25DbGFzcyA9IGluamVjdChSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvblJlZiA9IGluamVjdCh0aGlzLmJ1dHRvbkNsYXNzLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgaG9zdDogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvblJlZikge1xuICAgICAgICB0aGlzLmJ1dHRvblJlZi5jbGljayRcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { booleanAttribute, Directive, effect, EnvironmentInjector, inject, input, } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport const PERMISSION_DISABLED_KEY = Symbol();\nexport class RdtRouterLinkDirective {\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n host: true,\n optional: true,\n });\n routerLinkRef = inject(RouterLink, { self: true });\n envInjector = inject(EnvironmentInjector);\n route = input.required(...(ngDevMode ? [{ debugName: \"route\", alias: 'rdtRouterLink' }] : [{ alias: 'rdtRouterLink' }]));\n target = input('_self', ...(ngDevMode ? [{ debugName: \"target\" }] : []));\n params = input(...(ngDevMode ? [undefined, { debugName: \"params\" }] : []));\n queryParams = input(...(ngDevMode ? [undefined, { debugName: \"queryParams\" }] : []));\n stateParams = input(...(ngDevMode ? [undefined, { debugName: \"stateParams\" }] : []));\n disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", alias: 'rdtDisabled',\n transform: booleanAttribute }] : [{\n alias: 'rdtDisabled',\n transform: booleanAttribute,\n }]));\n updateEffect = effect(() => {\n if (this.buttonRef) {\n this.updateButton();\n }\n else {\n this.updateRouterLink();\n }\n }, ...(ngDevMode ? [{ debugName: \"updateEffect\" }] : []));\n updateButton() {\n const route = this.route();\n if (!route) {\n this.clearButtonLink();\n return;\n }\n if (route.canBeEntered(this.envInjector)) {\n this.setButtonLink(route);\n }\n else {\n this.disableButtonLink();\n }\n }\n setButtonLink(route) {\n const button = this.buttonRef;\n try {\n const ngHref = this.getNgHref(route);\n button.ngHref.set(ngHref);\n button.stateParams.set(this.stateParams() ?? route.stateParams);\n button.queryParams.set(this.queryParams() ?? route.queryParams);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n catch (err) {\n console.error(err);\n this.disableButtonLink();\n }\n }\n disableButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.setDisabledState(true, PERMISSION_DISABLED_KEY);\n }\n clearButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.stateParams.set(undefined);\n button.queryParams.set(undefined);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n updateRouterLink() {\n const route = this.route();\n if (!route) {\n this.clearRouterLink();\n }\n else if (route.canBeEntered(this.envInjector) && !this.disabled()) {\n this.setRouterLink(route);\n }\n else {\n this.disableRouterLink();\n }\n }\n setRouterLink(route) {\n try {\n const ngHref = this.getNgHref(route);\n this.routerLinkRef.routerLink = ngHref;\n this.routerLinkRef.state = this.stateParams() ?? route.stateParams;\n this.routerLinkRef.queryParams = this.queryParams() ?? route.queryParams;\n this.routerLinkRef.ngOnChanges({});\n }\n catch (err) {\n console.error(err);\n this.disableRouterLink();\n }\n }\n disableRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.ngOnChanges({});\n }\n clearRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.state = undefined;\n this.routerLinkRef.queryParams = undefined;\n this.routerLinkRef.ngOnChanges({});\n }\n getNgHref(route) {\n return route.createAbsoluteUrl(this.params());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: RdtRouterLinkDirective, isStandalone: true, selector: \"[rdtRouterLink]\", inputs: { route: { classPropertyName: \"route\", publicName: \"rdtRouterLink\", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: \"params\", publicName: \"params\", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: \"queryParams\", publicName: \"queryParams\", isSignal: true, isRequired: false, transformFunction: null }, stateParams: { classPropertyName: \"stateParams\", publicName: \"stateParams\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"rdtDisabled\", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.RouterLink, inputs: [\"target\", \"target\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtRouterLink]',\n standalone: true,\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: ['target'],\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsTUFBTSxFQUNOLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUd6RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQVloRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2hCLFdBQVcsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMvQyxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDcEQsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQztJQUNjLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRWxELEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSx3Q0FBZ0IsS0FBSyxFQUFFLGVBQWUsT0FBeEIsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUMsQ0FBQztJQUNoRSxNQUFNLEdBQUcsS0FBSyxDQUEwQyxPQUFPLGtEQUFDLENBQUM7SUFDakUsTUFBTSxHQUFHLEtBQUssNERBQTBCLENBQUM7SUFDekMsV0FBVyxHQUFHLEtBQUssaUVBQXNCLENBQUM7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SUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBa0I7UUFDbEMsT0FBTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt1R0ExR1Usc0JBQXNCOzJGQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBVmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsVUFBVTs0QkFDckIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO3lCQUNuQjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxuICBEaXJlY3RpdmUsXHJcbiAgZWZmZWN0LFxyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSA9IFN5bWJvbCgpO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0Um91dGVyTGlua10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaG9zdERpcmVjdGl2ZXM6IFtcclxuICAgIHtcclxuICAgICAgZGlyZWN0aXZlOiBSb3V0ZXJMaW5rLFxyXG4gICAgICBpbnB1dHM6IFsndGFyZ2V0J10sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZXJMaW5rRGlyZWN0aXZlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvbkNsYXNzID0gaW5qZWN0KFJEVF9CVVRUT05fQkFTRV9QUk9WSURFUik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25SZWYgPSBpbmplY3QodGhpcy5idXR0b25DbGFzcywge1xyXG4gICAgaG9zdDogdHJ1ZSxcclxuICAgIG9wdGlvbmFsOiB0cnVlLFxyXG4gIH0pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyTGlua1JlZiA9IGluamVjdChSb3V0ZXJMaW5rLCB7IHNlbGY6IHRydWUgfSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbnZJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcclxuXHJcbiAgcmVhZG9ubHkgcm91dGUgPSBpbnB1dC5yZXF1aXJlZDxSZHRSb3V0ZTxUPj4oeyBhbGlhczogJ3JkdFJvdXRlckxpbmsnIH0pO1xyXG4gIHJlYWRvbmx5IHRhcmdldCA9IGlucHV0PCdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJz4oJ19zZWxmJyk7XHJcbiAgcmVhZG9ubHkgcGFyYW1zID0gaW5wdXQ8UGFydGlhbDxUPiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBxdWVyeVBhcmFtcyA9IGlucHV0PFBhcmFtcyB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBzdGF0ZVBhcmFtcyA9IGlucHV0PFBhcmFtcyB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7XHJcbiAgICBhbGlhczogJ3JkdERpc2FibGVkJyxcclxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcclxuICB9KTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVwZGF0ZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcclxuICAgICAgdGhpcy51cGRhdGVCdXR0b24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZUJ1dHRvbigpIHtcclxuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZSgpO1xyXG4gICAgaWYgKCFyb3V0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyQnV0dG9uTGluaygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAocm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpKSB7XHJcbiAgICAgIHRoaXMuc2V0QnV0dG9uTGluayhyb3V0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25MaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJ1dHRvbkxpbmsocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBuZ0hyZWYgPSB0aGlzLmdldE5nSHJlZihyb3V0ZSk7XHJcbiAgICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG5nSHJlZik7XHJcbiAgICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zKTtcclxuICAgICAgYnV0dG9uLnF1ZXJ5UGFyYW1zLnNldCh0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXMpO1xyXG4gICAgICBidXR0b24uc2V0RGlzYWJsZWRTdGF0ZShmYWxzZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlQnV0dG9uTGluaygpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuYnV0dG9uUmVmITtcclxuICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG51bGwpO1xyXG4gICAgYnV0dG9uLnNldERpc2FibGVkU3RhdGUodHJ1ZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckJ1dHRvbkxpbmsoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICBidXR0b24ubmdIcmVmLnNldChudWxsKTtcclxuICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5xdWVyeVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5zZXREaXNhYmxlZFN0YXRlKGZhbHNlLCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJvdXRlckxpbmsoKSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUoKTtcclxuICAgIGlmICghcm91dGUpIHtcclxuICAgICAgdGhpcy5jbGVhclJvdXRlckxpbmsoKTtcclxuICAgIH0gZWxzZSBpZiAocm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpICYmICF0aGlzLmRpc2FibGVkKCkpIHtcclxuICAgICAgdGhpcy5zZXRSb3V0ZXJMaW5rKHJvdXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVJvdXRlckxpbmsoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Um91dGVyTGluayhyb3V0ZTogUmR0Um91dGU8VD4pIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG5nSHJlZiA9IHRoaXMuZ2V0TmdIcmVmKHJvdXRlKTtcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBuZ0hyZWY7XHJcbiAgICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHRoaXMuc3RhdGVQYXJhbXMoKSA/PyByb3V0ZS5zdGF0ZVBhcmFtcztcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcygpID8/IHJvdXRlLnF1ZXJ5UGFyYW1zO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYubmdPbkNoYW5nZXMoe30pO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlUm91dGVyTGluaygpIHtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5yb3V0ZXJMaW5rID0gbnVsbDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUm91dGVyTGluaygpIHtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5yb3V0ZXJMaW5rID0gbnVsbDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5nSHJlZihyb3V0ZTogUmR0Um91dGU8VD4pIHtcclxuICAgIHJldHVybiByb3V0ZS5jcmVhdGVBYnNvbHV0ZVVybCh0aGlzLnBhcmFtcygpKTtcclxuICB9XHJcbn1cclxuIl19","import { inject } from '@angular/core';\nimport { RdtComponentGuardStoreService } from '@ngrdt/core';\nexport const preventDataLossGuardFn = () => {\n const guardStore = inject(RdtComponentGuardStoreService);\n return guardStore.checkCanLeaveGlobal$();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1kYXRhLWxvc3MuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QixHQUFHLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UgfSBmcm9tICdAbmdyZHQvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJldmVudERhdGFMb3NzR3VhcmRGbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4gPSAoKSA9PiB7XHJcbiAgY29uc3QgZ3VhcmRTdG9yZSA9IGluamVjdChSZHRDb21wb25lbnRHdWFyZFN0b3JlU2VydmljZSk7XHJcbiAgcmV0dXJuIGd1YXJkU3RvcmUuY2hlY2tDYW5MZWF2ZUdsb2JhbCQoKTtcclxufTtcclxuIl19","import { Injectable } from '@angular/core';\nimport { GuardsCheckStart, NavigationEnd, Router, } from '@angular/router';\nimport { preventDataLossGuardFn } from './prevent-data-loss.guard';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class GlobalRouteGuardService {\n router;\n constructor(router) {\n this.router = router;\n }\n // This will help ensure that routes are automatically protected by ensuring that global guards are applied to every route\n ensureGlobalGuards() {\n let lastUrl = '';\n this.router.events.subscribe((e) => {\n // Remember last url after successful navigation\n if (e instanceof NavigationEnd) {\n lastUrl = location.href;\n }\n if (e instanceof GuardsCheckStart) {\n let lastChild = e.state.root;\n while (lastChild?.firstChild) {\n lastChild = lastChild.firstChild;\n }\n // Native back button will immediately replace url on click\n // Replace it back to last url before guard check is finished.\n // Angular will set it to correct value afterwards.\n history.replaceState(window.history.state, '', lastUrl);\n if (lastChild?.routeConfig) {\n this.ensureCanDeactivateGuards(lastChild.routeConfig);\n }\n }\n });\n }\n ensureCanDeactivateGuards(routeConfig) {\n if (!routeConfig.canDeactivate) {\n routeConfig.canDeactivate = [];\n }\n const canDeactivateGuards = routeConfig.canDeactivate;\n // ensure that the \"MySpecialCanDeactivateGuard\" is in effect.\n if (!canDeactivateGuards.find((o) => o == preventDataLossGuardFn)) {\n canDeactivateGuards.push(preventDataLossGuardFn);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: GlobalRouteGuardService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: GlobalRouteGuardService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: GlobalRouteGuardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvdXRlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL2dsb2JhbC1yb3V0ZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLDBIQUEwSDtJQUNuSCxrQkFBa0I7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELDJEQUEyRDtnQkFDM0QsOERBQThEO2dCQUM5RCxtREFBbUQ7Z0JBQ25ELE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFdEQsOERBQThEO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDbEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7dUdBeENVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBHdWFyZHNDaGVja1N0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmQsXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZXZlbnREYXRhTG9zc0d1YXJkRm4gfSBmcm9tICcuL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxSb3V0ZUd1YXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb3RlY3RlZCBieSBlbnN1cmluZyB0aGF0IGdsb2JhbCBndWFyZHMgYXJlIGFwcGxpZWQgdG8gZXZlcnkgcm91dGVcclxuICBwdWJsaWMgZW5zdXJlR2xvYmFsR3VhcmRzKCkge1xyXG4gICAgbGV0IGxhc3RVcmwgPSAnJztcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIC8vIFJlbWVtYmVyIGxhc3QgdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBsYXN0VXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpIHtcclxuICAgICAgICBsZXQgbGFzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gZS5zdGF0ZS5yb290O1xyXG4gICAgICAgIHdoaWxlIChsYXN0Q2hpbGQ/LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOYXRpdmUgYmFjayBidXR0b24gd2lsbCBpbW1lZGlhdGVseSByZXBsYWNlIHVybCBvbiBjbGlja1xyXG4gICAgICAgIC8vIFJlcGxhY2UgaXQgYmFjayB0byBsYXN0IHVybCBiZWZvcmUgZ3VhcmQgY2hlY2sgaXMgZmluaXNoZWQuXHJcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHNldCBpdCB0byBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuXHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsICcnLCBsYXN0VXJsKTtcclxuXHJcbiAgICAgICAgaWYgKGxhc3RDaGlsZD8ucm91dGVDb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FuRGVhY3RpdmF0ZUd1YXJkcyhsYXN0Q2hpbGQucm91dGVDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNhbkRlYWN0aXZhdGVHdWFyZHMocm91dGVDb25maWc6IFJvdXRlKSB7XHJcbiAgICBpZiAoIXJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpIHtcclxuICAgICAgcm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGVHdWFyZHMgPSByb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBcIk15U3BlY2lhbENhbkRlYWN0aXZhdGVHdWFyZFwiIGlzIGluIGVmZmVjdC5cclxuICAgIGlmICghY2FuRGVhY3RpdmF0ZUd1YXJkcy5maW5kKChvKSA9PiBvID09IHByZXZlbnREYXRhTG9zc0d1YXJkRm4pKSB7XHJcbiAgICAgIGNhbkRlYWN0aXZhdGVHdWFyZHMucHVzaChwcmV2ZW50RGF0YUxvc3NHdWFyZEZuKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbmdyZHQtcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Type, Injector, InjectionToken, OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { Type, Injector, InjectionToken, OnInit, OnChanges, SimpleChanges, DestroyRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/router';
|
|
4
4
|
import { LoadChildrenCallback, Route, ResolveFn, CanActivateFn, CanDeactivateFn, CanActivateChildFn, RunGuardsAndResolvers, Params, Data, NavigationEnd, IsActiveMatchOptions, Router } from '@angular/router';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
@@ -382,23 +382,41 @@ declare class RdtAnyRouteActiveDirective implements OnInit, OnChanges {
|
|
|
382
382
|
static ɵdir: i0.ɵɵDirectiveDeclaration<RdtAnyRouteActiveDirective, "[rdtAnyRouteActive]", never, { "anyRouteActive": { "alias": "rdtAnyRouteActive"; "required": true; }; "watchedRoutes": { "alias": "watchedRoutes"; "required": true; }; "anyRouteActiveOptions": { "alias": "anyRouteActiveOptions"; "required": false; }; "ariaCurrentWhenActive": { "alias": "ariaCurrentWhenActive"; "required": false; }; }, {}, never, never, true, never>;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
declare class
|
|
385
|
+
declare class RdtBackLinkDirective {
|
|
386
|
+
readonly destroyRef: DestroyRef;
|
|
387
|
+
private readonly location;
|
|
388
|
+
private readonly elRef;
|
|
389
|
+
private readonly buttonClass;
|
|
390
|
+
private readonly buttonRef;
|
|
391
|
+
constructor();
|
|
392
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RdtBackLinkDirective, never>;
|
|
393
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdtBackLinkDirective, "[rdtBackLink]", never, {}, {}, never, never, true, never>;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
declare const PERMISSION_DISABLED_KEY: unique symbol;
|
|
397
|
+
declare class RdtRouterLinkDirective<T extends object> {
|
|
398
|
+
private readonly buttonClass;
|
|
399
|
+
private readonly buttonRef;
|
|
386
400
|
private readonly routerLinkRef;
|
|
387
401
|
private readonly envInjector;
|
|
388
|
-
route: RdtRoute<T
|
|
389
|
-
target:
|
|
390
|
-
params
|
|
391
|
-
queryParams
|
|
392
|
-
stateParams
|
|
393
|
-
disabled: boolean
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
private
|
|
397
|
-
private
|
|
398
|
-
private
|
|
402
|
+
readonly route: i0.InputSignal<RdtRoute<T>>;
|
|
403
|
+
readonly target: i0.InputSignal<"_blank" | "_self" | "_parent" | "_top">;
|
|
404
|
+
readonly params: i0.InputSignal<Partial<T> | undefined>;
|
|
405
|
+
readonly queryParams: i0.InputSignal<Params | undefined>;
|
|
406
|
+
readonly stateParams: i0.InputSignal<Params | undefined>;
|
|
407
|
+
readonly disabled: i0.InputSignalWithTransform<boolean, unknown>;
|
|
408
|
+
protected readonly updateEffect: i0.EffectRef;
|
|
409
|
+
private updateButton;
|
|
410
|
+
private setButtonLink;
|
|
411
|
+
private disableButtonLink;
|
|
412
|
+
private clearButtonLink;
|
|
413
|
+
private updateRouterLink;
|
|
414
|
+
private setRouterLink;
|
|
415
|
+
private disableRouterLink;
|
|
416
|
+
private clearRouterLink;
|
|
417
|
+
private getNgHref;
|
|
399
418
|
static ɵfac: i0.ɵɵFactoryDeclaration<RdtRouterLinkDirective<any>, never>;
|
|
400
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RdtRouterLinkDirective<any>, "[rdtRouterLink]", never, { "route": { "alias": "rdtRouterLink"; "required": true; }; "target": { "alias": "target"; "required": false; }; "params": { "alias": "params"; "required": false; }; "queryParams": { "alias": "queryParams"; "required": false; }; "stateParams": { "alias": "stateParams"; "required": false; }; "disabled": { "alias": "
|
|
401
|
-
static ngAcceptInputType_disabled: unknown;
|
|
419
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdtRouterLinkDirective<any>, "[rdtRouterLink]", never, { "route": { "alias": "rdtRouterLink"; "required": true; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "params": { "alias": "params"; "required": false; "isSignal": true; }; "queryParams": { "alias": "queryParams"; "required": false; "isSignal": true; }; "stateParams": { "alias": "stateParams"; "required": false; "isSignal": true; }; "disabled": { "alias": "rdtDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RouterLink; inputs: { "target": "target"; }; outputs: {}; }]>;
|
|
402
420
|
}
|
|
403
421
|
|
|
404
422
|
declare class GlobalRouteGuardService {
|
|
@@ -412,5 +430,5 @@ declare class GlobalRouteGuardService {
|
|
|
412
430
|
|
|
413
431
|
declare const preventDataLossGuardFn: CanDeactivateFn<any>;
|
|
414
432
|
|
|
415
|
-
export { ALWAYS_TRUE, GlobalRouteGuardService, RDT_CANNOT_BE_ENTERED_PROVIDER, RDT_CONFIRM_DATA_LOSS_SERVICE, RDT_ROUTES_PROVIDER, RdtAngularRoute, RdtAnyRouteActiveDirective, RdtConfirmDataLossService, RdtConfirmDataLossServiceAlert, RdtNavigationSource, RdtRoute, RdtRouteBuilder, RdtRouterLinkDirective, RdtRouterService, preventDataLossGuardFn };
|
|
433
|
+
export { ALWAYS_TRUE, GlobalRouteGuardService, PERMISSION_DISABLED_KEY, RDT_CANNOT_BE_ENTERED_PROVIDER, RDT_CONFIRM_DATA_LOSS_SERVICE, RDT_ROUTES_PROVIDER, RdtAngularRoute, RdtAnyRouteActiveDirective, RdtBackLinkDirective, RdtConfirmDataLossService, RdtConfirmDataLossServiceAlert, RdtNavigationSource, RdtRoute, RdtRouteBuilder, RdtRouterLinkDirective, RdtRouterService, preventDataLossGuardFn };
|
|
416
434
|
export type { RdtNavigateExtras };
|