@c8y/ngx-components 1018.0.144 → 1018.0.151

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.
Files changed (31) hide show
  1. package/core/common/date.pipe.d.ts +2 -2
  2. package/core/common/stringify-object.pipe.d.ts +2 -1
  3. package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts +0 -2
  4. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts +7 -6
  5. package/ecosystem/shared/ecosystem.constants.d.ts +3 -1
  6. package/ecosystem/shared/ecosystem.model.d.ts +3 -1
  7. package/ecosystem/shared/ecosystem.service.d.ts +11 -5
  8. package/esm2020/core/bootstrap/bootstrap.component.mjs +7 -1
  9. package/esm2020/core/common/date.pipe.mjs +12 -7
  10. package/esm2020/core/common/stringify-object.pipe.mjs +11 -8
  11. package/esm2020/ecosystem/application-properties/application-properties.component.mjs +6 -4
  12. package/esm2020/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +11 -22
  13. package/esm2020/ecosystem/applications/install-from-package/install-from-package.component.mjs +2 -2
  14. package/esm2020/ecosystem/packages/deploy-application/deploy-application.component.mjs +28 -85
  15. package/esm2020/ecosystem/shared/ecosystem.constants.mjs +5 -3
  16. package/esm2020/ecosystem/shared/ecosystem.model.mjs +3 -1
  17. package/esm2020/ecosystem/shared/ecosystem.service.mjs +121 -24
  18. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +139 -27
  19. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  20. package/fesm2015/c8y-ngx-components-ecosystem.mjs +110 -179
  21. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  22. package/fesm2015/c8y-ngx-components.mjs +26 -13
  23. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  24. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +126 -25
  25. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  26. package/fesm2020/c8y-ngx-components-ecosystem.mjs +110 -176
  27. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  28. package/fesm2020/c8y-ngx-components.mjs +26 -13
  29. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  30. package/locales/locales.pot +15 -3
  31. package/package.json +1 -1
@@ -22,8 +22,8 @@ export declare const ES_MAX_TIME_MILLISECONDS = 8640000000000000;
22
22
  */
23
23
  export declare class DatePipe extends NgDatePipe {
24
24
  private translateService;
25
- constructor(locale: string, translateService: TranslateService);
25
+ constructor(locale: string, translateService: TranslateService, defaultTimezone?: string | null);
26
26
  transform(value: any, format?: string, timezone?: string, locale?: string): any;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<DatePipe, never>;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatePipe, [null, null, { optional: true; }]>;
28
28
  static ɵpipe: i0.ɵɵPipeDeclaration<DatePipe, "c8yDate", false>;
29
29
  }
@@ -3,9 +3,10 @@ import { DatePipe } from './date.pipe';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class StringifyObjectPipe implements PipeTransform {
5
5
  private c8yDatePipe;
6
+ private readonly isoDateTimeRegex;
6
7
  constructor(c8yDatePipe: DatePipe);
7
8
  transform(value: any): string;
8
- checkDateValidity(value: any): boolean;
9
+ private isDate;
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<StringifyObjectPipe, never>;
10
11
  static ɵpipe: i0.ɵɵPipeDeclaration<StringifyObjectPipe, "stringifyObject", false>;
11
12
  }
@@ -20,8 +20,6 @@ export declare class UpdateApplicationModalComponent implements OnInit {
20
20
  ngOnInit(): void;
21
21
  done(): void;
22
22
  updateApplication(): Promise<void>;
23
- private uploadNewBinary;
24
- private fallBackToCloneUpdate;
25
23
  static ɵfac: i0.ɵɵFactoryDeclaration<UpdateApplicationModalComponent, never>;
26
24
  static ɵcmp: i0.ɵɵComponentDeclaration<UpdateApplicationModalComponent, "c8y-update-application-modal", never, {}, {}, never, never, false>;
27
25
  }
@@ -1,23 +1,24 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { ApplicationService, IApplication, IApplicationVersion, InventoryService } from '@c8y/client';
3
- import { PluginsService, WizardComponent, GainsightService } from '@c8y/ngx-components';
2
+ import { Router } from '@angular/router';
3
+ import { IApplication, IApplicationVersion } from '@c8y/client';
4
+ import { GainsightService, PluginsService, WizardComponent } from '@c8y/ngx-components';
4
5
  import { ApplicationPropertiesFormComponent, EcosystemService } from '@c8y/ngx-components/ecosystem/shared';
5
6
  import { TranslateService } from '@ngx-translate/core';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class DeployApplicationComponent implements OnInit {
8
9
  private ecosystemService;
9
- private applicationService;
10
10
  private wizardComponent;
11
11
  private translate;
12
- private inventoryService;
13
12
  private pluginService;
14
13
  private gainsightService;
14
+ private router;
15
15
  CURRENT_LOCATION: string;
16
16
  inProgress: boolean;
17
17
  package: IApplication;
18
18
  isDeployed: boolean;
19
19
  deployedWithSuccess: boolean;
20
20
  newAppConfig: IApplication;
21
+ deployedApp: IApplication;
21
22
  applicationHref: string;
22
23
  model: {
23
24
  selected: any;
@@ -32,12 +33,12 @@ export declare class DeployApplicationComponent implements OnInit {
32
33
  readonly doneLabel: "Done";
33
34
  readonly cancelLabel: "Cancel";
34
35
  headerText: string;
35
- constructor(ecosystemService: EcosystemService, applicationService: ApplicationService, wizardComponent: WizardComponent, translate: TranslateService, inventoryService: InventoryService, pluginService: PluginsService, gainsightService: GainsightService);
36
+ constructor(ecosystemService: EcosystemService, wizardComponent: WizardComponent, translate: TranslateService, pluginService: PluginsService, gainsightService: GainsightService, router: Router);
36
37
  ngOnInit(): Promise<void>;
37
38
  deployApp(): Promise<void>;
38
- fallbackToCloneLatest(config: any): Promise<void>;
39
39
  cancel(): void;
40
40
  onAppVersionSelect(appVersion: IApplicationVersion): void;
41
+ open(): void;
41
42
  private markAsDeployed;
42
43
  private getHeaderText;
43
44
  static ɵfac: i0.ɵɵFactoryDeclaration<DeployApplicationComponent, never>;
@@ -1,5 +1,6 @@
1
1
  import { PropertiesListItem } from '@c8y/ngx-components';
2
2
  export declare const ERROR_MESSAGES: {
3
+ ALREADY_EXIST: "Could not deploy the application, as the application with the same name, context-path or key exist already.";
3
4
  TYPE_VALIDATION: "Wrong file format. Expected a *.zip file with a valid manifest.";
4
5
  ALREADY_SUBSCRIBED: "Could not subscribe to the microservice because another application with the same context path is already subscribed.";
5
6
  NO_MANIFEST_FILE: "Could not find a manifest.";
@@ -8,7 +9,8 @@ export declare const ERROR_MESSAGES: {
8
9
  INTERNAL_ERROR: "An internal error occurred, try to upload again.";
9
10
  MICROSERVICE_NAME_TOO_LONG: "Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.";
10
11
  APPLICATION_CREATION_FAILED: "Application creation failed.";
11
- KEY_OR_CONTEXT_PATH_MISMATCH: "The contextPath or key of the uploaded archive do not match with the existing app.";
12
+ KEY_OR_CONTEXT_PATH_MISMATCH: "The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.";
13
+ VERSION_NOT_FOUND: "The selected version was not found on the server.";
12
14
  };
13
15
  export declare const APP_STATE: {
14
16
  SUBSCRIBED: {
@@ -15,13 +15,15 @@ export declare enum EcosystemWizards {
15
15
  export declare enum ERROR_TYPE {
16
16
  TYPE_VALIDATION = "TYPE_VALIDATION",
17
17
  ALREADY_SUBSCRIBED = "ALREADY_SUBSCRIBED",
18
+ ALREADY_EXIST = "ALREADY_EXIST",
18
19
  INTERNAL_ERROR = "INTERNAL_ERROR",
19
20
  NO_MANIFEST_FILE = "NO_MANIFEST_FILE",
20
21
  INVALID_PACKAGE = "INVALID_PACKAGE",
21
22
  INVALID_APPLICATION = "INVALID_APPLICATION",
22
23
  MICROSERVICE_NAME_TOO_LONG = "MICROSERVICE_NAME_TOO_LONG",
23
24
  APPLICATION_CREATION_FAILED = "APPLICATION_CREATION_FAILED",
24
- KEY_OR_CONTEXT_PATH_MISMATCH = "KEY_OR_CONTEXT_PATH_MISMATCH"
25
+ KEY_OR_CONTEXT_PATH_MISMATCH = "KEY_OR_CONTEXT_PATH_MISMATCH",
26
+ VERSION_NOT_FOUND = "VERSION_NOT_FOUND"
25
27
  }
26
28
  export declare type LicensedApplicationPlugin = Pick<ApplicationPlugin, 'type' | 'license' | 'name' | 'version' | 'contextPath'>;
27
29
  export declare const PRODUCT_EXPERIENCE: {
@@ -58,6 +58,8 @@ export declare class EcosystemService {
58
58
  getWebApplications(customFilter?: any): Promise<IApplication[]>;
59
59
  getFeatureApplications(customFilter?: any): Promise<IApplication[]>;
60
60
  getPackageApplications(customFilter?: any): Promise<IApplication[]>;
61
+ getHostedAndPackageApplications(customFilter?: any): Promise<IApplication[]>;
62
+ getApplicationsFiltered(customFilter?: any, filterCallback?: (app: IApplication) => boolean): Promise<IApplication[]>;
61
63
  isMicroserviceHostingAllowed(): Promise<boolean>;
62
64
  canOpenAppInBrowser(app: IApplication): boolean;
63
65
  openApp(app: any): void;
@@ -81,10 +83,6 @@ export declare class EcosystemService {
81
83
  }>;
82
84
  getHumanizedAppName(app: IApplication): Promise<string>;
83
85
  createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication>;
84
- updateAppManifest(application: IApplication, sourcePackage: IApplication): Promise<{
85
- res: IFetchResponse;
86
- data: any;
87
- }>;
88
86
  listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]>;
89
87
  deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void>;
90
88
  getArchiveManagedObject(binaryId: string): Promise<IManagedObject>;
@@ -101,6 +99,9 @@ export declare class EcosystemService {
101
99
  createAppForArchive(archive: any, isPackageTypeArchive?: boolean): Promise<IApplication>;
102
100
  reactivateArchive(app: IApplication): Promise<void>;
103
101
  removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void>;
102
+ deployApp(selectedPackage: IApplication, formGroupValue: any, model: any): Promise<IApplication>;
103
+ fallbackToClone(application: IApplication, selectedPackage: IApplication, requestedVersion?: string): Promise<boolean>;
104
+ uploadBinaryFromOtherPackage(selectedPackage: IApplication, applicationToUploadBinaryTo: IApplication, binaryId: string, requestedVersion?: string, useBinariesFrom?: IApplication): Promise<void>;
104
105
  getAppState(app: IApplication): ApplicationState;
105
106
  getPackageContentState(app: IApplication): ApplicationState;
106
107
  isPackageBlueprint(app: IApplication): boolean;
@@ -122,6 +123,12 @@ export declare class EcosystemService {
122
123
  */
123
124
  alertError(error: Error | EcosystemError): void;
124
125
  validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication): Promise<void>;
126
+ filterContainString(name: string, filterTerm: string): boolean;
127
+ updateAppManifest(application: IApplication, selectedPackage: IApplication, requestedVersion?: string): Promise<{
128
+ res: IFetchResponse;
129
+ data: any;
130
+ }>;
131
+ private checkIfAppNameKeyPathExists;
125
132
  private getAppKey;
126
133
  private getContextPath;
127
134
  private removeForbiddenCharacters;
@@ -129,7 +136,6 @@ export declare class EcosystemService {
129
136
  private getCumulocityJson$;
130
137
  private getAppType;
131
138
  private getBaseNameFromArchiveOrAppModel;
132
- private checkIfAppNameKeyPathExists;
133
139
  private removeAppProperties;
134
140
  private getUploadOverrides;
135
141
  private removeVersionFromName;
@@ -93,6 +93,12 @@ export class BootstrapComponent {
93
93
  if (remoteModules.length) {
94
94
  this.pluginsResolve.resolveRemotePlugins(remoteModules);
95
95
  }
96
+ else {
97
+ // in case loading all modules via pluginsResolve.loadRemotes failed
98
+ // (e.g. all plugins that were installed have been deleted from the tenant)
99
+ // we still need to mark loading the plugins as successful.
100
+ this.ensureWeMarkPluginsAsLoaded();
101
+ }
96
102
  }
97
103
  subscribeToLoadRemotes() {
98
104
  if (this.options.get('noPlugins', false)) {
@@ -114,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
114
120
  type: Component,
115
121
  args: [{ selector: 'c8y-bootstrap', template: "<c8y-login *ngIf=\"!noLogin && !(ui.currentUser | async)\"></c8y-login>\n\n<div\n *ngIf=\"noLogin || ((ui.currentUser | async) && !(setupService.isSetupNeeded$ | async))\"\n [class.head-open]=\"headerService.headerOpen\"\n>\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-drawer-outlet\n role=\"region\"\n position=\"left\"\n [open]=\"headerService.navigatorOpen$ | async\"\n ></c8y-drawer-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n role=\"navigation\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n role=\"group\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden\n }\"\n >\n <main id=\"main-content\" class=\"container-fluid\" tabindex=\"-1\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"(ui.currentUser | async) && (setupService.isSetupNeeded$ | async)\">\n <c8y-header-bar [simple]=\"true\"></c8y-header-bar>\n <div class=\"mcontainer\" role=\"main\">\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n" }]
116
122
  }], ctorParameters: function () { return [{ type: i1.TabsService }, { type: i2.AppStateService }, { type: i3.NavigatorService }, { type: i4.ActionBarService }, { type: i5.HeaderService }, { type: i6.OptionsService }, { type: i7.PluginsResolveService }, { type: i8.SetupService }]; } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Jvb3RzdHJhcC9ib290c3RyYXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFDUyxJQUFpQixFQUNqQixFQUFtQixFQUNuQixTQUEyQixFQUMzQixTQUEyQixFQUMzQixhQUE0QixFQUMzQixPQUF1QixFQUN2QixjQUFxQyxFQUN0QyxZQUEwQjtRQVAxQixTQUFJLEdBQUosSUFBSSxDQUFhO1FB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QyxPQUFPO1NBQ1I7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJFLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUN6QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FDMUQsQ0FBQztRQUVGLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QjthQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTywyQkFBMkI7UUFDakMsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzsrR0E1RlUsa0JBQWtCO21HQUFsQixrQkFBa0IscURDbkIvQixtN0RBNkRBOzJGRDFDYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3Rpb25CYXJTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJhci9hY3Rpb24tYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci9uYXZpZ2F0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbnMtcmVzb2x2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBsdWdpbnNDb25maWcgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbnMubW9kZWwnO1xuaW1wb3J0IHsgU2V0dXBTZXJ2aWNlIH0gZnJvbSAnLi4vc2V0dXAvc2V0dXAuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4uL3RhYnMvdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYm9vdHN0cmFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb3RzdHJhcC50ZW1wbGF0ZS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCb290c3RyYXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIG5hdmlnYXRvck9wZW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBub0FwcHNNYXJnaW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0YWJzT3JpZW50YXRpb246IHN0cmluZztcbiAgc2hvd1Bvd2VyZWRCeSA9IHRydWU7XG4gIG5vTG9naW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgbG9hZGVkUmVtb3Rlc0NvbnRleHRQYXRoQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFiczogVGFic1NlcnZpY2UsXG4gICAgcHVibGljIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIG5hdmlnYXRvcjogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwdWJsaWMgYWN0aW9uQmFyOiBBY3Rpb25CYXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBoZWFkZXJTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbHVnaW5zUmVzb2x2ZTogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZXR1cFNlcnZpY2U6IFNldHVwU2VydmljZVxuICApIHtcbiAgICB0aGlzLm5vQXBwc01hcmdpbiQgPSB0aGlzLmhlYWRlclNlcnZpY2UubWFwKCh7IG5hdiB9KSA9PiAhbmF2Lm9wZW4gJiYgbmF2LmhpZGRlbk9uU3RhcnR1cCk7XG4gICAgdGhpcy50YWJzT3JpZW50YXRpb24gPSB0aGlzLm9wdGlvbnMudGFic0hvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgIHRoaXMudWlcbiAgICAgIC5tYXAoKHsgbGFuZyB9KSA9PiBsYW5nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aW9uQmFyLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuc2hvd1Bvd2VyZWRCeSA9ICF0aGlzLm9wdGlvbnMuZ2V0KCdoaWRlUG93ZXJlZCcpO1xuICAgIHRoaXMubm9Mb2dpbiA9IHRoaXMub3B0aW9ucy5nZXQoJ25vTG9naW4nLCBmYWxzZSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmliZVRvTG9hZFJlbW90ZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVtb3Rlcyhjb25maWc6IFBsdWdpbnNDb25maWcpOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMge1xuICAgIGxldCByZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM7XG4gICAgaWYgKCEhY29uZmlnPy5yZW1vdGVzKSB7XG4gICAgICAvLyBNZXJnZSBwbHVnaW5zIGNvbmZpZyByZW1vdGVzIGFuZCByZW1vdGVzIHBhc3NlZCBpbiB0aGUgVVJMLlxuICAgICAgLy8gUmVtb3RlcyBpbiB0aGUgVVJMIGFyZSB1c2VkIGluIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLlxuICAgICAgcmVtb3RlcyA9IHRoaXMucGx1Z2luc1Jlc29sdmUubWVyZ2VNRlJlbW90ZXMoW1xuICAgICAgICBjb25maWcucmVtb3RlcyxcbiAgICAgICAgdGhpcy5wbHVnaW5zUmVzb2x2ZS5sb2FkVXJsUmVtb3RlcygpXG4gICAgICBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3RlcyA9IHRoaXMub3B0aW9ucz8ucmVtb3RlcztcbiAgICB9XG5cbiAgICAvLyBCbG9jayB0aGUgcG9zc2liaWxpdHkgb2YgbG9hZGluZyBwbHVnaW5zIG11bHRpcGxlIHRpbWVzLlxuICAgIE9iamVjdC5rZXlzKHJlbW90ZXMgfHwge30pLmZvckVhY2goY29udGV4dFBhdGggPT4ge1xuICAgICAgaWYgKHRoaXMubG9hZGVkUmVtb3Rlc0NvbnRleHRQYXRoQ2FjaGUuZ2V0KGNvbnRleHRQYXRoKSkge1xuICAgICAgICBkZWxldGUgcmVtb3Rlc1tjb250ZXh0UGF0aF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzRW1wdHkocmVtb3RlcykgPyB1bmRlZmluZWQgOiByZW1vdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpIHtcbiAgICBpZiAoIXJlbW90ZXMpIHtcbiAgICAgIHRoaXMuZW5zdXJlV2VNYXJrUGx1Z2luc0FzTG9hZGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlbW90ZU1vZHVsZXMgPSBhd2FpdCB0aGlzLnBsdWdpbnNSZXNvbHZlLmxvYWRSZW1vdGVzKHJlbW90ZXMpO1xuXG4gICAgLy8gQ2FjaGUgbG9hZGVkIHJlbW90ZXMuXG4gICAgT2JqZWN0LmtleXMocmVtb3RlcykuZm9yRWFjaChjb250ZXh0UGF0aCA9PlxuICAgICAgdGhpcy5sb2FkZWRSZW1vdGVzQ29udGV4dFBhdGhDYWNoZS5zZXQoY29udGV4dFBhdGgsIHRydWUpXG4gICAgKTtcblxuICAgIGlmIChyZW1vdGVNb2R1bGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5wbHVnaW5zUmVzb2x2ZS5yZXNvbHZlUmVtb3RlUGx1Z2lucyhyZW1vdGVNb2R1bGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvTG9hZFJlbW90ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ25vUGx1Z2lucycsIGZhbHNlKSkge1xuICAgICAgdGhpcy5lbnN1cmVXZU1hcmtQbHVnaW5zQXNMb2FkZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51aS5jdXJyZW50QXBwbGljYXRpb25Db25maWdcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZzogUGx1Z2luc0NvbmZpZykgPT4gdGhpcy5sb2FkUmVtb3Rlcyh0aGlzLmdldFJlbW90ZXMoY29uZmlnKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVXZU1hcmtQbHVnaW5zQXNMb2FkZWQoKTogdm9pZCB7XG4gICAgLy8gZW5zdXJlIHdlIGNhbGwgbWFya1BsdWdpbnNBc0xvYWRlZCBvbiB0aGUgRHluYW1pY0NvbXBvbmVudFNlcnZpY2VcbiAgICB0aGlzLnBsdWdpbnNSZXNvbHZlLm1hcmtQbHVnaW5zQXNMb2FkZWQoKTtcbiAgfVxufVxuIiwiPGM4eS1sb2dpbiAqbmdJZj1cIiFub0xvZ2luICYmICEodWkuY3VycmVudFVzZXIgfCBhc3luYylcIj48L2M4eS1sb2dpbj5cblxuPGRpdlxuICAqbmdJZj1cIm5vTG9naW4gfHwgKCh1aS5jdXJyZW50VXNlciB8IGFzeW5jKSAmJiAhKHNldHVwU2VydmljZS5pc1NldHVwTmVlZGVkJCB8IGFzeW5jKSlcIlxuICBbY2xhc3MuaGVhZC1vcGVuXT1cImhlYWRlclNlcnZpY2UuaGVhZGVyT3BlblwiXG4+XG4gIDxjOHktaGVhZGVyLWJhciAjaGVhZGVyPjwvYzh5LWhlYWRlci1iYXI+XG4gIDxjOHktZHJhd2VyLW91dGxldFxuICAgIHJvbGU9XCJyZWdpb25cIlxuICAgIHBvc2l0aW9uPVwibGVmdFwiXG4gICAgW29wZW5dPVwiaGVhZGVyU2VydmljZS5uYXZpZ2F0b3JPcGVuJCB8IGFzeW5jXCJcbiAgPjwvYzh5LWRyYXdlci1vdXRsZXQ+XG5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0c1wiPlxuICAgIDxjOHktYWxlcnQtb3V0bGV0PjwvYzh5LWFsZXJ0LW91dGxldD5cbiAgPC9kaXY+XG4gIDxjOHktdGFicy1vdXRsZXRcbiAgICAjdGFic0NvbXBvbmVudFxuICAgIFt0YWJzXT1cInRhYnMuaXRlbXMkIHwgYXN5bmNcIlxuICAgIFtuYXZpZ2F0b3JPcGVuXT1cImhlYWRlclNlcnZpY2UubmF2aWdhdG9yT3BlbiQgfCBhc3luY1wiXG4gICAgW29yaWVudGF0aW9uXT1cInRhYnMub3JpZW50YXRpb24kIHwgYXN5bmNcIlxuICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgPjwvYzh5LXRhYnMtb3V0bGV0PlxuICA8Yzh5LWFjdGlvbi1iYXJcbiAgICAjYWN0aW9uQmFyQ29tcG9uZW50XG4gICAgW25hdmlnYXRvck9wZW5dPVwiaGVhZGVyU2VydmljZS5uYXZpZ2F0b3JPcGVuJCB8IGFzeW5jXCJcbiAgICBbaGFzVGFic109XCJ0YWJzQ29tcG9uZW50Lmhhc1RhYnNcIlxuICAgIFtpc1RhYnNIb3Jpem9udGFsXT1cInRhYnNDb21wb25lbnQ/LmlzSG9yaXpvbnRhbFwiXG4gICAgW2l0ZW1zJF09XCJhY3Rpb25CYXIuaXRlbXMkXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICA+PC9jOHktYWN0aW9uLWJhcj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICBvcGVuOiBoZWFkZXJTZXJ2aWNlLm5hdmlnYXRvck9wZW4kIHwgYXN5bmMsXG4gICAgICAnbm8tYXBwcy1tYXJnaW4nOiBub0FwcHNNYXJnaW4kIHwgYXN5bmMsXG4gICAgICAnaG9yaXpvbnRhbC10YWJzJzogdGFic0NvbXBvbmVudC5pc0hvcml6b250YWwsXG4gICAgICAndmVydGljYWwtdGFicyc6ICF0YWJzQ29tcG9uZW50LmlzSG9yaXpvbnRhbCxcbiAgICAgICdoYXMtdGFicyc6IHRhYnNDb21wb25lbnQuaGFzVGFicyxcbiAgICAgICdoYXMtYWN0aW9uLWJhcic6ICFhY3Rpb25CYXJDb21wb25lbnQ/LmhpZGRlblxuICAgIH1cIlxuICA+XG4gICAgPG1haW4gaWQ9XCJtYWluLWNvbnRlbnRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIiNjOHktbGVnYWN5LXZpZXdcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8IS0tIGxlZ2FjeSBuZy12aWV3LCB3aWxsIG5vdCBiZSBtaWdyYXRlZCBhdG0gLS0+XG4gICAgPC9tYWluPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiKHVpLmN1cnJlbnRVc2VyIHwgYXN5bmMpICYmIChzZXR1cFNlcnZpY2UuaXNTZXR1cE5lZWRlZCQgfCBhc3luYylcIj5cbiAgPGM4eS1oZWFkZXItYmFyIFtzaW1wbGVdPVwidHJ1ZVwiPjwvYzh5LWhlYWRlci1iYXI+XG4gIDxkaXYgY2xhc3M9XCJtY29udGFpbmVyXCIgcm9sZT1cIm1haW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICA8Yzh5LXNldHVwPjwvYzh5LXNldHVwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48Yzh5LWNvb2tpZS1iYW5uZXI+PC9jOHktY29va2llLWJhbm5lcj5cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Jvb3RzdHJhcC9ib290c3RyYXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFDUyxJQUFpQixFQUNqQixFQUFtQixFQUNuQixTQUEyQixFQUMzQixTQUEyQixFQUMzQixhQUE0QixFQUMzQixPQUF1QixFQUN2QixjQUFxQyxFQUN0QyxZQUEwQjtRQVAxQixTQUFJLEdBQUosSUFBSSxDQUFhO1FB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9uQmFyU2VydmljZSB9IGZyb20gJy4uL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi9uYXZpZ2F0b3IvbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW5zLXJlc29sdmUuc2VydmljZSc7XG5pbXBvcnQgeyBQbHVnaW5zQ29uZmlnIH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW5zLm1vZGVsJztcbmltcG9ydCB7IFNldHVwU2VydmljZSB9IGZyb20gJy4uL3NldHVwL3NldHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuLi90YWJzL3RhYnMuc2VydmljZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJvb3RzdHJhcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ib290c3RyYXAudGVtcGxhdGUuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQm9vdHN0cmFwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBuYXZpZ2F0b3JPcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbm9BcHBzTWFyZ2luJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdGFic09yaWVudGF0aW9uOiBzdHJpbmc7XG4gIHNob3dQb3dlcmVkQnkgPSB0cnVlO1xuICBub0xvZ2luID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIGxvYWRlZFJlbW90ZXNDb250ZXh0UGF0aENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYnM6IFRhYnNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBuYXZpZ2F0b3I6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHVibGljIGFjdGlvbkJhcjogQWN0aW9uQmFyU2VydmljZSxcbiAgICBwdWJsaWMgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1Jlc29sdmU6IFBsdWdpbnNSZXNvbHZlU2VydmljZSxcbiAgICBwdWJsaWMgc2V0dXBTZXJ2aWNlOiBTZXR1cFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5ub0FwcHNNYXJnaW4kID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm1hcCgoeyBuYXYgfSkgPT4gIW5hdi5vcGVuICYmIG5hdi5oaWRkZW5PblN0YXJ0dXApO1xuICAgIHRoaXMudGFic09yaWVudGF0aW9uID0gdGhpcy5vcHRpb25zLnRhYnNIb3Jpem9udGFsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJztcbiAgICB0aGlzLnVpXG4gICAgICAubWFwKCh7IGxhbmcgfSkgPT4gbGFuZylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGlvbkJhci5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnNob3dQb3dlcmVkQnkgPSAhdGhpcy5vcHRpb25zLmdldCgnaGlkZVBvd2VyZWQnKTtcbiAgICB0aGlzLm5vTG9naW4gPSB0aGlzLm9wdGlvbnMuZ2V0KCdub0xvZ2luJywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0xvYWRSZW1vdGVzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlbW90ZXMoY29uZmlnOiBQbHVnaW5zQ29uZmlnKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBsZXQgcmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zO1xuICAgIGlmICghIWNvbmZpZz8ucmVtb3Rlcykge1xuICAgICAgLy8gTWVyZ2UgcGx1Z2lucyBjb25maWcgcmVtb3RlcyBhbmQgcmVtb3RlcyBwYXNzZWQgaW4gdGhlIFVSTC5cbiAgICAgIC8vIFJlbW90ZXMgaW4gdGhlIFVSTCBhcmUgdXNlZCBpbiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2Vzcy5cbiAgICAgIHJlbW90ZXMgPSB0aGlzLnBsdWdpbnNSZXNvbHZlLm1lcmdlTUZSZW1vdGVzKFtcbiAgICAgICAgY29uZmlnLnJlbW90ZXMsXG4gICAgICAgIHRoaXMucGx1Z2luc1Jlc29sdmUubG9hZFVybFJlbW90ZXMoKVxuICAgICAgXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW90ZXMgPSB0aGlzLm9wdGlvbnM/LnJlbW90ZXM7XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgdGhlIHBvc3NpYmlsaXR5IG9mIGxvYWRpbmcgcGx1Z2lucyBtdWx0aXBsZSB0aW1lcy5cbiAgICBPYmplY3Qua2V5cyhyZW1vdGVzIHx8IHt9KS5mb3JFYWNoKGNvbnRleHRQYXRoID0+IHtcbiAgICAgIGlmICh0aGlzLmxvYWRlZFJlbW90ZXNDb250ZXh0UGF0aENhY2hlLmdldChjb250ZXh0UGF0aCkpIHtcbiAgICAgICAgZGVsZXRlIHJlbW90ZXNbY29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc0VtcHR5KHJlbW90ZXMpID8gdW5kZWZpbmVkIDogcmVtb3RlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSB7XG4gICAgaWYgKCFyZW1vdGVzKSB7XG4gICAgICB0aGlzLmVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZW1vdGVNb2R1bGVzID0gYXdhaXQgdGhpcy5wbHVnaW5zUmVzb2x2ZS5sb2FkUmVtb3RlcyhyZW1vdGVzKTtcblxuICAgIC8vIENhY2hlIGxvYWRlZCByZW1vdGVzLlxuICAgIE9iamVjdC5rZXlzKHJlbW90ZXMpLmZvckVhY2goY29udGV4dFBhdGggPT5cbiAgICAgIHRoaXMubG9hZGVkUmVtb3Rlc0NvbnRleHRQYXRoQ2FjaGUuc2V0KGNvbnRleHRQYXRoLCB0cnVlKVxuICAgICk7XG5cbiAgICBpZiAocmVtb3RlTW9kdWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucGx1Z2luc1Jlc29sdmUucmVzb2x2ZVJlbW90ZVBsdWdpbnMocmVtb3RlTW9kdWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluIGNhc2UgbG9hZGluZyBhbGwgbW9kdWxlcyB2aWEgcGx1Z2luc1Jlc29sdmUubG9hZFJlbW90ZXMgZmFpbGVkXG4gICAgICAvLyAoZS5nLiBhbGwgcGx1Z2lucyB0aGF0IHdlcmUgaW5zdGFsbGVkIGhhdmUgYmVlbiBkZWxldGVkIGZyb20gdGhlIHRlbmFudClcbiAgICAgIC8vIHdlIHN0aWxsIG5lZWQgdG8gbWFyayBsb2FkaW5nIHRoZSBwbHVnaW5zIGFzIHN1Y2Nlc3NmdWwuXG4gICAgICB0aGlzLmVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Mb2FkUmVtb3RlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnbm9QbHVnaW5zJywgZmFsc2UpKSB7XG4gICAgICB0aGlzLmVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVpLmN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZ1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnOiBQbHVnaW5zQ29uZmlnKSA9PiB0aGlzLmxvYWRSZW1vdGVzKHRoaXMuZ2V0UmVtb3Rlcyhjb25maWcpKSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpOiB2b2lkIHtcbiAgICAvLyBlbnN1cmUgd2UgY2FsbCBtYXJrUGx1Z2luc0FzTG9hZGVkIG9uIHRoZSBEeW5hbWljQ29tcG9uZW50U2VydmljZVxuICAgIHRoaXMucGx1Z2luc1Jlc29sdmUubWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICB9XG59XG4iLCI8Yzh5LWxvZ2luICpuZ0lmPVwiIW5vTG9naW4gJiYgISh1aS5jdXJyZW50VXNlciB8IGFzeW5jKVwiPjwvYzh5LWxvZ2luPlxuXG48ZGl2XG4gICpuZ0lmPVwibm9Mb2dpbiB8fCAoKHVpLmN1cnJlbnRVc2VyIHwgYXN5bmMpICYmICEoc2V0dXBTZXJ2aWNlLmlzU2V0dXBOZWVkZWQkIHwgYXN5bmMpKVwiXG4gIFtjbGFzcy5oZWFkLW9wZW5dPVwiaGVhZGVyU2VydmljZS5oZWFkZXJPcGVuXCJcbj5cbiAgPGM4eS1oZWFkZXItYmFyICNoZWFkZXI+PC9jOHktaGVhZGVyLWJhcj5cbiAgPGM4eS1kcmF3ZXItb3V0bGV0XG4gICAgcm9sZT1cInJlZ2lvblwiXG4gICAgcG9zaXRpb249XCJsZWZ0XCJcbiAgICBbb3Blbl09XCJoZWFkZXJTZXJ2aWNlLm5hdmlnYXRvck9wZW4kIHwgYXN5bmNcIlxuICA+PC9jOHktZHJhd2VyLW91dGxldD5cblxuICA8ZGl2IGNsYXNzPVwiYWxlcnRzXCI+XG4gICAgPGM4eS1hbGVydC1vdXRsZXQ+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L2Rpdj5cbiAgPGM4eS10YWJzLW91dGxldFxuICAgICN0YWJzQ29tcG9uZW50XG4gICAgW3RhYnNdPVwidGFicy5pdGVtcyQgfCBhc3luY1wiXG4gICAgW25hdmlnYXRvck9wZW5dPVwiaGVhZGVyU2VydmljZS5uYXZpZ2F0b3JPcGVuJCB8IGFzeW5jXCJcbiAgICBbb3JpZW50YXRpb25dPVwidGFicy5vcmllbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgcm9sZT1cIm5hdmlnYXRpb25cIlxuICA+PC9jOHktdGFicy1vdXRsZXQ+XG4gIDxjOHktYWN0aW9uLWJhclxuICAgICNhY3Rpb25CYXJDb21wb25lbnRcbiAgICBbbmF2aWdhdG9yT3Blbl09XCJoZWFkZXJTZXJ2aWNlLm5hdmlnYXRvck9wZW4kIHwgYXN5bmNcIlxuICAgIFtoYXNUYWJzXT1cInRhYnNDb21wb25lbnQuaGFzVGFic1wiXG4gICAgW2lzVGFic0hvcml6b250YWxdPVwidGFic0NvbXBvbmVudD8uaXNIb3Jpem9udGFsXCJcbiAgICBbaXRlbXMkXT1cImFjdGlvbkJhci5pdGVtcyRcIlxuICAgIHJvbGU9XCJncm91cFwiXG4gID48L2M4eS1hY3Rpb24tYmFyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIG9wZW46IGhlYWRlclNlcnZpY2UubmF2aWdhdG9yT3BlbiQgfCBhc3luYyxcbiAgICAgICduby1hcHBzLW1hcmdpbic6IG5vQXBwc01hcmdpbiQgfCBhc3luYyxcbiAgICAgICdob3Jpem9udGFsLXRhYnMnOiB0YWJzQ29tcG9uZW50LmlzSG9yaXpvbnRhbCxcbiAgICAgICd2ZXJ0aWNhbC10YWJzJzogIXRhYnNDb21wb25lbnQuaXNIb3Jpem9udGFsLFxuICAgICAgJ2hhcy10YWJzJzogdGFic0NvbXBvbmVudC5oYXNUYWJzLFxuICAgICAgJ2hhcy1hY3Rpb24tYmFyJzogIWFjdGlvbkJhckNvbXBvbmVudD8uaGlkZGVuXG4gICAgfVwiXG4gID5cbiAgICA8bWFpbiBpZD1cIm1haW4tY29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiI2M4eS1sZWdhY3ktdmlld1wiPjwvbmctY29udGVudD5cbiAgICAgIDwhLS0gbGVnYWN5IG5nLXZpZXcsIHdpbGwgbm90IGJlIG1pZ3JhdGVkIGF0bSAtLT5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIodWkuY3VycmVudFVzZXIgfCBhc3luYykgJiYgKHNldHVwU2VydmljZS5pc1NldHVwTmVlZGVkJCB8IGFzeW5jKVwiPlxuICA8Yzh5LWhlYWRlci1iYXIgW3NpbXBsZV09XCJ0cnVlXCI+PC9jOHktaGVhZGVyLWJhcj5cbiAgPGRpdiBjbGFzcz1cIm1jb250YWluZXJcIiByb2xlPVwibWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgIDxjOHktc2V0dXA+PC9jOHktc2V0dXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjOHktY29va2llLWJhbm5lcj48L2M4eS1jb29raWUtYmFubmVyPlxuIl19
@@ -1,5 +1,5 @@
1
- import { DatePipe as NgDatePipe } from '@angular/common';
2
- import { Inject, LOCALE_ID, Pipe } from '@angular/core';
1
+ import { DatePipe as NgDatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';
2
+ import { Inject, LOCALE_ID, Optional, Pipe } from '@angular/core';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
4
  import { gettext } from '../i18n/gettext';
5
5
  import * as i0 from "@angular/core";
@@ -24,8 +24,8 @@ export const ES_MAX_TIME_MILLISECONDS = 8640000000000000;
24
24
  * <span>{{ 8640000000000000 + 1 | c8yDate }}</span> <!-- e.g. after 13 Sep 275760, 03:00:00 --> ```
25
25
  */
26
26
  export class DatePipe extends NgDatePipe {
27
- constructor(locale, translateService) {
28
- super(locale);
27
+ constructor(locale, translateService, defaultTimezone) {
28
+ super(locale, defaultTimezone);
29
29
  this.translateService = translateService;
30
30
  }
31
31
  transform(value, format = 'medium', timezone, locale) {
@@ -48,7 +48,7 @@ export class DatePipe extends NgDatePipe {
48
48
  return result;
49
49
  }
50
50
  }
51
- DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
51
+ DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: i1.TranslateService }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
52
52
  DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, name: "c8yDate" });
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, decorators: [{
54
54
  type: Pipe,
@@ -56,5 +56,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
56
56
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
57
57
  type: Inject,
58
58
  args: [LOCALE_ID]
59
- }] }, { type: i1.TranslateService }]; } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRTFDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLGdCQUFnQixDQUFDO0FBRXpEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxNQUFNLE9BQU8sUUFBUyxTQUFRLFVBQVU7SUFDdEMsWUFBK0IsTUFBYyxFQUFVLGdCQUFrQztRQUN2RixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFEdUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUV6RixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxNQUFNLEdBQUcsUUFBUSxFQUFFLFFBQWlCLEVBQUUsTUFBZTtRQUN6RSxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUV4QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztZQUMxRCxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBRW5FLFdBQVcsR0FBRyxLQUFLLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQztZQUNoRCxXQUFXLEdBQUcsS0FBSyxHQUFHLHdCQUF3QixDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxNQUFNLEdBQVcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU5RSxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdEY7YUFBTSxJQUFJLFdBQVcsRUFBRTtZQUN0QixNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3JGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7cUdBMUJVLFFBQVEsa0JBQ0MsU0FBUzttR0FEbEIsUUFBUTsyRkFBUixRQUFRO2tCQURwQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTs7MEJBRVYsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgYXMgTmdEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIExPQ0FMRV9JRCwgUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbi8qKlxuICogVGhlIHJhbmdlIG9mIHRpbWVzIHN1cHBvcnRlZCBieSBFQ01BU2NyaXB0IERhdGUgb2JqZWN0cyBpbiBtaWxsaXNlY29uZHMuXG4gKiBAc2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy0xNS45LjEuMVxuICovXG5leHBvcnQgY29uc3QgRVNfTUFYX1RJTUVfTUlMTElTRUNPTkRTID0gODY0MDAwMDAwMDAwMDAwMDtcblxuLyoqXG4gKiBGb3JtYXRzIGEgZGF0ZSB2YWx1ZSBhY2NvcmRpbmcgdG8gbG9jYWxlIHJ1bGVzLiBJZiBubyBvdGhlciBmb3JtYXQgc3BlY2lmaWVkIGl0IGRlZmF1bHRzIHRvIGBtZWRpdW1gXG4gKiB1c2VkIGFzIHN0YW5kYXJkIGRhdGUvdGltZSBmb3JtYXQuXG4gKlxuICogRXh0ZW5kcyBBbmd1bGFyJ3MgRGF0ZVBpcGUgaW4gYSB3YXkgc28gdGhhdCBkYXRlIHZhbHVlcyBleGNlZWRpbmcgdGhlIHJhbmdlIHN1cHBvcnRlZCBieSBFQ01BU2NyaXB0XG4gKiBhcmUgZGlzcGxheWVkIGFzIGVhcmxpZXN0L2xhdGVzdCBzdXBwb3J0ZWQgcG9pbnQgaW4gdGltZSBwcmludGVkIGluIHRoZSBkZXNpcmVkIGZvcm1hdCBwcmUtIG9yIHBvc3RmaXhlZFxuICogYnkgdGhlIHdvcmQgYGJlZm9yZWAgb3IgYGFmdGVyYCwgcmVzcGVjdGl2ZWx5LlxuICogSW4gYWxsIG90aGVyIGNhc2VzIHRoZSBwaXBlIGJlaGF2ZXMgYXMgdGhlIHN0YW5kYXJkIFtEYXRlUGlwZV17QGxpbmsgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vRGF0ZVBpcGV9LlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+e3sgZGVhZGxpbmUgfCBjOHlEYXRlIH19PC9zcGFuPiA8IS0tIGUuZy4gNyBNYXkgMjAyMCwgMTc6NDU6MTkgKGVuLUdCKSBvciAwNy4wNS4yMDIwLCAxNzo0NToxOSAoZGUpIC0tPlxuICogPHNwYW4+e3sgbGFzdFVwZGF0ZWQgfCBjOHlEYXRlOiAnYSBoOk1NOnNzJyB9fTwvc3Bhbj4gPCEtLSBlLmcuIHBtIDU6NDU6MTkgLS0+XG4gKiA8c3Bhbj57eyA4NjQwMDAwMDAwMDAwMDAwICsgMSB8IGM4eURhdGUgfX08L3NwYW4+IDwhLS0gZS5nLiBhZnRlciAxMyBTZXAgMjc1NzYwLCAwMzowMDowMCAtLT4gYGBgXG4gKi9cbkBQaXBlKHsgbmFtZTogJ2M4eURhdGUnIH0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpcGUgZXh0ZW5kcyBOZ0RhdGVQaXBlIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcihsb2NhbGUpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGZvcm1hdCA9ICdtZWRpdW0nLCB0aW1lem9uZT86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgdmFsdWVJbkJvdW5kcyA9IHZhbHVlO1xuICAgIGxldCB2YWx1ZUJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZUJleW9uZCA9IGZhbHNlO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgdmFsdWVJbkJvdW5kcyA9IE1hdGgubWluKHZhbHVlLCBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFMpO1xuICAgICAgdmFsdWVJbkJvdW5kcyA9IE1hdGgubWF4KHZhbHVlSW5Cb3VuZHMsIC1FU19NQVhfVElNRV9NSUxMSVNFQ09ORFMpO1xuXG4gICAgICB2YWx1ZUJlZm9yZSA9IHZhbHVlIDwgLUVTX01BWF9USU1FX01JTExJU0VDT05EUztcbiAgICAgIHZhbHVlQmV5b25kID0gdmFsdWUgPiBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFM7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IHN1cGVyLnRyYW5zZm9ybSh2YWx1ZUluQm91bmRzLCBmb3JtYXQsIHRpbWV6b25lLCBsb2NhbGUpO1xuXG4gICAgaWYgKHZhbHVlQmVmb3JlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KGBiZWZvcmUge3tkYXRlfX1gKSwgeyBkYXRlOiByZXN1bHQgfSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZUJleW9uZCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dChgYWZ0ZXIge3tkYXRlfX1gKSwgeyBkYXRlOiByZXN1bHQgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
59
+ }] }, { type: i1.TranslateService }, { type: undefined, decorators: [{
60
+ type: Inject,
61
+ args: [DATE_PIPE_DEFAULT_TIMEZONE]
62
+ }, {
63
+ type: Optional
64
+ }] }]; } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksVUFBVSxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckYsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUUxQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUV6RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFVO0lBQ3RDLFlBQ3FCLE1BQWMsRUFDekIsZ0JBQWtDLEVBQ00sZUFBK0I7UUFFL0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUh2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBSTVDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsUUFBaUIsRUFBRSxNQUFlO1FBQ3pFLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXhCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQzFELGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFFbkUsV0FBVyxHQUFHLEtBQUssR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ2hELFdBQVcsR0FBRyxLQUFLLEdBQUcsd0JBQXdCLENBQUM7U0FDaEQ7UUFDRCxJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlFLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUN0RjthQUFNLElBQUksV0FBVyxFQUFFO1lBQ3RCLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckY7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztxR0E5QlUsUUFBUSxrQkFFVCxTQUFTLDZDQUVULDBCQUEwQjttR0FKekIsUUFBUTsyRkFBUixRQUFRO2tCQURwQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTs7MEJBR3BCLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsMEJBQTBCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgYXMgTmdEYXRlUGlwZSwgREFURV9QSVBFX0RFRkFVTFRfVElNRVpPTkUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBMT0NBTEVfSUQsIE9wdGlvbmFsLCBQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBUaGUgcmFuZ2Ugb2YgdGltZXMgc3VwcG9ydGVkIGJ5IEVDTUFTY3JpcHQgRGF0ZSBvYmplY3RzIGluIG1pbGxpc2Vjb25kcy5cbiAqIEBzZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTE1LjkuMS4xXG4gKi9cbmV4cG9ydCBjb25zdCBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFMgPSA4NjQwMDAwMDAwMDAwMDAwO1xuXG4vKipcbiAqIEZvcm1hdHMgYSBkYXRlIHZhbHVlIGFjY29yZGluZyB0byBsb2NhbGUgcnVsZXMuIElmIG5vIG90aGVyIGZvcm1hdCBzcGVjaWZpZWQgaXQgZGVmYXVsdHMgdG8gYG1lZGl1bWBcbiAqIHVzZWQgYXMgc3RhbmRhcmQgZGF0ZS90aW1lIGZvcm1hdC5cbiAqXG4gKiBFeHRlbmRzIEFuZ3VsYXIncyBEYXRlUGlwZSBpbiBhIHdheSBzbyB0aGF0IGRhdGUgdmFsdWVzIGV4Y2VlZGluZyB0aGUgcmFuZ2Ugc3VwcG9ydGVkIGJ5IEVDTUFTY3JpcHRcbiAqIGFyZSBkaXNwbGF5ZWQgYXMgZWFybGllc3QvbGF0ZXN0IHN1cHBvcnRlZCBwb2ludCBpbiB0aW1lIHByaW50ZWQgaW4gdGhlIGRlc2lyZWQgZm9ybWF0IHByZS0gb3IgcG9zdGZpeGVkXG4gKiBieSB0aGUgd29yZCBgYmVmb3JlYCBvciBgYWZ0ZXJgLCByZXNwZWN0aXZlbHkuXG4gKiBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIHBpcGUgYmVoYXZlcyBhcyB0aGUgc3RhbmRhcmQgW0RhdGVQaXBlXXtAbGluayBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvbW1vbi9EYXRlUGlwZX0uXG4gKlxuICogYGBgaHRtbFxuICogPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj57eyBkZWFkbGluZSB8IGM4eURhdGUgfX08L3NwYW4+IDwhLS0gZS5nLiA3IE1heSAyMDIwLCAxNzo0NToxOSAoZW4tR0IpIG9yIDA3LjA1LjIwMjAsIDE3OjQ1OjE5IChkZSkgLS0+XG4gKiA8c3Bhbj57eyBsYXN0VXBkYXRlZCB8IGM4eURhdGU6ICdhIGg6TU06c3MnIH19PC9zcGFuPiA8IS0tIGUuZy4gcG0gNTo0NToxOSAtLT5cbiAqIDxzcGFuPnt7IDg2NDAwMDAwMDAwMDAwMDAgKyAxIHwgYzh5RGF0ZSB9fTwvc3Bhbj4gPCEtLSBlLmcuIGFmdGVyIDEzIFNlcCAyNzU3NjAsIDAzOjAwOjAwIC0tPiBgYGBcbiAqL1xuQFBpcGUoeyBuYW1lOiAnYzh5RGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlwZSBleHRlbmRzIE5nRGF0ZVBpcGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoREFURV9QSVBFX0RFRkFVTFRfVElNRVpPTkUpIEBPcHRpb25hbCgpIGRlZmF1bHRUaW1lem9uZT86IHN0cmluZyB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIobG9jYWxlLCBkZWZhdWx0VGltZXpvbmUpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGZvcm1hdCA9ICdtZWRpdW0nLCB0aW1lem9uZT86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgdmFsdWVJbkJvdW5kcyA9IHZhbHVlO1xuICAgIGxldCB2YWx1ZUJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZUJleW9uZCA9IGZhbHNlO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgdmFsdWVJbkJvdW5kcyA9IE1hdGgubWluKHZhbHVlLCBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFMpO1xuICAgICAgdmFsdWVJbkJvdW5kcyA9IE1hdGgubWF4KHZhbHVlSW5Cb3VuZHMsIC1FU19NQVhfVElNRV9NSUxMSVNFQ09ORFMpO1xuXG4gICAgICB2YWx1ZUJlZm9yZSA9IHZhbHVlIDwgLUVTX01BWF9USU1FX01JTExJU0VDT05EUztcbiAgICAgIHZhbHVlQmV5b25kID0gdmFsdWUgPiBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFM7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IHN1cGVyLnRyYW5zZm9ybSh2YWx1ZUluQm91bmRzLCBmb3JtYXQsIHRpbWV6b25lLCBsb2NhbGUpO1xuXG4gICAgaWYgKHZhbHVlQmVmb3JlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KGBiZWZvcmUge3tkYXRlfX1gKSwgeyBkYXRlOiByZXN1bHQgfSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZUJleW9uZCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dChgYWZ0ZXIge3tkYXRlfX1gKSwgeyBkYXRlOiByZXN1bHQgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -1,30 +1,33 @@
1
1
  import { Pipe } from '@angular/core';
2
+ import { isDate as _isDate } from 'lodash-es';
2
3
  import { DatePipe } from './date.pipe';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "./date.pipe";
5
6
  export class StringifyObjectPipe {
6
7
  constructor(c8yDatePipe) {
7
8
  this.c8yDatePipe = c8yDatePipe;
9
+ this.isoDateTimeRegex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(([+-](\d{2}):(\d{2})|Z)?)$/;
8
10
  }
9
11
  transform(value) {
10
12
  if (!value) {
11
13
  return '';
12
14
  }
13
- if (typeof value === 'object') {
15
+ if (typeof value === 'object' && !_isDate(value)) {
14
16
  return JSON.stringify(value);
15
17
  }
16
- if (this.checkDateValidity(value)) {
18
+ if (this.isDate(value)) {
17
19
  return this.c8yDatePipe.transform(value);
18
20
  }
19
21
  return value;
20
22
  }
21
- checkDateValidity(value) {
23
+ isDate(value) {
22
24
  if (!value)
23
25
  return false;
24
- const isNumericOrFloating = /^-?\d+(\.\d+)?$/.test(value);
25
- const parsedDate = new Date(value);
26
- const isValidDate = !isNaN(Number(parsedDate)) && Object.prototype.toString.call(parsedDate) === '[object Date]';
27
- return isValidDate && !isNumericOrFloating;
26
+ if (_isDate(value))
27
+ return !isNaN(value);
28
+ if (typeof value === 'string')
29
+ return this.isoDateTimeRegex.test(value);
30
+ return false;
28
31
  }
29
32
  }
30
33
  StringifyObjectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: StringifyObjectPipe, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
@@ -33,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
33
36
  type: Pipe,
34
37
  args: [{ name: 'stringifyObject' }]
35
38
  }], ctorParameters: function () { return [{ type: i1.DatePipe }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LW9iamVjdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vc3RyaW5naWZ5LW9iamVjdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUd2QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW9CLFdBQXFCO1FBQXJCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO0lBQUcsQ0FBQztJQUM3QyxTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDekIsTUFBTSxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLGVBQWUsQ0FBQztRQUUvRixPQUFPLFdBQVcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQzdDLENBQUM7O2dIQXZCVSxtQkFBbUI7OEdBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuL2RhdGUucGlwZSc7XG5cbkBQaXBlKHsgbmFtZTogJ3N0cmluZ2lmeU9iamVjdCcgfSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdpZnlPYmplY3RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYzh5RGF0ZVBpcGU6IERhdGVQaXBlKSB7fVxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2hlY2tEYXRlVmFsaWRpdHkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jOHlEYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjaGVja0RhdGVWYWxpZGl0eSh2YWx1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBpc051bWVyaWNPckZsb2F0aW5nID0gL14tP1xcZCsoXFwuXFxkKyk/JC8udGVzdCh2YWx1ZSk7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9XG4gICAgICAhaXNOYU4oTnVtYmVyKHBhcnNlZERhdGUpKSAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocGFyc2VkRGF0ZSkgPT09ICdbb2JqZWN0IERhdGVdJztcblxuICAgIHJldHVybiBpc1ZhbGlkRGF0ZSAmJiAhaXNOdW1lcmljT3JGbG9hdGluZztcbiAgfVxufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LW9iamVjdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vc3RyaW5naWZ5LW9iamVjdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUd2QyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQW9CLFdBQXFCO1FBQXJCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBRnhCLHFCQUFnQixHQUMvQix1RkFBdUYsQ0FBQztJQUM5QyxDQUFDO0lBQzdDLFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSztRQUNsQixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Z0hBdkJVLG1CQUFtQjs4R0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0RhdGUgYXMgX2lzRGF0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4vZGF0ZS5waXBlJztcblxuQFBpcGUoeyBuYW1lOiAnc3RyaW5naWZ5T2JqZWN0JyB9KVxuZXhwb3J0IGNsYXNzIFN0cmluZ2lmeU9iamVjdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc29EYXRlVGltZVJlZ2V4ID1cbiAgICAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pKChbKy1dKFxcZHsyfSk6KFxcZHsyfSl8Wik/KSQvO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGM4eURhdGVQaXBlOiBEYXRlUGlwZSkge31cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIV9pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jOHlEYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzRGF0ZSh2YWx1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoX2lzRGF0ZSh2YWx1ZSkpIHJldHVybiAhaXNOYU4odmFsdWUpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdGhpcy5pc29EYXRlVGltZVJlZ2V4LnRlc3QodmFsdWUpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=