@revxui/api-clients-ts 1.1.479 → 1.1.482
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/README.md +2 -2
- package/api/api.d.ts +3 -1
- package/api/appSettingsController.service.d.ts +3 -3
- package/api/creativeAssetOptimizationController.service.d.ts +78 -0
- package/esm2020/api/api.mjs +4 -2
- package/esm2020/api/appSettingsController.service.mjs +1 -1
- package/esm2020/api/creativeAssetOptimizationController.service.mjs +214 -0
- package/esm2020/api.module.mjs +4 -1
- package/esm2020/model/advertiserAppSettingsDTO.mjs +3 -2
- package/esm2020/model/advertiserSettings.mjs +9 -2
- package/esm2020/model/apiListResponseCreativeSizeMappingDTO.mjs +2 -0
- package/esm2020/model/appSettingsDTO.mjs +3 -2
- package/esm2020/model/creativeAssetOptimizationRequest.mjs +23 -0
- package/esm2020/model/creativeAssetUploadResponse.mjs +20 -0
- package/esm2020/model/creativeDTO.mjs +6 -1
- package/esm2020/model/creativeEntity.mjs +6 -1
- package/esm2020/model/creativeSizeMappingDTO.mjs +38 -0
- package/esm2020/model/models.mjs +8 -1
- package/esm2020/model/optimizationJobItemStatusDTO.mjs +21 -0
- package/esm2020/model/optimizationJobStatusResponse.mjs +11 -0
- package/esm2020/model/selectedTargetDTO.mjs +24 -0
- package/esm2020/model/videoAttributes.mjs +6 -1
- package/fesm2015/revxui-api-clients-ts.mjs +377 -4
- package/fesm2015/revxui-api-clients-ts.mjs.map +1 -1
- package/fesm2020/revxui-api-clients-ts.mjs +375 -4
- package/fesm2020/revxui-api-clients-ts.mjs.map +1 -1
- package/model/advertiserAppSettingsDTO.d.ts +2 -1
- package/model/advertiserSettings.d.ts +9 -0
- package/model/apiListResponseCreativeSizeMappingDTO.d.ts +16 -0
- package/model/appSettingsDTO.d.ts +2 -1
- package/model/creativeAssetOptimizationRequest.d.ts +42 -0
- package/model/creativeAssetUploadResponse.d.ts +26 -0
- package/model/creativeDTO.d.ts +7 -0
- package/model/creativeEntity.d.ts +7 -0
- package/model/creativeSizeMappingDTO.d.ts +47 -0
- package/model/models.d.ts +7 -0
- package/model/optimizationJobItemStatusDTO.d.ts +27 -0
- package/model/optimizationJobStatusResponse.d.ts +31 -0
- package/model/selectedTargetDTO.d.ts +30 -0
- package/model/videoAttributes.d.ts +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
## @revxui/api-clients-ts@1.1.
|
|
1
|
+
## @revxui/api-clients-ts@1.1.482
|
|
2
2
|
|
|
3
3
|
### Building
|
|
4
4
|
|
|
@@ -19,7 +19,7 @@ Navigate to the folder of your consuming project and run one of next commands.
|
|
|
19
19
|
_published:_
|
|
20
20
|
|
|
21
21
|
```
|
|
22
|
-
npm install @revxui/api-clients-ts@1.1.
|
|
22
|
+
npm install @revxui/api-clients-ts@1.1.482 --save
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
_without publishing (not recommended):_
|
package/api/api.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export * from './catalogController.service';
|
|
|
22
22
|
import { CatalogControllerService } from './catalogController.service';
|
|
23
23
|
export * from './clickDestinationController.service';
|
|
24
24
|
import { ClickDestinationControllerService } from './clickDestinationController.service';
|
|
25
|
+
export * from './creativeAssetOptimizationController.service';
|
|
26
|
+
import { CreativeAssetOptimizationControllerService } from './creativeAssetOptimizationController.service';
|
|
25
27
|
export * from './creativeController.service';
|
|
26
28
|
import { CreativeControllerService } from './creativeController.service';
|
|
27
29
|
export * from './creativeSetsController.service';
|
|
@@ -62,4 +64,4 @@ export * from './uILoggerController.service';
|
|
|
62
64
|
import { UILoggerControllerService } from './uILoggerController.service';
|
|
63
65
|
export * from './userPreferenceController.service';
|
|
64
66
|
import { UserPreferenceControllerService } from './userPreferenceController.service';
|
|
65
|
-
export declare const APIS: (typeof AdminControllerService | typeof AdvertiserControllerService | typeof AppSettingsControllerService | typeof AppsFlyerControllerService | typeof AudienceControllerService | typeof AuditControllerService | typeof BidFunnelControllerService | typeof BulkStrategyControllerService | typeof CSSThemeController_Service | typeof CampaignControllerService | typeof CatalogControllerService | typeof ClickDestinationControllerService | typeof CreativeControllerService | typeof CreativeSetsControllerService | typeof CreativeTemplateThemesControllerService | typeof CreativeTemplateVariablesControllerService | typeof CreativeTemplatesControllerService | typeof CustomerReportingControllerService | typeof DCOVideoSettingsControllerService | typeof DashboardControllerService | typeof ExperimentsControllerService | typeof NotificationsControllerService | typeof PixelControllerService | typeof ReportControllerService | typeof ReportingControllerService | typeof ReportingSchedulerControllerService | typeof SafeguardControllerService | typeof SliceXControllerService | typeof StrategyControllerService | typeof StrategyTemplateControllerService | typeof UILoggerControllerService | typeof UserPreferenceControllerService)[];
|
|
67
|
+
export declare const APIS: (typeof AdminControllerService | typeof AdvertiserControllerService | typeof AppSettingsControllerService | typeof AppsFlyerControllerService | typeof AudienceControllerService | typeof AuditControllerService | typeof BidFunnelControllerService | typeof BulkStrategyControllerService | typeof CSSThemeController_Service | typeof CampaignControllerService | typeof CatalogControllerService | typeof ClickDestinationControllerService | typeof CreativeAssetOptimizationControllerService | typeof CreativeControllerService | typeof CreativeSetsControllerService | typeof CreativeTemplateThemesControllerService | typeof CreativeTemplateVariablesControllerService | typeof CreativeTemplatesControllerService | typeof CustomerReportingControllerService | typeof DCOVideoSettingsControllerService | typeof DashboardControllerService | typeof ExperimentsControllerService | typeof NotificationsControllerService | typeof PixelControllerService | typeof ReportControllerService | typeof ReportingControllerService | typeof ReportingSchedulerControllerService | typeof SafeguardControllerService | typeof SliceXControllerService | typeof StrategyControllerService | typeof StrategyTemplateControllerService | typeof UILoggerControllerService | typeof UserPreferenceControllerService)[];
|
|
@@ -64,9 +64,9 @@ export declare class AppSettingsControllerService {
|
|
|
64
64
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
65
65
|
* @param reportProgress flag to report request and response progress.
|
|
66
66
|
*/
|
|
67
|
-
getAppSettingsUsingGET(advertiserId?: number, reqId?: string, settingsKeys?: Array<'LOGO_LINK' | 'FALLBACK_IMG_LINK' | 'OVERLAY_IMG_LINK' | 'DEFAULT_LOGO' | 'CREATIVE_NAME_FORMAT' | 'CLICK_SIGNING' | 'SLACK_CHANNEL_ID' | 'ENABLE_AUDIT_LOGS_REPORT'>, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiResponseObjectListAppSettingsDTO>;
|
|
68
|
-
getAppSettingsUsingGET(advertiserId?: number, reqId?: string, settingsKeys?: Array<'LOGO_LINK' | 'FALLBACK_IMG_LINK' | 'OVERLAY_IMG_LINK' | 'DEFAULT_LOGO' | 'CREATIVE_NAME_FORMAT' | 'CLICK_SIGNING' | 'SLACK_CHANNEL_ID' | 'ENABLE_AUDIT_LOGS_REPORT'>, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiResponseObjectListAppSettingsDTO>>;
|
|
69
|
-
getAppSettingsUsingGET(advertiserId?: number, reqId?: string, settingsKeys?: Array<'LOGO_LINK' | 'FALLBACK_IMG_LINK' | 'OVERLAY_IMG_LINK' | 'DEFAULT_LOGO' | 'CREATIVE_NAME_FORMAT' | 'CLICK_SIGNING' | 'SLACK_CHANNEL_ID' | 'ENABLE_AUDIT_LOGS_REPORT'>, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiResponseObjectListAppSettingsDTO>>;
|
|
67
|
+
getAppSettingsUsingGET(advertiserId?: number, reqId?: string, settingsKeys?: Array<'LOGO_LINK' | 'FALLBACK_IMG_LINK' | 'OVERLAY_IMG_LINK' | 'DEFAULT_LOGO' | 'CREATIVE_NAME_FORMAT' | 'CLICK_SIGNING' | 'SLACK_CHANNEL_ID' | 'ENABLE_AUDIT_LOGS_REPORT' | 'CREATIVE_BORDER_TYPE'>, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiResponseObjectListAppSettingsDTO>;
|
|
68
|
+
getAppSettingsUsingGET(advertiserId?: number, reqId?: string, settingsKeys?: Array<'LOGO_LINK' | 'FALLBACK_IMG_LINK' | 'OVERLAY_IMG_LINK' | 'DEFAULT_LOGO' | 'CREATIVE_NAME_FORMAT' | 'CLICK_SIGNING' | 'SLACK_CHANNEL_ID' | 'ENABLE_AUDIT_LOGS_REPORT' | 'CREATIVE_BORDER_TYPE'>, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiResponseObjectListAppSettingsDTO>>;
|
|
69
|
+
getAppSettingsUsingGET(advertiserId?: number, reqId?: string, settingsKeys?: Array<'LOGO_LINK' | 'FALLBACK_IMG_LINK' | 'OVERLAY_IMG_LINK' | 'DEFAULT_LOGO' | 'CREATIVE_NAME_FORMAT' | 'CLICK_SIGNING' | 'SLACK_CHANNEL_ID' | 'ENABLE_AUDIT_LOGS_REPORT' | 'CREATIVE_BORDER_TYPE'>, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiResponseObjectListAppSettingsDTO>>;
|
|
70
70
|
/**
|
|
71
71
|
* Api to update App Settings
|
|
72
72
|
*
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { ApiListResponseCreativeSizeMappingDTO } from '../model/apiListResponseCreativeSizeMappingDTO';
|
|
4
|
+
import { CreativeAssetOptimizationRequest } from '../model/creativeAssetOptimizationRequest';
|
|
5
|
+
import { CreativeAssetUploadResponse } from '../model/creativeAssetUploadResponse';
|
|
6
|
+
import { OptimizationJobStatusResponse } from '../model/optimizationJobStatusResponse';
|
|
7
|
+
import { Configuration } from '../configuration';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export declare class CreativeAssetOptimizationControllerService {
|
|
10
|
+
protected httpClient: HttpClient;
|
|
11
|
+
protected basePath: string;
|
|
12
|
+
defaultHeaders: HttpHeaders;
|
|
13
|
+
configuration: Configuration;
|
|
14
|
+
constructor(httpClient: HttpClient, basePath: string, configuration: Configuration);
|
|
15
|
+
/**
|
|
16
|
+
* @param consumes string[] mime-types
|
|
17
|
+
* @return true: consumes contains 'multipart/form-data', false: otherwise
|
|
18
|
+
*/
|
|
19
|
+
private canConsumeForm;
|
|
20
|
+
/**
|
|
21
|
+
* Poll job status/progress — drives the loader % and the Generation Results table.
|
|
22
|
+
*
|
|
23
|
+
* @param jobId jobId
|
|
24
|
+
* @param reqId request id
|
|
25
|
+
* @param token Auth Token
|
|
26
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
27
|
+
* @param reportProgress flag to report request and response progress.
|
|
28
|
+
*/
|
|
29
|
+
getJobStatusUsingGET(jobId: number, reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<OptimizationJobStatusResponse>;
|
|
30
|
+
getJobStatusUsingGET(jobId: number, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<OptimizationJobStatusResponse>>;
|
|
31
|
+
getJobStatusUsingGET(jobId: number, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<OptimizationJobStatusResponse>>;
|
|
32
|
+
/**
|
|
33
|
+
* Fetch the full size-mapping config for a creative type (browser caches this for the session).
|
|
34
|
+
*
|
|
35
|
+
* @param creativeType creativeType
|
|
36
|
+
* @param reqId request id
|
|
37
|
+
* @param token Auth Token
|
|
38
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
39
|
+
* @param reportProgress flag to report request and response progress.
|
|
40
|
+
*/
|
|
41
|
+
getSizeMappingConfigUsingGET(creativeType: 'IMAGE' | 'VIDEO' | 'THIRD_PARTY_AD_TAGS' | 'ZIPPED_HTML' | 'NATIVE_IMAGE' | 'NATIVE_VIDEO' | 'DYNAMIC_IMAGE' | 'DYNAMIC_MACRO' | 'DYNAMIC_HTML' | 'DYNAMIC_VIDEO' | 'HYBRID_STATIC_AD' | 'HYBRID_DYNAMIC_AD' | 'THIRD_PARTY_VIDEO_AD_TAGS' | 'NATIVE_ICON' | 'ICON' | 'CTV_VIDEO' | 'PLAYABLE', reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiListResponseCreativeSizeMappingDTO>;
|
|
42
|
+
getSizeMappingConfigUsingGET(creativeType: 'IMAGE' | 'VIDEO' | 'THIRD_PARTY_AD_TAGS' | 'ZIPPED_HTML' | 'NATIVE_IMAGE' | 'NATIVE_VIDEO' | 'DYNAMIC_IMAGE' | 'DYNAMIC_MACRO' | 'DYNAMIC_HTML' | 'DYNAMIC_VIDEO' | 'HYBRID_STATIC_AD' | 'HYBRID_DYNAMIC_AD' | 'THIRD_PARTY_VIDEO_AD_TAGS' | 'NATIVE_ICON' | 'ICON' | 'CTV_VIDEO' | 'PLAYABLE', reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiListResponseCreativeSizeMappingDTO>>;
|
|
43
|
+
getSizeMappingConfigUsingGET(creativeType: 'IMAGE' | 'VIDEO' | 'THIRD_PARTY_AD_TAGS' | 'ZIPPED_HTML' | 'NATIVE_IMAGE' | 'NATIVE_VIDEO' | 'DYNAMIC_IMAGE' | 'DYNAMIC_MACRO' | 'DYNAMIC_HTML' | 'DYNAMIC_VIDEO' | 'HYBRID_STATIC_AD' | 'HYBRID_DYNAMIC_AD' | 'THIRD_PARTY_VIDEO_AD_TAGS' | 'NATIVE_ICON' | 'ICON' | 'CTV_VIDEO' | 'PLAYABLE', reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiListResponseCreativeSizeMappingDTO>>;
|
|
44
|
+
/**
|
|
45
|
+
* Submit the previously-uploaded asset's mediaId + selected target sizes for backend bulk generation. Pure JSON — the file itself already traveled in the earlier /upload call. Returns immediately with a jobId.
|
|
46
|
+
*
|
|
47
|
+
* @param request request
|
|
48
|
+
* @param reqId request id
|
|
49
|
+
* @param token Auth Token
|
|
50
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
51
|
+
* @param reportProgress flag to report request and response progress.
|
|
52
|
+
*/
|
|
53
|
+
saveUsingPOST(request: CreativeAssetOptimizationRequest, reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<{
|
|
54
|
+
[key: string]: number;
|
|
55
|
+
}>;
|
|
56
|
+
saveUsingPOST(request: CreativeAssetOptimizationRequest, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<{
|
|
57
|
+
[key: string]: number;
|
|
58
|
+
}>>;
|
|
59
|
+
saveUsingPOST(request: CreativeAssetOptimizationRequest, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<{
|
|
60
|
+
[key: string]: number;
|
|
61
|
+
}>>;
|
|
62
|
+
/**
|
|
63
|
+
* Upload the original asset only — persists it, detects its dimensions, and returns a mediaId. Called silently in the background while the user fills out the rest of the creative form; does not create a job or touch the database's Creative/CreativeSets tables.
|
|
64
|
+
*
|
|
65
|
+
* @param advertiserId advertiserId
|
|
66
|
+
* @param creativeSetType creativeSetType
|
|
67
|
+
* @param file file
|
|
68
|
+
* @param reqId request id
|
|
69
|
+
* @param token Auth Token
|
|
70
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
71
|
+
* @param reportProgress flag to report request and response progress.
|
|
72
|
+
*/
|
|
73
|
+
uploadUsingPOST(advertiserId: any, creativeSetType: any, file: Blob, reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<CreativeAssetUploadResponse>;
|
|
74
|
+
uploadUsingPOST(advertiserId: any, creativeSetType: any, file: Blob, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<CreativeAssetUploadResponse>>;
|
|
75
|
+
uploadUsingPOST(advertiserId: any, creativeSetType: any, file: Blob, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<CreativeAssetUploadResponse>>;
|
|
76
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CreativeAssetOptimizationControllerService, [null, { optional: true; }, { optional: true; }]>;
|
|
77
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CreativeAssetOptimizationControllerService>;
|
|
78
|
+
}
|
package/esm2020/api/api.mjs
CHANGED
|
@@ -22,6 +22,8 @@ export * from './catalogController.service';
|
|
|
22
22
|
import { CatalogControllerService } from './catalogController.service';
|
|
23
23
|
export * from './clickDestinationController.service';
|
|
24
24
|
import { ClickDestinationControllerService } from './clickDestinationController.service';
|
|
25
|
+
export * from './creativeAssetOptimizationController.service';
|
|
26
|
+
import { CreativeAssetOptimizationControllerService } from './creativeAssetOptimizationController.service';
|
|
25
27
|
export * from './creativeController.service';
|
|
26
28
|
import { CreativeControllerService } from './creativeController.service';
|
|
27
29
|
export * from './creativeSetsController.service';
|
|
@@ -62,5 +64,5 @@ export * from './uILoggerController.service';
|
|
|
62
64
|
import { UILoggerControllerService } from './uILoggerController.service';
|
|
63
65
|
export * from './userPreferenceController.service';
|
|
64
66
|
import { UserPreferenceControllerService } from './userPreferenceController.service';
|
|
65
|
-
export const APIS = [AdminControllerService, AdvertiserControllerService, AppSettingsControllerService, AppsFlyerControllerService, AudienceControllerService, AuditControllerService, BidFunnelControllerService, BulkStrategyControllerService, CSSThemeController_Service, CampaignControllerService, CatalogControllerService, ClickDestinationControllerService, CreativeControllerService, CreativeSetsControllerService, CreativeTemplateThemesControllerService, CreativeTemplateVariablesControllerService, CreativeTemplatesControllerService, CustomerReportingControllerService, DCOVideoSettingsControllerService, DashboardControllerService, ExperimentsControllerService, NotificationsControllerService, PixelControllerService, ReportControllerService, ReportingControllerService, ReportingSchedulerControllerService, SafeguardControllerService, SliceXControllerService, StrategyControllerService, StrategyTemplateControllerService, UILoggerControllerService, UserPreferenceControllerService];
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBpL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekUsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNFLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUs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QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRtaW5Db250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRtaW5Db250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vYWRtaW5Db250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hZHZlcnRpc2VyQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFkdmVydGlzZXJDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vYWR2ZXJ0aXNlckNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwcFNldHRpbmdzQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFNldHRpbmdzQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2FwcFNldHRpbmdzQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwc0ZseWVyQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcHNGbHllckNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcHBzRmx5ZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpZW5jZUNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBdWRpZW5jZUNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpZW5jZUNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0Q29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEF1ZGl0Q29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2F1ZGl0Q29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYmlkRnVubmVsQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJpZEZ1bm5lbENvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9iaWRGdW5uZWxDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9idWxrU3RyYXRlZ3lDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVsa1N0cmF0ZWd5Q29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2J1bGtTdHJhdGVneUNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NTU1RoZW1lQ29udHJvbGxlcl8uc2VydmljZSc7XG5pbXBvcnQgeyBDU1NUaGVtZUNvbnRyb2xsZXJfU2VydmljZSB9IGZyb20gJy4vY1NTVGhlbWVDb250cm9sbGVyXy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2FtcGFpZ25Db250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FtcGFpZ25Db250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY2FtcGFpZ25Db250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRhbG9nQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IENhdGFsb2dDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY2F0YWxvZ0NvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrRGVzdGluYXRpb25Db250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xpY2tEZXN0aW5hdGlvbkNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jbGlja0Rlc3RpbmF0aW9uQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRpdmVDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY3JlYXRpdmVDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVNldHNDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRpdmVTZXRzQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2NyZWF0aXZlU2V0c0NvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlVGVtcGxhdGVUaGVtZXNDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRpdmVUZW1wbGF0ZVRoZW1lc0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jcmVhdGl2ZVRlbXBsYXRlVGhlbWVzQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVUZW1wbGF0ZVZhcmlhYmxlc0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVhdGl2ZVRlbXBsYXRlVmFyaWFibGVzQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2NyZWF0aXZlVGVtcGxhdGVWYXJpYWJsZXNDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVRlbXBsYXRlc0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVhdGl2ZVRlbXBsYXRlc0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jcmVhdGl2ZVRlbXBsYXRlc0NvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2N1c3RvbWVyUmVwb3J0aW5nQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbWVyUmVwb3J0aW5nQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2N1c3RvbWVyUmVwb3J0aW5nQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZENPVmlkZW9TZXR0aW5nc0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEQ09WaWRlb1NldHRpbmdzQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2RDT1ZpZGVvU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmRDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2Rhc2hib2FyZENvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2V4cGVyaW1lbnRzQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV4cGVyaW1lbnRzQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2V4cGVyaW1lbnRzQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uc0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbnNDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9waXhlbENvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQaXhlbENvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9waXhlbENvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydENvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vcmVwb3J0Q29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0aW5nQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydGluZ0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnRpbmdDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmdTY2hlZHVsZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0aW5nU2NoZWR1bGVyQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL3JlcG9ydGluZ1NjaGVkdWxlckNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NhZmVndWFyZENvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTYWZlZ3VhcmRDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vc2FmZWd1YXJkQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpY2VYQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNsaWNlWENvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9zbGljZVhDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJhdGVneUNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdHJhdGVneUNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9zdHJhdGVneUNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmF0ZWd5VGVtcGxhdGVDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RyYXRlZ3lUZW1wbGF0ZUNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9zdHJhdGVneVRlbXBsYXRlQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdUlMb2dnZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVUlMb2dnZXJDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vdUlMb2dnZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyUHJlZmVyZW5jZUNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZUNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyUHJlZmVyZW5jZUNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgY29uc3QgQVBJUyA9IFtBZG1pbkNvbnRyb2xsZXJTZXJ2aWNlLCBBZHZlcnRpc2VyQ29udHJvbGxlclNlcnZpY2UsIEFwcFNldHRpbmdzQ29udHJvbGxlclNlcnZpY2UsIEFwcHNGbHllckNvbnRyb2xsZXJTZXJ2aWNlLCBBdWRpZW5jZUNvbnRyb2xsZXJTZXJ2aWNlLCBBdWRpdENvbnRyb2xsZXJTZXJ2aWNlLCBCaWRGdW5uZWxDb250cm9sbGVyU2VydmljZSwgQnVsa1N0cmF0ZWd5Q29udHJvbGxlclNlcnZpY2UsIENTU1RoZW1lQ29udHJvbGxlcl9TZXJ2aWNlLCBDYW1wYWlnbkNvbnRyb2xsZXJTZXJ2aWNlLCBDYXRhbG9nQ29udHJvbGxlclNlcnZpY2UsIENsaWNrRGVzdGluYXRpb25Db250cm9sbGVyU2VydmljZSwgQ3JlYXRpdmVDb250cm9sbGVyU2VydmljZSwgQ3JlYXRpdmVTZXRzQ29udHJvbGxlclNlcnZpY2UsIENyZWF0aXZlVGVtcGxhdGVUaGVtZXNDb250cm9sbGVyU2VydmljZSwgQ3JlYXRpdmVUZW1wbGF0ZVZhcmlhYmxlc0NvbnRyb2xsZXJTZXJ2aWNlLCBDcmVhdGl2ZVRlbXBsYXRlc0NvbnRyb2xsZXJTZXJ2aWNlLCBDdXN0b21lclJlcG9ydGluZ0NvbnRyb2xsZXJTZXJ2aWNlLCBEQ09WaWRlb1NldHRpbmdzQ29udHJvbGxlclNlcnZpY2UsIERhc2hib2FyZENvbnRyb2xsZXJTZXJ2aWNlLCBFeHBlcmltZW50c0NvbnRyb2xsZXJTZXJ2aWNlLCBOb3RpZmljYXRpb25zQ29udHJvbGxlclNlcnZpY2UsIFBpeGVsQ29udHJvbGxlclNlcnZpY2UsIFJlcG9ydENvbnRyb2xsZXJTZXJ2aWNlLCBSZXBvcnRpbmdDb250cm9sbGVyU2VydmljZSwgUmVwb3J0aW5nU2NoZWR1bGVyQ29udHJvbGxlclNlcnZpY2UsIFNhZmVndWFyZENvbnRyb2xsZXJTZXJ2aWNlLCBTbGljZVhDb250cm9sbGVyU2VydmljZSwgU3RyYXRlZ3lDb250cm9sbGVyU2VydmljZSwgU3RyYXRlZ3lUZW1wbGF0ZUNvbnRyb2xsZXJTZXJ2aWNlLCBVSUxvZ2dlckNvbnRyb2xsZXJTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZUNvbnRyb2xsZXJTZXJ2aWNlXTtcbiJdfQ==
|
|
67
|
+
export const APIS = [AdminControllerService, AdvertiserControllerService, AppSettingsControllerService, AppsFlyerControllerService, AudienceControllerService, AuditControllerService, BidFunnelControllerService, BulkStrategyControllerService, CSSThemeController_Service, CampaignControllerService, CatalogControllerService, ClickDestinationControllerService, CreativeAssetOptimizationControllerService, CreativeControllerService, CreativeSetsControllerService, CreativeTemplateThemesControllerService, CreativeTemplateVariablesControllerService, CreativeTemplatesControllerService, CustomerReportingControllerService, DCOVideoSettingsControllerService, DashboardControllerService, ExperimentsControllerService, NotificationsControllerService, PixelControllerService, ReportControllerService, ReportingControllerService, ReportingSchedulerControllerService, SafeguardControllerService, SliceXControllerService, StrategyControllerService, StrategyTemplateControllerService, UILoggerControllerService, UserPreferenceControllerService];
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBpL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekUsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNFLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUs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RUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxpQ0FBaUMsRUFBRSx5QkFBeUIsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZG1pbkNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBZG1pbkNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZG1pbkNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FkdmVydGlzZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWR2ZXJ0aXNlckNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZHZlcnRpc2VyQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3NDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vYXBwU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBzRmx5ZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwc0ZseWVyQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2FwcHNGbHllckNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGllbmNlQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEF1ZGllbmNlQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2F1ZGllbmNlQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXVkaXRDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaXRDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vYXVkaXRDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9iaWRGdW5uZWxDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmlkRnVubmVsQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2JpZEZ1bm5lbENvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1bGtTdHJhdGVneUNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCdWxrU3RyYXRlZ3lDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vYnVsa1N0cmF0ZWd5Q29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY1NTVGhlbWVDb250cm9sbGVyXy5zZXJ2aWNlJztcbmltcG9ydCB7IENTU1RoZW1lQ29udHJvbGxlcl9TZXJ2aWNlIH0gZnJvbSAnLi9jU1NUaGVtZUNvbnRyb2xsZXJfLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jYW1wYWlnbkNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYW1wYWlnbkNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYW1wYWlnbkNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhdGFsb2dDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0YWxvZ0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYXRhbG9nQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2xpY2tEZXN0aW5hdGlvbkNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDbGlja0Rlc3RpbmF0aW9uQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2NsaWNrRGVzdGluYXRpb25Db250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZUFzc2V0T3B0aW1pemF0aW9uQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWF0aXZlQXNzZXRPcHRpbWl6YXRpb25Db250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY3JlYXRpdmVBc3NldE9wdGltaXphdGlvbkNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWF0aXZlQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL2NyZWF0aXZlQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVTZXRzQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWF0aXZlU2V0c0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jcmVhdGl2ZVNldHNDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVRlbXBsYXRlVGhlbWVzQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWF0aXZlVGVtcGxhdGVUaGVtZXNDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY3JlYXRpdmVUZW1wbGF0ZVRoZW1lc0NvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlVGVtcGxhdGVWYXJpYWJsZXNDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRpdmVUZW1wbGF0ZVZhcmlhYmxlc0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jcmVhdGl2ZVRlbXBsYXRlVmFyaWFibGVzQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVUZW1wbGF0ZXNDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRpdmVUZW1wbGF0ZXNDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY3JlYXRpdmVUZW1wbGF0ZXNDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jdXN0b21lclJlcG9ydGluZ0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21lclJlcG9ydGluZ0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jdXN0b21lclJlcG9ydGluZ0NvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2RDT1ZpZGVvU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRENPVmlkZW9TZXR0aW5nc0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9kQ09WaWRlb1NldHRpbmdzQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZENvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9kYXNoYm9hcmRDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBlcmltZW50c0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFeHBlcmltZW50c0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9leHBlcmltZW50c0NvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnNDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGl4ZWxDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGl4ZWxDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vcGl4ZWxDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL3JlcG9ydENvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZ0NvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRpbmdDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vcmVwb3J0aW5nQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0aW5nU2NoZWR1bGVyQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydGluZ1NjaGVkdWxlckNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnRpbmdTY2hlZHVsZXJDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlZ3VhcmRDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2FmZWd1YXJkQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL3NhZmVndWFyZENvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaWNlWENvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTbGljZVhDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vc2xpY2VYQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyYXRlZ3lDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RyYXRlZ3lDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vc3RyYXRlZ3lDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJhdGVneVRlbXBsYXRlQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN0cmF0ZWd5VGVtcGxhdGVDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vc3RyYXRlZ3lUZW1wbGF0ZUNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3VJTG9nZ2VyQ29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVJTG9nZ2VyQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuL3VJTG9nZ2VyQ29udHJvbGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlclByZWZlcmVuY2VDb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vdXNlclByZWZlcmVuY2VDb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0IGNvbnN0IEFQSVMgPSBbQWRtaW5Db250cm9sbGVyU2VydmljZSwgQWR2ZXJ0aXNlckNvbnRyb2xsZXJTZXJ2aWNlLCBBcHBTZXR0aW5nc0NvbnRyb2xsZXJTZXJ2aWNlLCBBcHBzRmx5ZXJDb250cm9sbGVyU2VydmljZSwgQXVkaWVuY2VDb250cm9sbGVyU2VydmljZSwgQXVkaXRDb250cm9sbGVyU2VydmljZSwgQmlkRnVubmVsQ29udHJvbGxlclNlcnZpY2UsIEJ1bGtTdHJhdGVneUNvbnRyb2xsZXJTZXJ2aWNlLCBDU1NUaGVtZUNvbnRyb2xsZXJfU2VydmljZSwgQ2FtcGFpZ25Db250cm9sbGVyU2VydmljZSwgQ2F0YWxvZ0NvbnRyb2xsZXJTZXJ2aWNlLCBDbGlja0Rlc3RpbmF0aW9uQ29udHJvbGxlclNlcnZpY2UsIENyZWF0aXZlQXNzZXRPcHRpbWl6YXRpb25Db250cm9sbGVyU2VydmljZSwgQ3JlYXRpdmVDb250cm9sbGVyU2VydmljZSwgQ3JlYXRpdmVTZXRzQ29udHJvbGxlclNlcnZpY2UsIENyZWF0aXZlVGVtcGxhdGVUaGVtZXNDb250cm9sbGVyU2VydmljZSwgQ3JlYXRpdmVUZW1wbGF0ZVZhcmlhYmxlc0NvbnRyb2xsZXJTZXJ2aWNlLCBDcmVhdGl2ZVRlbXBsYXRlc0NvbnRyb2xsZXJTZXJ2aWNlLCBDdXN0b21lclJlcG9ydGluZ0NvbnRyb2xsZXJTZXJ2aWNlLCBEQ09WaWRlb1NldHRpbmdzQ29udHJvbGxlclNlcnZpY2UsIERhc2hib2FyZENvbnRyb2xsZXJTZXJ2aWNlLCBFeHBlcmltZW50c0NvbnRyb2xsZXJTZXJ2aWNlLCBOb3RpZmljYXRpb25zQ29udHJvbGxlclNlcnZpY2UsIFBpeGVsQ29udHJvbGxlclNlcnZpY2UsIFJlcG9ydENvbnRyb2xsZXJTZXJ2aWNlLCBSZXBvcnRpbmdDb250cm9sbGVyU2VydmljZSwgUmVwb3J0aW5nU2NoZWR1bGVyQ29udHJvbGxlclNlcnZpY2UsIFNhZmVndWFyZENvbnRyb2xsZXJTZXJ2aWNlLCBTbGljZVhDb250cm9sbGVyU2VydmljZSwgU3RyYXRlZ3lDb250cm9sbGVyU2VydmljZSwgU3RyYXRlZ3lUZW1wbGF0ZUNvbnRyb2xsZXJTZXJ2aWNlLCBVSUxvZ2dlckNvbnRyb2xsZXJTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZUNvbnRyb2xsZXJTZXJ2aWNlXTtcbiJdfQ==
|
|
@@ -250,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
250
250
|
}] }, { type: i2.Configuration, decorators: [{
|
|
251
251
|
type: Optional
|
|
252
252
|
}] }]; } });
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXBwU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBMkIsZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBYyxXQUFXLEVBQUUsVUFBVSxFQUNWLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFXL0UsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBMEIsY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBMEMsa0JBQWtCLENBQUM7Ozs7QUFJckYsTUFBTSxPQUFPLDRCQUE0QjtJQU1yQyxZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLGdDQUFnQyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFHdkMsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUM1QjtRQUNELElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxRQUFrQjtRQUNyQyxNQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FB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UUFBUSxFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDN0Q7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxRQUFRLEdBQWE7WUFDdkIsa0JBQWtCO1NBQ3JCLENBQUM7UUFDRixNQUFNLHVCQUF1QixHQUF1QixJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pHLElBQUksdUJBQXVCLElBQUksU0FBUyxFQUFFO1lBQ3RDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBbUMsR0FBRyxJQUFJLENBQUMsUUFBUSx5Q0FBeUMsRUFDbkgsZUFBZSxFQUNmO1lBQ0ksZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUNKLENBQUM7SUFDTixDQUFDOzswSEF6V1EsNEJBQTRCLDRDQU00QixTQUFTOzhIQU5qRSw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVTs7MEJBT3dDLFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQXFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKiBBcGkgRG9jdW1lbnRhdGlvblxuICpcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxLjBcbiAqIFxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHN3YWdnZXIgY29kZSBnZW5lcmF0b3IgcHJvZ3JhbS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbi8qIHRzbGludDpkaXNhYmxlOm5vLXVudXNlZC12YXJpYWJsZSBtZW1iZXItb3JkZXJpbmcgKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsXG4gICAgICAgICBIdHRwUmVzcG9uc2UsIEh0dHBFdmVudCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0TGlzdER5bmFtaWNWaWRlb1RlbXBsYXRlIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RMaXN0RHluYW1pY1ZpZGVvVGVtcGxhdGUnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RSZXNwb25zZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdFJlc3BvbnNlTWVzc2FnZSc7XG5pbXBvcnQgeyBBcHBTZXR0aW5nc0RUTyB9IGZyb20gJy4uL21vZGVsL2FwcFNldHRpbmdzRFRPJztcbmltcG9ydCB7IER5bmFtaWNWaWRlb0RUTyB9IGZyb20gJy4uL21vZGVsL2R5bmFtaWNWaWRlb0RUTyc7XG5cbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBTZXR0aW5nc0NvbnRyb2xsZXJTZXJ2aWNlIHtcblxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9ICdodHRwczovL2FwaXYyc3RhZ2U3LmF0b21leC5uZXQnO1xuICAgIHB1YmxpYyBkZWZhdWx0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIHB1YmxpYyBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBAT3B0aW9uYWwoKUBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nLCBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChiYXNlUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoIHx8IGNvbmZpZ3VyYXRpb24uYmFzZVBhdGggfHwgdGhpcy5iYXNlUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb25zdW1lcyBzdHJpbmdbXSBtaW1lLXR5cGVzXG4gICAgICogQHJldHVybiB0cnVlOiBjb25zdW1lcyBjb250YWlucyAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlOiBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbkNvbnN1bWVGb3JtKGNvbnN1bWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtID0gJ211bHRpcGFydC9mb3JtLWRhdGEnO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnN1bWUgb2YgY29uc3VtZXMpIHtcbiAgICAgICAgICAgIGlmIChmb3JtID09PSBjb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogIEFwaSB0byBjcmVhdGUgQXBwIFNldHRpbmdzXG4gICAgICogXG4gICAgICogQHBhcmFtIGFwcFNldHRpbmdzIGFwcFNldHRpbmdzXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+O1xuICAgIHB1YmxpYyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4+O1xuICAgIHB1YmxpYyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+PjtcbiAgICBwdWJsaWMgY3JlYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QoYXBwU2V0dGluZ3M6IEFycmF5PEFwcFNldHRpbmdzRFRPPiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYXBwU2V0dGluZ3MgPT09IG51bGwgfHwgYXBwU2V0dGluZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgYXBwU2V0dGluZ3Mgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2FwcHNldHRpbmdzYCxcbiAgICAgICAgICAgIGFwcFNldHRpbmdzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFwaSB0byBmZXRjaCBzYW1wbGUgZHluYW1pYyB2aWRlbyB0ZW1wbGF0ZXNcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGZldGNoQWxsRHluYW1pY1ZpZGVvVGVtcGxhdGVzVXNpbmdHRVQocmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdER5bmFtaWNWaWRlb1RlbXBsYXRlPjtcbiAgICBwdWJsaWMgZmV0Y2hBbGxEeW5hbWljVmlkZW9UZW1wbGF0ZXNVc2luZ0dFVChyZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3REeW5hbWljVmlkZW9UZW1wbGF0ZT4+O1xuICAgIHB1YmxpYyBmZXRjaEFsbER5bmFtaWNWaWRlb1RlbXBsYXRlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdExpc3REeW5hbWljVmlkZW9UZW1wbGF0ZT4+O1xuICAgIHB1YmxpYyBmZXRjaEFsbER5bmFtaWNWaWRlb1RlbXBsYXRlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cblxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0RHluYW1pY1ZpZGVvVGVtcGxhdGU+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hcHBzZXR0aW5ncy9keW5hbWljdmlkZW8vdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwaSB0byBmZXRjaCBkeW5hbWljIHZpZGVvIGNvbmZpZyBmb3IgZ2l2ZW4gYWR2ZXJ0aXNlcmlkXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkdmVydGlzZXJJZCBhZHZlcnRpc2VySWRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGZldGNoRHluYW1pY1ZpZGVvQ29uZmlnVXNpbmdHRVQoYWR2ZXJ0aXNlcklkPzogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyRHluYW1pY1ZpZGVvQ29uZmlnPjtcbiAgICBwdWJsaWMgZmV0Y2hEeW5hbWljVmlkZW9Db25maWdVc2luZ0dFVChhZHZlcnRpc2VySWQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZz4+O1xuICAgIHB1YmxpYyBmZXRjaER5bmFtaWNWaWRlb0NvbmZpZ1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZz4+O1xuICAgIHB1YmxpYyBmZXRjaER5bmFtaWNWaWRlb0NvbmZpZ1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChhZHZlcnRpc2VySWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VySWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2FkdmVydGlzZXJJZCcsIDxhbnk+YWR2ZXJ0aXNlcklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyRHluYW1pY1ZpZGVvQ29uZmlnPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXBwc2V0dGluZ3MvZHluYW1pY3ZpZGVvL2NvbmZpZ2AsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQXBpIHRvIGdldCBBcHAgU2V0dGluZ3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWR2ZXJ0aXNlcklkIGFkdmVydGlzZXJJZFxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHNldHRpbmdzS2V5cyBzZXR0aW5nc0tleXNcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBcHBTZXR0aW5nc1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHNldHRpbmdzS2V5cz86IEFycmF5PCdMT0dPX0xJTksnIHwgJ0ZBTExCQUNLX0lNR19MSU5LJyB8ICdPVkVSTEFZX0lNR19MSU5LJyB8ICdERUZBVUxUX0xPR08nIHwgJ0NSRUFUSVZFX05BTUVfRk9STUFUJyB8ICdDTElDS19TSUdOSU5HJyB8ICdTTEFDS19DSEFOTkVMX0lEJyB8ICdFTkFCTEVfQVVESVRfTE9HU19SRVBPUlQnPiwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+O1xuICAgIHB1YmxpYyBnZXRBcHBTZXR0aW5nc1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHNldHRpbmdzS2V5cz86IEFycmF5PCdMT0dPX0xJTksnIHwgJ0ZBTExCQUNLX0lNR19MSU5LJyB8ICdPVkVSTEFZX0lNR19MSU5LJyB8ICdERUZBVUxUX0xPR08nIHwgJ0NSRUFUSVZFX05BTUVfRk9STUFUJyB8ICdDTElDS19TSUdOSU5HJyB8ICdTTEFDS19DSEFOTkVMX0lEJyB8ICdFTkFCTEVfQVVESVRfTE9HU19SRVBPUlQnPiwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4+O1xuICAgIHB1YmxpYyBnZXRBcHBTZXR0aW5nc1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHNldHRpbmdzS2V5cz86IEFycmF5PCdMT0dPX0xJTksnIHwgJ0ZBTExCQUNLX0lNR19MSU5LJyB8ICdPVkVSTEFZX0lNR19MSU5LJyB8ICdERUZBVUxUX0xPR08nIHwgJ0NSRUFUSVZFX05BTUVfRk9STUFUJyB8ICdDTElDS19TSUdOSU5HJyB8ICdTTEFDS19DSEFOTkVMX0lEJyB8ICdFTkFCTEVfQVVESVRfTE9HU19SRVBPUlQnPiwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QXBwU2V0dGluZ3NVc2luZ0dFVChhZHZlcnRpc2VySWQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzZXR0aW5nc0tleXM/OiBBcnJheTwnTE9HT19MSU5LJyB8ICdGQUxMQkFDS19JTUdfTElOSycgfCAnT1ZFUkxBWV9JTUdfTElOSycgfCAnREVGQVVMVF9MT0dPJyB8ICdDUkVBVElWRV9OQU1FX0ZPUk1BVCcgfCAnQ0xJQ0tfU0lHTklORycgfCAnU0xBQ0tfQ0hBTk5FTF9JRCcgfCAnRU5BQkxFX0FVRElUX0xPR1NfUkVQT1JUJz4sIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuXG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGFkdmVydGlzZXJJZCAhPT0gdW5kZWZpbmVkICYmIGFkdmVydGlzZXJJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnYWR2ZXJ0aXNlcklkJywgPGFueT5hZHZlcnRpc2VySWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR0aW5nc0tleXMpIHtcbiAgICAgICAgICAgIHNldHRpbmdzS2V5cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLmFwcGVuZCgnc2V0dGluZ3NLZXlzJywgPGFueT5lbGVtZW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXBwc2V0dGluZ3NgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFwaSB0byB1cGRhdGUgQXBwIFNldHRpbmdzXG4gICAgICogXG4gICAgICogQHBhcmFtIGFwcFNldHRpbmdzIGFwcFNldHRpbmdzXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+O1xuICAgIHB1YmxpYyB1cGRhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4+O1xuICAgIHB1YmxpYyB1cGRhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+PjtcbiAgICBwdWJsaWMgdXBkYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QoYXBwU2V0dGluZ3M6IEFycmF5PEFwcFNldHRpbmdzRFRPPiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYXBwU2V0dGluZ3MgPT09IG51bGwgfHwgYXBwU2V0dGluZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgYXBwU2V0dGluZ3Mgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyB1cGRhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2FwcHNldHRpbmdzL3VwZGF0ZWAsXG4gICAgICAgICAgICBhcHBTZXR0aW5ncyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBcGkgdG8gdXBzZXJ0IGR5bmFtaWMgdmlkZW9cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZHluYW1pY1ZpZGVvRFRPIGR5bmFtaWNWaWRlb0RUT1xuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBzZXJ0RHluYW1pY1ZpZGVvVXNpbmdQT1NUKGR5bmFtaWNWaWRlb0RUTzogRHluYW1pY1ZpZGVvRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RSZXNwb25zZU1lc3NhZ2U+O1xuICAgIHB1YmxpYyB1cHNlcnREeW5hbWljVmlkZW9Vc2luZ1BPU1QoZHluYW1pY1ZpZGVvRFRPOiBEeW5hbWljVmlkZW9EVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0UmVzcG9uc2VNZXNzYWdlPj47XG4gICAgcHVibGljIHVwc2VydER5bmFtaWNWaWRlb1VzaW5nUE9TVChkeW5hbWljVmlkZW9EVE86IER5bmFtaWNWaWRlb0RUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0UmVzcG9uc2VNZXNzYWdlPj47XG4gICAgcHVibGljIHVwc2VydER5bmFtaWNWaWRlb1VzaW5nUE9TVChkeW5hbWljVmlkZW9EVE86IER5bmFtaWNWaWRlb0RUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoZHluYW1pY1ZpZGVvRFRPID09PSBudWxsIHx8IGR5bmFtaWNWaWRlb0RUTyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBkeW5hbWljVmlkZW9EVE8gd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyB1cHNlcnREeW5hbWljVmlkZW9Vc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RSZXNwb25zZU1lc3NhZ2U+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hcHBzZXR0aW5ncy9keW5hbWljdmlkZW8vdXBzZXJ0YCxcbiAgICAgICAgICAgIGR5bmFtaWNWaWRlb0RUTyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXBwU2V0dGluZ3NDb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBMkIsZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBYyxXQUFXLEVBQUUsVUFBVSxFQUNWLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFXL0UsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBMEIsY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBMEMsa0JBQWtCLENBQUM7Ozs7QUFJckYsTUFBTSxPQUFPLDRCQUE0QjtJQU1yQyxZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLGdDQUFnQyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFHdkMsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUM1QjtRQUNELElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxRQUFrQjtRQUNyQyxNQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FB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UUFBUSxFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDN0Q7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxRQUFRLEdBQWE7WUFDdkIsa0JBQWtCO1NBQ3JCLENBQUM7UUFDRixNQUFNLHVCQUF1QixHQUF1QixJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pHLElBQUksdUJBQXVCLElBQUksU0FBUyxFQUFFO1lBQ3RDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBbUMsR0FBRyxJQUFJLENBQUMsUUFBUSx5Q0FBeUMsRUFDbkgsZUFBZSxFQUNmO1lBQ0ksZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUNKLENBQUM7SUFDTixDQUFDOzswSEF6V1EsNEJBQTRCLDRDQU00QixTQUFTOzhIQU5qRSw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVTs7MEJBT3dDLFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQXFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKiBBcGkgRG9jdW1lbnRhdGlvblxuICpcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxLjBcbiAqIFxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHN3YWdnZXIgY29kZSBnZW5lcmF0b3IgcHJvZ3JhbS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbi8qIHRzbGludDpkaXNhYmxlOm5vLXVudXNlZC12YXJpYWJsZSBtZW1iZXItb3JkZXJpbmcgKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsXG4gICAgICAgICBIdHRwUmVzcG9uc2UsIEh0dHBFdmVudCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0TGlzdER5bmFtaWNWaWRlb1RlbXBsYXRlIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RMaXN0RHluYW1pY1ZpZGVvVGVtcGxhdGUnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RSZXNwb25zZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdFJlc3BvbnNlTWVzc2FnZSc7XG5pbXBvcnQgeyBBcHBTZXR0aW5nc0RUTyB9IGZyb20gJy4uL21vZGVsL2FwcFNldHRpbmdzRFRPJztcbmltcG9ydCB7IER5bmFtaWNWaWRlb0RUTyB9IGZyb20gJy4uL21vZGVsL2R5bmFtaWNWaWRlb0RUTyc7XG5cbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBTZXR0aW5nc0NvbnRyb2xsZXJTZXJ2aWNlIHtcblxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9ICdodHRwczovL2FwaXYyc3RhZ2U3LmF0b21leC5uZXQnO1xuICAgIHB1YmxpYyBkZWZhdWx0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIHB1YmxpYyBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBAT3B0aW9uYWwoKUBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nLCBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChiYXNlUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoIHx8IGNvbmZpZ3VyYXRpb24uYmFzZVBhdGggfHwgdGhpcy5iYXNlUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb25zdW1lcyBzdHJpbmdbXSBtaW1lLXR5cGVzXG4gICAgICogQHJldHVybiB0cnVlOiBjb25zdW1lcyBjb250YWlucyAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlOiBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbkNvbnN1bWVGb3JtKGNvbnN1bWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtID0gJ211bHRpcGFydC9mb3JtLWRhdGEnO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnN1bWUgb2YgY29uc3VtZXMpIHtcbiAgICAgICAgICAgIGlmIChmb3JtID09PSBjb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogIEFwaSB0byBjcmVhdGUgQXBwIFNldHRpbmdzXG4gICAgICogXG4gICAgICogQHBhcmFtIGFwcFNldHRpbmdzIGFwcFNldHRpbmdzXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+O1xuICAgIHB1YmxpYyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4+O1xuICAgIHB1YmxpYyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVChhcHBTZXR0aW5nczogQXJyYXk8QXBwU2V0dGluZ3NEVE8+LCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+PjtcbiAgICBwdWJsaWMgY3JlYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QoYXBwU2V0dGluZ3M6IEFycmF5PEFwcFNldHRpbmdzRFRPPiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYXBwU2V0dGluZ3MgPT09IG51bGwgfHwgYXBwU2V0dGluZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgYXBwU2V0dGluZ3Mgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBjcmVhdGVBcHBTZXR0aW5nc1VzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2FwcHNldHRpbmdzYCxcbiAgICAgICAgICAgIGFwcFNldHRpbmdzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFwaSB0byBmZXRjaCBzYW1wbGUgZHluYW1pYyB2aWRlbyB0ZW1wbGF0ZXNcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGZldGNoQWxsRHluYW1pY1ZpZGVvVGVtcGxhdGVzVXNpbmdHRVQocmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdER5bmFtaWNWaWRlb1RlbXBsYXRlPjtcbiAgICBwdWJsaWMgZmV0Y2hBbGxEeW5hbWljVmlkZW9UZW1wbGF0ZXNVc2luZ0dFVChyZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3REeW5hbWljVmlkZW9UZW1wbGF0ZT4+O1xuICAgIHB1YmxpYyBmZXRjaEFsbER5bmFtaWNWaWRlb1RlbXBsYXRlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdExpc3REeW5hbWljVmlkZW9UZW1wbGF0ZT4+O1xuICAgIHB1YmxpYyBmZXRjaEFsbER5bmFtaWNWaWRlb1RlbXBsYXRlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cblxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0RHluYW1pY1ZpZGVvVGVtcGxhdGU+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hcHBzZXR0aW5ncy9keW5hbWljdmlkZW8vdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwaSB0byBmZXRjaCBkeW5hbWljIHZpZGVvIGNvbmZpZyBmb3IgZ2l2ZW4gYWR2ZXJ0aXNlcmlkXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkdmVydGlzZXJJZCBhZHZlcnRpc2VySWRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGZldGNoRHluYW1pY1ZpZGVvQ29uZmlnVXNpbmdHRVQoYWR2ZXJ0aXNlcklkPzogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyRHluYW1pY1ZpZGVvQ29uZmlnPjtcbiAgICBwdWJsaWMgZmV0Y2hEeW5hbWljVmlkZW9Db25maWdVc2luZ0dFVChhZHZlcnRpc2VySWQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZz4+O1xuICAgIHB1YmxpYyBmZXRjaER5bmFtaWNWaWRlb0NvbmZpZ1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNWaWRlb0NvbmZpZz4+O1xuICAgIHB1YmxpYyBmZXRjaER5bmFtaWNWaWRlb0NvbmZpZ1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChhZHZlcnRpc2VySWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VySWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2FkdmVydGlzZXJJZCcsIDxhbnk+YWR2ZXJ0aXNlcklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyRHluYW1pY1ZpZGVvQ29uZmlnPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXBwc2V0dGluZ3MvZHluYW1pY3ZpZGVvL2NvbmZpZ2AsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQXBpIHRvIGdldCBBcHAgU2V0dGluZ3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWR2ZXJ0aXNlcklkIGFkdmVydGlzZXJJZFxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHNldHRpbmdzS2V5cyBzZXR0aW5nc0tleXNcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBcHBTZXR0aW5nc1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHNldHRpbmdzS2V5cz86IEFycmF5PCdMT0dPX0xJTksnIHwgJ0ZBTExCQUNLX0lNR19MSU5LJyB8ICdPVkVSTEFZX0lNR19MSU5LJyB8ICdERUZBVUxUX0xPR08nIHwgJ0NSRUFUSVZFX05BTUVfRk9STUFUJyB8ICdDTElDS19TSUdOSU5HJyB8ICdTTEFDS19DSEFOTkVMX0lEJyB8ICdFTkFCTEVfQVVESVRfTE9HU19SRVBPUlQnIHwgJ0NSRUFUSVZFX0JPUkRFUl9UWVBFJz4sIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPPjtcbiAgICBwdWJsaWMgZ2V0QXBwU2V0dGluZ3NVc2luZ0dFVChhZHZlcnRpc2VySWQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzZXR0aW5nc0tleXM/OiBBcnJheTwnTE9HT19MSU5LJyB8ICdGQUxMQkFDS19JTUdfTElOSycgfCAnT1ZFUkxBWV9JTUdfTElOSycgfCAnREVGQVVMVF9MT0dPJyB8ICdDUkVBVElWRV9OQU1FX0ZPUk1BVCcgfCAnQ0xJQ0tfU0lHTklORycgfCAnU0xBQ0tfQ0hBTk5FTF9JRCcgfCAnRU5BQkxFX0FVRElUX0xPR1NfUkVQT1JUJyB8ICdDUkVBVElWRV9CT1JERVJfVFlQRSc+LCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPPj47XG4gICAgcHVibGljIGdldEFwcFNldHRpbmdzVXNpbmdHRVQoYWR2ZXJ0aXNlcklkPzogbnVtYmVyLCByZXFJZD86IHN0cmluZywgc2V0dGluZ3NLZXlzPzogQXJyYXk8J0xPR09fTElOSycgfCAnRkFMTEJBQ0tfSU1HX0xJTksnIHwgJ09WRVJMQVlfSU1HX0xJTksnIHwgJ0RFRkFVTFRfTE9HTycgfCAnQ1JFQVRJVkVfTkFNRV9GT1JNQVQnIHwgJ0NMSUNLX1NJR05JTkcnIHwgJ1NMQUNLX0NIQU5ORUxfSUQnIHwgJ0VOQUJMRV9BVURJVF9MT0dTX1JFUE9SVCcgfCAnQ1JFQVRJVkVfQk9SREVSX1RZUEUnPiwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QXBwU2V0dGluZ3NVc2luZ0dFVChhZHZlcnRpc2VySWQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzZXR0aW5nc0tleXM/OiBBcnJheTwnTE9HT19MSU5LJyB8ICdGQUxMQkFDS19JTUdfTElOSycgfCAnT1ZFUkxBWV9JTUdfTElOSycgfCAnREVGQVVMVF9MT0dPJyB8ICdDUkVBVElWRV9OQU1FX0ZPUk1BVCcgfCAnQ0xJQ0tfU0lHTklORycgfCAnU0xBQ0tfQ0hBTk5FTF9JRCcgfCAnRU5BQkxFX0FVRElUX0xPR1NfUkVQT1JUJyB8ICdDUkVBVElWRV9CT1JERVJfVFlQRSc+LCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cblxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChhZHZlcnRpc2VySWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VySWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2FkdmVydGlzZXJJZCcsIDxhbnk+YWR2ZXJ0aXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0dGluZ3NLZXlzKSB7XG4gICAgICAgICAgICBzZXR0aW5nc0tleXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5hcHBlbmQoJ3NldHRpbmdzS2V5cycsIDxhbnk+ZWxlbWVudCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2FwcHNldHRpbmdzYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBcGkgdG8gdXBkYXRlIEFwcCBTZXR0aW5nc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBhcHBTZXR0aW5ncyBhcHBTZXR0aW5nc1xuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QoYXBwU2V0dGluZ3M6IEFycmF5PEFwcFNldHRpbmdzRFRPPiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPPjtcbiAgICBwdWJsaWMgdXBkYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QoYXBwU2V0dGluZ3M6IEFycmF5PEFwcFNldHRpbmdzRFRPPiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+PjtcbiAgICBwdWJsaWMgdXBkYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QoYXBwU2V0dGluZ3M6IEFycmF5PEFwcFNldHRpbmdzRFRPPiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPPj47XG4gICAgcHVibGljIHVwZGF0ZUFwcFNldHRpbmdzVXNpbmdQT1NUKGFwcFNldHRpbmdzOiBBcnJheTxBcHBTZXR0aW5nc0RUTz4sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGFwcFNldHRpbmdzID09PSBudWxsIHx8IGFwcFNldHRpbmdzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGFwcFNldHRpbmdzIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlQXBwU2V0dGluZ3NVc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXBwU2V0dGluZ3NEVE8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hcHBzZXR0aW5ncy91cGRhdGVgLFxuICAgICAgICAgICAgYXBwU2V0dGluZ3MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQXBpIHRvIHVwc2VydCBkeW5hbWljIHZpZGVvXG4gICAgICogXG4gICAgICogQHBhcmFtIGR5bmFtaWNWaWRlb0RUTyBkeW5hbWljVmlkZW9EVE9cbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIHVwc2VydER5bmFtaWNWaWRlb1VzaW5nUE9TVChkeW5hbWljVmlkZW9EVE86IER5bmFtaWNWaWRlb0RUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0UmVzcG9uc2VNZXNzYWdlPjtcbiAgICBwdWJsaWMgdXBzZXJ0RHluYW1pY1ZpZGVvVXNpbmdQT1NUKGR5bmFtaWNWaWRlb0RUTzogRHluYW1pY1ZpZGVvRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdFJlc3BvbnNlTWVzc2FnZT4+O1xuICAgIHB1YmxpYyB1cHNlcnREeW5hbWljVmlkZW9Vc2luZ1BPU1QoZHluYW1pY1ZpZGVvRFRPOiBEeW5hbWljVmlkZW9EVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdFJlc3BvbnNlTWVzc2FnZT4+O1xuICAgIHB1YmxpYyB1cHNlcnREeW5hbWljVmlkZW9Vc2luZ1BPU1QoZHluYW1pY1ZpZGVvRFRPOiBEeW5hbWljVmlkZW9EVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGR5bmFtaWNWaWRlb0RUTyA9PT0gbnVsbCB8fCBkeW5hbWljVmlkZW9EVE8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZHluYW1pY1ZpZGVvRFRPIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBzZXJ0RHluYW1pY1ZpZGVvVXNpbmdQT1NULicpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3BvbnNlT2JqZWN0UmVzcG9uc2VNZXNzYWdlPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXBwc2V0dGluZ3MvZHluYW1pY3ZpZGVvL3Vwc2VydGAsXG4gICAgICAgICAgICBkeW5hbWljVmlkZW9EVE8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbn1cbiJdfQ==
|