codefoxcore 0.0.7 → 0.0.9
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/esm2022/lib/interceptors/error.interceptor.mjs +32 -0
- package/esm2022/lib/interceptors/index.mjs +3 -1
- package/esm2022/lib/interceptors/precheck.interceptor.mjs +34 -0
- package/esm2022/lib/providers.mjs +20 -2
- package/esm2022/lib/services/dialog.service.mjs +20 -6
- package/esm2022/lib/services/google.maps.service.mjs +42 -0
- package/esm2022/lib/services/index.mjs +2 -1
- package/esm2022/lib/tokens/dialog.token.mjs +11 -1
- package/esm2022/lib/tokens/google.maps.token.mjs +7 -0
- package/esm2022/lib/tokens/index.mjs +2 -1
- package/fesm2022/codefoxcore.mjs +146 -6
- package/fesm2022/codefoxcore.mjs.map +1 -1
- package/lib/interceptors/error.interceptor.d.ts +10 -0
- package/lib/interceptors/index.d.ts +2 -0
- package/lib/interceptors/precheck.interceptor.d.ts +10 -0
- package/lib/providers.d.ts +4 -1
- package/lib/services/dialog.service.d.ts +6 -4
- package/lib/services/google.maps.service.d.ts +14 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/tokens/dialog.token.d.ts +3 -1
- package/lib/tokens/google.maps.token.d.ts +2 -0
- package/lib/tokens/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { throwError } from 'rxjs';
|
|
3
|
+
import { catchError } from 'rxjs/operators';
|
|
4
|
+
import { BaseInterceptor } from './base.interceptor';
|
|
5
|
+
import { InterceptorType } from '../interfaces';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ErrorInterceptor extends BaseInterceptor {
|
|
8
|
+
intercept(request, next) {
|
|
9
|
+
if (this.skipInterceptor()) {
|
|
10
|
+
return next.handle(request);
|
|
11
|
+
}
|
|
12
|
+
return next.handle(request).pipe(catchError((httpErrorResponse) => {
|
|
13
|
+
if (this.interceptorsService.errorCallbackfunction !== null && !this.interceptorsService.errorSkipStatusCodes.includes(httpErrorResponse.status)) {
|
|
14
|
+
this.loggerService.info('Error Interceptor Callback Function Called');
|
|
15
|
+
this.interceptorsService.errorCallbackfunction(httpErrorResponse);
|
|
16
|
+
}
|
|
17
|
+
return throwError(() => httpErrorResponse);
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
constructor() {
|
|
21
|
+
super(InterceptorType.ERROR);
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorInterceptor, providedIn: 'root' }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorInterceptor, decorators: [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{
|
|
29
|
+
providedIn: 'root'
|
|
30
|
+
}]
|
|
31
|
+
}], ctorParameters: function () { return []; } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL2ludGVyY2VwdG9ycy9lcnJvci5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtoRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQUNwRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUMvQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM1QixVQUFVLENBQUMsQ0FBQyxpQkFBb0MsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzlJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3JFO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEO1FBQ0MsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQWxCUSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VJbnRlcmNlcHRvciB9IGZyb20gJy4vYmFzZS5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IEludGVyY2VwdG9yVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcnJvckludGVyY2VwdG9yIGV4dGVuZHMgQmFzZUludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuXHRpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2tpcEludGVyY2VwdG9yKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoaHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnRlcmNlcHRvcnNTZXJ2aWNlLmVycm9yQ2FsbGJhY2tmdW5jdGlvbiAhPT0gbnVsbCAmJiAhdGhpcy5pbnRlcmNlcHRvcnNTZXJ2aWNlLmVycm9yU2tpcFN0YXR1c0NvZGVzLmluY2x1ZGVzKGh0dHBFcnJvclJlc3BvbnNlLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuaW5mbygnRXJyb3IgSW50ZXJjZXB0b3IgQ2FsbGJhY2sgRnVuY3Rpb24gQ2FsbGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcmNlcHRvcnNTZXJ2aWNlLmVycm9yQ2FsbGJhY2tmdW5jdGlvbihodHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBodHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIFx0c3VwZXIoSW50ZXJjZXB0b3JUeXBlLkVSUk9SKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export * from './token.interceptor';
|
|
2
|
-
|
|
2
|
+
export * from './precheck.interceptor';
|
|
3
|
+
export * from './error.interceptor';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL2ludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdG9rZW4uaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByZWNoZWNrLmludGVyY2VwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci5pbnRlcmNlcHRvcic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BaseInterceptor } from './base.interceptor';
|
|
3
|
+
import { InterceptorType } from '../interfaces';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PrecheckInterceptor extends BaseInterceptor {
|
|
6
|
+
intercept(request, next) {
|
|
7
|
+
if (this.skipInterceptor()) {
|
|
8
|
+
return next.handle(request);
|
|
9
|
+
}
|
|
10
|
+
if (this.interceptorsService.precheck !== null) {
|
|
11
|
+
request = request.clone({
|
|
12
|
+
setHeaders: {
|
|
13
|
+
Precheck: this.interceptorsService.precheck
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
if (this.interceptorsService.resetPrecheck) {
|
|
17
|
+
this.interceptorsService.precheck = null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return next.handle(request);
|
|
21
|
+
}
|
|
22
|
+
constructor() {
|
|
23
|
+
super(InterceptorType.PRECHECK);
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PrecheckInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PrecheckInterceptor, providedIn: 'root' }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PrecheckInterceptor, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: 'root'
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: function () { return []; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlY2hlY2suaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL2ludGVyY2VwdG9ycy9wcmVjaGVjay5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtoRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUV2RCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNyRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQy9DLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN2QixVQUFVLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRO2lCQUMzQzthQUNELENBQUMsQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDekM7U0FDRDtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7UUFDQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBckJXLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRm5CLE1BQU07OzRGQUVOLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzZUludGVyY2VwdG9yIH0gZnJvbSAnLi9iYXNlLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgSW50ZXJjZXB0b3JUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmVjaGVja0ludGVyY2VwdG9yIGV4dGVuZHMgQmFzZUludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuXHJcblx0aW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG5cdFx0aWYgKHRoaXMuc2tpcEludGVyY2VwdG9yKCkpIHtcclxuXHRcdFx0cmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuaW50ZXJjZXB0b3JzU2VydmljZS5wcmVjaGVjayAhPT0gbnVsbCkge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XHJcblx0XHRcdFx0c2V0SGVhZGVyczoge1xyXG5cdFx0XHRcdFx0UHJlY2hlY2s6IHRoaXMuaW50ZXJjZXB0b3JzU2VydmljZS5wcmVjaGVja1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmICh0aGlzLmludGVyY2VwdG9yc1NlcnZpY2UucmVzZXRQcmVjaGVjaykge1xyXG5cdFx0XHRcdHRoaXMuaW50ZXJjZXB0b3JzU2VydmljZS5wcmVjaGVjayA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0c3VwZXIoSW50ZXJjZXB0b3JUeXBlLlBSRUNIRUNLKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HTTP_INTERCEPTORS } from "@angular/common/http";
|
|
2
2
|
import { makeEnvironmentProviders } from "@angular/core";
|
|
3
3
|
import { TokenInterceptor } from "./interceptors/token.interceptor";
|
|
4
|
-
import { OPENED_DIALOG_BODY_CLASS, PREDEFINED_DIALOGS } from "./tokens";
|
|
4
|
+
import { DIALOG_ALERT_COMPONENT, DIALOG_CONFIRM_COMPONENT, GOOGLE_MAPS_API_KEY, OPENED_DIALOG_BODY_CLASS, PREDEFINED_DIALOGS } from "./tokens";
|
|
5
5
|
export function provideTokenInterceptor() {
|
|
6
6
|
return makeEnvironmentProviders([{
|
|
7
7
|
provide: HTTP_INTERCEPTORS,
|
|
@@ -21,4 +21,22 @@ export function provideOpenedDialogBodyClass(openedDialogBodyClass) {
|
|
|
21
21
|
useValue: openedDialogBodyClass
|
|
22
22
|
}]);
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
export function provideGoogleMapsApiKey(googleMapsApiKey) {
|
|
25
|
+
return makeEnvironmentProviders([{
|
|
26
|
+
provide: GOOGLE_MAPS_API_KEY,
|
|
27
|
+
useValue: googleMapsApiKey
|
|
28
|
+
}]);
|
|
29
|
+
}
|
|
30
|
+
export function provideDialogConfirmComponent(component) {
|
|
31
|
+
return makeEnvironmentProviders([{
|
|
32
|
+
provide: DIALOG_CONFIRM_COMPONENT,
|
|
33
|
+
useValue: component
|
|
34
|
+
}]);
|
|
35
|
+
}
|
|
36
|
+
export function provideDialogAlertComponent(component) {
|
|
37
|
+
return makeEnvironmentProviders([{
|
|
38
|
+
provide: DIALOG_ALERT_COMPONENT,
|
|
39
|
+
useValue: component
|
|
40
|
+
}]);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZWZveGNvcmUvc3JjL2xpYi9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF3Qix3QkFBd0IsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0ksTUFBTSxVQUFVLHVCQUF1QjtJQUNuQyxPQUFPLHdCQUF3QixDQUFDLENBQUM7WUFDN0IsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLGlCQUFvQztJQUN6RSxPQUFPLHdCQUF3QixDQUFDLENBQUM7WUFDN0IsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixRQUFRLEVBQUUsaUJBQWlCO1NBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxxQkFBb0M7SUFDN0UsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsUUFBUSxFQUFFLHFCQUFxQjtTQUNsQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsZ0JBQStCO0lBQ3RFLE9BQU8sd0JBQXdCLENBQUMsQ0FBQztZQUNoQyxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFFBQVEsRUFBRSxnQkFBZ0I7U0FDMUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUFDLFNBQW9CO0lBQ2pFLE9BQU8sd0JBQXdCLENBQUMsQ0FBQztZQUNoQyxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFFBQVEsRUFBRSxTQUFTO1NBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxTQUFvQjtJQUMvRCxPQUFPLHdCQUF3QixDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixRQUFRLEVBQUUsU0FBUztTQUNuQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVG9rZW5JbnRlcmNlcHRvciB9IGZyb20gXCIuL2ludGVyY2VwdG9ycy90b2tlbi5pbnRlcmNlcHRvclwiO1xyXG5pbXBvcnQgeyBESUFMT0dfQUxFUlRfQ09NUE9ORU5ULCBESUFMT0dfQ09ORklSTV9DT01QT05FTlQsIEdPT0dMRV9NQVBTX0FQSV9LRVksIE9QRU5FRF9ESUFMT0dfQk9EWV9DTEFTUywgUFJFREVGSU5FRF9ESUFMT0dTIH0gZnJvbSBcIi4vdG9rZW5zXCI7XHJcbmltcG9ydCB7IFByZWRlZmluZWREaWFsb2dzIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUb2tlbkludGVyY2VwdG9yKCk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcclxuICAgIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3tcclxuICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgICB1c2VDbGFzczogVG9rZW5JbnRlcmNlcHRvcixcclxuICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfV0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVByZWRlZmluZWREaWFsb2dzKHByZWRlZmluZWREaWFsb2dzOiBQcmVkZWZpbmVkRGlhbG9ncyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcclxuICAgIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3tcclxuICAgICAgICBwcm92aWRlOiBQUkVERUZJTkVEX0RJQUxPR1MsXHJcbiAgICAgICAgdXNlVmFsdWU6IHByZWRlZmluZWREaWFsb2dzXHJcbiAgICB9XSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlT3BlbmVkRGlhbG9nQm9keUNsYXNzKG9wZW5lZERpYWxvZ0JvZHlDbGFzczogc3RyaW5nIHwgbnVsbCk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcclxuICAgIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3tcclxuICAgICAgICBwcm92aWRlOiBPUEVORURfRElBTE9HX0JPRFlfQ0xBU1MsXHJcbiAgICAgICAgdXNlVmFsdWU6IG9wZW5lZERpYWxvZ0JvZHlDbGFzc1xyXG4gICAgfV0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUdvb2dsZU1hcHNBcGlLZXkoZ29vZ2xlTWFwc0FwaUtleTogc3RyaW5nIHwgbnVsbCk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcclxuXHRyZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFt7XHJcblx0XHRwcm92aWRlOiBHT09HTEVfTUFQU19BUElfS0VZLFxyXG5cdFx0dXNlVmFsdWU6IGdvb2dsZU1hcHNBcGlLZXlcclxuXHR9XSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGlhbG9nQ29uZmlybUNvbXBvbmVudChjb21wb25lbnQ6IFR5cGU8YW55Pik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcclxuXHRyZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFt7XHJcblx0XHRwcm92aWRlOiBESUFMT0dfQ09ORklSTV9DT01QT05FTlQsXHJcblx0XHR1c2VWYWx1ZTogY29tcG9uZW50XHJcblx0fV0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURpYWxvZ0FsZXJ0Q29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxhbnk+KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xyXG5cdHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3tcclxuXHRcdHByb3ZpZGU6IERJQUxPR19BTEVSVF9DT01QT05FTlQsXHJcblx0XHR1c2VWYWx1ZTogY29tcG9uZW50XHJcblx0fV0pO1xyXG59XHJcbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { ApplicationRef, createComponent, inject, Injectable, Injector, PLATFORM
|
|
|
3
3
|
import { Title } from '@angular/platform-browser';
|
|
4
4
|
import { filter, Subject } from 'rxjs';
|
|
5
5
|
import { DialogConfig, DialogInjector, DialogRef } from '../classes';
|
|
6
|
-
import { ALERT_CONFIGURATIONS, PREDEFINED_DIALOGS, CONFIRM_CONFIGURATIONS, OPENED_DIALOG_BODY_CLASS } from '../tokens';
|
|
6
|
+
import { ALERT_CONFIGURATIONS, PREDEFINED_DIALOGS, CONFIRM_CONFIGURATIONS, OPENED_DIALOG_BODY_CLASS, DIALOG_CONFIRM_COMPONENT, DIALOG_ALERT_COMPONENT } from '../tokens';
|
|
7
7
|
import { MessageService } from '../services';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class DialogService {
|
|
@@ -13,6 +13,8 @@ export class DialogService {
|
|
|
13
13
|
this.predefinedAlertConfigurations = inject(ALERT_CONFIGURATIONS);
|
|
14
14
|
this.predefinedDialogs = inject(PREDEFINED_DIALOGS);
|
|
15
15
|
this.openedDialogBodyClass = inject(OPENED_DIALOG_BODY_CLASS);
|
|
16
|
+
this.dialogConfirmComponent = inject(DIALOG_CONFIRM_COMPONENT);
|
|
17
|
+
this.dialogAlertComponent = inject(DIALOG_ALERT_COMPONENT);
|
|
16
18
|
this.title = inject(Title);
|
|
17
19
|
this.messageService = inject(MessageService);
|
|
18
20
|
this.dialogs = new Map();
|
|
@@ -268,7 +270,10 @@ export class DialogService {
|
|
|
268
270
|
});
|
|
269
271
|
});
|
|
270
272
|
}
|
|
271
|
-
async confirmAsync(configuration, dialogConfiguration = {}, component) {
|
|
273
|
+
async confirmAsync(configuration, dialogConfiguration = {}, component = this.dialogConfirmComponent) {
|
|
274
|
+
if (component === null) {
|
|
275
|
+
throw new Error('No component provided for confirm dialog!');
|
|
276
|
+
}
|
|
272
277
|
return await new Promise((resolve) => {
|
|
273
278
|
this.confirm(configuration, dialogConfiguration, component).then(() => {
|
|
274
279
|
resolve(true);
|
|
@@ -277,12 +282,18 @@ export class DialogService {
|
|
|
277
282
|
});
|
|
278
283
|
});
|
|
279
284
|
}
|
|
280
|
-
confirmAccept(configuration, dialogConfiguration = {}, component) {
|
|
285
|
+
confirmAccept(configuration, dialogConfiguration = {}, component = this.dialogConfirmComponent) {
|
|
286
|
+
if (component === null) {
|
|
287
|
+
throw new Error('No component provided for confirm dialog!');
|
|
288
|
+
}
|
|
281
289
|
return new Promise((resolve) => {
|
|
282
290
|
this.confirm(configuration, dialogConfiguration, component).then(() => resolve(true)).catch(() => { });
|
|
283
291
|
});
|
|
284
292
|
}
|
|
285
|
-
confirmDecline(configuration, dialogConfiguration = {}, component) {
|
|
293
|
+
confirmDecline(configuration, dialogConfiguration = {}, component = this.dialogConfirmComponent) {
|
|
294
|
+
if (component === null) {
|
|
295
|
+
throw new Error('No component provided for confirm dialog!');
|
|
296
|
+
}
|
|
286
297
|
return new Promise((resolve) => {
|
|
287
298
|
this.confirm(configuration, dialogConfiguration, component).then(() => { }).catch(() => resolve(true));
|
|
288
299
|
});
|
|
@@ -297,7 +308,10 @@ export class DialogService {
|
|
|
297
308
|
}
|
|
298
309
|
});
|
|
299
310
|
}
|
|
300
|
-
showAlert(configuration, dialogConfiguration = {}, component) {
|
|
311
|
+
showAlert(configuration, dialogConfiguration = {}, component = this.dialogAlertComponent) {
|
|
312
|
+
if (component === null) {
|
|
313
|
+
throw new Error('No component provided for alert dialog!');
|
|
314
|
+
}
|
|
301
315
|
if (typeof configuration === 'string') {
|
|
302
316
|
const predefinedAlertConfiguration = this.predefinedAlertConfigurations[configuration];
|
|
303
317
|
if (predefinedAlertConfiguration === undefined) {
|
|
@@ -335,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
335
349
|
providedIn: 'root'
|
|
336
350
|
}]
|
|
337
351
|
}], ctorParameters: function () { return []; } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxjQUFjLEVBRWQsZUFBZSxFQUVmLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLFdBQVcsRUFFZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFLN0MsTUFBTSxPQUFPLGFBQWE7SUFnQnRCO1FBZEssYUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxvQ0FBK0IsR0FBMEMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDeEcsa0NBQTZCLEdBQXdDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xHLHNCQUFpQixHQUFzQixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNsRSwwQkFBcUIsR0FBa0IsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFaEYsVUFBSyxHQUFVLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixtQkFBYyxHQUFtQixNQUFNLENBQUMsY0FB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QW1DLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN2SCxJQUFJLDRCQUE0QixLQUFLLFNBQVMsRUFBRTtnQkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsR0FBRyxhQUFhLENBQUMsQ0FBQzthQUNsRjtZQUNELGFBQWEsR0FBRyw0QkFBNEIsQ0FBQztTQUM3QztRQUNELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUMzQixHQUFHLG1CQUFtQjtnQkFDdEIsSUFBSSxFQUFFO29CQUNMLGFBQWE7aUJBQ2I7Z0JBQ0QsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLGFBQWEsRUFBRSxLQUFLO2FBQ3BCLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDekIsT0FBTyxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUNuQixhQUE0QyxFQUM1QyxzQkFBMkMsRUFBRSxFQUM3QyxTQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNCLEdBQUcsbUJBQW1CO1lBQ3RCLElBQUksRUFBRTtnQkFDTCxhQUFhO2FBQ2I7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDOytHQXpZVyxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICAgIEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgQ29tcG9uZW50UmVmLFxyXG4gICAgY3JlYXRlQ29tcG9uZW50LFxyXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gICAgaW5qZWN0LFxyXG4gICAgSW5qZWN0YWJsZSxcclxuICAgIEluamVjdG9yLFxyXG4gICAgUExBVEZPUk1fSUQsXHJcbiAgICBUeXBlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IGZpbHRlciwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFsZXJ0Q29uZmlndXJhdGlvbiwgRGlhbG9nQ29uZmlndXJhdGlvbiwgQ29uZmlybUNvbmZpZ3VyYXRpb24sIExvYWRpbmdDb25maWd1cmF0aW9uLCBNb2RhbFdpdGhCdXR0b25zQ29uZmlndXJhdGlvbiwgUHJlZGVmaW5lZERpYWxvZ3MsIERpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb25maWcsIERpYWxvZ0luamVjdG9yLCBEaWFsb2dSZWYgfSBmcm9tICcuLi9jbGFzc2VzJztcclxuaW1wb3J0IHsgQUxFUlRfQ09ORklHVVJBVElPTlMsIFBSRURFRklORURfRElBTE9HUywgQ09ORklSTV9DT05GSUdVUkFUSU9OUywgT1BFTkVEX0RJQUxPR19CT0RZX0NMQVNTIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuXHRwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblx0cHJpdmF0ZSBwcmVkZWZpbmVkQ29uZmlybUNvbmZpZ3VyYXRpb25zOiB7W2tleTogc3RyaW5nXTogQ29uZmlybUNvbmZpZ3VyYXRpb259ID0gaW5qZWN0KENPTkZJUk1fQ09ORklHVVJBVElPTlMpO1xyXG5cdHByaXZhdGUgcHJlZGVmaW5lZEFsZXJ0Q29uZmlndXJhdGlvbnM6IHtba2V5OiBzdHJpbmddOiBBbGVydENvbmZpZ3VyYXRpb259ID0gaW5qZWN0KEFMRVJUX0NPTkZJR1VSQVRJT05TKTtcclxuXHRwcml2YXRlIHByZWRlZmluZWREaWFsb2dzOiBQcmVkZWZpbmVkRGlhbG9ncyA9IGluamVjdChQUkVERUZJTkVEX0RJQUxPR1MpO1xyXG5cdHByaXZhdGUgb3BlbmVkRGlhbG9nQm9keUNsYXNzOiBzdHJpbmcgfCBudWxsID0gaW5qZWN0KE9QRU5FRF9ESUFMT0dfQk9EWV9DTEFTUyk7XHJcblxyXG5cdHRpdGxlOiBUaXRsZSA9IGluamVjdChUaXRsZSk7XHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcclxuXHJcblx0ZGlhbG9nczogTWFwPERpYWxvZ1JlZiwgRGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyPiA9IG5ldyBNYXAoKTtcclxuXHRkaWFsb2dDb3VudENoYW5nZWQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XHJcblx0b3BlbkluZGV4OiBudW1iZXIgPSAxO1xyXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKGtleWJvYXJkRXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuXHRcdFx0XHRpZiAoa2V5Ym9hcmRFdmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2VzY2FwZScpIHtcclxuXHRcdFx0XHRcdGxldCBsYXN0T3BlbkluZGV4OiBudW1iZXIgPSAwO1xyXG5cdFx0XHRcdFx0bGV0IGxhc3RPcGVuZWREaWFsb2dSZWY6IERpYWxvZ1JlZiB8IG51bGwgPSBudWxsO1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbZGlhbG9nUmVmLCBjZkRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lcl0gb2YgdGhpcy5kaWFsb2dzLmVudHJpZXMoKSkge1xyXG5cdFx0XHRcdFx0XHRpZiAoY2ZEaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIub3BlbkluZGV4ID4gbGFzdE9wZW5JbmRleCkge1xyXG5cdFx0XHRcdFx0XHRcdGxhc3RPcGVuSW5kZXggPSBjZkRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lci5vcGVuSW5kZXg7XHJcblx0XHRcdFx0XHRcdFx0bGFzdE9wZW5lZERpYWxvZ1JlZiA9IGRpYWxvZ1JlZjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFxyXG5cdFx0XHRcdFx0aWYgKGxhc3RPcGVuZWREaWFsb2dSZWYgIT09IG51bGwgJiYgbGFzdE9wZW5lZERpYWxvZ1JlZi5kaWFsb2dDb25maWcgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGxhc3RPcGVuZWREaWFsb2dSZWYuZGlhbG9nQ29uZmlnLmlnbm9yZUtleVVwIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHJcblx0XHRcdFx0XHRcdGxhc3RPcGVuZWREaWFsb2dSZWYuY2xvc2UoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5kaWFsb2dDb3VudENoYW5nZWQuc3Vic2NyaWJlKChzaXplOiBudW1iZXIpID0+IHtcclxuXHRcdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdGhpcy5vcGVuZWREaWFsb2dCb2R5Q2xhc3MgIT09IG51bGwpIHtcclxuXHRcdFx0XHRpZiAoc2l6ZSA9PT0gMCkge1xyXG5cdFx0XHRcdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMub3BlbmVkRGlhbG9nQm9keUNsYXNzKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKHRoaXMub3BlbmVkRGlhbG9nQm9keUNsYXNzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH0gXHJcblxyXG5cdGFzeW5jIG9wZW5QcmVkZWZpbmVkPFQgPSBhbnk+KG5hbWU6IHN0cmluZywgZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9KTogUHJvbWlzZTxEaWFsb2dSZWY8VD4+IHtcclxuXHRcdGlmICh0aGlzLnByZWRlZmluZWREaWFsb2dzW25hbWVdID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0dGhyb3cgRXJyb3IoJ0RpYWxvZyB3aXRoIG5hbWUgXCInICsgbmFtZSArICdcIiBub3QgZm91bmQhJyk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBwcmVkZWZpbmVkRGlhbG9nID0gdGhpcy5wcmVkZWZpbmVkRGlhbG9nc1tuYW1lXTtcclxuXHRcdGlmICh0eXBlb2YgcHJlZGVmaW5lZERpYWxvZyA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5vcGVuSW1wb3J0KHByZWRlZmluZWREaWFsb2csIGRpYWxvZ0NvbmZpZ3VyYXRpb24pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMub3BlbkltcG9ydChwcmVkZWZpbmVkRGlhbG9nLmNvbXBvbmVudCwgey4uLnByZWRlZmluZWREaWFsb2cuY29uZmlndXJhdGlvbiwgLi4uZGlhbG9nQ29uZmlndXJhdGlvbn0pO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgb3BlbkltcG9ydDxUID0gYW55Pihjb21wb25lbnQ6ICgpID0+IFByb21pc2U8VHlwZTxhbnk+PiwgZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9KTogUHJvbWlzZTxEaWFsb2dSZWY8VD4+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRyZXNvbHZlKHRoaXMub3BlbjxUPihhd2FpdCBjb21wb25lbnQoKSwgZGlhbG9nQ29uZmlndXJhdGlvbikpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuICAgIG9wZW48VCA9IGFueT4oY29tcG9uZW50OiBUeXBlPGFueT4sIGRpYWxvZ0NvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb24gPSB7fSk6IERpYWxvZ1JlZjxUPiB7XHJcblxyXG5cdFx0Zm9yIChsZXQgZGlhbG9nIG9mIHRoaXMuZGlhbG9ncy5lbnRyaWVzKCkpIHtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdChkaWFsb2dDb25maWd1cmF0aW9uLnNpbmdsZSAmJiBkaWFsb2dbMV0uY29tcG9uZW50UmVmLmNvbXBvbmVudFR5cGUubmFtZSA9PT0gY29tcG9uZW50Lm5hbWUpIHx8XHJcblx0XHRcdFx0KGRpYWxvZ1swXS5kaWFsb2dDb25maWcgIT09IG51bGwgJiYgZGlhbG9nWzBdLmRpYWxvZ0NvbmZpZy5zaW5nbGUgJiYgZGlhbG9nWzFdLmNvbXBvbmVudFJlZi5jb21wb25lbnRUeXBlLm5hbWUgPT09IGNvbXBvbmVudC5uYW1lKVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRyZXR1cm4gZGlhbG9nWzBdO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0gdGhpcy5jcmVhdGVEaWFsb2dDb25maWcoZGlhbG9nQ29uZmlndXJhdGlvbik7XHJcblxyXG5cdFx0aWYgKCFkaWFsb2dDb25maWcua2VlcEFjdGl2ZUVsZW1lbnQpIHtcclxuXHRcdFx0aWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG5cdFx0XHRcdGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogRGlhbG9nUmVmPFQ+ID0gdGhpcy5hcHBlbmRUb0JvZHkoY29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xyXG5cdFx0ZGlhbG9nUmVmLm1lc3NhZ2VTZXJ2aWNlID0gdGhpcy5tZXNzYWdlU2VydmljZTtcclxuXHRcdGRpYWxvZ1JlZi5kaWFsb2dDb25maWcgPSBkaWFsb2dDb25maWc7XHJcblxyXG5cdFx0dGhpcy5jaGFuZ2VBbmRTdG9yZVRpdGxlKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG5cdGNoYW5nZUFuZFN0b3JlVGl0bGUoZGlhbG9nUmVmOiBEaWFsb2dSZWYpOiB2b2lkIHtcclxuXHRcdGRpYWxvZ1JlZi5zYXZlZFRpdGxlID0gdGhpcy50aXRsZS5nZXRUaXRsZSgpO1xyXG5cdFx0aWYgKGRpYWxvZ1JlZi5kaWFsb2dDb25maWcgIT09IG51bGwgJiYgZGlhbG9nUmVmLmRpYWxvZ0NvbmZpZy50aXRsZSAhPT0gbnVsbCkge1xyXG5cdFx0XHR0aGlzLnRpdGxlLnNldFRpdGxlKGRpYWxvZ1JlZi5kaWFsb2dDb25maWcudGl0bGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbiAgICBjcmVhdGVEaWFsb2dDb25maWcoZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbik6IERpYWxvZ0NvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcgPSBuZXcgRGlhbG9nQ29uZmlnKCk7XHJcbiAgICAgICAgaWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uc2hvd0Nsb3NlSWNvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5zaG93Q2xvc2VJY29uID0gZGlhbG9nQ29uZmlndXJhdGlvbi5zaG93Q2xvc2VJY29uO1xyXG4gICAgICAgIH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmJlZm9yZUNsb3NlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLmJlZm9yZUNsb3NlID0gZGlhbG9nQ29uZmlndXJhdGlvbi5iZWZvcmVDbG9zZTtcclxuICAgICAgICB9XHJcblx0XHRpZiAoZGlhbG9nQ29uZmlndXJhdGlvbi5pZ25vcmVLZXlVcCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5pZ25vcmVLZXlVcCA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24uaWdub3JlS2V5VXA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkaWFsb2dDb25maWcuZGF0YSA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24uZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24ubm9QYWRkaW5nICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLm5vUGFkZGluZyA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24ubm9QYWRkaW5nO1xyXG4gICAgICAgIH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmtlZXBBY3RpdmVFbGVtZW50ICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0ZGlhbG9nQ29uZmlnLmtlZXBBY3RpdmVFbGVtZW50ID0gZGlhbG9nQ29uZmlndXJhdGlvbi5rZWVwQWN0aXZlRWxlbWVudDtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmNvbnRhaW5lckNsYXNzZXMgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRkaWFsb2dDb25maWcuY29udGFpbmVyQ2xhc3NlcyA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24uY29udGFpbmVyQ2xhc3NlcztcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmRpYWxvZ0NsYXNzZXMgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRkaWFsb2dDb25maWcuZGlhbG9nQ2xhc3NlcyA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24uZGlhbG9nQ2xhc3NlcztcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLnRpdGxlICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0ZGlhbG9nQ29uZmlnLnRpdGxlID0gZGlhbG9nQ29uZmlndXJhdGlvbi50aXRsZTtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmNvbnRlbnRFbGVtZW50ICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0ZGlhbG9nQ29uZmlnLmNvbnRlbnRFbGVtZW50ID0gZGlhbG9nQ29uZmlndXJhdGlvbi5jb250ZW50RWxlbWVudDtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLnNpbmdsZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGRpYWxvZ0NvbmZpZy5zaW5nbGUgPSBkaWFsb2dDb25maWd1cmF0aW9uLnNpbmdsZTtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLndpZHRoICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0ZGlhbG9nQ29uZmlnLndpZHRoID0gZGlhbG9nQ29uZmlndXJhdGlvbi53aWR0aDtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmhlaWdodCAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGRpYWxvZ0NvbmZpZy5oZWlnaHQgPSBkaWFsb2dDb25maWd1cmF0aW9uLmhlaWdodDtcclxuXHRcdH1cclxuICAgICAgICByZXR1cm4gZGlhbG9nQ29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGVuZFRvQm9keShjb21wb25lbnQ6IFR5cGU8YW55PiwgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcpOiBEaWFsb2dSZWYge1xyXG5cclxuXHRcdGNvbnN0IGFwcFJlZjogQXBwbGljYXRpb25SZWYgPSB0aGlzLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XHJcblxyXG4gICAgICAgIC8vIENSRUFURSBJTkpFQ1RJT04gVE9LRU5TXHJcbiAgICAgICAgY29uc3QgdG9rZW5zOiBXZWFrTWFwPGFueSwgYW55PiA9IG5ldyBXZWFrTWFwKCk7XHJcblxyXG4gICAgICAgIC8vIENSRUFURSBESUFMT0cgQ09ORklHVVJBVElPTiBDTEFTU1xyXG4gICAgICAgIHRva2Vucy5zZXQoRGlhbG9nQ29uZmlnLCBkaWFsb2dDb25maWcpO1xyXG5cclxuICAgICAgICAvLyBDUkVBVEUgRElBTE9HIFJFRkVSRU5DRSBDTEFTU1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogRGlhbG9nUmVmID0gbmV3IERpYWxvZ1JlZigpO1xyXG4gICAgICAgIHRva2Vucy5zZXQoRGlhbG9nUmVmLCBkaWFsb2dSZWYpO1xyXG5cclxuICAgICAgICAvLyBMSVNURU4gT04gRElBTE9HIENMT1NFXHJcbiAgICAgICAgY29uc3QgY2xvc2VTdWI6IFN1YnNjcmlwdGlvbiA9IGRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbUJvZHkoZGlhbG9nUmVmKTtcclxuICAgICAgICAgICAgY2xvc2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gQ1JFQVRFIENPTVBPTkVOVCBSRUZcclxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xyXG5cdFx0XHRlbnZpcm9ubWVudEluamVjdG9yOiBhcHBSZWYuaW5qZWN0b3IsXHJcblx0XHRcdGVsZW1lbnRJbmplY3RvcjogbmV3IERpYWxvZ0luamVjdG9yKHRoaXMuaW5qZWN0b3IsIHRva2VucylcclxuXHRcdH0pO1xyXG5cclxuICAgICAgICAvLyBBVFRBQ0ggVklFVyBUTyBBTkdVTEFSXHJcbiAgICAgICAgYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAgICAgLy8gQ1JFQVRFIERJQUxPRyBDT05UQUlORVIgRUxFTUVOVFxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ0NvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaWFsb2dDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnY2YtZGlhbG9nLWNvbnRhaW5lcicpO1xyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZy5jb250YWluZXJDbGFzc2VzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0ZGlhbG9nQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoLi4uZGlhbG9nQ29uZmlnLmNvbnRhaW5lckNsYXNzZXMpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFQUEVORCBET00gRUxFTUVOVCBUTyBESUFMT0dcclxuXHRcdGNvbnN0IGNoaWxkRG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuXHRcdGNoaWxkRG9tRWxlbS5jbGFzc0xpc3QuYWRkKCdjZi1kaWFsb2cnKTtcclxuXHRcdFxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZy53aWR0aCAhPT0gbnVsbCkge1xyXG5cdFx0XHRjaGlsZERvbUVsZW0uc3R5bGUud2lkdGggPSBkaWFsb2dDb25maWcud2lkdGg7XHJcblx0XHR9XHJcblx0XHRpZiAoZGlhbG9nQ29uZmlnLmhlaWdodCAhPT0gbnVsbCkge1xyXG5cdFx0XHRjaGlsZERvbUVsZW0uc3R5bGUuaGVpZ2h0ID0gZGlhbG9nQ29uZmlnLmhlaWdodDtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWcubm9QYWRkaW5nKSB7XHJcbiAgICAgICAgICAgIGNoaWxkRG9tRWxlbS5jbGFzc0xpc3QuYWRkKCduby1wYWRkaW5nJyk7XHJcbiAgICAgICAgfVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZy5kaWFsb2dDbGFzc2VzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0Y2hpbGREb21FbGVtLmNsYXNzTGlzdC5hZGQoLi4uZGlhbG9nQ29uZmlnLmRpYWxvZ0NsYXNzZXMpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChkaWFsb2dDb25maWcuY29udGVudEVsZW1lbnQgIT09IG51bGwpIHtcclxuXHRcdFx0Y2hpbGREb21FbGVtLmFwcGVuZENoaWxkKGRpYWxvZ0NvbmZpZy5jb250ZW50RWxlbWVudCk7XHJcblx0XHR9XHJcblxyXG5cdFx0ZGlhbG9nQ29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkRG9tRWxlbSk7XHJcblxyXG4gICAgICAgIC8vIENMT1NFQUJMRT8gQVBQRU5EIEJVVFRPTlxyXG4gICAgICAgIGlmIChkaWFsb2dDb25maWcuc2hvd0Nsb3NlSWNvbikge1xyXG4gICAgICAgICAgICBjb25zdCBjbG9zZUVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIGNsb3NlRWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLlsnY2YtZGlhbG9nLWNsb3NlJywgJ3JlbWl4aWNvbicsICdjbG9zZS1saW5lJ10pO1xyXG4gICAgICAgICAgICBjbG9zZUVsZW1lbnQub25jbGljayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjaGlsZERvbUVsZW0uYXBwZW5kQ2hpbGQoY2xvc2VFbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFQUEVORCBESUFMT0cgQ09OVEFJTkVSIFRPIEJPRFlcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpYWxvZ0NvbnRhaW5lcik7XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9ncy5zZXQoZGlhbG9nUmVmLCB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZixcclxuICAgICAgICAgICAgY29udGFpbmVyOiBkaWFsb2dDb250YWluZXIsXHJcblx0XHRcdG9wZW5JbmRleDogdGhpcy5vcGVuSW5kZXggXHJcbiAgICAgICAgfSk7XHJcblx0XHR0aGlzLmRpYWxvZ0NvdW50Q2hhbmdlZC5uZXh0KHRoaXMuZGlhbG9ncy5zaXplKTtcclxuXHJcblx0XHR0aGlzLm9wZW5JbmRleCsrO1xyXG5cclxuICAgICAgICByZXR1cm4gZGlhbG9nUmVmO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUZyb21Cb2R5KGRpYWxvZ1JlZjogRGlhbG9nUmVmKTogdm9pZCB7XHJcblxyXG5cdFx0Y29uc3QgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcclxuXHJcbiAgICAgICAgaWYgKCFkaWFsb2dSZWYgfHwgIXRoaXMuZGlhbG9ncy5oYXMoZGlhbG9nUmVmKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lcjogRGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyIHwgdW5kZWZpbmVkID0gdGhpcy5kaWFsb2dzLmdldChkaWFsb2dSZWYpO1xyXG4gICAgICAgIGlmIChkaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblx0XHRcclxuICAgICAgICBhcHBSZWYuZGV0YWNoVmlldyhkaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAgICAgaWYgKGRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lci5jb250YWluZXIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyLmNvbnRhaW5lci5yZW1vdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dzLmRlbGV0ZShkaWFsb2dSZWYpO1xyXG5cdFx0dGhpcy5kaWFsb2dDb3VudENoYW5nZWQubmV4dCh0aGlzLmRpYWxvZ3Muc2l6ZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZGlhbG9ncy5zaXplID09PSAwKSB7XHJcblx0XHRcdHRoaXMub3BlbkluZGV4ID0gMTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBSZXN0b3JlIHRpdGxlXHJcblx0XHRpZiAodGhpcy5kaWFsb2dzLnNpemUgPT09IDApIHtcclxuXHRcdFx0dGhpcy50aXRsZS5zZXRUaXRsZShkaWFsb2dSZWYuc2F2ZWRUaXRsZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsZXQgbGF0ZXN0T3BlbmVkRGlhbG9nUmVmOiBEaWFsb2dSZWYgfCBudWxsID0gbnVsbDtcclxuXHRcdFx0dGhpcy5kaWFsb2dzLmZvckVhY2goKF8sIGRpYWxvZ1JlZjogRGlhbG9nUmVmKSA9PiB7XHJcblx0XHRcdFx0aWYgKGxhdGVzdE9wZW5lZERpYWxvZ1JlZiA9PT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0bGF0ZXN0T3BlbmVkRGlhbG9nUmVmID0gZGlhbG9nUmVmO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAobGF0ZXN0T3BlbmVkRGlhbG9nUmVmLm9wZW5lZCA8IGRpYWxvZ1JlZi5vcGVuZWQpIHtcclxuXHRcdFx0XHRcdFx0bGF0ZXN0T3BlbmVkRGlhbG9nUmVmID0gZGlhbG9nUmVmO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChsYXRlc3RPcGVuZWREaWFsb2dSZWYgIT09IG51bGwpIHtcclxuXHRcdFx0XHQvL3RoaXMudGl0bGUuc2V0VGl0bGUobGF0ZXN0T3BlbmVkRGlhbG9nUmVmLnNhdmVkVGl0bGUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudGl0bGUuc2V0VGl0bGUoZGlhbG9nUmVmLnNhdmVkVGl0bGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcbiAgICB9XHJcblxyXG5cdGNvbmZpcm0oXHJcblx0XHRjb25maWd1cmF0aW9uOiBDb25maXJtQ29uZmlndXJhdGlvbiB8IHN0cmluZyxcclxuXHRcdGRpYWxvZ0NvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb24gPSB7fSxcclxuXHRcdGNvbXBvbmVudDogVHlwZTxhbnk+XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24gPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdGNvbnN0IHByZWRlZmluZWRDb25maXJtQ29uZmlndXJhdGlvbjogQ29uZmlybUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSB0aGlzLnByZWRlZmluZWRDb25maXJtQ29uZmlndXJhdGlvbnNbY29uZmlndXJhdGlvbl07XHJcblx0XHRcdGlmIChwcmVkZWZpbmVkQ29uZmlybUNvbmZpZ3VyYXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignUHJlZGVmaW5lZCBjb25maXJtIGNvbmZpZ3VyYXRpb24gbm90IGZvdW5kIGZvcjogJyArIGNvbmZpZ3VyYXRpb24pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbmZpZ3VyYXRpb24gPSBwcmVkZWZpbmVkQ29uZmlybUNvbmZpZ3VyYXRpb247XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHR0aGlzLm9wZW4oY29tcG9uZW50LCB7XHJcblx0XHRcdFx0Li4uZGlhbG9nQ29uZmlndXJhdGlvbixcclxuXHRcdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0XHRjb25maWd1cmF0aW9uXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRpZ25vcmVLZXlVcDogdHJ1ZSxcclxuXHRcdFx0XHRzaG93Q2xvc2VJY29uOiBmYWxzZVxyXG5cdFx0XHR9KS5vbkNsb3NlLnBpcGUoZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKS5zdWJzY3JpYmUoKGFjY2VwdGVkOiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKGFjY2VwdGVkKSB7XHJcblx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRyZWplY3QodHJ1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcbiAgICBhc3luYyBjb25maXJtQXN5bmMoXHJcblx0XHRjb25maWd1cmF0aW9uOiBDb25maXJtQ29uZmlndXJhdGlvbiB8IHN0cmluZyxcclxuXHRcdGRpYWxvZ0NvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb24gPSB7fSxcclxuXHRcdGNvbXBvbmVudDogVHlwZTxhbnk+XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybShjb25maWd1cmF0aW9uLCBkaWFsb2dDb25maWd1cmF0aW9uLCBjb21wb25lbnQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cdFxyXG5cdGNvbmZpcm1BY2NlcHQoXHJcblx0XHRjb25maWd1cmF0aW9uOiBDb25maXJtQ29uZmlndXJhdGlvbiB8IHN0cmluZyxcclxuXHRcdGRpYWxvZ0NvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb24gPSB7fSxcclxuXHRcdGNvbXBvbmVudDogVHlwZTxhbnk+XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0dGhpcy5jb25maXJtKGNvbmZpZ3VyYXRpb24sIGRpYWxvZ0NvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCkudGhlbigoKSA9PiByZXNvbHZlKHRydWUpKS5jYXRjaCgoKSA9PiB7fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblx0XHJcblx0Y29uZmlybURlY2xpbmUoXHJcblx0XHRjb25maWd1cmF0aW9uOiBDb25maXJtQ29uZmlndXJhdGlvbiB8IHN0cmluZyxcclxuXHRcdGRpYWxvZ0NvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb24gPSB7fSxcclxuXHRcdGNvbXBvbmVudDogVHlwZTxhbnk+XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0dGhpcy5jb25maXJtKGNvbmZpZ3VyYXRpb24sIGRpYWxvZ0NvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCkudGhlbigoKSA9PiB7fSkuY2F0Y2goKCkgPT4gcmVzb2x2ZSh0cnVlKSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHNob3dMb2FkaW5nKFxyXG5cdFx0Y29uZmlndXJhdGlvbjogTG9hZGluZ0NvbmZpZ3VyYXRpb24sXHJcblx0XHRkaWFsb2dDb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9uID0ge30sXHJcblx0XHRjb21wb25lbnQ6IFR5cGU8YW55PlxyXG5cdCk6IERpYWxvZ1JlZiB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcGVuKGNvbXBvbmVudCwge1xyXG5cdFx0XHQuLi5kaWFsb2dDb25maWd1cmF0aW9uLFxyXG5cdFx0XHRzaG93Q2xvc2VJY29uOiBmYWxzZSxcclxuXHRcdFx0aWdub3JlS2V5VXA6IHRydWUsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRjb25maWd1cmF0aW9uXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0c2hvd0FsZXJ0KFxyXG5cdFx0Y29uZmlndXJhdGlvbjogQWxlcnRDb25maWd1cmF0aW9uIHwgc3RyaW5nLFxyXG5cdFx0ZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9LFxyXG5cdFx0Y29tcG9uZW50OiBUeXBlPGFueT5cclxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdGlmICh0eXBlb2YgY29uZmlndXJhdGlvbiA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0Y29uc3QgcHJlZGVmaW5lZEFsZXJ0Q29uZmlndXJhdGlvbjogQWxlcnRDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gdGhpcy5wcmVkZWZpbmVkQWxlcnRDb25maWd1cmF0aW9uc1tjb25maWd1cmF0aW9uXTtcclxuXHRcdFx0aWYgKHByZWRlZmluZWRBbGVydENvbmZpZ3VyYXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignUHJlZGVmaW5lZCBhbGVydCBjb25maWd1cmF0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBjb25maWd1cmF0aW9uKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25maWd1cmF0aW9uID0gcHJlZGVmaW5lZEFsZXJ0Q29uZmlndXJhdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5vcGVuKGNvbXBvbmVudCwge1xyXG5cdFx0XHRcdC4uLmRpYWxvZ0NvbmZpZ3VyYXRpb24sXHJcblx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0Y29uZmlndXJhdGlvblxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0aWdub3JlS2V5VXA6IHRydWUsXHJcblx0XHRcdFx0c2hvd0Nsb3NlSWNvbjogZmFsc2VcclxuXHRcdFx0fSkub25DbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHNob3dNb2RhbFdpdGhCdXR0b25zKFxyXG5cdFx0Y29uZmlndXJhdGlvbjogTW9kYWxXaXRoQnV0dG9uc0NvbmZpZ3VyYXRpb24sXHJcblx0XHRkaWFsb2dDb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9uID0ge30sXHJcblx0XHRjb21wb25lbnQ6IFR5cGU8YW55PlxyXG5cdCk6IERpYWxvZ1JlZiB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcGVuKGNvbXBvbmVudCwge1xyXG5cdFx0XHQuLi5kaWFsb2dDb25maWd1cmF0aW9uLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0Y29uZmlndXJhdGlvblxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxjQUFjLEVBRWQsZUFBZSxFQUVmLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLFdBQVcsRUFFZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekssT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFLN0MsTUFBTSxPQUFPLGFBQWE7SUFrQnRCO1FBaEJLLGFBQVEsR0FBYSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsb0NBQStCLEdBQTBDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hHLGtDQUE2QixHQUF3QyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRyxzQkFBaUIsR0FBc0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEUsMEJBQXFCLEdBQWtCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3hFLDJCQUFzQixHQUFxQixNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztR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Q3pCLE9BQU8sRUFBRSxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FDbkIsYUFBNEMsRUFDNUMsc0JBQTJDLEVBQUUsRUFDN0MsU0FBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMzQixHQUFHLG1CQUFtQjtZQUN0QixJQUFJLEVBQUU7Z0JBQ0wsYUFBYTthQUNiO1NBQ0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0F2WlcsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBBcHBsaWNhdGlvblJlZixcclxuICAgIENvbXBvbmVudFJlZixcclxuICAgIGNyZWF0ZUNvbXBvbmVudCxcclxuICAgIEVtYmVkZGVkVmlld1JlZixcclxuICAgIGluamVjdCxcclxuICAgIEluamVjdGFibGUsXHJcbiAgICBJbmplY3RvcixcclxuICAgIFBMQVRGT1JNX0lELFxyXG4gICAgVHlwZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBbGVydENvbmZpZ3VyYXRpb24sIERpYWxvZ0NvbmZpZ3VyYXRpb24sIENvbmZpcm1Db25maWd1cmF0aW9uLCBMb2FkaW5nQ29uZmlndXJhdGlvbiwgTW9kYWxXaXRoQnV0dG9uc0NvbmZpZ3VyYXRpb24sIFByZWRlZmluZWREaWFsb2dzLCBEaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dJbmplY3RvciwgRGlhbG9nUmVmIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IEFMRVJUX0NPTkZJR1VSQVRJT05TLCBQUkVERUZJTkVEX0RJQUxPR1MsIENPTkZJUk1fQ09ORklHVVJBVElPTlMsIE9QRU5FRF9ESUFMT0dfQk9EWV9DTEFTUywgRElBTE9HX0NPTkZJUk1fQ09NUE9ORU5ULCBESUFMT0dfQUxFUlRfQ09NUE9ORU5UIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuXHRwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblx0cHJpdmF0ZSBwcmVkZWZpbmVkQ29uZmlybUNvbmZpZ3VyYXRpb25zOiB7W2tleTogc3RyaW5nXTogQ29uZmlybUNvbmZpZ3VyYXRpb259ID0gaW5qZWN0KENPTkZJUk1fQ09ORklHVVJBVElPTlMpO1xyXG5cdHByaXZhdGUgcHJlZGVmaW5lZEFsZXJ0Q29uZmlndXJhdGlvbnM6IHtba2V5OiBzdHJpbmddOiBBbGVydENvbmZpZ3VyYXRpb259ID0gaW5qZWN0KEFMRVJUX0NPTkZJR1VSQVRJT05TKTtcclxuXHRwcml2YXRlIHByZWRlZmluZWREaWFsb2dzOiBQcmVkZWZpbmVkRGlhbG9ncyA9IGluamVjdChQUkVERUZJTkVEX0RJQUxPR1MpO1xyXG5cdHByaXZhdGUgb3BlbmVkRGlhbG9nQm9keUNsYXNzOiBzdHJpbmcgfCBudWxsID0gaW5qZWN0KE9QRU5FRF9ESUFMT0dfQk9EWV9DTEFTUyk7XHJcblx0cHJpdmF0ZSBkaWFsb2dDb25maXJtQ29tcG9uZW50OiBUeXBlPGFueT4gfCBudWxsID0gaW5qZWN0KERJQUxPR19DT05GSVJNX0NPTVBPTkVOVCk7XHJcblx0cHJpdmF0ZSBkaWFsb2dBbGVydENvbXBvbmVudDogVHlwZTxhbnk+IHwgbnVsbCA9IGluamVjdChESUFMT0dfQUxFUlRfQ09NUE9ORU5UKTtcclxuXHJcblx0dGl0bGU6IFRpdGxlID0gaW5qZWN0KFRpdGxlKTtcclxuXHRtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xyXG5cclxuXHRkaWFsb2dzOiBNYXA8RGlhbG9nUmVmLCBEaWFsb2dDb21wb25lbnRSZWZDb250YWluZXI+ID0gbmV3IE1hcCgpO1xyXG5cdGRpYWxvZ0NvdW50Q2hhbmdlZDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuXHRvcGVuSW5kZXg6IG51bWJlciA9IDE7XHJcblx0cGxhdGZvcm1JZDogT2JqZWN0ID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoa2V5Ym9hcmRFdmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG5cdFx0XHRcdGlmIChrZXlib2FyZEV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnZXNjYXBlJykge1xyXG5cdFx0XHRcdFx0bGV0IGxhc3RPcGVuSW5kZXg6IG51bWJlciA9IDA7XHJcblx0XHRcdFx0XHRsZXQgbGFzdE9wZW5lZERpYWxvZ1JlZjogRGlhbG9nUmVmIHwgbnVsbCA9IG51bGw7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IFtkaWFsb2dSZWYsIGNmRGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyXSBvZiB0aGlzLmRpYWxvZ3MuZW50cmllcygpKSB7XHJcblx0XHRcdFx0XHRcdGlmIChjZkRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lci5vcGVuSW5kZXggPiBsYXN0T3BlbkluZGV4KSB7XHJcblx0XHRcdFx0XHRcdFx0bGFzdE9wZW5JbmRleCA9IGNmRGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyLm9wZW5JbmRleDtcclxuXHRcdFx0XHRcdFx0XHRsYXN0T3BlbmVkRGlhbG9nUmVmID0gZGlhbG9nUmVmO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHJcblx0XHRcdFx0XHRpZiAobGFzdE9wZW5lZERpYWxvZ1JlZiAhPT0gbnVsbCAmJiBsYXN0T3BlbmVkRGlhbG9nUmVmLmRpYWxvZ0NvbmZpZyAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHRpZiAobGFzdE9wZW5lZERpYWxvZ1JlZi5kaWFsb2dDb25maWcuaWdub3JlS2V5VXAgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcclxuXHRcdFx0XHRcdFx0bGFzdE9wZW5lZERpYWxvZ1JlZi5jbG9zZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmRpYWxvZ0NvdW50Q2hhbmdlZC5zdWJzY3JpYmUoKHNpemU6IG51bWJlcikgPT4ge1xyXG5cdFx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLm9wZW5lZERpYWxvZ0JvZHlDbGFzcyAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdGlmIChzaXplID09PSAwKSB7XHJcblx0XHRcdFx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5vcGVuZWREaWFsb2dCb2R5Q2xhc3MpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQodGhpcy5vcGVuZWREaWFsb2dCb2R5Q2xhc3MpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fSBcclxuXHJcblx0YXN5bmMgb3BlblByZWRlZmluZWQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBkaWFsb2dDb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9uID0ge30pOiBQcm9taXNlPERpYWxvZ1JlZjxUPj4ge1xyXG5cdFx0aWYgKHRoaXMucHJlZGVmaW5lZERpYWxvZ3NbbmFtZV0gPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHR0aHJvdyBFcnJvcignRGlhbG9nIHdpdGggbmFtZSBcIicgKyBuYW1lICsgJ1wiIG5vdCBmb3VuZCEnKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHByZWRlZmluZWREaWFsb2cgPSB0aGlzLnByZWRlZmluZWREaWFsb2dzW25hbWVdO1xyXG5cdFx0aWYgKHR5cGVvZiBwcmVkZWZpbmVkRGlhbG9nID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLm9wZW5JbXBvcnQocHJlZGVmaW5lZERpYWxvZywgZGlhbG9nQ29uZmlndXJhdGlvbik7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy5vcGVuSW1wb3J0KHByZWRlZmluZWREaWFsb2cuY29tcG9uZW50LCB7Li4ucHJlZGVmaW5lZERpYWxvZy5jb25maWd1cmF0aW9uLCAuLi5kaWFsb2dDb25maWd1cmF0aW9ufSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBvcGVuSW1wb3J0PFQgPSBhbnk+KGNvbXBvbmVudDogKCkgPT4gUHJvbWlzZTxUeXBlPGFueT4+LCBkaWFsb2dDb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9uID0ge30pOiBQcm9taXNlPERpYWxvZ1JlZjxUPj4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdHJlc29sdmUodGhpcy5vcGVuPFQ+KGF3YWl0IGNvbXBvbmVudCgpLCBkaWFsb2dDb25maWd1cmF0aW9uKSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG4gICAgb3BlbjxUID0gYW55Pihjb21wb25lbnQ6IFR5cGU8YW55PiwgZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9KTogRGlhbG9nUmVmPFQ+IHtcclxuXHJcblx0XHRmb3IgKGxldCBkaWFsb2cgb2YgdGhpcy5kaWFsb2dzLmVudHJpZXMoKSkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0KGRpYWxvZ0NvbmZpZ3VyYXRpb24uc2luZ2xlICYmIGRpYWxvZ1sxXS5jb21wb25lbnRSZWYuY29tcG9uZW50VHlwZS5uYW1lID09PSBjb21wb25lbnQubmFtZSkgfHxcclxuXHRcdFx0XHQoZGlhbG9nWzBdLmRpYWxvZ0NvbmZpZyAhPT0gbnVsbCAmJiBkaWFsb2dbMF0uZGlhbG9nQ29uZmlnLnNpbmdsZSAmJiBkaWFsb2dbMV0uY29tcG9uZW50UmVmLmNvbXBvbmVudFR5cGUubmFtZSA9PT0gY29tcG9uZW50Lm5hbWUpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHJldHVybiBkaWFsb2dbMF07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcgPSB0aGlzLmNyZWF0ZURpYWxvZ0NvbmZpZyhkaWFsb2dDb25maWd1cmF0aW9uKTtcclxuXHJcblx0XHRpZiAoIWRpYWxvZ0NvbmZpZy5rZWVwQWN0aXZlRWxlbWVudCkge1xyXG5cdFx0XHRpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcblx0XHRcdFx0ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBEaWFsb2dSZWY8VD4gPSB0aGlzLmFwcGVuZFRvQm9keShjb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XHJcblx0XHRkaWFsb2dSZWYubWVzc2FnZVNlcnZpY2UgPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlO1xyXG5cdFx0ZGlhbG9nUmVmLmRpYWxvZ0NvbmZpZyA9IGRpYWxvZ0NvbmZpZztcclxuXHJcblx0XHR0aGlzLmNoYW5nZUFuZFN0b3JlVGl0bGUoZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZjtcclxuICAgIH1cclxuXHJcblx0Y2hhbmdlQW5kU3RvcmVUaXRsZShkaWFsb2dSZWY6IERpYWxvZ1JlZik6IHZvaWQge1xyXG5cdFx0ZGlhbG9nUmVmLnNhdmVkVGl0bGUgPSB0aGlzLnRpdGxlLmdldFRpdGxlKCk7XHJcblx0XHRpZiAoZGlhbG9nUmVmLmRpYWxvZ0NvbmZpZyAhPT0gbnVsbCAmJiBkaWFsb2dSZWYuZGlhbG9nQ29uZmlnLnRpdGxlICE9PSBudWxsKSB7XHJcblx0XHRcdHRoaXMudGl0bGUuc2V0VGl0bGUoZGlhbG9nUmVmLmRpYWxvZ0NvbmZpZy50aXRsZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuICAgIGNyZWF0ZURpYWxvZ0NvbmZpZyhkaWFsb2dDb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9uKTogRGlhbG9nQ29uZmlnIHtcclxuICAgICAgICBjb25zdCBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyA9IG5ldyBEaWFsb2dDb25maWcoKTtcclxuICAgICAgICBpZiAoZGlhbG9nQ29uZmlndXJhdGlvbi5zaG93Q2xvc2VJY29uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLnNob3dDbG9zZUljb24gPSBkaWFsb2dDb25maWd1cmF0aW9uLnNob3dDbG9zZUljb247XHJcbiAgICAgICAgfVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uYmVmb3JlQ2xvc2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkaWFsb2dDb25maWcuYmVmb3JlQ2xvc2UgPSBkaWFsb2dDb25maWd1cmF0aW9uLmJlZm9yZUNsb3NlO1xyXG4gICAgICAgIH1cclxuXHRcdGlmIChkaWFsb2dDb25maWd1cmF0aW9uLmlnbm9yZUtleVVwICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLmlnbm9yZUtleVVwID0gZGlhbG9nQ29uZmlndXJhdGlvbi5pZ25vcmVLZXlVcDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0gZGlhbG9nQ29uZmlndXJhdGlvbi5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlhbG9nQ29uZmlndXJhdGlvbi5ub1BhZGRpbmcgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkaWFsb2dDb25maWcubm9QYWRkaW5nID0gZGlhbG9nQ29uZmlndXJhdGlvbi5ub1BhZGRpbmc7XHJcbiAgICAgICAgfVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24ua2VlcEFjdGl2ZUVsZW1lbnQgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRkaWFsb2dDb25maWcua2VlcEFjdGl2ZUVsZW1lbnQgPSBkaWFsb2dDb25maWd1cmF0aW9uLmtlZXBBY3RpdmVFbGVtZW50O1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uY29udGFpbmVyQ2xhc3NlcyAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGRpYWxvZ0NvbmZpZy5jb250YWluZXJDbGFzc2VzID0gZGlhbG9nQ29uZmlndXJhdGlvbi5jb250YWluZXJDbGFzc2VzO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uZGlhbG9nQ2xhc3NlcyAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGRpYWxvZ0NvbmZpZy5kaWFsb2dDbGFzc2VzID0gZGlhbG9nQ29uZmlndXJhdGlvbi5kaWFsb2dDbGFzc2VzO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24udGl0bGUgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRkaWFsb2dDb25maWcudGl0bGUgPSBkaWFsb2dDb25maWd1cmF0aW9uLnRpdGxlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uY29udGVudEVsZW1lbnQgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRkaWFsb2dDb25maWcuY29udGVudEVsZW1lbnQgPSBkaWFsb2dDb25maWd1cmF0aW9uLmNvbnRlbnRFbGVtZW50O1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uc2luZ2xlICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0ZGlhbG9nQ29uZmlnLnNpbmdsZSA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24uc2luZ2xlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24ud2lkdGggIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRkaWFsb2dDb25maWcud2lkdGggPSBkaWFsb2dDb25maWd1cmF0aW9uLndpZHRoO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZ3VyYXRpb24uaGVpZ2h0ICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0ZGlhbG9nQ29uZmlnLmhlaWdodCA9IGRpYWxvZ0NvbmZpZ3VyYXRpb24uaGVpZ2h0O1xyXG5cdFx0fVxyXG4gICAgICAgIHJldHVybiBkaWFsb2dDb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwZW5kVG9Cb2R5KGNvbXBvbmVudDogVHlwZTxhbnk+LCBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyk6IERpYWxvZ1JlZiB7XHJcblxyXG5cdFx0Y29uc3QgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcclxuXHJcbiAgICAgICAgLy8gQ1JFQVRFIElOSkVDVElPTiBUT0tFTlNcclxuICAgICAgICBjb25zdCB0b2tlbnM6IFdlYWtNYXA8YW55LCBhbnk+ID0gbmV3IFdlYWtNYXAoKTtcclxuXHJcbiAgICAgICAgLy8gQ1JFQVRFIERJQUxPRyBDT05GSUdVUkFUSU9OIENMQVNTXHJcbiAgICAgICAgdG9rZW5zLnNldChEaWFsb2dDb25maWcsIGRpYWxvZ0NvbmZpZyk7XHJcblxyXG4gICAgICAgIC8vIENSRUFURSBESUFMT0cgUkVGRVJFTkNFIENMQVNTXHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBEaWFsb2dSZWYgPSBuZXcgRGlhbG9nUmVmKCk7XHJcbiAgICAgICAgdG9rZW5zLnNldChEaWFsb2dSZWYsIGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIC8vIExJU1RFTiBPTiBESUFMT0cgQ0xPU0VcclxuICAgICAgICBjb25zdCBjbG9zZVN1YjogU3Vic2NyaXB0aW9uID0gZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tQm9keShkaWFsb2dSZWYpO1xyXG4gICAgICAgICAgICBjbG9zZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBDUkVBVEUgQ09NUE9ORU5UIFJFRlxyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XHJcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IGFwcFJlZi5pbmplY3RvcixcclxuXHRcdFx0ZWxlbWVudEluamVjdG9yOiBuZXcgRGlhbG9nSW5qZWN0b3IodGhpcy5pbmplY3RvciwgdG9rZW5zKVxyXG5cdFx0fSk7XHJcblxyXG4gICAgICAgIC8vIEFUVEFDSCBWSUVXIFRPIEFOR1VMQVJcclxuICAgICAgICBhcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgICAgICAvLyBDUkVBVEUgRElBTE9HIENPTlRBSU5FUiBFTEVNRU5UXHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGRpYWxvZ0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdjZi1kaWFsb2ctY29udGFpbmVyJyk7XHJcblx0XHRpZiAoZGlhbG9nQ29uZmlnLmNvbnRhaW5lckNsYXNzZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRkaWFsb2dDb250YWluZXIuY2xhc3NMaXN0LmFkZCguLi5kaWFsb2dDb25maWcuY29udGFpbmVyQ2xhc3Nlcyk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQVBQRU5EIERPTSBFTEVNRU5UIFRPIERJQUxPR1xyXG5cdFx0Y29uc3QgY2hpbGREb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cdFx0Y2hpbGREb21FbGVtLmNsYXNzTGlzdC5hZGQoJ2NmLWRpYWxvZycpO1xyXG5cdFx0XHJcblx0XHRpZiAoZGlhbG9nQ29uZmlnLndpZHRoICE9PSBudWxsKSB7XHJcblx0XHRcdGNoaWxkRG9tRWxlbS5zdHlsZS53aWR0aCA9IGRpYWxvZ0NvbmZpZy53aWR0aDtcclxuXHRcdH1cclxuXHRcdGlmIChkaWFsb2dDb25maWcuaGVpZ2h0ICE9PSBudWxsKSB7XHJcblx0XHRcdGNoaWxkRG9tRWxlbS5zdHlsZS5oZWlnaHQgPSBkaWFsb2dDb25maWcuaGVpZ2h0O1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZy5ub1BhZGRpbmcpIHtcclxuICAgICAgICAgICAgY2hpbGREb21FbGVtLmNsYXNzTGlzdC5hZGQoJ25vLXBhZGRpbmcnKTtcclxuICAgICAgICB9XHJcblx0XHRpZiAoZGlhbG9nQ29uZmlnLmRpYWxvZ0NsYXNzZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRjaGlsZERvbUVsZW0uY2xhc3NMaXN0LmFkZCguLi5kaWFsb2dDb25maWcuZGlhbG9nQ2xhc3Nlcyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGRpYWxvZ0NvbmZpZy5jb250ZW50RWxlbWVudCAhPT0gbnVsbCkge1xyXG5cdFx0XHRjaGlsZERvbUVsZW0uYXBwZW5kQ2hpbGQoZGlhbG9nQ29uZmlnLmNvbnRlbnRFbGVtZW50KTtcclxuXHRcdH1cclxuXHJcblx0XHRkaWFsb2dDb250YWluZXIuYXBwZW5kQ2hpbGQoY2hpbGREb21FbGVtKTtcclxuXHJcbiAgICAgICAgLy8gQ0xPU0VBQkxFPyBBUFBFTkQgQlVUVE9OXHJcbiAgICAgICAgaWYgKGRpYWxvZ0NvbmZpZy5zaG93Q2xvc2VJY29uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsb3NlRWxlbWVudDogSFRNTERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICAgICAgY2xvc2VFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4uWydjZi1kaWFsb2ctY2xvc2UnLCAncmVtaXhpY29uJywgJ2Nsb3NlLWxpbmUnXSk7XHJcbiAgICAgICAgICAgIGNsb3NlRWxlbWVudC5vbmNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNoaWxkRG9tRWxlbS5hcHBlbmRDaGlsZChjbG9zZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQVBQRU5EIERJQUxPRyBDT05UQUlORVIgVE8gQk9EWVxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGlhbG9nQ29udGFpbmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dzLnNldChkaWFsb2dSZWYsIHtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLFxyXG4gICAgICAgICAgICBjb250YWluZXI6IGRpYWxvZ0NvbnRhaW5lcixcclxuXHRcdFx0b3BlbkluZGV4OiB0aGlzLm9wZW5JbmRleCBcclxuICAgICAgICB9KTtcclxuXHRcdHRoaXMuZGlhbG9nQ291bnRDaGFuZ2VkLm5leHQodGhpcy5kaWFsb2dzLnNpemUpO1xyXG5cclxuXHRcdHRoaXMub3BlbkluZGV4Kys7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRnJvbUJvZHkoZGlhbG9nUmVmOiBEaWFsb2dSZWYpOiB2b2lkIHtcclxuXHJcblx0XHRjb25zdCBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xyXG5cclxuICAgICAgICBpZiAoIWRpYWxvZ1JlZiB8fCAhdGhpcy5kaWFsb2dzLmhhcyhkaWFsb2dSZWYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyOiBEaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIgfCB1bmRlZmluZWQgPSB0aGlzLmRpYWxvZ3MuZ2V0KGRpYWxvZ1JlZik7XHJcbiAgICAgICAgaWYgKGRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lciA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHRcdFxyXG4gICAgICAgIGFwcFJlZi5kZXRhY2hWaWV3KGRpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lci5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgICAgICBpZiAoZGlhbG9nQ29tcG9uZW50UmVmQ29udGFpbmVyLmNvbnRhaW5lciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIuY29udGFpbmVyLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ3MuZGVsZXRlKGRpYWxvZ1JlZik7XHJcblx0XHR0aGlzLmRpYWxvZ0NvdW50Q2hhbmdlZC5uZXh0KHRoaXMuZGlhbG9ncy5zaXplKTtcclxuXHJcblx0XHRpZiAodGhpcy5kaWFsb2dzLnNpemUgPT09IDApIHtcclxuXHRcdFx0dGhpcy5vcGVuSW5kZXggPSAxO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFJlc3RvcmUgdGl0bGVcclxuXHRcdGlmICh0aGlzLmRpYWxvZ3Muc2l6ZSA9PT0gMCkge1xyXG5cdFx0XHR0aGlzLnRpdGxlLnNldFRpdGxlKGRpYWxvZ1JlZi5zYXZlZFRpdGxlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGxldCBsYXRlc3RPcGVuZWREaWFsb2dSZWY6IERpYWxvZ1JlZiB8IG51bGwgPSBudWxsO1xyXG5cdFx0XHR0aGlzLmRpYWxvZ3MuZm9yRWFjaCgoXywgZGlhbG9nUmVmOiBEaWFsb2dSZWYpID0+IHtcclxuXHRcdFx0XHRpZiAobGF0ZXN0T3BlbmVkRGlhbG9nUmVmID09PSBudWxsKSB7XHJcblx0XHRcdFx0XHRsYXRlc3RPcGVuZWREaWFsb2dSZWYgPSBkaWFsb2dSZWY7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChsYXRlc3RPcGVuZWREaWFsb2dSZWYub3BlbmVkIDwgZGlhbG9nUmVmLm9wZW5lZCkge1xyXG5cdFx0XHRcdFx0XHRsYXRlc3RPcGVuZWREaWFsb2dSZWYgPSBkaWFsb2dSZWY7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0aWYgKGxhdGVzdE9wZW5lZERpYWxvZ1JlZiAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdC8vdGhpcy50aXRsZS5zZXRUaXRsZShsYXRlc3RPcGVuZWREaWFsb2dSZWYuc2F2ZWRUaXRsZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy50aXRsZS5zZXRUaXRsZShkaWFsb2dSZWYuc2F2ZWRUaXRsZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuICAgIH1cclxuXHJcblx0Y29uZmlybShcclxuXHRcdGNvbmZpZ3VyYXRpb246IENvbmZpcm1Db25maWd1cmF0aW9uIHwgc3RyaW5nLFxyXG5cdFx0ZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9LFxyXG5cdFx0Y29tcG9uZW50OiBUeXBlPGFueT5cclxuXHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHRcdGlmICh0eXBlb2YgY29uZmlndXJhdGlvbiA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0Y29uc3QgcHJlZGVmaW5lZENvbmZpcm1Db25maWd1cmF0aW9uOiBDb25maXJtQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCA9IHRoaXMucHJlZGVmaW5lZENvbmZpcm1Db25maWd1cmF0aW9uc1tjb25maWd1cmF0aW9uXTtcclxuXHRcdFx0aWYgKHByZWRlZmluZWRDb25maXJtQ29uZmlndXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdQcmVkZWZpbmVkIGNvbmZpcm0gY29uZmlndXJhdGlvbiBub3QgZm91bmQgZm9yOiAnICsgY29uZmlndXJhdGlvbik7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uZmlndXJhdGlvbiA9IHByZWRlZmluZWRDb25maXJtQ29uZmlndXJhdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHRoaXMub3Blbihjb21wb25lbnQsIHtcclxuXHRcdFx0XHQuLi5kaWFsb2dDb25maWd1cmF0aW9uLFxyXG5cdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGlnbm9yZUtleVVwOiB0cnVlLFxyXG5cdFx0XHRcdHNob3dDbG9zZUljb246IGZhbHNlXHJcblx0XHRcdH0pLm9uQ2xvc2UucGlwZShmaWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpLnN1YnNjcmliZSgoYWNjZXB0ZWQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAoYWNjZXB0ZWQpIHtcclxuXHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJlamVjdCh0cnVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuICAgIGFzeW5jIGNvbmZpcm1Bc3luYyhcclxuXHRcdGNvbmZpZ3VyYXRpb246IENvbmZpcm1Db25maWd1cmF0aW9uIHwgc3RyaW5nLFxyXG5cdFx0ZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9LFxyXG5cdFx0Y29tcG9uZW50OiBUeXBlPGFueT4gfCBudWxsID0gdGhpcy5kaWFsb2dDb25maXJtQ29tcG9uZW50XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRpZiAoY29tcG9uZW50ID09PSBudWxsKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gY29tcG9uZW50IHByb3ZpZGVkIGZvciBjb25maXJtIGRpYWxvZyEnKTtcclxuXHRcdH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtKGNvbmZpZ3VyYXRpb24sIGRpYWxvZ0NvbmZpZ3VyYXRpb24sIGNvbXBvbmVudCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblx0XHJcblx0Y29uZmlybUFjY2VwdChcclxuXHRcdGNvbmZpZ3VyYXRpb246IENvbmZpcm1Db25maWd1cmF0aW9uIHwgc3RyaW5nLFxyXG5cdFx0ZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9LFxyXG5cdFx0Y29tcG9uZW50OiBUeXBlPGFueT4gfCBudWxsID0gdGhpcy5kaWFsb2dDb25maXJtQ29tcG9uZW50XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRpZiAoY29tcG9uZW50ID09PSBudWxsKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gY29tcG9uZW50IHByb3ZpZGVkIGZvciBjb25maXJtIGRpYWxvZyEnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHR0aGlzLmNvbmZpcm0oY29uZmlndXJhdGlvbiwgZGlhbG9nQ29uZmlndXJhdGlvbiwgY29tcG9uZW50KS50aGVuKCgpID0+IHJlc29sdmUodHJ1ZSkpLmNhdGNoKCgpID0+IHt9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRcclxuXHRjb25maXJtRGVjbGluZShcclxuXHRcdGNvbmZpZ3VyYXRpb246IENvbmZpcm1Db25maWd1cmF0aW9uIHwgc3RyaW5nLFxyXG5cdFx0ZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9LFxyXG5cdFx0Y29tcG9uZW50OiBUeXBlPGFueT4gfCBudWxsID0gdGhpcy5kaWFsb2dDb25maXJtQ29tcG9uZW50XHJcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRpZiAoY29tcG9uZW50ID09PSBudWxsKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gY29tcG9uZW50IHByb3ZpZGVkIGZvciBjb25maXJtIGRpYWxvZyEnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHR0aGlzLmNvbmZpcm0oY29uZmlndXJhdGlvbiwgZGlhbG9nQ29uZmlndXJhdGlvbiwgY29tcG9uZW50KS50aGVuKCgpID0+IHt9KS5jYXRjaCgoKSA9PiByZXNvbHZlKHRydWUpKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0c2hvd0xvYWRpbmcoXHJcblx0XHRjb25maWd1cmF0aW9uOiBMb2FkaW5nQ29uZmlndXJhdGlvbixcclxuXHRcdGRpYWxvZ0NvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb24gPSB7fSxcclxuXHRcdGNvbXBvbmVudDogVHlwZTxhbnk+XHJcblx0KTogRGlhbG9nUmVmIHtcclxuXHRcdHJldHVybiB0aGlzLm9wZW4oY29tcG9uZW50LCB7XHJcblx0XHRcdC4uLmRpYWxvZ0NvbmZpZ3VyYXRpb24sXHJcblx0XHRcdHNob3dDbG9zZUljb246IGZhbHNlLFxyXG5cdFx0XHRpZ25vcmVLZXlVcDogdHJ1ZSxcclxuXHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdGNvbmZpZ3VyYXRpb25cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzaG93QWxlcnQoXHJcblx0XHRjb25maWd1cmF0aW9uOiBBbGVydENvbmZpZ3VyYXRpb24gfCBzdHJpbmcsXHJcblx0XHRkaWFsb2dDb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9uID0ge30sXHJcblx0XHRjb21wb25lbnQ6IFR5cGU8YW55PiB8IG51bGwgPSB0aGlzLmRpYWxvZ0FsZXJ0Q29tcG9uZW50XHJcblx0KTogUHJvbWlzZTx2b2lkPiB7XHJcblx0XHRpZiAoY29tcG9uZW50ID09PSBudWxsKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gY29tcG9uZW50IHByb3ZpZGVkIGZvciBhbGVydCBkaWFsb2chJyk7XHJcblx0XHR9XHJcblx0XHRpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24gPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdGNvbnN0IHByZWRlZmluZWRBbGVydENvbmZpZ3VyYXRpb246IEFsZXJ0Q29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCA9IHRoaXMucHJlZGVmaW5lZEFsZXJ0Q29uZmlndXJhdGlvbnNbY29uZmlndXJhdGlvbl07XHJcblx0XHRcdGlmIChwcmVkZWZpbmVkQWxlcnRDb25maWd1cmF0aW9uID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ByZWRlZmluZWQgYWxlcnQgY29uZmlndXJhdGlvbiBub3QgZm91bmQgZm9yOiAnICsgY29uZmlndXJhdGlvbik7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uZmlndXJhdGlvbiA9IHByZWRlZmluZWRBbGVydENvbmZpZ3VyYXRpb247XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0cmV0dXJuIHRoaXMub3Blbihjb21wb25lbnQsIHtcclxuXHRcdFx0XHQuLi5kaWFsb2dDb25maWd1cmF0aW9uLFxyXG5cdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGlnbm9yZUtleVVwOiB0cnVlLFxyXG5cdFx0XHRcdHNob3dDbG9zZUljb246IGZhbHNlXHJcblx0XHRcdH0pLm9uQ2xvc2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzaG93TW9kYWxXaXRoQnV0dG9ucyhcclxuXHRcdGNvbmZpZ3VyYXRpb246IE1vZGFsV2l0aEJ1dHRvbnNDb25maWd1cmF0aW9uLFxyXG5cdFx0ZGlhbG9nQ29uZmlndXJhdGlvbjogRGlhbG9nQ29uZmlndXJhdGlvbiA9IHt9LFxyXG5cdFx0Y29tcG9uZW50OiBUeXBlPGFueT5cclxuXHQpOiBEaWFsb2dSZWYge1xyXG5cdFx0cmV0dXJuIHRoaXMub3Blbihjb21wb25lbnQsIHtcclxuXHRcdFx0Li4uZGlhbG9nQ29uZmlndXJhdGlvbixcclxuXHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdGNvbmZpZ3VyYXRpb25cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { inject, Injectable } from "@angular/core";
|
|
2
|
+
import { of, tap } from "rxjs";
|
|
3
|
+
import { InterceptorsService } from "./interceptors.service";
|
|
4
|
+
import { InterceptorType } from "../interfaces";
|
|
5
|
+
import { ApiService } from "./api.service";
|
|
6
|
+
import { GOOGLE_MAPS_API_KEY } from "../tokens";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class GoogleMapsService {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.apiService = inject(ApiService);
|
|
11
|
+
this.interceptorsService = inject(InterceptorsService);
|
|
12
|
+
this.googleMapsApiKey = inject(GOOGLE_MAPS_API_KEY);
|
|
13
|
+
this.mapsJsLoaded = false;
|
|
14
|
+
}
|
|
15
|
+
load() {
|
|
16
|
+
if (this.googleMapsApiKey === null) {
|
|
17
|
+
throw new Error('Google maps api key is not set!');
|
|
18
|
+
}
|
|
19
|
+
if (this.mapsJsLoaded) {
|
|
20
|
+
return of(true);
|
|
21
|
+
}
|
|
22
|
+
this.interceptorsService.skip = [InterceptorType.TOKEN];
|
|
23
|
+
return this.apiService.httpClient.jsonp(`https://maps.googleapis.com/maps/api/js?key=${this.googleMapsApiKey}`, 'callback').pipe(tap(() => {
|
|
24
|
+
this.interceptorsService.skip = [];
|
|
25
|
+
this.mapsJsLoaded = true;
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
createMaps(element = null, config = {}) {
|
|
29
|
+
return this.load().pipe(tap(() => {
|
|
30
|
+
new window.google.maps.Map(element, config);
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GoogleMapsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GoogleMapsService, providedIn: 'root' }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GoogleMapsService, decorators: [{
|
|
37
|
+
type: Injectable,
|
|
38
|
+
args: [{
|
|
39
|
+
providedIn: 'root'
|
|
40
|
+
}]
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLm1hcHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGVmb3hjb3JlL3NyYy9saWIvc2VydmljZXMvZ29vZ2xlLm1hcHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUtoRCxNQUFNLE9BQU8saUJBQWlCO0lBSDlCO1FBS0MsZUFBVSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1Qyx3QkFBbUIsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkUscUJBQWdCLEdBQWtCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlELGlCQUFZLEdBQVksS0FBSyxDQUFDO0tBc0I5QjtJQXBCQSxJQUFJO1FBQ0gsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsK0NBQStDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3pJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQTBCLElBQUksRUFBRSxTQUFjLEVBQUU7UUFDMUQsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSyxNQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFCVyxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZqQixNQUFNOzs0RkFFTixpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEludGVyY2VwdG9yc1NlcnZpY2UgfSBmcm9tIFwiLi9pbnRlcmNlcHRvcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbnRlcmNlcHRvclR5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSBcIi4vYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR09PR0xFX01BUFNfQVBJX0tFWSB9IGZyb20gXCIuLi90b2tlbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEdvb2dsZU1hcHNTZXJ2aWNlIHtcclxuXHJcblx0YXBpU2VydmljZTogQXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuXHRpbnRlcmNlcHRvcnNTZXJ2aWNlOiBJbnRlcmNlcHRvcnNTZXJ2aWNlID0gaW5qZWN0KEludGVyY2VwdG9yc1NlcnZpY2UpO1xyXG5cdGdvb2dsZU1hcHNBcGlLZXk6IHN0cmluZyB8IG51bGwgPSBpbmplY3QoR09PR0xFX01BUFNfQVBJX0tFWSk7XHJcblxyXG5cdG1hcHNKc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRsb2FkKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAodGhpcy5nb29nbGVNYXBzQXBpS2V5ID09PSBudWxsKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignR29vZ2xlIG1hcHMgYXBpIGtleSBpcyBub3Qgc2V0IScpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMubWFwc0pzTG9hZGVkKSB7XHJcblx0XHRcdHJldHVybiBvZih0cnVlKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuaW50ZXJjZXB0b3JzU2VydmljZS5za2lwID0gW0ludGVyY2VwdG9yVHlwZS5UT0tFTl07XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmh0dHBDbGllbnQuanNvbnAoYGh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9JHt0aGlzLmdvb2dsZU1hcHNBcGlLZXl9YCwgJ2NhbGxiYWNrJykucGlwZSh0YXAoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmludGVyY2VwdG9yc1NlcnZpY2Uuc2tpcCA9IFtdO1xyXG5cdFx0XHR0aGlzLm1hcHNKc0xvYWRlZCA9IHRydWU7XHJcblx0XHR9KSk7XHJcblx0fVxyXG5cclxuXHRjcmVhdGVNYXBzKGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbCwgY29uZmlnOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sb2FkKCkucGlwZSh0YXAoKCkgPT4ge1xyXG5cdFx0XHRuZXcgKHdpbmRvdyBhcyBhbnkpLmdvb2dsZS5tYXBzLk1hcChlbGVtZW50LCBjb25maWcpO1xyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcbn0iXX0=
|
|
@@ -4,4 +4,5 @@ export * from './api.service';
|
|
|
4
4
|
export * from './logger.service';
|
|
5
5
|
export * from './cookie.service';
|
|
6
6
|
export * from './token.service';
|
|
7
|
-
|
|
7
|
+
export * from './google.maps.service';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Nvb2tpZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi90b2tlbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9nb29nbGUubWFwcy5zZXJ2aWNlJztcclxuIl19
|
|
@@ -9,4 +9,14 @@ export const OPENED_DIALOG_BODY_CLASS = new InjectionToken('Opened dialog body c
|
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
|
|
12
|
+
export const DIALOG_CONFIRM_COMPONENT = new InjectionToken('Dialog confirm component', {
|
|
13
|
+
factory: () => {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
export const DIALOG_ALERT_COMPONENT = new InjectionToken('Dialog alert component', {
|
|
18
|
+
factory: () => {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZWZveGNvcmUvc3JjL2xpYi90b2tlbnMvZGlhbG9nLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXNDLElBQUksY0FBYyxDQUFDLG9CQUFvQixFQUFFO0lBQzFHLE9BQU8sRUFBRSxHQUFzQixFQUFFO1FBQzdCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFrQyxJQUFJLGNBQWMsQ0FBQywwQkFBMEIsRUFBRTtJQUNsSCxPQUFPLEVBQUUsR0FBa0IsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFDLElBQUksY0FBYyxDQUFDLDBCQUEwQixFQUFFO0lBQ3hILE9BQU8sRUFBRSxHQUFxQixFQUFFO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFxQyxJQUFJLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRTtJQUNwSCxPQUFPLEVBQUUsR0FBcUIsRUFBRTtRQUMvQixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFByZWRlZmluZWREaWFsb2dzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBQUkVERUZJTkVEX0RJQUxPR1M6IEluamVjdGlvblRva2VuPFByZWRlZmluZWREaWFsb2dzPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignUHJlZGVmaW5lZCBkaWFsb2dzJywge1xyXG4gICAgZmFjdG9yeTogKCk6IFByZWRlZmluZWREaWFsb2dzID0+IHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9QRU5FRF9ESUFMT0dfQk9EWV9DTEFTUzogSW5qZWN0aW9uVG9rZW48c3RyaW5nIHwgbnVsbD4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ09wZW5lZCBkaWFsb2cgYm9keSBjbGFzcycsIHtcclxuICAgIGZhY3Rvcnk6ICgpOiBzdHJpbmcgfCBudWxsID0+IHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgRElBTE9HX0NPTkZJUk1fQ09NUE9ORU5UOiBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4gfCBudWxsPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignRGlhbG9nIGNvbmZpcm0gY29tcG9uZW50Jywge1xyXG5cdGZhY3Rvcnk6ICgpOiBUeXBlPGFueT4gfCBudWxsID0+IHtcclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgRElBTE9HX0FMRVJUX0NPTVBPTkVOVDogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+IHwgbnVsbD4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0RpYWxvZyBhbGVydCBjb21wb25lbnQnLCB7XHJcblx0ZmFjdG9yeTogKCk6IFR5cGU8YW55PiB8IG51bGwgPT4ge1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG59KTtcclxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const GOOGLE_MAPS_API_KEY = new InjectionToken('Google Maps Api Key', {
|
|
3
|
+
factory: () => {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLm1hcHMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3Rva2Vucy9nb29nbGUubWFwcy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFrQyxJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRTtJQUN4RyxPQUFPLEVBQUUsR0FBa0IsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdPT0dMRV9NQVBTX0FQSV9LRVk6IEluamVjdGlvblRva2VuPHN0cmluZyB8IG51bGw+ID0gbmV3IEluamVjdGlvblRva2VuKCdHb29nbGUgTWFwcyBBcGkgS2V5Jywge1xyXG4gICAgZmFjdG9yeTogKCk6IHN0cmluZyB8IG51bGwgPT4ge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59KTtcclxuIl19
|
|
@@ -3,4 +3,5 @@ export * from './dialog.token';
|
|
|
3
3
|
export * from './confirm.token';
|
|
4
4
|
export * from './message.token';
|
|
5
5
|
export * from './loglevel.token';
|
|
6
|
-
|
|
6
|
+
export * from './google.maps.token';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FsZXJ0LnRva2VuJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaWFsb2cudG9rZW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbmZpcm0udG9rZW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2UudG9rZW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZ2xldmVsLnRva2VuJztcclxuZXhwb3J0ICogZnJvbSAnLi9nb29nbGUubWFwcy50b2tlbic7XHJcbiJdfQ==
|