@rudderstack/integrations-lib 0.2.25 → 0.2.30
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/build/sdks/googleAdsRestAPI/googleAds.d.ts +2 -2
- package/build/sdks/googleAdsRestAPI/googleAds.d.ts.map +1 -1
- package/build/sdks/googleAdsRestAPI/googleAds.js +1 -5
- package/build/sdks/googleAdsRestAPI/googleAds.test.js +17 -3
- package/build/sdks/sfmc/index.d.ts.map +1 -1
- package/build/sdks/sfmc/index.js +20 -9
- package/build/sdks/sfmc/index.test.js +3 -3
- package/build/sdks/sfmc/type.d.ts +11 -7
- package/build/sdks/sfmc/type.d.ts.map +1 -1
- package/build/sdks/sfmc/type.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiResponse } from '../../network/clients/types';
|
|
2
|
-
import { AuthObject, CallConversionData, CallConversionResponse, ClickConversionData, ClickConversionResponse, ConversionActionResponse, ConversionAdjustmentData, ConversionAdjustmentResponse, CreateOfflineUserDataJobData, CustomVariableResults, OfflineUserDataJobAddData, OfflineUserDataJobAddDataResponse, RunOfflineUserDataJobResponse, SearchStreamResponse } from './types';
|
|
2
|
+
import { AuthObject, CallConversionData, CallConversionResponse, ClickConversionData, ClickConversionResponse, ConversionActionResponse, ConversionAdjustmentData, ConversionAdjustmentResponse, CreateOfflineUserDataJobData, CreateOfflineUserDataJobRespose, CustomVariableResults, OfflineUserDataJobAddData, OfflineUserDataJobAddDataResponse, RunOfflineUserDataJobResponse, SearchStreamResponse } from './types';
|
|
3
3
|
export default class GoogleAds {
|
|
4
4
|
private authObject;
|
|
5
5
|
private httpClient;
|
|
@@ -9,7 +9,7 @@ export default class GoogleAds {
|
|
|
9
9
|
getConversionActionId(conversionName: string): Promise<string | ApiResponse<SearchStreamResponse<ConversionActionResponse>>>;
|
|
10
10
|
getCustomVariable(): Promise<CustomVariableResults[] | ApiResponse<SearchStreamResponse<CustomVariableResults>>>;
|
|
11
11
|
addConversionAdjustMent(conversionAdjustMentData: ConversionAdjustmentData): Promise<ApiResponse<ConversionAdjustmentResponse>>;
|
|
12
|
-
createOfflineUserDataJob(data: CreateOfflineUserDataJobData): Promise<
|
|
12
|
+
createOfflineUserDataJob(data: CreateOfflineUserDataJobData): Promise<ApiResponse<CreateOfflineUserDataJobRespose>>;
|
|
13
13
|
addUserToOfflineUserDataJob(jobId: string, offlineUserData: OfflineUserDataJobAddData): Promise<ApiResponse<OfflineUserDataJobAddDataResponse>>;
|
|
14
14
|
addConversionsToOfflineUserDataJob(jobId: string, offlineUserData: OfflineUserDataJobAddData): Promise<ApiResponse<OfflineUserDataJobAddDataResponse>>;
|
|
15
15
|
runOfflineUserDataJob(jobId: string): Promise<ApiResponse<RunOfflineUserDataJobResponse>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleAds.d.ts","sourceRoot":"","sources":["../../../src/sdks/googleAdsRestAPI/googleAds.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA6B,MAAM,6BAA6B,CAAC;AAGrF,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,
|
|
1
|
+
{"version":3,"file":"googleAds.d.ts","sourceRoot":"","sources":["../../../src/sdks/googleAdsRestAPI/googleAds.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA6B,MAAM,6BAA6B,CAAC;AAGrF,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,iCAAiC,EACjC,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU;IAOlC,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,kBAAkB;IAIb,qBAAqB,CAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAsBnE,iBAAiB,IAAI,OAAO,CACvC,qBAAqB,EAAE,GAAG,WAAW,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CACnF;IAkBY,uBAAuB,CAClC,wBAAwB,EAAE,wBAAwB,GACjD,OAAO,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IASxC,wBAAwB,CACnC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAS3C,2BAA2B,CACtC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,yBAAyB;IAS/B,kCAAkC,CAC7C,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,yBAAyB;IAS/B,qBAAqB,CAChC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IASzC,qBAAqB,CAChC,yBAAyB,EAAE,mBAAmB,GAC7C,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IASnC,oBAAoB,CAC/B,wBAAwB,EAAE,kBAAkB,GAC3C,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;CAQhD"}
|
|
@@ -88,10 +88,6 @@ class GoogleAds {
|
|
|
88
88
|
}
|
|
89
89
|
async createOfflineUserDataJob(data) {
|
|
90
90
|
const conversionAdjustMentResponse = await this.executePostRequest(`/${this.authObject.customerId}/offlineUserDataJobs:create`, data);
|
|
91
|
-
if (conversionAdjustMentResponse.type === 'success') {
|
|
92
|
-
const jobId = conversionAdjustMentResponse.responseBody.resourceName.split('/')[3];
|
|
93
|
-
return jobId;
|
|
94
|
-
}
|
|
95
91
|
return conversionAdjustMentResponse;
|
|
96
92
|
}
|
|
97
93
|
async addUserToOfflineUserDataJob(jobId, offlineUserData) {
|
|
@@ -116,4 +112,4 @@ class GoogleAds {
|
|
|
116
112
|
}
|
|
117
113
|
}
|
|
118
114
|
exports.default = GoogleAds;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlQWRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Nka3MvZ29vZ2xlQWRzUmVzdEFQSS9nb29nbGVBZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBNkI7QUFDN0IscURBQXVDO0FBRXZDLG1EQUF1RTtBQUN2RSxxQ0FBdUM7QUFtQnZDLE1BQXFCLFNBQVM7SUFLNUIsWUFBWSxVQUFzQjtRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLDJCQUFpQixDQUFDLGFBQWEsQ0FBQyxxQkFBVyxDQUFDLEtBQUssRUFBRTtZQUNuRSxPQUFPLEVBQUUsb0NBQW9DLG9CQUFXLFlBQVk7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUN0RCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQ2pELG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZTtvQkFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZTtvQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTthQUMvQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUksR0FBVyxFQUFFLElBQVk7UUFDckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLGNBQXNCO1FBRXRCLE1BQU0sV0FBVyxHQUFHLFNBQVMs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QUssQ0FBQyxxQkFBcUIsQ0FDaEMsS0FBYTtRQUViLE1BQU0sNEJBQTRCLEdBQ2hDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSx3QkFBd0IsS0FBSyxNQUFNLEVBQ2pFLEVBQUUsQ0FDSCxDQUFDO1FBQ0osT0FBTyw0QkFBNEIsQ0FBQztJQUN0QyxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUNoQyx5QkFBOEM7UUFFOUMsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDakUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUseUJBQXlCLEVBQ3ZELHlCQUF5QixDQUMxQixDQUFDO1FBRUYsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUMvQix3QkFBNEM7UUFFNUMsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDaEUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsd0JBQXdCLEVBQ3RELHdCQUF3QixDQUN6QixDQUFDO1FBRUYsT0FBTyw0QkFBNEIsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUF4SkQsNEJBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFNxbFN0cmluZyBmcm9tICdzcWxzdHJpbmcnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UsIEh0dHBDbGllbnQsIFJlcXVlc3RDb25maWcgfSBmcm9tICcuLi8uLi9uZXR3b3JrL2NsaWVudHMvdHlwZXMnO1xuaW1wb3J0IHsgQ2xpZW50TmFtZXMsIEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi4vLi4vbmV0d29yay9mYWN0b3J5JztcbmltcG9ydCB7IEFQSV9WRVJTSU9OIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQXV0aE9iamVjdCxcbiAgQ2FsbENvbnZlcnNpb25EYXRhLFxuICBDYWxsQ29udmVyc2lvblJlc3BvbnNlLFxuICBDbGlja0NvbnZlcnNpb25EYXRhLFxuICBDbGlja0NvbnZlcnNpb25SZXNwb25zZSxcbiAgQ29udmVyc2lvbkFjdGlvblJlc3BvbnNlLFxuICBDb252ZXJzaW9uQWRqdXN0bWVudERhdGEsXG4gIENvbnZlcnNpb25BZGp1c3RtZW50UmVzcG9uc2UsXG4gIENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYkRhdGEsXG4gIENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYlJlc3Bvc2UsXG4gIEN1c3RvbVZhcmlhYmxlUmVzdWx0cyxcbiAgT2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YSxcbiAgT2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YVJlc3BvbnNlLFxuICBSdW5PZmZsaW5lVXNlckRhdGFKb2JSZXNwb25zZSxcbiAgU2VhcmNoU3RyZWFtUmVzcG9uc2UsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHb29nbGVBZHMge1xuICBwcml2YXRlIGF1dGhPYmplY3Q6IEF1dGhPYmplY3Q7XG5cbiAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGF1dGhPYmplY3Q6IEF1dGhPYmplY3QpIHtcbiAgICB0aGlzLmF1dGhPYmplY3QgPSBhdXRoT2JqZWN0O1xuICAgIHRoaXMuaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoQ2xpZW50TmFtZXMuQXhpb3MsIHtcbiAgICAgIGJhc2VVUkw6IGBodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS8ke0FQSV9WRVJTSU9OfS9jdXN0b21lcnNgLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXIoKTogUmVxdWVzdENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXV0aE9iamVjdC5hY2Nlc3NUb2tlbn1gLFxuICAgICAgICAnZGV2ZWxvcGVyLXRva2VuJzogdGhpcy5hdXRoT2JqZWN0LmRldmVsb3BlclRva2VuLFxuICAgICAgICAnbG9naW4tY3VzdG9tZXItaWQnOiB0aGlzLmF1dGhPYmplY3QubG9naW5DdXN0b21lcklkXG4gICAgICAgICAgPyB0aGlzLmF1dGhPYmplY3QubG9naW5DdXN0b21lcklkXG4gICAgICAgICAgOiB0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVBvc3RSZXF1ZXN0PFQ+KHVybDogc3RyaW5nLCBkYXRhOiBvYmplY3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgZGF0YSwgdGhpcy5nZXRIZWFkZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVyc2lvbkFjdGlvbklkKFxuICAgIGNvbnZlcnNpb25OYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgQXBpUmVzcG9uc2U8U2VhcmNoU3RyZWFtUmVzcG9uc2U8Q29udmVyc2lvbkFjdGlvblJlc3BvbnNlPj4+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IFNxbFN0cmluZy5mb3JtYXQoXG4gICAgICAnU0VMRUNUIGNvbnZlcnNpb25fYWN0aW9uLmlkIEZST00gY29udmVyc2lvbl9hY3Rpb24gV0hFUkUgY29udmVyc2lvbl9hY3Rpb24ubmFtZSA9ID8nLFxuICAgICAgY29udmVyc2lvbk5hbWUsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhOiB7IHF1ZXJ5OiBzdHJpbmcgfSA9IHtcbiAgICAgIHF1ZXJ5OiBxdWVyeVN0cmluZyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VhcmNoU3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxcbiAgICAgIFNlYXJjaFN0cmVhbVJlc3BvbnNlPENvbnZlcnNpb25BY3Rpb25SZXNwb25zZT5cbiAgICA+KGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH0vZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbWAsIGRhdGEpO1xuICAgIGlmIChzZWFyY2hTdHJlYW1SZXNwb25zZS50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnNpb25BY3Rpb24gPSBnZXQoXG4gICAgICAgIHNlYXJjaFN0cmVhbVJlc3BvbnNlLnJlc3BvbnNlQm9keVswXSxcbiAgICAgICAgJ3Jlc3VsdHMuMC5jb252ZXJzaW9uQWN0aW9uLnJlc291cmNlTmFtZScsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNvbnZlcnNpb25BY3Rpb24gPz8gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaFN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbVZhcmlhYmxlKCk6IFByb21pc2U8XG4gICAgQ3VzdG9tVmFyaWFibGVSZXN1bHRzW10gfCBBcGlSZXNwb25zZTxTZWFyY2hTdHJlYW1SZXNwb25zZTxDdXN0b21WYXJpYWJsZVJlc3VsdHM+PlxuICA+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IFNxbFN0cmluZy5mb3JtYXQoXG4gICAgICAnU0VMRUNUIGNvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlLm5hbWUgRlJPTSBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZScsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhOiB7IHF1ZXJ5OiBzdHJpbmcgfSA9IHtcbiAgICAgIHF1ZXJ5OiBxdWVyeVN0cmluZyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VhcmNoU3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxcbiAgICAgIFNlYXJjaFN0cmVhbVJlc3BvbnNlPEN1c3RvbVZhcmlhYmxlUmVzdWx0cz5cbiAgICA+KGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH0vZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbWAsIGRhdGEpO1xuICAgIGlmIChzZWFyY2hTdHJlYW1SZXNwb25zZS50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIGNvbnN0IGN1c3RvbVZhcmlhYmxlcyA9IGdldChzZWFyY2hTdHJlYW1SZXNwb25zZS5yZXNwb25zZUJvZHlbMF0sICdyZXN1bHRzJyk7XG4gICAgICByZXR1cm4gY3VzdG9tVmFyaWFibGVzO1xuICAgIH1cbiAgICByZXR1cm4gc2VhcmNoU3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQ29udmVyc2lvbkFkanVzdE1lbnQoXG4gICAgY29udmVyc2lvbkFkanVzdE1lbnREYXRhOiBDb252ZXJzaW9uQWRqdXN0bWVudERhdGEsXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q29udmVyc2lvbkFkanVzdG1lbnRSZXNwb25zZT4+IHtcbiAgICBjb25zdCBjb252ZXJzaW9uQWRqdXN0TWVudFJlc3BvbnNlID1cbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PENvbnZlcnNpb25BZGp1c3RtZW50UmVzcG9uc2U+KFxuICAgICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9OnVwbG9hZENvbnZlcnNpb25BZGp1c3RtZW50c2AsXG4gICAgICAgIGNvbnZlcnNpb25BZGp1c3RNZW50RGF0YSxcbiAgICAgICk7XG4gICAgcmV0dXJuIGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlT2ZmbGluZVVzZXJEYXRhSm9iKFxuICAgIGRhdGE6IENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYkRhdGEsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgQXBpUmVzcG9uc2U8Q3JlYXRlT2ZmbGluZVVzZXJEYXRhSm9iRGF0YT4+IHtcbiAgICBjb25zdCBjb252ZXJzaW9uQWRqdXN0TWVudFJlc3BvbnNlID1cbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYlJlc3Bvc2U+KFxuICAgICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9L29mZmxpbmVVc2VyRGF0YUpvYnM6Y3JlYXRlYCxcbiAgICAgICAgZGF0YSxcbiAgICAgICk7XG4gICAgaWYgKGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2UudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICBjb25zdCBqb2JJZCA9IGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2UucmVzcG9uc2VCb2R5LnJlc291cmNlTmFtZS5zcGxpdCgnLycpWzNdO1xuICAgICAgcmV0dXJuIGpvYklkO1xuICAgIH1cbiAgICByZXR1cm4gY29udmVyc2lvbkFkanVzdE1lbnRSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRVc2VyVG9PZmZsaW5lVXNlckRhdGFKb2IoXG4gICAgam9iSWQ6IHN0cmluZyxcbiAgICBvZmZsaW5lVXNlckRhdGE6IE9mZmxpbmVVc2VyRGF0YUpvYkFkZERhdGEsXG4gICkge1xuICAgIGNvbnN0IGFkZFVzZXJUb0pvYlJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlUG9zdFJlcXVlc3Q8T2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YVJlc3BvbnNlPihcbiAgICAgIGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH0vb2ZmbGluZVVzZXJEYXRhSm9icy8ke2pvYklkfTphZGRPcGVyYXRpb25zYCxcbiAgICAgIG9mZmxpbmVVc2VyRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBhZGRVc2VyVG9Kb2JSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRDb252ZXJzaW9uc1RvT2ZmbGluZVVzZXJEYXRhSm9iKFxuICAgIGpvYklkOiBzdHJpbmcsXG4gICAgb2ZmbGluZVVzZXJEYXRhOiBPZmZsaW5lVXNlckRhdGFKb2JBZGREYXRhLFxuICApIHtcbiAgICBjb25zdCBhZGRVc2VyVG9Kb2JSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PE9mZmxpbmVVc2VyRGF0YUpvYkFkZERhdGFSZXNwb25zZT4oXG4gICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9L29mZmxpbmVVc2VyRGF0YUpvYnMvJHtqb2JJZH06YWRkT3BlcmF0aW9uc2AsXG4gICAgICBvZmZsaW5lVXNlckRhdGEsXG4gICAgKTtcbiAgICByZXR1cm4gYWRkVXNlclRvSm9iUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcnVuT2ZmbGluZVVzZXJEYXRhSm9iKFxuICAgIGpvYklkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8UnVuT2ZmbGluZVVzZXJEYXRhSm9iUmVzcG9uc2U+PiB7XG4gICAgY29uc3QgY29udmVyc2lvbkFkanVzdE1lbnRSZXNwb25zZSA9XG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxSdW5PZmZsaW5lVXNlckRhdGFKb2JSZXNwb25zZT4oXG4gICAgICAgIGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH0vb2ZmbGluZVVzZXJEYXRhSm9icy8ke2pvYklkfTpydW5gLFxuICAgICAgICB7fSxcbiAgICAgICk7XG4gICAgcmV0dXJuIGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBsb2FkQ2xpY2tDb252ZXJzaW9uKFxuICAgIHVwbG9hZENsaWNrQ29udmVyc2lvbkRhdGE6IENsaWNrQ29udmVyc2lvbkRhdGEsXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2xpY2tDb252ZXJzaW9uUmVzcG9uc2U+PiB7XG4gICAgY29uc3QgdXBsb2FkQ2xpY2tDb252ZXJzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxDbGlja0NvbnZlcnNpb25SZXNwb25zZT4oXG4gICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9OnVwbG9hZENsaWNrQ29udmVyc2lvbnNgLFxuICAgICAgdXBsb2FkQ2xpY2tDb252ZXJzaW9uRGF0YSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHVwbG9hZENsaWNrQ29udmVyc2lvblJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwbG9hZENhbGxDb252ZXJzaW9uKFxuICAgIHVwbG9hZENhbGxDb252ZXJzaW9uRGF0YTogQ2FsbENvbnZlcnNpb25EYXRhLFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPENhbGxDb252ZXJzaW9uUmVzcG9uc2U+PiB7XG4gICAgY29uc3QgdXBsb2FkQ2FsbENvbnZlcnNpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PENhbGxDb252ZXJzaW9uUmVzcG9uc2U+KFxuICAgICAgYC8ke3RoaXMuYXV0aE9iamVjdC5jdXN0b21lcklkfTp1cGxvYWRDYWxsQ29udmVyc2lvbnNgLFxuICAgICAgdXBsb2FkQ2FsbENvbnZlcnNpb25EYXRhLFxuICAgICk7XG5cbiAgICByZXR1cm4gdXBsb2FkQ2FsbENvbnZlcnNpb25SZXNwb25zZTtcbiAgfVxufVxuIl19
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlQWRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Nka3MvZ29vZ2xlQWRzUmVzdEFQSS9nb29nbGVBZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBNkI7QUFDN0IscURBQXVDO0FBRXZDLG1EQUF1RTtBQUN2RSxxQ0FBdUM7QUFtQnZDLE1BQXFCLFNBQVM7SUFLNUIsWUFBWSxVQUFzQjtRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLDJCQUFpQixDQUFDLGFBQWEsQ0FBQyxxQkFBVyxDQUFDLEtBQUssRUFBRTtZQUNuRSxPQUFPLEVBQUUsb0NBQW9DLG9CQUFXLFlBQVk7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUN0RCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQ2pELG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZTtvQkFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZTtvQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTthQUMvQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUksR0FBVyxFQUFFLElBQVk7UUFDckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLGNBQXNCO1FBRXRCLE1BQU0sV0FBVyxHQUFHLFNBQVMs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QyxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUNoQyx5QkFBOEM7UUFFOUMsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDakUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUseUJBQXlCLEVBQ3ZELHlCQUF5QixDQUMxQixDQUFDO1FBRUYsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUMvQix3QkFBNEM7UUFFNUMsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDaEUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsd0JBQXdCLEVBQ3RELHdCQUF3QixDQUN6QixDQUFDO1FBRUYsT0FBTyw0QkFBNEIsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFwSkQsNEJBb0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFNxbFN0cmluZyBmcm9tICdzcWxzdHJpbmcnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UsIEh0dHBDbGllbnQsIFJlcXVlc3RDb25maWcgfSBmcm9tICcuLi8uLi9uZXR3b3JrL2NsaWVudHMvdHlwZXMnO1xuaW1wb3J0IHsgQ2xpZW50TmFtZXMsIEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi4vLi4vbmV0d29yay9mYWN0b3J5JztcbmltcG9ydCB7IEFQSV9WRVJTSU9OIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQXV0aE9iamVjdCxcbiAgQ2FsbENvbnZlcnNpb25EYXRhLFxuICBDYWxsQ29udmVyc2lvblJlc3BvbnNlLFxuICBDbGlja0NvbnZlcnNpb25EYXRhLFxuICBDbGlja0NvbnZlcnNpb25SZXNwb25zZSxcbiAgQ29udmVyc2lvbkFjdGlvblJlc3BvbnNlLFxuICBDb252ZXJzaW9uQWRqdXN0bWVudERhdGEsXG4gIENvbnZlcnNpb25BZGp1c3RtZW50UmVzcG9uc2UsXG4gIENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYkRhdGEsXG4gIENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYlJlc3Bvc2UsXG4gIEN1c3RvbVZhcmlhYmxlUmVzdWx0cyxcbiAgT2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YSxcbiAgT2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YVJlc3BvbnNlLFxuICBSdW5PZmZsaW5lVXNlckRhdGFKb2JSZXNwb25zZSxcbiAgU2VhcmNoU3RyZWFtUmVzcG9uc2UsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHb29nbGVBZHMge1xuICBwcml2YXRlIGF1dGhPYmplY3Q6IEF1dGhPYmplY3Q7XG5cbiAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGF1dGhPYmplY3Q6IEF1dGhPYmplY3QpIHtcbiAgICB0aGlzLmF1dGhPYmplY3QgPSBhdXRoT2JqZWN0O1xuICAgIHRoaXMuaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoQ2xpZW50TmFtZXMuQXhpb3MsIHtcbiAgICAgIGJhc2VVUkw6IGBodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS8ke0FQSV9WRVJTSU9OfS9jdXN0b21lcnNgLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXIoKTogUmVxdWVzdENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXV0aE9iamVjdC5hY2Nlc3NUb2tlbn1gLFxuICAgICAgICAnZGV2ZWxvcGVyLXRva2VuJzogdGhpcy5hdXRoT2JqZWN0LmRldmVsb3BlclRva2VuLFxuICAgICAgICAnbG9naW4tY3VzdG9tZXItaWQnOiB0aGlzLmF1dGhPYmplY3QubG9naW5DdXN0b21lcklkXG4gICAgICAgICAgPyB0aGlzLmF1dGhPYmplY3QubG9naW5DdXN0b21lcklkXG4gICAgICAgICAgOiB0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVBvc3RSZXF1ZXN0PFQ+KHVybDogc3RyaW5nLCBkYXRhOiBvYmplY3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgZGF0YSwgdGhpcy5nZXRIZWFkZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVyc2lvbkFjdGlvbklkKFxuICAgIGNvbnZlcnNpb25OYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgQXBpUmVzcG9uc2U8U2VhcmNoU3RyZWFtUmVzcG9uc2U8Q29udmVyc2lvbkFjdGlvblJlc3BvbnNlPj4+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IFNxbFN0cmluZy5mb3JtYXQoXG4gICAgICAnU0VMRUNUIGNvbnZlcnNpb25fYWN0aW9uLmlkIEZST00gY29udmVyc2lvbl9hY3Rpb24gV0hFUkUgY29udmVyc2lvbl9hY3Rpb24ubmFtZSA9ID8nLFxuICAgICAgY29udmVyc2lvbk5hbWUsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhOiB7IHF1ZXJ5OiBzdHJpbmcgfSA9IHtcbiAgICAgIHF1ZXJ5OiBxdWVyeVN0cmluZyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VhcmNoU3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxcbiAgICAgIFNlYXJjaFN0cmVhbVJlc3BvbnNlPENvbnZlcnNpb25BY3Rpb25SZXNwb25zZT5cbiAgICA+KGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH0vZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbWAsIGRhdGEpO1xuICAgIGlmIChzZWFyY2hTdHJlYW1SZXNwb25zZS50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnNpb25BY3Rpb24gPSBnZXQoXG4gICAgICAgIHNlYXJjaFN0cmVhbVJlc3BvbnNlLnJlc3BvbnNlQm9keVswXSxcbiAgICAgICAgJ3Jlc3VsdHMuMC5jb252ZXJzaW9uQWN0aW9uLnJlc291cmNlTmFtZScsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNvbnZlcnNpb25BY3Rpb24gPz8gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaFN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbVZhcmlhYmxlKCk6IFByb21pc2U8XG4gICAgQ3VzdG9tVmFyaWFibGVSZXN1bHRzW10gfCBBcGlSZXNwb25zZTxTZWFyY2hTdHJlYW1SZXNwb25zZTxDdXN0b21WYXJpYWJsZVJlc3VsdHM+PlxuICA+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IFNxbFN0cmluZy5mb3JtYXQoXG4gICAgICAnU0VMRUNUIGNvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlLm5hbWUgRlJPTSBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZScsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhOiB7IHF1ZXJ5OiBzdHJpbmcgfSA9IHtcbiAgICAgIHF1ZXJ5OiBxdWVyeVN0cmluZyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VhcmNoU3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxcbiAgICAgIFNlYXJjaFN0cmVhbVJlc3BvbnNlPEN1c3RvbVZhcmlhYmxlUmVzdWx0cz5cbiAgICA+KGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH0vZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbWAsIGRhdGEpO1xuICAgIGlmIChzZWFyY2hTdHJlYW1SZXNwb25zZS50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgIGNvbnN0IGN1c3RvbVZhcmlhYmxlcyA9IGdldChzZWFyY2hTdHJlYW1SZXNwb25zZS5yZXNwb25zZUJvZHlbMF0sICdyZXN1bHRzJyk7XG4gICAgICByZXR1cm4gY3VzdG9tVmFyaWFibGVzO1xuICAgIH1cbiAgICByZXR1cm4gc2VhcmNoU3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQ29udmVyc2lvbkFkanVzdE1lbnQoXG4gICAgY29udmVyc2lvbkFkanVzdE1lbnREYXRhOiBDb252ZXJzaW9uQWRqdXN0bWVudERhdGEsXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q29udmVyc2lvbkFkanVzdG1lbnRSZXNwb25zZT4+IHtcbiAgICBjb25zdCBjb252ZXJzaW9uQWRqdXN0TWVudFJlc3BvbnNlID1cbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PENvbnZlcnNpb25BZGp1c3RtZW50UmVzcG9uc2U+KFxuICAgICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9OnVwbG9hZENvbnZlcnNpb25BZGp1c3RtZW50c2AsXG4gICAgICAgIGNvbnZlcnNpb25BZGp1c3RNZW50RGF0YSxcbiAgICAgICk7XG4gICAgcmV0dXJuIGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlT2ZmbGluZVVzZXJEYXRhSm9iKFxuICAgIGRhdGE6IENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYkRhdGEsXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q3JlYXRlT2ZmbGluZVVzZXJEYXRhSm9iUmVzcG9zZT4+IHtcbiAgICBjb25zdCBjb252ZXJzaW9uQWRqdXN0TWVudFJlc3BvbnNlID1cbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYlJlc3Bvc2U+KFxuICAgICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9L29mZmxpbmVVc2VyRGF0YUpvYnM6Y3JlYXRlYCxcbiAgICAgICAgZGF0YSxcbiAgICAgICk7XG4gICAgcmV0dXJuIGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVXNlclRvT2ZmbGluZVVzZXJEYXRhSm9iKFxuICAgIGpvYklkOiBzdHJpbmcsXG4gICAgb2ZmbGluZVVzZXJEYXRhOiBPZmZsaW5lVXNlckRhdGFKb2JBZGREYXRhLFxuICApIHtcbiAgICBjb25zdCBhZGRVc2VyVG9Kb2JSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3RSZXF1ZXN0PE9mZmxpbmVVc2VyRGF0YUpvYkFkZERhdGFSZXNwb25zZT4oXG4gICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9L29mZmxpbmVVc2VyRGF0YUpvYnMvJHtqb2JJZH06YWRkT3BlcmF0aW9uc2AsXG4gICAgICBvZmZsaW5lVXNlckRhdGEsXG4gICAgKTtcbiAgICByZXR1cm4gYWRkVXNlclRvSm9iUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQ29udmVyc2lvbnNUb09mZmxpbmVVc2VyRGF0YUpvYihcbiAgICBqb2JJZDogc3RyaW5nLFxuICAgIG9mZmxpbmVVc2VyRGF0YTogT2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YSxcbiAgKSB7XG4gICAgY29uc3QgYWRkVXNlclRvSm9iUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxPZmZsaW5lVXNlckRhdGFKb2JBZGREYXRhUmVzcG9uc2U+KFxuICAgICAgYC8ke3RoaXMuYXV0aE9iamVjdC5jdXN0b21lcklkfS9vZmZsaW5lVXNlckRhdGFKb2JzLyR7am9iSWR9OmFkZE9wZXJhdGlvbnNgLFxuICAgICAgb2ZmbGluZVVzZXJEYXRhLFxuICAgICk7XG4gICAgcmV0dXJuIGFkZFVzZXJUb0pvYlJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJ1bk9mZmxpbmVVc2VyRGF0YUpvYihcbiAgICBqb2JJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFJ1bk9mZmxpbmVVc2VyRGF0YUpvYlJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IGNvbnZlcnNpb25BZGp1c3RNZW50UmVzcG9uc2UgPVxuICAgICAgYXdhaXQgdGhpcy5leGVjdXRlUG9zdFJlcXVlc3Q8UnVuT2ZmbGluZVVzZXJEYXRhSm9iUmVzcG9uc2U+KFxuICAgICAgICBgLyR7dGhpcy5hdXRoT2JqZWN0LmN1c3RvbWVySWR9L29mZmxpbmVVc2VyRGF0YUpvYnMvJHtqb2JJZH06cnVuYCxcbiAgICAgICAge30sXG4gICAgICApO1xuICAgIHJldHVybiBjb252ZXJzaW9uQWRqdXN0TWVudFJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwbG9hZENsaWNrQ29udmVyc2lvbihcbiAgICB1cGxvYWRDbGlja0NvbnZlcnNpb25EYXRhOiBDbGlja0NvbnZlcnNpb25EYXRhLFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPENsaWNrQ29udmVyc2lvblJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHVwbG9hZENsaWNrQ29udmVyc2lvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlUG9zdFJlcXVlc3Q8Q2xpY2tDb252ZXJzaW9uUmVzcG9uc2U+KFxuICAgICAgYC8ke3RoaXMuYXV0aE9iamVjdC5jdXN0b21lcklkfTp1cGxvYWRDbGlja0NvbnZlcnNpb25zYCxcbiAgICAgIHVwbG9hZENsaWNrQ29udmVyc2lvbkRhdGEsXG4gICAgKTtcblxuICAgIHJldHVybiB1cGxvYWRDbGlja0NvbnZlcnNpb25SZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRDYWxsQ29udmVyc2lvbihcbiAgICB1cGxvYWRDYWxsQ29udmVyc2lvbkRhdGE6IENhbGxDb252ZXJzaW9uRGF0YSxcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxDYWxsQ29udmVyc2lvblJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHVwbG9hZENhbGxDb252ZXJzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0UmVxdWVzdDxDYWxsQ29udmVyc2lvblJlc3BvbnNlPihcbiAgICAgIGAvJHt0aGlzLmF1dGhPYmplY3QuY3VzdG9tZXJJZH06dXBsb2FkQ2FsbENvbnZlcnNpb25zYCxcbiAgICAgIHVwbG9hZENhbGxDb252ZXJzaW9uRGF0YSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHVwbG9hZENhbGxDb252ZXJzaW9uUmVzcG9uc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -450,7 +450,14 @@ describe('Google ads SDK', () => {
|
|
|
450
450
|
mockResponse: {
|
|
451
451
|
resourceName: 'customers/123456789/offlineUserDataJobs/5678',
|
|
452
452
|
},
|
|
453
|
-
expectedResult:
|
|
453
|
+
expectedResult: {
|
|
454
|
+
headers: new axios_1.AxiosHeaders({ 'Content-Type': 'application/json' }),
|
|
455
|
+
responseBody: {
|
|
456
|
+
resourceName: 'customers/123456789/offlineUserDataJobs/5678',
|
|
457
|
+
},
|
|
458
|
+
statusCode: 200,
|
|
459
|
+
type: 'success',
|
|
460
|
+
},
|
|
454
461
|
mockResponseHeader: new axios_1.AxiosHeaders({ 'Content-Type': 'application/json' }),
|
|
455
462
|
},
|
|
456
463
|
{
|
|
@@ -474,7 +481,14 @@ describe('Google ads SDK', () => {
|
|
|
474
481
|
mockResponse: {
|
|
475
482
|
resourceName: 'customers/123456789/offlineUserDataJobs/5678',
|
|
476
483
|
},
|
|
477
|
-
expectedResult:
|
|
484
|
+
expectedResult: {
|
|
485
|
+
headers: new axios_1.AxiosHeaders({ 'Content-Type': 'application/json' }),
|
|
486
|
+
responseBody: {
|
|
487
|
+
resourceName: 'customers/123456789/offlineUserDataJobs/5678',
|
|
488
|
+
},
|
|
489
|
+
statusCode: 200,
|
|
490
|
+
type: 'success',
|
|
491
|
+
},
|
|
478
492
|
mockResponseHeader: new axios_1.AxiosHeaders({ 'Content-Type': 'application/json' }),
|
|
479
493
|
},
|
|
480
494
|
];
|
|
@@ -754,4 +768,4 @@ describe('Google ads SDK', () => {
|
|
|
754
768
|
});
|
|
755
769
|
});
|
|
756
770
|
});
|
|
757
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlQWRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9nb29nbGVBZHNSZXN0QVBJL2dvb2dsZUFkcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEVBQWtEO0FBQ2xELCtDQUE0QztBQUM1Qyw0REFBb0M7QUFFcEMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFJLElBQXNCLENBQUM7SUFFM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxNQUFNLFNBQVMsR0FBRztZQUNoQjtnQkFDRSxJQUFJLEVBQUUsc0VBQXNFO2dCQUM1RSxVQUFVLEVBQUU7b0JBQ1YsV0FBVyxFQUFFLG1CQUFtQjtvQkFDaEMsVUFBVSxFQUFFLFdBQVc7b0JBQ3ZCLGNBQWMsRUFBRSxzQkFBc0I7aUJBQ3ZDO2dCQUNELFlBQVksRUFBRTtvQkFDWjt3QkFDRSxPQUFPLEVBQUU7NEJBQ1A7Z0NBQ0UsZ0JBQWdCLEVBQUU7b0NBQ2hCLFlBQVksRUFBRSwrQ0FBK0M7b0NBQzdELEVBQUUsRUFBRSxTQUFTO2lDQUNkOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELGNBQWMsRUFBRSxpQkFBaUI7Z0JBQ2pDLE1BQU0sRUFBRSxHQUFHO2dCQUNYLGNBQWMsRUFBRSwrQ0FBK0M7Z0JBQy9ELGVBQWUsRUFBRTtvQkFDZixHQUFHLEVB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QWdCLEVBQUUsU0FBUztvQ0FDM0Isa0JBQWtCLEVBQUUsc0JBQXNCO2lDQUMzQzs2QkFDRjt5QkFDRjt3QkFDRCxPQUFPLEVBQUUsSUFBSTtxQkFDZDtvQkFDRCxVQUFVLEVBQUUsR0FBRztvQkFDZixJQUFJLEVBQUUsU0FBUztpQkFDaEI7Z0JBQ0Qsa0JBQWtCLEVBQUUsSUFBSSxvQkFBWSxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUM7YUFDN0U7U0FDRixDQUFDO1FBQ0YsU0FBUyxDQUFDLE9BQU8sQ0FDZixDQUFDLEVBQ0MsSUFBSSxFQUNKLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsV0FBVyxHQUNaLEVBQUUsRUFBRTtZQUNILEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDNUMsSUFBSTtxQkFDRCxNQUFNLENBQ0wsaUZBQWlGLENBQ2xGO3FCQUNBLEtBQUssQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQ25ELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF4aW9zTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJztcbmltcG9ydCBheGlvcywgeyBBeGlvc0hlYWRlcnMgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgR29vZ2xlQWRzIGZyb20gJy4vZ29vZ2xlQWRzJztcblxuZGVzY3JpYmUoJ0dvb2dsZSBhZHMgU0RLJywgKCkgPT4ge1xuICBsZXQgbW9jazogQXhpb3NNb2NrQWRhcHRlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBtb2NrID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIG1vY2sucmVzdG9yZSgpO1xuICB9KTtcbiAgZGVzY3JpYmUoJ1Rlc3QgZ2V0Q29udmVyc2lvbkFjdGlvbiBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q2FzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG91bGQgcmV0dXJuIGNvbnZlcnNpb24gYWN0aW9uIElEIHdoZW4gQVBJIHJldHVybnMgc3VjY2VzcyByZXNwb25zZScsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3Rlc3QtYWNjZXNzLXRva2VuJyxcbiAgICAgICAgICBjdXN0b21lcklkOiAnMTIzNDU2Nzg5JyxcbiAgICAgICAgICBkZXZlbG9wZXJUb2tlbjogJ3Rlc3QtZGV2ZWxvcGVyLXRva2VuJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVzdWx0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkFjdGlvbjoge1xuICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAnY3VzdG9tZXJzLzEyMzQ1Njc4OS9jb252ZXJzaW9uQWN0aW9ucy85ODc2NTQzJyxcbiAgICAgICAgICAgICAgICAgIGlkOiAnOTg3NjU0MycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgY29udmVyc2lvbk5hbWU6ICd0ZXN0X2NvbnZlcnNpb24nLFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L2NvbnZlcnNpb25BY3Rpb25zLzk4NzY1NDMnLFxuICAgICAgICBleHBlY3RlZFJlcXVlc3Q6IHtcbiAgICAgICAgICB1cmw6ICcvMTIzNDU2Nzg5L2dvb2dsZUFkczpzZWFyY2hTdHJlYW0nLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHF1ZXJ5OlxuICAgICAgICAgICAgICBcIlNFTEVDVCBjb252ZXJzaW9uX2FjdGlvbi5pZCBGUk9NIGNvbnZlcnNpb25fYWN0aW9uIFdIRVJFIGNvbnZlcnNpb25fYWN0aW9uLm5hbWUgPSAndGVzdF9jb252ZXJzaW9uJ1wiLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2hhbmRsZSBmYWlsdXJlIHNjZW5hcmlvIHdoZW4gYWNjZXNzVG9rZW4gaXMgd3JvbmcnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd3cm9uZy1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2U6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICBjb2RlOiA0MDEsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgJ1JlcXVlc3QgaGFkIGludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIEV4cGVjdGVkIE9BdXRoIDIgYWNjZXNzIHRva2VuLCBsb2dpbiBjb29raWUgb3Igb3RoZXIgdmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3NpZ24taW4vd2ViL2RldmNvbnNvbGUtcHJvamVjdC4nLFxuICAgICAgICAgICAgICBzdGF0dXM6ICdVTkFVVEhFTlRJQ0FURUQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoe1xuICAgICAgICAgICd0cmFuc2Zlci1lbmNvZGluZyc6ICdjaHVua2VkJyxcbiAgICAgICAgfSksXG4gICAgICAgIGNvbnZlcnNpb25OYW1lOiAndGVzdF9jb252ZXJzaW9uJyxcbiAgICAgICAgc3RhdHVzOiA0MDEsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEF4aW9zSGVhZGVycyh7XG4gICAgICAgICAgICAndHJhbnNmZXItZW5jb2RpbmcnOiAnY2h1bmtlZCcsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlc3BvbnNlQm9keTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGNvZGU6IDQwMSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgJ1JlcXVlc3QgaGFkIGludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIEV4cGVjdGVkIE9BdXRoIDIgYWNjZXNzIHRva2VuLCBsb2dpbiBjb29raWUgb3Igb3RoZXIgdmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3NpZ24taW4vd2ViL2RldmNvbnNvbGUtcHJvamVjdC4nLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ1VOQVVUSEVOVElDQVRFRCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdHVzQ29kZTogNDAxLFxuICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi1lcnJvcicsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkUmVxdWVzdDoge1xuICAgICAgICAgIHVybDogJy8xMjM0NTY3ODkvZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbScsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgcXVlcnk6XG4gICAgICAgICAgICAgIFwiU0VMRUNUIGNvbnZlcnNpb25fYWN0aW9uLmlkIEZST00gY29udmVyc2lvbl9hY3Rpb24gV0hFUkUgY29udmVyc2lvbl9hY3Rpb24ubmFtZSA9ICd0ZXN0X2NvbnZlcnNpb24nXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnaGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgYXZhaWxhYmxlJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndGVzdC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2U6IFtdLFxuICAgICAgICBjb252ZXJzaW9uTmFtZTogJ25vbi1leGlzdGluZy1jb252ZXJzaW9uJyxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiBudWxsLFxuICAgICAgICBleHBlY3RlZFJlcXVlc3Q6IHtcbiAgICAgICAgICB1cmw6ICcvMTIzNDU2Nzg5L2dvb2dsZUFkczpzZWFyY2hTdHJlYW0nLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHF1ZXJ5OlxuICAgICAgICAgICAgICBcIlNFTEVDVCBjb252ZXJzaW9uX2FjdGlvbi5pZCBGUk9NIGNvbnZlcnNpb25fYWN0aW9uIFdIRVJFIGNvbnZlcnNpb25fYWN0aW9uLm5hbWUgPSAnbm9uLWV4aXN0aW5nLWNvbnZlcnNpb24nXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gICAgdGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBhdXRoT2JqZWN0LFxuICAgICAgICBtb2NrUmVzcG9uc2UsXG4gICAgICAgIGNvbnZlcnNpb25OYW1lLFxuICAgICAgICBleHBlY3RlZFJlcXVlc3QsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0LFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcixcbiAgICAgIH0pID0+IHtcbiAgICAgICAgaXQobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZUFkcyA9IG5ldyBHb29nbGVBZHMoYXV0aE9iamVjdCk7XG4gICAgICAgICAgbW9ja1xuICAgICAgICAgICAgLm9uUG9zdChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vZ29vZ2xlYWRzLmdvb2dsZWFwaXMuY29tL3YxOS9jdXN0b21lcnMvMTIzNDU2Nzg5L2dvb2dsZUFkczpzZWFyY2hTdHJlYW0nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy5nZXRDb252ZXJzaW9uQWN0aW9uSWQoY29udmVyc2lvbk5hbWUpO1xuICAgICAgICAgIGV4cGVjdChtb2NrLmhpc3RvcnkucG9zdFswXSkudG9NYXRjaE9iamVjdChleHBlY3RlZFJlcXVlc3QpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgZ2V0Q3VzdG9tVmFyaWFibGUgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBhbiBhcnJheSBvZiBDdXN0b21WYXJpYWJsZVJlc3VsdHMgd2hlbiBBUEkgY2FsbCBzdWNjZWVkcycsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3Rlc3QtYWNjZXNzLXRva2VuJyxcbiAgICAgICAgICBjdXN0b21lcklkOiAnMTIzNDU2Nzg5JyxcbiAgICAgICAgICBkZXZlbG9wZXJUb2tlbjogJ3Rlc3QtZGV2ZWxvcGVyLXRva2VuJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVzdWx0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkN1c3RvbVZhcmlhYmxlOiB7XG4gICAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICdjdXN0b21lcnMvMTIzL2NvbnZlcnNpb25DdXN0b21WYXJpYWJsZXMvNDU2JyxcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICd0ZXN0X3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGZpZWxkTWFzazogJ2NvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlLm5hbWUnLFxuICAgICAgICAgICAgcmVxdWVzdElkOiAnMTIzNDU2JyxcbiAgICAgICAgICAgIHF1ZXJ5UmVzb3VyY2VDb25zdW1wdGlvbjogJzEwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udmVyc2lvbkN1c3RvbVZhcmlhYmxlOiB7XG4gICAgICAgICAgICAgIHJlc291cmNlTmFtZTogJ2N1c3RvbWVycy8xMjMvY29udmVyc2lvbkN1c3RvbVZhcmlhYmxlcy80NTYnLFxuICAgICAgICAgICAgICBuYW1lOiAndGVzdF92YXJpYWJsZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGVjdGVkUmVxdWVzdDoge1xuICAgICAgICAgIHVybDogJy8xMjM0NTY3ODkvZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbScsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgcXVlcnk6ICdTRUxFQ1QgY29udmVyc2lvbl9jdXN0b21fdmFyaWFibGUubmFtZSBGUk9NIGNvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG91bGQgaGFuZGxlIHRoZSBzY2VuYXJpbyB3aGVuIHRoZXJlIGlzIG5vdCBhbnkgY3VzdG9tVmFyaWFibGVzJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndGVzdC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVzdWx0czogW10sXG4gICAgICAgICAgICBmaWVsZE1hc2s6ICdjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZS5uYW1lJyxcbiAgICAgICAgICAgIHJlcXVlc3RJZDogJzEyMzQ1NicsXG4gICAgICAgICAgICBxdWVyeVJlc291cmNlQ29uc3VtcHRpb246ICcxMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiBbXSxcbiAgICAgICAgZXhwZWN0ZWRSZXF1ZXN0OiB7XG4gICAgICAgICAgdXJsOiAnLzEyMzQ1Njc4OS9nb29nbGVBZHM6c2VhcmNoU3RyZWFtJyxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBxdWVyeTogJ1NFTEVDVCBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZS5uYW1lIEZST00gY29udmVyc2lvbl9jdXN0b21fdmFyaWFibGUnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2YgQ3VzdG9tVmFyaWFibGVSZXN1bHRzIHdoZW4gQVBJIGNhbGwgc3VjY2VlZHMnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd3cm9uZy1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2U6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICBjb2RlOiA0MDEsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgJ1JlcXVlc3QgaGFkIGludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIEV4cGVjdGVkIE9BdXRoIDIgYWNjZXNzIHRva2VuLCBsb2dpbiBjb29raWUgb3Igb3RoZXIgdmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3NpZ24taW4vd2ViL2RldmNvbnNvbGUtcHJvamVjdC4nLFxuICAgICAgICAgICAgICBzdGF0dXM6ICdVTkFVVEhFTlRJQ0FURUQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdGF0dXM6IDQwMSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHtcbiAgICAgICAgICAgICd0cmFuc2Zlci1lbmNvZGluZyc6ICdjaHVua2VkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogNDAxLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnUmVxdWVzdCBoYWQgaW52YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gRXhwZWN0ZWQgT0F1dGggMiBhY2Nlc3MgdG9rZW4sIGxvZ2luIGNvb2tpZSBvciBvdGhlciB2YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFsLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvc2lnbi1pbi93ZWIvZGV2Y29uc29sZS1wcm9qZWN0LicsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnVU5BVVRIRU5USUNBVEVEJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiA0MDEsXG4gICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uLWVycm9yJyxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXF1ZXN0OiB7XG4gICAgICAgICAgdXJsOiAnLzEyMzQ1Njc4OS9nb29nbGVBZHM6c2VhcmNoU3RyZWFtJyxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBxdWVyeTogJ1NFTEVDVCBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZS5uYW1lIEZST00gY29udmVyc2lvbl9jdXN0b21fdmFyaWFibGUnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoe1xuICAgICAgICAgICd0cmFuc2Zlci1lbmNvZGluZyc6ICdjaHVua2VkJyxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaChcbiAgICAgICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGF1dGhPYmplY3QsXG4gICAgICAgIG1vY2tSZXNwb25zZSxcbiAgICAgICAgZXhwZWN0ZWRSZXF1ZXN0LFxuICAgICAgICBleHBlY3RlZFJlc3VsdCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXIsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OS9nb29nbGVBZHM6c2VhcmNoU3RyZWFtJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseShzdGF0dXMsIG1vY2tSZXNwb25zZSwgbW9ja1Jlc3BvbnNlSGVhZGVyKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnb29nbGVBZHMuZ2V0Q3VzdG9tVmFyaWFibGUoKTtcbiAgICAgICAgICBleHBlY3QobW9jay5oaXN0b3J5LnBvc3RbMF0pLnRvTWF0Y2hPYmplY3QoZXhwZWN0ZWRSZXF1ZXN0KTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUZXN0IGFkZENvbnZlcnNpb25BZGp1c3RNZW50IGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IFRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBzdWNjZXNzZnVsbHkgdXBsb2FkIGNvbnZlcnNpb24gYWRqdXN0bWVudHMgd2l0aCB2YWxpZCBkYXRhJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndmFsaWQtYWNjZXNzLXRva2VuJyxcbiAgICAgICAgICBjdXN0b21lcklkOiAnMTIzNDU2Nzg5JyxcbiAgICAgICAgICBkZXZlbG9wZXJUb2tlbjogJ3Rlc3QtZGV2ZWxvcGVyLXRva2VuJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdERhdGE6IHtcbiAgICAgICAgICBjb252ZXJzaW9uQWRqdXN0bWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZ2NsaWREYXRlVGltZVBhaXI6IHtcbiAgICAgICAgICAgICAgICBnY2xpZDogJ3Rlc3QtZ2NsaWQnLFxuICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWRqdXN0bWVudFR5cGU6ICdSRVNUQVRFTUVOVCcgYXMgY29uc3QsXG4gICAgICAgICAgICAgIHJlc3RhdGVtZW50VmFsdWU6IHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFZhbHVlOiAxMDAsXG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiAnVVNEJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdXNlcklkZW50aWZpZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdXNlcklkZW50aWZpZXJTb3VyY2U6ICdGSVJTVF9QQVJUWScgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICBoYXNoZWRFbWFpbDogJzM4OTIwNTkwNGQ2YzdiYjgzZmM2NzY1MTM5MTEyMjZmMmJlMjViZjE0NjU2MTZiYjliMjk1ODcxMDBhYjE0MTQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGFydGlhbEZhaWx1cmU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiB7XG4gICAgICAgICAgY29udmVyc2lvbkFkanVzdG1lbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGdjbGlkRGF0ZVRpbWVQYWlyOiB7XG4gICAgICAgICAgICAgICAgZ2NsaWQ6ICd0ZXN0LWdjbGlkJyxcbiAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFkanVzdG1lbnRUeXBlOiAnUkVTVEFURU1FTlQnLFxuICAgICAgICAgICAgICByZXN0YXRlbWVudFZhbHVlOiB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRWYWx1ZTogMTAwLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogJ1VTRCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHVzZXJJZGVudGlmaWVyczogW10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGFydGlhbEZhaWx1cmU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiB7XG4gICAgICAgICAgICBjb252ZXJzaW9uQWRqdXN0bWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGdjbGlkRGF0ZVRpbWVQYWlyOiB7XG4gICAgICAgICAgICAgICAgICBnY2xpZDogJ3Rlc3QtZ2NsaWQnLFxuICAgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWRqdXN0bWVudFR5cGU6ICdSRVNUQVRFTUVOVCcsXG4gICAgICAgICAgICAgICAgcmVzdGF0ZW1lbnRWYWx1ZTogeyBhZGp1c3RlZFZhbHVlOiAxMDAsIGN1cnJlbmN5Q29kZTogJ1VTRCcgfSxcbiAgICAgICAgICAgICAgICB1c2VySWRlbnRpZmllcnM6IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHBhcnRpYWxGYWlsdXJlOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBzdWNjZXNzZnVsbHkgaGFuZGxlIGZhaWx1cmUgc2NlbmFyaW8nLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd3cm9uZy1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0RGF0YToge1xuICAgICAgICAgIGNvbnZlcnNpb25BZGp1c3RtZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBnY2xpZERhdGVUaW1lUGFpcjoge1xuICAgICAgICAgICAgICAgIGdjbGlkOiAndGVzdC1nY2xpZCcsXG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhZGp1c3RtZW50VHlwZTogJ1JFU1RBVEVNRU5UJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgcmVzdGF0ZW1lbnRWYWx1ZToge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkVmFsdWU6IDEwMCxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1c2VySWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1c2VySWRlbnRpZmllclNvdXJjZTogJ0ZJUlNUX1BBUlRZJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIGhhc2hlZEVtYWlsOiAnMzg5MjA1OTA0ZDZjN2JiODNmYzY3NjUxMzkxMTIyNmYyYmUyNWJmMTQ2NTYxNmJiOWIyOTU4NzEwMGFiMTQxNCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXJ0aWFsRmFpbHVyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogNDAxLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHtcbiAgICAgICAgICAgICd0cmFuc2Zlci1lbmNvZGluZyc6ICdjaHVua2VkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogNDAxLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnUmVxdWVzdCBoYWQgaW52YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gRXhwZWN0ZWQgT0F1dGggMiBhY2Nlc3MgdG9rZW4sIGxvZ2luIGNvb2tpZSBvciBvdGhlciB2YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFsLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvc2lnbi1pbi93ZWIvZGV2Y29uc29sZS1wcm9qZWN0LicsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnVU5BVVRIRU5USUNBVEVEJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiA0MDEsXG4gICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uLWVycm9yJyxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlc3BvbnNlQm9keToge1xuICAgICAgICAgICAgaGVhZGVyczogeyAndHJhbnNmZXItZW5jb2RpbmcnOiAnY2h1bmtlZCcgfSxcbiAgICAgICAgICAgIHJlc3BvbnNlQm9keTogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgIGNvZGU6IDQwMSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICdSZXF1ZXN0IGhhZCBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBFeHBlY3RlZCBPQXV0aCAyIGFjY2VzcyB0b2tlbiwgbG9naW4gY29va2llIG9yIG90aGVyIHZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWwuIFNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9zaWduLWluL3dlYi9kZXZjb25zb2xlLXByb2plY3QuJyxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ1VOQVVUSEVOVElDQVRFRCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiA0MDEsXG4gICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24tZXJyb3InLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdHVzQ29kZTogNDAxLFxuICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi1lcnJvcicsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgIF07XG4gICAgVGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBhdXRoT2JqZWN0LFxuICAgICAgICBtb2NrUmVzcG9uc2UsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICBleHBlY3RlZFJlc3VsdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyLFxuICAgICAgICBzdGF0dXMsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OTp1cGxvYWRDb252ZXJzaW9uQWRqdXN0bWVudHMnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy5hZGRDb252ZXJzaW9uQWRqdXN0TWVudChyZXF1ZXN0RGF0YSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGVzdCBjcmVhdGVPZmZsaW5lVXNlckRhdGFKb2IgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgVGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBqb2IgSUQgd2hlbiByZXNwb25zZSB0eXBlIGlzIHN1Y2Nlc3MgZm9yIGN1c3RvbWVyTWF0Y2hVc2VyTGlzdCBqb2InLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICAgIGxvZ2luQ3VzdG9tZXJJZDogJzk4NzY1NDMyMScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgam9iOiB7XG4gICAgICAgICAgICB0eXBlOiAnQ1VTVE9NRVJfTUFUQ0hfVVNFUl9MSVNUJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGN1c3RvbWVyTWF0Y2hVc2VyTGlzdE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgIHVzZXJMaXN0OiAnY3VzdG9tZXJzLzEyMzQ1Njc4OS91c2VyTGlzdHMvMTIzNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHtcbiAgICAgICAgICByZXNvdXJjZU5hbWU6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L29mZmxpbmVVc2VyRGF0YUpvYnMvNTY3OCcsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiAnNTY3OCcsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBqb2IgSUQgd2hlbiByZXNwb25zZSB0eXBlIGlzIHN1Y2Nlc3MgZm9yIHN0b3JlIHNhbGVzIGpvYicsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3ZhbGlkLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgam9iOiB7XG4gICAgICAgICAgICBzdG9yZVNhbGVzTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgY3VzdG9tX2tleTogJ0NVU1RPTV9LRVknLFxuICAgICAgICAgICAgICBsb3lhbHR5RnJhY3Rpb246IDEsXG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uX3VwbG9hZF9mcmFjdGlvbjogJzEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdTVE9SRV9TQUxFU19VUExPQURfRklSU1RfUEFSVFknIGFzIGNvbnN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHtcbiAgICAgICAgICByZXNvdXJjZU5hbWU6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L29mZmxpbmVVc2VyRGF0YUpvYnMvNTY3OCcsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiAnNTY3OCcsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgIF07XG4gICAgVGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBhdXRoT2JqZWN0LFxuICAgICAgICBtb2NrUmVzcG9uc2UsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXIsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OS9vZmZsaW5lVXNlckRhdGFKb2JzOmNyZWF0ZScsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLmNyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYihyZXF1ZXN0RGF0YSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGVzdCBhZGRVc2VyVG9PZmZsaW5lVXNlckRhdGFKb2IgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgVGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHN1Y2Nlc3NmdWxseSBhZGQgdXNlciBkYXRhIHRvIGFuIG9mZmxpbmUgdXNlciBkYXRhIGpvYicsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3ZhbGlkLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgICAgbG9naW5DdXN0b21lcklkOiAnOTg3NjU0MzIxJyxcbiAgICAgICAgfSxcbiAgICAgICAgam9iSWQ6ICcxMjM0JyxcbiAgICAgICAgcmVxdWVzdERhdGE6IHtcbiAgICAgICAgICBvcGVyYXRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgICAgICAgIHVzZXJJZGVudGlmaWVyczogW3sgaGFzaGVkRW1haWw6ICdoYXNoZWRfZW1haWxfdmFsdWUnIH1dLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVuYWJsZVBhcnRpYWxGYWlsdXJlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIG1vY2tSZXNwb25zZToge30sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiB7fSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgfSxcbiAgICBdO1xuICAgIFRlc3RDYXNlcy5mb3JFYWNoKFxuICAgICAgKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYXV0aE9iamVjdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICBleHBlY3RlZFJlc3VsdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyLFxuICAgICAgICBqb2JJZCxcbiAgICAgIH0pID0+IHtcbiAgICAgICAgaXQobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZUFkcyA9IG5ldyBHb29nbGVBZHMoYXV0aE9iamVjdCk7XG4gICAgICAgICAgbW9ja1xuICAgICAgICAgICAgLm9uUG9zdChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vZ29vZ2xlYWRzLmdvb2dsZWFwaXMuY29tL3YxOS9jdXN0b21lcnMvMTIzNDU2Nzg5L29mZmxpbmVVc2VyRGF0YUpvYnMvMTIzNDphZGRPcGVyYXRpb25zJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseShzdGF0dXMsIG1vY2tSZXNwb25zZSwgbW9ja1Jlc3BvbnNlSGVhZGVyKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnb29nbGVBZHMuYWRkVXNlclRvT2ZmbGluZVVzZXJEYXRhSm9iKGpvYklkLCByZXF1ZXN0RGF0YSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGVzdCBhZGRDb252ZXJzaW9uc1RvT2ZmbGluZVVzZXJEYXRhSm9iIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IFRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBzdWNjZXNzZnVsbHkgYWRkIHN0b3JlIHNhbGVzIGNvbnZlcnNpb24gZGF0YSB0byBhbiBvZmZsaW5lIHVzZXIgZGF0YSBqb2InLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICAgIGxvZ2luQ3VzdG9tZXJJZDogJzk4NzY1NDMyMScsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYklkOiAnMTIzNCcsXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgb3BlcmF0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICAgICAgICB1c2VySWRlbnRpZmllcnM6IFt7IGhhc2hlZEVtYWlsOiAnaGFzaGVkLWVtYWlsLXZhbHVlJyB9XSxcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbkluZm86IHtcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25BY3Rpb246ICdjdXN0b21lcnMvMTIzNDU2Nzg5L2NvbnZlcnNpb25BY3Rpb25zLzk4NycsXG4gICAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0ZVRpbWU6ICcyMDIzLTAxLTAxIDEyOjAwOjAwJyxcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25WYWx1ZTogMTAuOTksXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW5hYmxlUGFydGlhbEZhaWx1cmU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHt9LFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgICAgIHJlc3BvbnNlQm9keToge30sXG4gICAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBUZXN0Q2FzZXMuZm9yRWFjaChcbiAgICAgICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGF1dGhPYmplY3QsXG4gICAgICAgIG1vY2tSZXNwb25zZSxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcixcbiAgICAgICAgam9iSWQsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OS9vZmZsaW5lVXNlckRhdGFKb2JzLzEyMzQ6YWRkT3BlcmF0aW9ucycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLmFkZENvbnZlcnNpb25zVG9PZmZsaW5lVXNlckRhdGFKb2Ioam9iSWQsIHJlcXVlc3REYXRhKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUZXN0IHJ1bk9mZmxpbmVVc2VyRGF0YUpvYiBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBUZXN0Q2FzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG91bGQgc3VjY2Vzc2Z1bGx5IHJ1biBhbiBvZmZsaW5lIHVzZXIgZGF0YSBqb2Igd2l0aCB2YWxpZCBqb2JJZCcsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3ZhbGlkLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgICAgbG9naW5DdXN0b21lcklkOiAnOTg3NjU0MzIxJyxcbiAgICAgICAgfSxcbiAgICAgICAgam9iSWQ6ICcxMjM0JyxcbiAgICAgICAgcmVxdWVzdERhdGE6IHt9LFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBkYXRhOiB7IG5hbWU6ICd0ZXN0LWpvYicsIGRvbmU6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICBkYXRhOiB7IG5hbWU6ICd0ZXN0LWpvYicsIGRvbmU6IHRydWUgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgIF07XG4gICAgVGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoeyBuYW1lLCBhdXRoT2JqZWN0LCBtb2NrUmVzcG9uc2UsIHN0YXR1cywgZXhwZWN0ZWRSZXN1bHQsIG1vY2tSZXNwb25zZUhlYWRlciwgam9iSWQgfSkgPT4ge1xuICAgICAgICBpdChuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ29vZ2xlQWRzID0gbmV3IEdvb2dsZUFkcyhhdXRoT2JqZWN0KTtcbiAgICAgICAgICBtb2NrXG4gICAgICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICAgICAnaHR0cHM6Ly9nb29nbGVhZHMuZ29vZ2xlYXBpcy5jb20vdjE5L2N1c3RvbWVycy8xMjM0NTY3ODkvb2ZmbGluZVVzZXJEYXRhSm9icy8xMjM0OnJ1bicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLnJ1bk9mZmxpbmVVc2VyRGF0YUpvYihqb2JJZCk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGVzdCB1cGxvYWRDbGlja0NvbnZlcnNpb24gZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgVGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHN1Y2Nlc3NmdWxseSBhZGQgdXNlciBkYXRhIHRvIGFuIG9mZmxpbmUgdXNlciBkYXRhIGpvYicsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3ZhbGlkLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgICAgbG9naW5DdXN0b21lcklkOiAnOTg3NjU0MzIxJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdERhdGE6IHtcbiAgICAgICAgICBjb252ZXJzaW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBnY2xpZDogJ3Rlc3QtZ2NsaWQnLFxuICAgICAgICAgICAgICBjb252ZXJzaW9uQWN0aW9uOiAndGVzdC1hY3Rpb24nLFxuICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgICAgICAgIGNvbnZlcnNpb25WYWx1ZTogMTAwLFxuICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByZXN1bHRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBnY2xpZDogJ3Rlc3QtZ2NsaWQnLFxuICAgICAgICAgICAgICAgIGNvbnZlcnNpb25BY3Rpb246ICd0ZXN0LWFjdGlvbicsXG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgICAgIHJlc3BvbnNlQm9keToge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICByZXN1bHRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29udmVyc2lvbkFjdGlvbjogJ3Rlc3QtYWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgICAgICAgICAgIGdjbGlkOiAndGVzdC1nY2xpZCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBUZXN0Q2FzZXMuZm9yRWFjaChcbiAgICAgICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGF1dGhPYmplY3QsXG4gICAgICAgIG1vY2tSZXNwb25zZSxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBleHBlY3RlZFJlc3VsdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgIH0pID0+IHtcbiAgICAgICAgaXQobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZUFkcyA9IG5ldyBHb29nbGVBZHMoYXV0aE9iamVjdCk7XG4gICAgICAgICAgbW9ja1xuICAgICAgICAgICAgLm9uUG9zdChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vZ29vZ2xlYWRzLmdvb2dsZWFwaXMuY29tL3YxOS9jdXN0b21lcnMvMTIzNDU2Nzg5OnVwbG9hZENsaWNrQ29udmVyc2lvbnMnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy51cGxvYWRDbGlja0NvbnZlcnNpb24ocmVxdWVzdERhdGEpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgdXBsb2FkQ2FsbENvbnZlcnNpb24gZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgVGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHN1Y2Nlc3NmdWxseSB1cGxvYWQgY2FsbCBjb252ZXJzaW9uIGRhdGEgYW5kIHJldHVybiBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICAgIGxvZ2luQ3VzdG9tZXJJZDogJzk4NzY1NDMyMScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgY29udmVyc2lvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2FsbGVySWQ6ICcxMjM0NTY3ODkwJyxcbiAgICAgICAgICAgICAgY2FsbFN0YXJ0RGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDEyOjAwOjAwWicsXG4gICAgICAgICAgICAgIGNvbnZlcnNpb25BY3Rpb246ICdhY3Rpb24xJyxcbiAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQxMjowNTowMFonLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBhcnRpYWxGYWlsdXJlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIG1vY2tSZXNwb25zZToge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcmVzdWx0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FsbGVySWQ6ICcxMjM0NTY3ODkwJyxcbiAgICAgICAgICAgICAgICBjYWxsU3RhcnREYXRlVGltZTogJzIwMjMtMDEtMDFUMTI6MDA6MDBaJyxcbiAgICAgICAgICAgICAgICBjb252ZXJzaW9uQWN0aW9uOiAnYWN0aW9uMScsXG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQxMjowNTowMFonLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgICAgIHJlc3BvbnNlQm9keToge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICByZXN1bHRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY2FsbFN0YXJ0RGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDEyOjAwOjAwWicsXG4gICAgICAgICAgICAgICAgICBjYWxsZXJJZDogJzEyMzQ1Njc4OTAnLFxuICAgICAgICAgICAgICAgICAgY29udmVyc2lvbkFjdGlvbjogJ2FjdGlvbjEnLFxuICAgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQxMjowNTowMFonLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgIF07XG4gICAgVGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBhdXRoT2JqZWN0LFxuICAgICAgICBtb2NrUmVzcG9uc2UsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcixcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OTp1cGxvYWRDbGlja0NvbnZlcnNpb25zJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseShzdGF0dXMsIG1vY2tSZXNwb25zZSwgbW9ja1Jlc3BvbnNlSGVhZGVyKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnb29nbGVBZHMudXBsb2FkQ2xpY2tDb252ZXJzaW9uKHJlcXVlc3REYXRhKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
771
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlQWRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9nb29nbGVBZHNSZXN0QVBJL2dvb2dsZUFkcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEVBQWtEO0FBQ2xELCtDQUE0QztBQUM1Qyw0REFBb0M7QUFFcEMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFJLElBQXNCLENBQUM7SUFFM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxNQUFNLFNBQVMsR0FBRztZQUNoQjtnQkFDRSxJQUFJLEVBQUUsc0VBQXNFO2dCQUM1RSxVQUFVLEVBQUU7b0JBQ1YsV0FBVyxFQUFFLG1CQUFtQjtvQkFDaEMsVUFBVSxFQUFFLFdBQVc7b0JBQ3ZCLGNBQWMsRUFBRSxzQkFBc0I7aUJBQ3ZDO2dCQUNELFlBQVksRUFBRTtvQkFDWjt3QkFDRSxPQUFPLEVBQUU7NEJBQ1A7Z0NBQ0UsZ0JBQWdCLEVBQUU7b0NBQ2hCLFlBQVksRUFBRSwrQ0FBK0M7b0NBQzdELEVBQUUsRUFBRSxTQUFTO2lDQUNkOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELGNBQWMsRUFBRSxpQkFBaUI7Z0JBQ2pDLE1BQU0sRUFBRSxHQUFHO2dCQUNYLGNBQWMsRUFBRSwrQ0FBK0M7Z0JBQy9ELGVBQWUsRUFBRTtvQkFDZixHQUFHLEVB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LE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXhpb3NNb2NrQWRhcHRlciBmcm9tICdheGlvcy1tb2NrLWFkYXB0ZXInO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSGVhZGVycyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCBHb29nbGVBZHMgZnJvbSAnLi9nb29nbGVBZHMnO1xuXG5kZXNjcmliZSgnR29vZ2xlIGFkcyBTREsnLCAoKSA9PiB7XG4gIGxldCBtb2NrOiBBeGlvc01vY2tBZGFwdGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG1vY2sgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgbW9jay5yZXN0b3JlKCk7XG4gIH0pO1xuICBkZXNjcmliZSgnVGVzdCBnZXRDb252ZXJzaW9uQWN0aW9uIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCByZXR1cm4gY29udmVyc2lvbiBhY3Rpb24gSUQgd2hlbiBBUEkgcmV0dXJucyBzdWNjZXNzIHJlc3BvbnNlJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndGVzdC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2U6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXN1bHRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb252ZXJzaW9uQWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L2NvbnZlcnNpb25BY3Rpb25zLzk4NzY1NDMnLFxuICAgICAgICAgICAgICAgICAgaWQ6ICc5ODc2NTQzJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBjb252ZXJzaW9uTmFtZTogJ3Rlc3RfY29udmVyc2lvbicsXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBleHBlY3RlZFJlc3VsdDogJ2N1c3RvbWVycy8xMjM0NTY3ODkvY29udmVyc2lvbkFjdGlvbnMvOTg3NjU0MycsXG4gICAgICAgIGV4cGVjdGVkUmVxdWVzdDoge1xuICAgICAgICAgIHVybDogJy8xMjM0NTY3ODkvZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbScsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgcXVlcnk6XG4gICAgICAgICAgICAgIFwiU0VMRUNUIGNvbnZlcnNpb25fYWN0aW9uLmlkIEZST00gY29udmVyc2lvbl9hY3Rpb24gV0hFUkUgY29udmVyc2lvbl9hY3Rpb24ubmFtZSA9ICd0ZXN0X2NvbnZlcnNpb24nXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnaGFuZGxlIGZhaWx1cmUgc2NlbmFyaW8gd2hlbiBhY2Nlc3NUb2tlbiBpcyB3cm9uZycsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBjdXN0b21lcklkOiAnMTIzNDU2Nzg5JyxcbiAgICAgICAgICBkZXZlbG9wZXJUb2tlbjogJ3Rlc3QtZGV2ZWxvcGVyLXRva2VuJyxcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3dyb25nLWFjY2Vzcy10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgIGNvZGU6IDQwMSxcbiAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAnUmVxdWVzdCBoYWQgaW52YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gRXhwZWN0ZWQgT0F1dGggMiBhY2Nlc3MgdG9rZW4sIGxvZ2luIGNvb2tpZSBvciBvdGhlciB2YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFsLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvc2lnbi1pbi93ZWIvZGV2Y29uc29sZS1wcm9qZWN0LicsXG4gICAgICAgICAgICAgIHN0YXR1czogJ1VOQVVUSEVOVElDQVRFRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7XG4gICAgICAgICAgJ3RyYW5zZmVyLWVuY29kaW5nJzogJ2NodW5rZWQnLFxuICAgICAgICB9KSxcbiAgICAgICAgY29udmVyc2lvbk5hbWU6ICd0ZXN0X2NvbnZlcnNpb24nLFxuICAgICAgICBzdGF0dXM6IDQwMSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHtcbiAgICAgICAgICAgICd0cmFuc2Zlci1lbmNvZGluZyc6ICdjaHVua2VkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogNDAxLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnUmVxdWVzdCBoYWQgaW52YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gRXhwZWN0ZWQgT0F1dGggMiBhY2Nlc3MgdG9rZW4sIGxvZ2luIGNvb2tpZSBvciBvdGhlciB2YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFsLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvc2lnbi1pbi93ZWIvZGV2Y29uc29sZS1wcm9qZWN0LicsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnVU5BVVRIRU5USUNBVEVEJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiA0MDEsXG4gICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uLWVycm9yJyxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXF1ZXN0OiB7XG4gICAgICAgICAgdXJsOiAnLzEyMzQ1Njc4OS9nb29nbGVBZHM6c2VhcmNoU3RyZWFtJyxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBxdWVyeTpcbiAgICAgICAgICAgICAgXCJTRUxFQ1QgY29udmVyc2lvbl9hY3Rpb24uaWQgRlJPTSBjb252ZXJzaW9uX2FjdGlvbiBXSEVSRSBjb252ZXJzaW9uX2FjdGlvbi5uYW1lID0gJ3Rlc3RfY29udmVyc2lvbidcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdoYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBhdmFpbGFibGUnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd0ZXN0LWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZTogW10sXG4gICAgICAgIGNvbnZlcnNpb25OYW1lOiAnbm9uLWV4aXN0aW5nLWNvbnZlcnNpb24nLFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IG51bGwsXG4gICAgICAgIGV4cGVjdGVkUmVxdWVzdDoge1xuICAgICAgICAgIHVybDogJy8xMjM0NTY3ODkvZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbScsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgcXVlcnk6XG4gICAgICAgICAgICAgIFwiU0VMRUNUIGNvbnZlcnNpb25fYWN0aW9uLmlkIEZST00gY29udmVyc2lvbl9hY3Rpb24gV0hFUkUgY29udmVyc2lvbl9hY3Rpb24ubmFtZSA9ICdub24tZXhpc3RpbmctY29udmVyc2lvbidcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaChcbiAgICAgICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGF1dGhPYmplY3QsXG4gICAgICAgIG1vY2tSZXNwb25zZSxcbiAgICAgICAgY29udmVyc2lvbk5hbWUsXG4gICAgICAgIGV4cGVjdGVkUmVxdWVzdCxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyLFxuICAgICAgfSkgPT4ge1xuICAgICAgICBpdChuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ29vZ2xlQWRzID0gbmV3IEdvb2dsZUFkcyhhdXRoT2JqZWN0KTtcbiAgICAgICAgICBtb2NrXG4gICAgICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICAgICAnaHR0cHM6Ly9nb29nbGVhZHMuZ29vZ2xlYXBpcy5jb20vdjE5L2N1c3RvbWVycy8xMjM0NTY3ODkvZ29vZ2xlQWRzOnNlYXJjaFN0cmVhbScsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLmdldENvbnZlcnNpb25BY3Rpb25JZChjb252ZXJzaW9uTmFtZSk7XG4gICAgICAgICAgZXhwZWN0KG1vY2suaGlzdG9yeS5wb3N0WzBdKS50b01hdGNoT2JqZWN0KGV4cGVjdGVkUmVxdWVzdCk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGVzdCBnZXRDdXN0b21WYXJpYWJsZSBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q2FzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIEN1c3RvbVZhcmlhYmxlUmVzdWx0cyB3aGVuIEFQSSBjYWxsIHN1Y2NlZWRzJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndGVzdC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2U6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXN1bHRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb252ZXJzaW9uQ3VzdG9tVmFyaWFibGU6IHtcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogJ2N1c3RvbWVycy8xMjMvY29udmVyc2lvbkN1c3RvbVZhcmlhYmxlcy80NTYnLFxuICAgICAgICAgICAgICAgICAgbmFtZTogJ3Rlc3RfdmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZmllbGRNYXNrOiAnY29udmVyc2lvbl9jdXN0b21fdmFyaWFibGUubmFtZScsXG4gICAgICAgICAgICByZXF1ZXN0SWQ6ICcxMjM0NTYnLFxuICAgICAgICAgICAgcXVlcnlSZXNvdXJjZUNvbnN1bXB0aW9uOiAnMTAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb252ZXJzaW9uQ3VzdG9tVmFyaWFibGU6IHtcbiAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAnY3VzdG9tZXJzLzEyMy9jb252ZXJzaW9uQ3VzdG9tVmFyaWFibGVzLzQ1NicsXG4gICAgICAgICAgICAgIG5hbWU6ICd0ZXN0X3ZhcmlhYmxlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXhwZWN0ZWRSZXF1ZXN0OiB7XG4gICAgICAgICAgdXJsOiAnLzEyMzQ1Njc4OS9nb29nbGVBZHM6c2VhcmNoU3RyZWFtJyxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBxdWVyeTogJ1NFTEVDVCBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZS5uYW1lIEZST00gY29udmVyc2lvbl9jdXN0b21fdmFyaWFibGUnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBoYW5kbGUgdGhlIHNjZW5hcmlvIHdoZW4gdGhlcmUgaXMgbm90IGFueSBjdXN0b21WYXJpYWJsZXMnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd0ZXN0LWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXN1bHRzOiBbXSxcbiAgICAgICAgICAgIGZpZWxkTWFzazogJ2NvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlLm5hbWUnLFxuICAgICAgICAgICAgcmVxdWVzdElkOiAnMTIzNDU2JyxcbiAgICAgICAgICAgIHF1ZXJ5UmVzb3VyY2VDb25zdW1wdGlvbjogJzEwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IFtdLFxuICAgICAgICBleHBlY3RlZFJlcXVlc3Q6IHtcbiAgICAgICAgICB1cmw6ICcvMTIzNDU2Nzg5L2dvb2dsZUFkczpzZWFyY2hTdHJlYW0nLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHF1ZXJ5OiAnU0VMRUNUIGNvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlLm5hbWUgRlJPTSBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZScsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBhbiBhcnJheSBvZiBDdXN0b21WYXJpYWJsZVJlc3VsdHMgd2hlbiBBUEkgY2FsbCBzdWNjZWVkcycsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3dyb25nLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgIGNvZGU6IDQwMSxcbiAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAnUmVxdWVzdCBoYWQgaW52YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gRXhwZWN0ZWQgT0F1dGggMiBhY2Nlc3MgdG9rZW4sIGxvZ2luIGNvb2tpZSBvciBvdGhlciB2YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFsLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvc2lnbi1pbi93ZWIvZGV2Y29uc29sZS1wcm9qZWN0LicsXG4gICAgICAgICAgICAgIHN0YXR1czogJ1VOQVVUSEVOVElDQVRFRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0YXR1czogNDAxLFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoe1xuICAgICAgICAgICAgJ3RyYW5zZmVyLWVuY29kaW5nJzogJ2NodW5rZWQnLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiA0MDEsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICdSZXF1ZXN0IGhhZCBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBFeHBlY3RlZCBPQXV0aCAyIGFjY2VzcyB0b2tlbiwgbG9naW4gY29va2llIG9yIG90aGVyIHZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWwuIFNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9zaWduLWluL3dlYi9kZXZjb25zb2xlLXByb2plY3QuJyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdVTkFVVEhFTlRJQ0FURUQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDQwMSxcbiAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24tZXJyb3InLFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZFJlcXVlc3Q6IHtcbiAgICAgICAgICB1cmw6ICcvMTIzNDU2Nzg5L2dvb2dsZUFkczpzZWFyY2hTdHJlYW0nLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHF1ZXJ5OiAnU0VMRUNUIGNvbnZlcnNpb25fY3VzdG9tX3ZhcmlhYmxlLm5hbWUgRlJPTSBjb252ZXJzaW9uX2N1c3RvbV92YXJpYWJsZScsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7XG4gICAgICAgICAgJ3RyYW5zZmVyLWVuY29kaW5nJzogJ2NodW5rZWQnLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKFxuICAgICAgKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYXV0aE9iamVjdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlLFxuICAgICAgICBleHBlY3RlZFJlcXVlc3QsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0LFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcixcbiAgICAgIH0pID0+IHtcbiAgICAgICAgaXQobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZUFkcyA9IG5ldyBHb29nbGVBZHMoYXV0aE9iamVjdCk7XG4gICAgICAgICAgbW9ja1xuICAgICAgICAgICAgLm9uUG9zdChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vZ29vZ2xlYWRzLmdvb2dsZWFwaXMuY29tL3YxOS9jdXN0b21lcnMvMTIzNDU2Nzg5L2dvb2dsZUFkczpzZWFyY2hTdHJlYW0nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy5nZXRDdXN0b21WYXJpYWJsZSgpO1xuICAgICAgICAgIGV4cGVjdChtb2NrLmhpc3RvcnkucG9zdFswXSkudG9NYXRjaE9iamVjdChleHBlY3RlZFJlcXVlc3QpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgYWRkQ29udmVyc2lvbkFkanVzdE1lbnQgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgVGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHN1Y2Nlc3NmdWxseSB1cGxvYWQgY29udmVyc2lvbiBhZGp1c3RtZW50cyB3aXRoIHZhbGlkIGRhdGEnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0RGF0YToge1xuICAgICAgICAgIGNvbnZlcnNpb25BZGp1c3RtZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBnY2xpZERhdGVUaW1lUGFpcjoge1xuICAgICAgICAgICAgICAgIGdjbGlkOiAndGVzdC1nY2xpZCcsXG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhZGp1c3RtZW50VHlwZTogJ1JFU1RBVEVNRU5UJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgcmVzdGF0ZW1lbnRWYWx1ZToge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkVmFsdWU6IDEwMCxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1c2VySWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB1c2VySWRlbnRpZmllclNvdXJjZTogJ0ZJUlNUX1BBUlRZJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIGhhc2hlZEVtYWlsOiAnMzg5MjA1OTA0ZDZjN2JiODNmYzY3NjUxMzkxMTIyNmYyYmUyNWJmMTQ2NTYxNmJiOWIyOTU4NzEwMGFiMTQxNCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXJ0aWFsRmFpbHVyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHtcbiAgICAgICAgICBjb252ZXJzaW9uQWRqdXN0bWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZ2NsaWREYXRlVGltZVBhaXI6IHtcbiAgICAgICAgICAgICAgICBnY2xpZDogJ3Rlc3QtZ2NsaWQnLFxuICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWRqdXN0bWVudFR5cGU6ICdSRVNUQVRFTUVOVCcsXG4gICAgICAgICAgICAgIHJlc3RhdGVtZW50VmFsdWU6IHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFZhbHVlOiAxMDAsXG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiAnVVNEJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdXNlcklkZW50aWZpZXJzOiBbXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXJ0aWFsRmFpbHVyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiB7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IHtcbiAgICAgICAgICAgIGNvbnZlcnNpb25BZGp1c3RtZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZ2NsaWREYXRlVGltZVBhaXI6IHtcbiAgICAgICAgICAgICAgICAgIGdjbGlkOiAndGVzdC1nY2xpZCcsXG4gICAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhZGp1c3RtZW50VHlwZTogJ1JFU1RBVEVNRU5UJyxcbiAgICAgICAgICAgICAgICByZXN0YXRlbWVudFZhbHVlOiB7IGFkanVzdGVkVmFsdWU6IDEwMCwgY3VycmVuY3lDb2RlOiAnVVNEJyB9LFxuICAgICAgICAgICAgICAgIHVzZXJJZGVudGlmaWVyczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGFydGlhbEZhaWx1cmU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGVhZGVyczogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHN1Y2Nlc3NmdWxseSBoYW5kbGUgZmFpbHVyZSBzY2VuYXJpbycsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3dyb25nLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgY29udmVyc2lvbkFkanVzdG1lbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGdjbGlkRGF0ZVRpbWVQYWlyOiB7XG4gICAgICAgICAgICAgICAgZ2NsaWQ6ICd0ZXN0LWdjbGlkJyxcbiAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFkanVzdG1lbnRUeXBlOiAnUkVTVEFURU1FTlQnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICByZXN0YXRlbWVudFZhbHVlOiB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRWYWx1ZTogMTAwLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogJ1VTRCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHVzZXJJZGVudGlmaWVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJJZGVudGlmaWVyU291cmNlOiAnRklSU1RfUEFSVFknIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgaGFzaGVkRW1haWw6ICczODkyMDU5MDRkNmM3YmI4M2ZjNjc2NTEzOTExMjI2ZjJiZTI1YmYxNDY1NjE2YmI5YjI5NTg3MTAwYWIxNDE0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBhcnRpYWxGYWlsdXJlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiA0MDEsXG4gICAgICAgIG1vY2tSZXNwb25zZToge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoe1xuICAgICAgICAgICAgJ3RyYW5zZmVyLWVuY29kaW5nJzogJ2NodW5rZWQnLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiA0MDEsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICdSZXF1ZXN0IGhhZCBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBFeHBlY3RlZCBPQXV0aCAyIGFjY2VzcyB0b2tlbiwgbG9naW4gY29va2llIG9yIG90aGVyIHZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWwuIFNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9zaWduLWluL3dlYi9kZXZjb25zb2xlLXByb2plY3QuJyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdVTkFVVEhFTlRJQ0FURUQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDQwMSxcbiAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24tZXJyb3InLFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoe1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7ICd0cmFuc2Zlci1lbmNvZGluZyc6ICdjaHVua2VkJyB9LFxuICAgICAgICAgICAgcmVzcG9uc2VCb2R5OiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgICAgY29kZTogNDAxLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgJ1JlcXVlc3QgaGFkIGludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIEV4cGVjdGVkIE9BdXRoIDIgYWNjZXNzIHRva2VuLCBsb2dpbiBjb29raWUgb3Igb3RoZXIgdmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3NpZ24taW4vd2ViL2RldmNvbnNvbGUtcHJvamVjdC4nLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnVU5BVVRIRU5USUNBVEVEJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IDQwMSxcbiAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi1lcnJvcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiA0MDEsXG4gICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uLWVycm9yJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBUZXN0Q2FzZXMuZm9yRWFjaChcbiAgICAgICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGF1dGhPYmplY3QsXG4gICAgICAgIG1vY2tSZXNwb25zZSxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXIsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgIH0pID0+IHtcbiAgICAgICAgaXQobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZUFkcyA9IG5ldyBHb29nbGVBZHMoYXV0aE9iamVjdCk7XG4gICAgICAgICAgbW9ja1xuICAgICAgICAgICAgLm9uUG9zdChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vZ29vZ2xlYWRzLmdvb2dsZWFwaXMuY29tL3YxOS9jdXN0b21lcnMvMTIzNDU2Nzg5OnVwbG9hZENvbnZlcnNpb25BZGp1c3RtZW50cycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLmFkZENvbnZlcnNpb25BZGp1c3RNZW50KHJlcXVlc3REYXRhKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUZXN0IGNyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYiBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBUZXN0Q2FzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG91bGQgcmV0dXJuIGpvYiBJRCB3aGVuIHJlc3BvbnNlIHR5cGUgaXMgc3VjY2VzcyBmb3IgY3VzdG9tZXJNYXRjaFVzZXJMaXN0IGpvYicsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3ZhbGlkLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgICAgbG9naW5DdXN0b21lcklkOiAnOTg3NjU0MzIxJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdERhdGE6IHtcbiAgICAgICAgICBqb2I6IHtcbiAgICAgICAgICAgIHR5cGU6ICdDVVNUT01FUl9NQVRDSF9VU0VSX0xJU1QnIGFzIGNvbnN0LFxuICAgICAgICAgICAgY3VzdG9tZXJNYXRjaFVzZXJMaXN0TWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgdXNlckxpc3Q6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L3VzZXJMaXN0cy8xMjM0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIG1vY2tSZXNwb25zZToge1xuICAgICAgICAgIHJlc291cmNlTmFtZTogJ2N1c3RvbWVycy8xMjM0NTY3ODkvb2ZmbGluZVVzZXJEYXRhSm9icy81Njc4JyxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IHtcbiAgICAgICAgICAgIHJlc291cmNlTmFtZTogJ2N1c3RvbWVycy8xMjM0NTY3ODkvb2ZmbGluZVVzZXJEYXRhSm9icy81Njc4JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBqb2IgSUQgd2hlbiByZXNwb25zZSB0eXBlIGlzIHN1Y2Nlc3MgZm9yIHN0b3JlIHNhbGVzIGpvYicsXG4gICAgICAgIGF1dGhPYmplY3Q6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJ3ZhbGlkLWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgY3VzdG9tZXJJZDogJzEyMzQ1Njc4OScsXG4gICAgICAgICAgZGV2ZWxvcGVyVG9rZW46ICd0ZXN0LWRldmVsb3Blci10b2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgam9iOiB7XG4gICAgICAgICAgICBzdG9yZVNhbGVzTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgY3VzdG9tX2tleTogJ0NVU1RPTV9LRVknLFxuICAgICAgICAgICAgICBsb3lhbHR5RnJhY3Rpb246IDEsXG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uX3VwbG9hZF9mcmFjdGlvbjogJzEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICdTVE9SRV9TQUxFU19VUExPQURfRklSU1RfUEFSVFknIGFzIGNvbnN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHtcbiAgICAgICAgICByZXNvdXJjZU5hbWU6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L29mZmxpbmVVc2VyRGF0YUpvYnMvNTY3OCcsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiB7XG4gICAgICAgICAgICByZXNvdXJjZU5hbWU6ICdjdXN0b21lcnMvMTIzNDU2Nzg5L29mZmxpbmVVc2VyRGF0YUpvYnMvNTY3OCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgfSxcbiAgICBdO1xuICAgIFRlc3RDYXNlcy5mb3JFYWNoKFxuICAgICAgKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYXV0aE9iamVjdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICBleHBlY3RlZFJlc3VsdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyLFxuICAgICAgfSkgPT4ge1xuICAgICAgICBpdChuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ29vZ2xlQWRzID0gbmV3IEdvb2dsZUFkcyhhdXRoT2JqZWN0KTtcbiAgICAgICAgICBtb2NrXG4gICAgICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICAgICAnaHR0cHM6Ly9nb29nbGVhZHMuZ29vZ2xlYXBpcy5jb20vdjE5L2N1c3RvbWVycy8xMjM0NTY3ODkvb2ZmbGluZVVzZXJEYXRhSm9iczpjcmVhdGUnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy5jcmVhdGVPZmZsaW5lVXNlckRhdGFKb2IocmVxdWVzdERhdGEpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgYWRkVXNlclRvT2ZmbGluZVVzZXJEYXRhSm9iIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IFRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBzdWNjZXNzZnVsbHkgYWRkIHVzZXIgZGF0YSB0byBhbiBvZmZsaW5lIHVzZXIgZGF0YSBqb2InLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICAgIGxvZ2luQ3VzdG9tZXJJZDogJzk4NzY1NDMyMScsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYklkOiAnMTIzNCcsXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgb3BlcmF0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICAgICAgICB1c2VySWRlbnRpZmllcnM6IFt7IGhhc2hlZEVtYWlsOiAnaGFzaGVkX2VtYWlsX3ZhbHVlJyB9XSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlbmFibGVQYXJ0aWFsRmFpbHVyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHt9LFxuICAgICAgICBleHBlY3RlZFJlc3VsdDoge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgICAgIHJlc3BvbnNlQm9keToge30sXG4gICAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9ja1Jlc3BvbnNlSGVhZGVyOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBUZXN0Q2FzZXMuZm9yRWFjaChcbiAgICAgICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGF1dGhPYmplY3QsXG4gICAgICAgIG1vY2tSZXNwb25zZSxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcixcbiAgICAgICAgam9iSWQsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OS9vZmZsaW5lVXNlckRhdGFKb2JzLzEyMzQ6YWRkT3BlcmF0aW9ucycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLmFkZFVzZXJUb09mZmxpbmVVc2VyRGF0YUpvYihqb2JJZCwgcmVxdWVzdERhdGEpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgYWRkQ29udmVyc2lvbnNUb09mZmxpbmVVc2VyRGF0YUpvYiBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBUZXN0Q2FzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG91bGQgc3VjY2Vzc2Z1bGx5IGFkZCBzdG9yZSBzYWxlcyBjb252ZXJzaW9uIGRhdGEgdG8gYW4gb2ZmbGluZSB1c2VyIGRhdGEgam9iJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndmFsaWQtYWNjZXNzLXRva2VuJyxcbiAgICAgICAgICBjdXN0b21lcklkOiAnMTIzNDU2Nzg5JyxcbiAgICAgICAgICBkZXZlbG9wZXJUb2tlbjogJ3Rlc3QtZGV2ZWxvcGVyLXRva2VuJyxcbiAgICAgICAgICBsb2dpbkN1c3RvbWVySWQ6ICc5ODc2NTQzMjEnLFxuICAgICAgICB9LFxuICAgICAgICBqb2JJZDogJzEyMzQnLFxuICAgICAgICByZXF1ZXN0RGF0YToge1xuICAgICAgICAgIG9wZXJhdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgICAgICAgdXNlcklkZW50aWZpZXJzOiBbeyBoYXNoZWRFbWFpbDogJ2hhc2hlZC1lbWFpbC12YWx1ZScgfV0sXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25JbmZvOiB7XG4gICAgICAgICAgICAgICAgICBjb252ZXJzaW9uQWN0aW9uOiAnY3VzdG9tZXJzLzEyMzQ1Njc4OS9jb252ZXJzaW9uQWN0aW9ucy85ODcnLFxuICAgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMSAxMjowMDowMCcsXG4gICAgICAgICAgICAgICAgICBjb252ZXJzaW9uVmFsdWU6IDEwLjk5LFxuICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiAnVVNEJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVuYWJsZVBhcnRpYWxGYWlsdXJlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlOiB7fSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IHt9LFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgIF07XG4gICAgVGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBhdXRoT2JqZWN0LFxuICAgICAgICBtb2NrUmVzcG9uc2UsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXIsXG4gICAgICAgIGpvYklkLFxuICAgICAgfSkgPT4ge1xuICAgICAgICBpdChuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ29vZ2xlQWRzID0gbmV3IEdvb2dsZUFkcyhhdXRoT2JqZWN0KTtcbiAgICAgICAgICBtb2NrXG4gICAgICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICAgICAnaHR0cHM6Ly9nb29nbGVhZHMuZ29vZ2xlYXBpcy5jb20vdjE5L2N1c3RvbWVycy8xMjM0NTY3ODkvb2ZmbGluZVVzZXJEYXRhSm9icy8xMjM0OmFkZE9wZXJhdGlvbnMnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy5hZGRDb252ZXJzaW9uc1RvT2ZmbGluZVVzZXJEYXRhSm9iKGpvYklkLCByZXF1ZXN0RGF0YSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGVzdCBydW5PZmZsaW5lVXNlckRhdGFKb2IgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgVGVzdENhc2VzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hvdWxkIHN1Y2Nlc3NmdWxseSBydW4gYW4gb2ZmbGluZSB1c2VyIGRhdGEgam9iIHdpdGggdmFsaWQgam9iSWQnLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICAgIGxvZ2luQ3VzdG9tZXJJZDogJzk4NzY1NDMyMScsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYklkOiAnMTIzNCcsXG4gICAgICAgIHJlcXVlc3REYXRhOiB7fSxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIG1vY2tSZXNwb25zZToge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgZGF0YTogeyBuYW1lOiAndGVzdC1qb2InLCBkb25lOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0OiB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICAgICAgcmVzcG9uc2VCb2R5OiB7XG4gICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgZGF0YTogeyBuYW1lOiAndGVzdC1qb2InLCBkb25lOiB0cnVlIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgfSxcbiAgICBdO1xuICAgIFRlc3RDYXNlcy5mb3JFYWNoKFxuICAgICAgKHsgbmFtZSwgYXV0aE9iamVjdCwgbW9ja1Jlc3BvbnNlLCBzdGF0dXMsIGV4cGVjdGVkUmVzdWx0LCBtb2NrUmVzcG9uc2VIZWFkZXIsIGpvYklkIH0pID0+IHtcbiAgICAgICAgaXQobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZUFkcyA9IG5ldyBHb29nbGVBZHMoYXV0aE9iamVjdCk7XG4gICAgICAgICAgbW9ja1xuICAgICAgICAgICAgLm9uUG9zdChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vZ29vZ2xlYWRzLmdvb2dsZWFwaXMuY29tL3YxOS9jdXN0b21lcnMvMTIzNDU2Nzg5L29mZmxpbmVVc2VyRGF0YUpvYnMvMTIzNDpydW4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KHN0YXR1cywgbW9ja1Jlc3BvbnNlLCBtb2NrUmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZUFkcy5ydW5PZmZsaW5lVXNlckRhdGFKb2Ioam9iSWQpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgdXBsb2FkQ2xpY2tDb252ZXJzaW9uIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IFRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBzdWNjZXNzZnVsbHkgYWRkIHVzZXIgZGF0YSB0byBhbiBvZmZsaW5lIHVzZXIgZGF0YSBqb2InLFxuICAgICAgICBhdXRoT2JqZWN0OiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICd2YWxpZC1hY2Nlc3MtdG9rZW4nLFxuICAgICAgICAgIGN1c3RvbWVySWQ6ICcxMjM0NTY3ODknLFxuICAgICAgICAgIGRldmVsb3BlclRva2VuOiAndGVzdC1kZXZlbG9wZXItdG9rZW4nLFxuICAgICAgICAgIGxvZ2luQ3VzdG9tZXJJZDogJzk4NzY1NDMyMScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgY29udmVyc2lvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZ2NsaWQ6ICd0ZXN0LWdjbGlkJyxcbiAgICAgICAgICAgICAgY29udmVyc2lvbkFjdGlvbjogJ3Rlc3QtYWN0aW9uJyxcbiAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGVUaW1lOiAnMjAyMy0wMS0wMVQwMDowMDowMFonLFxuICAgICAgICAgICAgICBjb252ZXJzaW9uVmFsdWU6IDEwMCxcbiAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiAnVVNEJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIG1vY2tSZXNwb25zZToge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcmVzdWx0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZ2NsaWQ6ICd0ZXN0LWdjbGlkJyxcbiAgICAgICAgICAgICAgICBjb252ZXJzaW9uQWN0aW9uOiAndGVzdC1hY3Rpb24nLFxuICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgcmVzdWx0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25BY3Rpb246ICd0ZXN0LWFjdGlvbicsXG4gICAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICAgICAgICAgICAgICBnY2xpZDogJ3Rlc3QtZ2NsaWQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIH0sXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcjogbmV3IEF4aW9zSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICB9LFxuICAgIF07XG4gICAgVGVzdENhc2VzLmZvckVhY2goXG4gICAgICAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBhdXRoT2JqZWN0LFxuICAgICAgICBtb2NrUmVzcG9uc2UsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQsXG4gICAgICAgIG1vY2tSZXNwb25zZUhlYWRlcixcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGl0KG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBnb29nbGVBZHMgPSBuZXcgR29vZ2xlQWRzKGF1dGhPYmplY3QpO1xuICAgICAgICAgIG1vY2tcbiAgICAgICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgICAgICdodHRwczovL2dvb2dsZWFkcy5nb29nbGVhcGlzLmNvbS92MTkvY3VzdG9tZXJzLzEyMzQ1Njc4OTp1cGxvYWRDbGlja0NvbnZlcnNpb25zJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseShzdGF0dXMsIG1vY2tSZXNwb25zZSwgbW9ja1Jlc3BvbnNlSGVhZGVyKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnb29nbGVBZHMudXBsb2FkQ2xpY2tDb252ZXJzaW9uKHJlcXVlc3REYXRhKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUZXN0IHVwbG9hZENhbGxDb252ZXJzaW9uIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IFRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3Nob3VsZCBzdWNjZXNzZnVsbHkgdXBsb2FkIGNhbGwgY29udmVyc2lvbiBkYXRhIGFuZCByZXR1cm4gYSBzdWNjZXNzZnVsIHJlc3BvbnNlJyxcbiAgICAgICAgYXV0aE9iamVjdDoge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiAndmFsaWQtYWNjZXNzLXRva2VuJyxcbiAgICAgICAgICBjdXN0b21lcklkOiAnMTIzNDU2Nzg5JyxcbiAgICAgICAgICBkZXZlbG9wZXJUb2tlbjogJ3Rlc3QtZGV2ZWxvcGVyLXRva2VuJyxcbiAgICAgICAgICBsb2dpbkN1c3RvbWVySWQ6ICc5ODc2NTQzMjEnLFxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0RGF0YToge1xuICAgICAgICAgIGNvbnZlcnNpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNhbGxlcklkOiAnMTIzNDU2Nzg5MCcsXG4gICAgICAgICAgICAgIGNhbGxTdGFydERhdGVUaW1lOiAnMjAyMy0wMS0wMVQxMjowMDowMFonLFxuICAgICAgICAgICAgICBjb252ZXJzaW9uQWN0aW9uOiAnYWN0aW9uMScsXG4gICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMTI6MDU6MDBaJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXJ0aWFsRmFpbHVyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBtb2NrUmVzcG9uc2U6IHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHJlc3VsdHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbGxlcklkOiAnMTIzNDU2Nzg5MCcsXG4gICAgICAgICAgICAgICAgY2FsbFN0YXJ0RGF0ZVRpbWU6ICcyMDIzLTAxLTAxVDEyOjAwOjAwWicsXG4gICAgICAgICAgICAgICAgY29udmVyc2lvbkFjdGlvbjogJ2FjdGlvbjEnLFxuICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMTI6MDU6MDBaJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgQXhpb3NIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcbiAgICAgICAgICByZXNwb25zZUJvZHk6IHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgcmVzdWx0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNhbGxTdGFydERhdGVUaW1lOiAnMjAyMy0wMS0wMVQxMjowMDowMFonLFxuICAgICAgICAgICAgICAgICAgY2FsbGVySWQ6ICcxMjM0NTY3ODkwJyxcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25BY3Rpb246ICdhY3Rpb24xJyxcbiAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRlVGltZTogJzIwMjMtMDEtMDFUMTI6MDU6MDBaJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXI6IG5ldyBBeGlvc0hlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgfSxcbiAgICBdO1xuICAgIFRlc3RDYXNlcy5mb3JFYWNoKFxuICAgICAgKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYXV0aE9iamVjdCxcbiAgICAgICAgbW9ja1Jlc3BvbnNlLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGV4cGVjdGVkUmVzdWx0LFxuICAgICAgICBtb2NrUmVzcG9uc2VIZWFkZXIsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgfSkgPT4ge1xuICAgICAgICBpdChuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ29vZ2xlQWRzID0gbmV3IEdvb2dsZUFkcyhhdXRoT2JqZWN0KTtcbiAgICAgICAgICBtb2NrXG4gICAgICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICAgICAnaHR0cHM6Ly9nb29nbGVhZHMuZ29vZ2xlYXBpcy5jb20vdjE5L2N1c3RvbWVycy8xMjM0NTY3ODk6dXBsb2FkQ2xpY2tDb252ZXJzaW9ucycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoc3RhdHVzLCBtb2NrUmVzcG9uc2UsIG1vY2tSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ29vZ2xlQWRzLnVwbG9hZENsaWNrQ29udmVyc2lvbihyZXF1ZXN0RGF0YSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdks/sfmc/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,yBAAyB,EACzB,2BAA2B,EAC3B,aAAa,EACb,iBAAiB,EAEjB,UAAU,EACX,MAAM,QAAQ,CAAC;AAChB,OAAO,EAML,SAAS,EACT,SAAS,EAEV,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,IAAI;IACvB,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAKtB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiCjC;;;OAGG;IACG,cAAc;IAWpB;;;;OAIG;IACG,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAkB3F;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAkB5E;;;;OAIG;IACG,mBAAmB,CACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAmBnD;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdks/sfmc/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,yBAAyB,EACzB,2BAA2B,EAC3B,aAAa,EACb,iBAAiB,EAEjB,UAAU,EACX,MAAM,QAAQ,CAAC;AAChB,OAAO,EAML,SAAS,EACT,SAAS,EAEV,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,IAAI;IACvB,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAKtB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiCjC;;;OAGG;IACG,cAAc;IAWpB;;;;OAIG;IACG,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAkB3F;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAkB5E;;;;OAIG;IACG,mBAAmB,CACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAmBnD;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC;IAqD7D;;;;OAIG;IACG,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC;IAwChF;;;;OAIG;IACG,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;CAiDrF"}
|
package/build/sdks/sfmc/index.js
CHANGED
|
@@ -145,19 +145,30 @@ class SFMC {
|
|
|
145
145
|
const res = parsedData.RetrieveResponseMsg?.Results;
|
|
146
146
|
const businessUnits = [];
|
|
147
147
|
if (res) {
|
|
148
|
+
const createBusinessUnit = (response) => {
|
|
149
|
+
const { PartnerProperties } = response;
|
|
150
|
+
const entry = {};
|
|
151
|
+
PartnerProperties.forEach((prop) => {
|
|
152
|
+
switch (prop.Name) {
|
|
153
|
+
case 'name':
|
|
154
|
+
entry.Name = prop.Value;
|
|
155
|
+
break;
|
|
156
|
+
case 'id':
|
|
157
|
+
entry.ID = prop.Value;
|
|
158
|
+
break;
|
|
159
|
+
default:
|
|
160
|
+
throw new utils_1.SoapError(`Unknown property: ${prop}`);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
return entry;
|
|
164
|
+
};
|
|
148
165
|
if (Array.isArray(res)) {
|
|
149
166
|
res.forEach((eachRes) => {
|
|
150
|
-
businessUnits.push(
|
|
151
|
-
Name: eachRes.PartnerProperties[0].Value,
|
|
152
|
-
ID: eachRes.PartnerProperties[1].Value,
|
|
153
|
-
});
|
|
167
|
+
businessUnits.push(createBusinessUnit(eachRes));
|
|
154
168
|
});
|
|
155
169
|
}
|
|
156
170
|
else {
|
|
157
|
-
businessUnits.push(
|
|
158
|
-
Name: res.PartnerProperties[0].Value,
|
|
159
|
-
ID: res.PartnerProperties[1].Value,
|
|
160
|
-
});
|
|
171
|
+
businessUnits.push(createBusinessUnit(res));
|
|
161
172
|
}
|
|
162
173
|
return businessUnits;
|
|
163
174
|
}
|
|
@@ -259,4 +270,4 @@ class SFMC {
|
|
|
259
270
|
}
|
|
260
271
|
}
|
|
261
272
|
exports.default = SFMC;
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBWTFCLG1DQVNpQjtBQUVqQixNQUFxQixJQUFJO0lBR3ZCLFlBQVksVUFBVTtRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFlO1FBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDbkQsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUN2RDtnQkFDRSxHQUFHLEVBQUUsV0FBVztnQkFDaEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFlBQVksRUFBRSx5Q0FBeUM7YUFDeEQ7U0FDRixDQUFDO1FBRUYsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7WUFDbkUsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLHdC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R0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7Q0FDRjtBQS9RRCx1QkErUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtcbiAgQXV0aE9iamVjdCxcbiAgQnVzaW5lc3NVbml0LFxuICBCdXNpbmVzc1VuaXRSZXNwb25zZSxcbiAgQ29udGFjdEF0dHJpYnV0ZXNSZXNwb25zZSxcbiAgQ3JlYXRlRGF0YUV4dGVuc2lvblJlc3BvbnNlLFxuICBEYXRhRXh0ZW5zaW9uLFxuICBEYXRhRXh0ZW5zaW9uQm9keSxcbiAgRGF0YUV4dGVuc2lvblJlc3BvbnNlLFxuICBEYXRhRm9sZGVyLFxufSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHtcbiAgZ2V0VXJsLFxuICBpc0V4cGlyZWQsXG4gIHBhcnNlRmlsdGVyLFxuICBwYXJzZVhNTCxcbiAgZ2V0VG9rZW4sXG4gIFJlc3RFcnJvcixcbiAgU29hcEVycm9yLFxuICB4bWxCdWlsZGVyLFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0ZNQyB7XG4gIGF1dGhPYmplY3Q6IEF1dGhPYmplY3Q7XG5cbiAgY29uc3RydWN0b3IoYXV0aE9iamVjdCkge1xuICAgIFNGTUMudmFsaWRhdGVBdXRoT2JqZWN0KGF1dGhPYmplY3QpO1xuICAgIHRoaXMuYXV0aE9iamVjdCA9IGF1dGhPYmplY3Q7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdDogYW55KTogYW55IHtcbiAgICBpZiAoIWF1dGhPYmplY3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXV0aE9iamVjdCBpcyByZXF1aXJlZC4gU2VlIHRoZSByZWFkbWUuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGlvbnMgPSBbXG4gICAgICB7IGtleTogJ2NsaWVudElkJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICB7IGtleTogJ2NsaWVudFNlY3JldCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzdWJEb21haW4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHJlZ2V4OiAvXlxcd3syOH0kL2dtLFxuICAgICAgICByZWdleE1lc3NhZ2U6ICdzdWJEb21haW4gbXVzdCBiZSBhIHN0cmluZyBvZiBsZW5ndGggMjgnLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgoeyBrZXksIHR5cGUsIHJlcXVpcmVkLCByZWdleCwgcmVnZXhNZXNzYWdlIH0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXV0aE9iamVjdFtrZXldO1xuICAgICAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBtaXNzaW5nIG9yIGludmFsaWRgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtrZXl9IG11c3QgYmUgYSAke3R5cGV9YCk7XG4gICAgICB9XG4gICAgICBpZiAocmVnZXggJiYgIXJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZWdleE1lc3NhZ2UgfHwgYCR7a2V5fSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgZm9ybWF0YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXV0aE9iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbi4gSWYgdGhlIHRva2VuIGlzIGV4cGlyZWQsIGl0IHdpbGwgZ2VuZXJhdGUgYSBuZXcgdG9rZW4uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEF1dGhPYmplY3Q+fSAgSXQgcmV0dXJucyB0aGUgYWNjZXNzIHRva2VuIG9yIGVycm9yXG4gICAqL1xuICBhc3luYyBnZXRBY2Nlc3NUb2tlbigpIHtcbiAgICBpZiAoaXNFeHBpcmVkKHRoaXMuYXV0aE9iamVjdCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFRva2VuKHRoaXMuYXV0aE9iamVjdCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGdlbmVyYXRlIHRva2VuLCB3aXRoIGVycm9yOiR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXV0aE9iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBmaWVsZHMgb2YgYSBkYXRhIGV4dGVuc2lvbi4gSXQgcmVxdWlyZXMgdGhlIGRhdGEgZXh0ZW5zaW9uIGlkLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGZpZWxkcyBvZiB0aGUgZGF0YSBleHRlbnNpb24uIElmIHRoZSBkYXRhIGV4dGVuc2lvbiBpcyBub3QgZm91bmQsIGl0IHJldHVybnMgYSBSZXN0RXJyb3IuXG4gICAqIEBwYXJhbSBkYXRhRXh0ZW5zaW9uSWQgSWQgb2YgdGhlIGRhdGEgZXh0ZW5zaW9uIHdob3NlIGZpZWxkcyBhcmUgdG8gYmUgZmV0Y2hlZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0RGVzdGluYXRpb25GaWVsZHMoZGF0YUV4dGVuc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPERhdGFFeHRlbnNpb25Cb2R5IHwgUmVzdEVycm9yPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3RIZWFkZXJzID0ge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7KGF3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKSkuYWNjZXNzX3Rva2VufWAsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGJhc2VVUkw6IGdldFVybCh0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWluKSxcbiAgICAgICAgdXJsOiBgL2RhdGEvdjEvY3VzdG9tb2JqZWN0cy8ke2RhdGFFeHRlbnNpb25JZH0vZmllbGRzYCxcbiAgICAgICAgaGVhZGVyczogcmVzdEhlYWRlcnMsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIHJldHVybiByZXNwLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgUmVzdEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZldGNoZXMgdGhlIGNvbnRhY3QgYXR0cmlidXRlcy4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjb250YWN0IGF0dHJpYnV0ZXMuIElmIHRoZSBjb250YWN0IGF0dHJpYnV0ZXMgYXJlIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldENvbnRhY3RBdHRyaWJ1dGVzKCk6IFByb21pc2U8Q29udGFjdEF0dHJpYnV0ZXNSZXNwb25zZSB8IFJlc3RFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN0SGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAkeyhhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbn1gLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBiYXNlVVJMOiBnZXRVcmwodGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbiksXG4gICAgICAgIHVybDogJy9jb250YWN0cy92MS9hdHRyaWJ1dGVTZXREZWZpbml0aW9ucycsXG4gICAgICAgIGhlYWRlcnM6IHJlc3RIZWFkZXJzLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICByZXR1cm4gcmVzcC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IFJlc3RFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgZGF0YSBleHRlbnNpb24uIEl0IHJlcXVpcmVzIHRoZSBkYXRhIGV4dGVuc2lvbiBmaWVsZHMuIFRoZSBtZXRob2QgcmV0dXJucyB0aGUgZGF0YSBleHRlbnNpb24gY3JlYXRlZC4gSWYgdGhlIGRhdGEgZXh0ZW5zaW9uIGlzIG5vdCBjcmVhdGVkLCBpdCByZXR1cm5zIGEgUmVzdEVycm9yLlxuICAgKiBAcGFyYW0gYm9keSBEYXRhRXh0ZW5zaW9uIGZpZWxkc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgY3JlYXRlRGF0YUV4dGVuc2lvbihcbiAgICBib2R5OiBEYXRhRXh0ZW5zaW9uQm9keSxcbiAgKTogUHJvbWlzZTxDcmVhdGVEYXRhRXh0ZW5zaW9uUmVzcG9uc2UgfCBSZXN0RXJyb3I+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdEhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHsoYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbigpKS5hY2Nlc3NfdG9rZW59YCxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJhc2VVUkw6IGdldFVybCh0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWluKSxcbiAgICAgICAgdXJsOiAnL2RhdGEvdjEvY3VzdG9tb2JqZWN0cycsXG4gICAgICAgIGhlYWRlcnM6IHJlc3RIZWFkZXJzLFxuICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICByZXR1cm4gcmVzcC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgUmVzdEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZldGNoZXMgdGhlIGJ1c2luZXNzIHVuaXRzLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGJ1c2luZXNzIHVuaXRzLiBJZiB0aGUgYnVzaW5lc3MgdW5pdHMgYXJlIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBhIFNvYXBFcnJvci5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldEJ1c2luZXNzVW5pdHMoKTogUHJvbWlzZTxCdXNpbmVzc1VuaXRbXSB8IFNvYXBFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IChhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbjtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYmFzZVVSTDogYGh0dHBzOi8vJHt0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWlufS5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb21gLFxuICAgICAgICB1cmw6ICcvU2VydmljZS5hc214JyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFNPQVBBY3Rpb246ICdSZXRyaWV2ZScsXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IGF3YWl0IHhtbEJ1aWxkZXIoJ0J1c2luZXNzVW5pdCcsIFsnbmFtZScsICdpZCddLCBhY2Nlc3NUb2tlbiksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBwYXJzZVhNTChyZXNwLmRhdGEpO1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VkRGF0YS5SZXRyaWV2ZVJlc3BvbnNlTXNnPy5SZXN1bHRzIGFzXG4gICAgICAgIHwgQnVzaW5lc3NVbml0UmVzcG9uc2VcbiAgICAgICAgfCBCdXNpbmVzc1VuaXRSZXNwb25zZVtdO1xuICAgICAgY29uc3QgYnVzaW5lc3NVbml0czogQnVzaW5lc3NVbml0W10gPSBbXTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgIHJlcy5mb3JFYWNoKChlYWNoUmVzKSA9PiB7XG4gICAgICAgICAgICBidXNpbmVzc1VuaXRzLnB1c2goe1xuICAgICAgICAgICAgICBOYW1lOiBlYWNoUmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzBdLlZhbHVlLFxuICAgICAgICAgICAgICBJRDogZWFjaFJlcy5QYXJ0bmVyUHJvcGVydGllc1sxXS5WYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1c2luZXNzVW5pdHMucHVzaCh7XG4gICAgICAgICAgICBOYW1lOiByZXMuUGFydG5lclByb3BlcnRpZXNbMF0uVmFsdWUsXG4gICAgICAgICAgICBJRDogcmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzFdLlZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidXNpbmVzc1VuaXRzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcignTm8gQnVzaW5lc3MgVW5pdHMgZm91bmQnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBTb2FwRXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgZmV0Y2hlcyB0aGUgZGF0YSBmb2xkZXJzLiBJdCBidXNpbmVzcyB1bml0IGlkIGlzIHByb3ZpZGVkIGFsbCBkYXRhIGZvbGRlciB1bmRlciB0aGF0IGJ1c2luZXNzIGlkIHdvdWxkIGJlIHJldHJpZXZlZCBvdGhlcndpc2UgYWxsIHRoZSBkYXRhIGZvbGRlciB3aWxsIGJlIHJldHJpZXZlZC4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBkYXRhIGZvbGRlcnMuIElmIHRoZSBkYXRhIGZvbGRlcnMgYXJlIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBhIFNvYXBFcnJvci5cbiAgICogQHBhcmFtIGJ1c2luZXNzVW5pdElkIHRoaXMgaXMgdGhlIGlkIG9mIHRoZSBidXNpbmVzcyB1bml0XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3luYyBnZXREYXRhRm9sZGVycyhidXNpbmVzc1VuaXRJZD86IHN0cmluZyk6IFByb21pc2U8RGF0YUZvbGRlcltdIHwgU29hcEVycm9yPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gKGF3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKSkuYWNjZXNzX3Rva2VuO1xuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBiYXNlVVJMOiBgaHR0cHM6Ly8ke3RoaXMuYXV0aE9iamVjdC5zdWJEb21haW59LnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbWAsXG4gICAgICAgIHVybDogJy9TZXJ2aWNlLmFzbXgnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgU09BUEFjdGlvbjogJ1JldHJpZXZlJyxcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQveG1sJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YTogYnVzaW5lc3NVbml0SWRcbiAgICAgICAgICA/IGF3YWl0IHhtbEJ1aWxkZXIoXG4gICAgICAgICAgICAgICdEYXRhRm9sZGVyJyxcbiAgICAgICAgICAgICAgWydOYW1lJywgJ0lEJywgJ1BhcmVudEZvbGRlci5JRCddLFxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgcGFyc2VGaWx0ZXIoeyBsZWZ0T3BlcmFuZDogJ0NsaWVudC5JRCcsIHJpZ2h0T3BlcmFuZDogYnVzaW5lc3NVbml0SWQgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBhd2FpdCB4bWxCdWlsZGVyKCdEYXRhRm9sZGVyJywgWydOYW1lJywgJ0lEJywgJ1BhcmVudEZvbGRlci5JRCddLCBhY2Nlc3NUb2tlbiksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBwYXJzZVhNTChyZXNwLmRhdGEpO1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VkRGF0YS5SZXRyaWV2ZVJlc3BvbnNlTXNnPy5SZXN1bHRzIGFzIERhdGFGb2xkZXIgfCBEYXRhRm9sZGVyW107XG4gICAgICBjb25zdCBkYXRhRm9sZGVyczogRGF0YUZvbGRlcltdID0gW107XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICByZXMuZm9yRWFjaCgoZWFjaFJlcykgPT4ge1xuICAgICAgICAgICAgZGF0YUZvbGRlcnMucHVzaChlYWNoUmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhRm9sZGVycy5wdXNoKHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGFGb2xkZXJzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcignTm8gRGF0YSBGb2xkZXIgZm91bmQnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBTb2FwRXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBmZXRjaGVzIHRoZSBkYXRhIGV4dGVuc2lvbnMuIEl0IHRoZSBkYXRhIGZvbGRlciBpZCBpcyBwcm92aWRlZCBhbGwgdGhlIGRhdGEgZXh0ZW5zaW9uIHVuZGVyIHRoYXQgZGF0YSBmb2xkZXIgd2lsbCBiZSByZXRyaWV2ZWQgb3RoZXJ3aXNlIGFsbCB0aGUgZGF0YSBleHRlbnNpb25zIHVuZGVyIHRoZSBhY2Nlc3MgdG9rZW4gd2lsbCBiZSBmZXRjaGVkLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGRhdGEgZXh0ZW5zaW9ucy4gSWYgdGhlIGRhdGEgZXh0ZW5zaW9ucyBhcmUgbm90IGZvdW5kLCBpdCByZXR1cm5zIGEgU29hcEVycm9yLlxuICAgKiBAcGFyYW0gZGF0YUZvbGRlcklkIElkIG9mIHRoZSBkYXRhIGZvbGRlclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0RGF0YUV4dGVuc2lvbnMoZGF0YUZvbGRlcklkPzogc3RyaW5nKTogUHJvbWlzZTxEYXRhRXh0ZW5zaW9uW10gfCBTb2FwRXJyb3I+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAoYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbigpKS5hY2Nlc3NfdG9rZW47XG4gICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJhc2VVUkw6IGBodHRwczovLyR7dGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbn0uc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tYCxcbiAgICAgICAgdXJsOiAnL1NlcnZpY2UuYXNteCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBTT0FQQWN0aW9uOiAnUmV0cmlldmUnLFxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiBkYXRhRm9sZGVySWRcbiAgICAgICAgICA/IGF3YWl0IHhtbEJ1aWxkZXIoXG4gICAgICAgICAgICAgICdEYXRhRXh0ZW5zaW9uJyxcbiAgICAgICAgICAgICAgWydOQU1FJywgJ09iamVjdElkJywgJ0NhdGVnb3J5SWQnXSxcbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICAgIHBhcnNlRmlsdGVyKHsgbGVmdE9wZXJhbmQ6ICdDYXRlZ29yeUlkJywgcmlnaHRPcGVyYW5kOiBkYXRhRm9sZGVySWQgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBhd2FpdCB4bWxCdWlsZGVyKCdEYXRhRXh0ZW5zaW9uJywgWydOQU1FJywgJ09iamVjdElkJywgJ0NhdGVnb3J5SWQnXSwgYWNjZXNzVG9rZW4pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gcGFyc2VYTUwocmVzcC5kYXRhKTtcbiAgICAgIGNvbnN0IHJlcyA9IHBhcnNlZERhdGEuUmV0cmlldmVSZXNwb25zZU1zZz8uUmVzdWx0cyBhc1xuICAgICAgICB8IERhdGFFeHRlbnNpb25SZXNwb25zZVxuICAgICAgICB8IERhdGFFeHRlbnNpb25SZXNwb25zZVtdO1xuICAgICAgY29uc3QgZGF0YUV4dGVuc2lvbnM6IERhdGFFeHRlbnNpb25bXSA9IFtdO1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XG4gICAgICAgICAgcmVzLmZvckVhY2goKGVhY2hSZXMpID0+IHtcbiAgICAgICAgICAgIGRhdGFFeHRlbnNpb25zLnB1c2goe1xuICAgICAgICAgICAgICBPYmplY3RJZDogZWFjaFJlcy5QYXJ0bmVyUHJvcGVydGllc1swXS5WYWx1ZSxcbiAgICAgICAgICAgICAgTmFtZTogZWFjaFJlcy5QYXJ0bmVyUHJvcGVydGllc1sxXS5WYWx1ZSxcbiAgICAgICAgICAgICAgQ2F0ZWdvcnlJZDogZWFjaFJlcy5QYXJ0bmVyUHJvcGVydGllc1syXS5WYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFFeHRlbnNpb25zLnB1c2goe1xuICAgICAgICAgICAgT2JqZWN0SWQ6IHJlcy5QYXJ0bmVyUHJvcGVydGllc1swXS5WYWx1ZSxcbiAgICAgICAgICAgIE5hbWU6IHJlcy5QYXJ0bmVyUHJvcGVydGllc1sxXS5WYWx1ZSxcbiAgICAgICAgICAgIENhdGVnb3J5SWQ6IHJlcy5QYXJ0bmVyUHJvcGVydGllc1syXS5WYWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YUV4dGVuc2lvbnM7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgU29hcEVycm9yKCdObyBEYXRhIEV4dGVuc2lvbiBmb3VuZCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBWTFCLG1DQVNpQjtBQUVqQixNQUFxQixJQUFJO0lBR3ZCLFlBQVksVUFBVTtRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFlO1FBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDbkQsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUN2RDtnQkFDRSxHQUFHLEVBQUUsV0FBVztnQkFDaEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFlBQVksRUFBRSx5Q0FBeUM7YUFDeEQ7U0FDRixDQUFDO1FBRUYsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7WUFDbkUsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLHdC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QkFDeEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO3dCQUNwQyxVQUFVLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7cUJBQzNDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUM7WUFDRCxNQUFNLElBQUksaUJBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLGlCQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTNSRCx1QkEyUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtcbiAgQXV0aE9iamVjdCxcbiAgQnVzaW5lc3NVbml0LFxuICBCdXNpbmVzc1VuaXRSZXNwb25zZSxcbiAgQ29udGFjdEF0dHJpYnV0ZXNSZXNwb25zZSxcbiAgQ3JlYXRlRGF0YUV4dGVuc2lvblJlc3BvbnNlLFxuICBEYXRhRXh0ZW5zaW9uLFxuICBEYXRhRXh0ZW5zaW9uQm9keSxcbiAgRGF0YUV4dGVuc2lvblJlc3BvbnNlLFxuICBEYXRhRm9sZGVyLFxufSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHtcbiAgZ2V0VXJsLFxuICBpc0V4cGlyZWQsXG4gIHBhcnNlRmlsdGVyLFxuICBwYXJzZVhNTCxcbiAgZ2V0VG9rZW4sXG4gIFJlc3RFcnJvcixcbiAgU29hcEVycm9yLFxuICB4bWxCdWlsZGVyLFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0ZNQyB7XG4gIGF1dGhPYmplY3Q6IEF1dGhPYmplY3Q7XG5cbiAgY29uc3RydWN0b3IoYXV0aE9iamVjdCkge1xuICAgIFNGTUMudmFsaWRhdGVBdXRoT2JqZWN0KGF1dGhPYmplY3QpO1xuICAgIHRoaXMuYXV0aE9iamVjdCA9IGF1dGhPYmplY3Q7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdDogYW55KTogYW55IHtcbiAgICBpZiAoIWF1dGhPYmplY3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXV0aE9iamVjdCBpcyByZXF1aXJlZC4gU2VlIHRoZSByZWFkbWUuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGlvbnMgPSBbXG4gICAgICB7IGtleTogJ2NsaWVudElkJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICB7IGtleTogJ2NsaWVudFNlY3JldCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzdWJEb21haW4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHJlZ2V4OiAvXlxcd3syOH0kL2dtLFxuICAgICAgICByZWdleE1lc3NhZ2U6ICdzdWJEb21haW4gbXVzdCBiZSBhIHN0cmluZyBvZiBsZW5ndGggMjgnLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgoeyBrZXksIHR5cGUsIHJlcXVpcmVkLCByZWdleCwgcmVnZXhNZXNzYWdlIH0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXV0aE9iamVjdFtrZXldO1xuICAgICAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBtaXNzaW5nIG9yIGludmFsaWRgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtrZXl9IG11c3QgYmUgYSAke3R5cGV9YCk7XG4gICAgICB9XG4gICAgICBpZiAocmVnZXggJiYgIXJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZWdleE1lc3NhZ2UgfHwgYCR7a2V5fSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgZm9ybWF0YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXV0aE9iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbi4gSWYgdGhlIHRva2VuIGlzIGV4cGlyZWQsIGl0IHdpbGwgZ2VuZXJhdGUgYSBuZXcgdG9rZW4uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEF1dGhPYmplY3Q+fSAgSXQgcmV0dXJucyB0aGUgYWNjZXNzIHRva2VuIG9yIGVycm9yXG4gICAqL1xuICBhc3luYyBnZXRBY2Nlc3NUb2tlbigpIHtcbiAgICBpZiAoaXNFeHBpcmVkKHRoaXMuYXV0aE9iamVjdCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFRva2VuKHRoaXMuYXV0aE9iamVjdCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGdlbmVyYXRlIHRva2VuLCB3aXRoIGVycm9yOiR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXV0aE9iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBmaWVsZHMgb2YgYSBkYXRhIGV4dGVuc2lvbi4gSXQgcmVxdWlyZXMgdGhlIGRhdGEgZXh0ZW5zaW9uIGlkLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGZpZWxkcyBvZiB0aGUgZGF0YSBleHRlbnNpb24uIElmIHRoZSBkYXRhIGV4dGVuc2lvbiBpcyBub3QgZm91bmQsIGl0IHJldHVybnMgYSBSZXN0RXJyb3IuXG4gICAqIEBwYXJhbSBkYXRhRXh0ZW5zaW9uSWQgSWQgb2YgdGhlIGRhdGEgZXh0ZW5zaW9uIHdob3NlIGZpZWxkcyBhcmUgdG8gYmUgZmV0Y2hlZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0RGVzdGluYXRpb25GaWVsZHMoZGF0YUV4dGVuc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPERhdGFFeHRlbnNpb25Cb2R5IHwgUmVzdEVycm9yPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3RIZWFkZXJzID0ge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7KGF3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKSkuYWNjZXNzX3Rva2VufWAsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGJhc2VVUkw6IGdldFVybCh0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWluKSxcbiAgICAgICAgdXJsOiBgL2RhdGEvdjEvY3VzdG9tb2JqZWN0cy8ke2RhdGFFeHRlbnNpb25JZH0vZmllbGRzYCxcbiAgICAgICAgaGVhZGVyczogcmVzdEhlYWRlcnMsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIHJldHVybiByZXNwLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgUmVzdEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZldGNoZXMgdGhlIGNvbnRhY3QgYXR0cmlidXRlcy4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjb250YWN0IGF0dHJpYnV0ZXMuIElmIHRoZSBjb250YWN0IGF0dHJpYnV0ZXMgYXJlIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldENvbnRhY3RBdHRyaWJ1dGVzKCk6IFByb21pc2U8Q29udGFjdEF0dHJpYnV0ZXNSZXNwb25zZSB8IFJlc3RFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN0SGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAkeyhhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbn1gLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBiYXNlVVJMOiBnZXRVcmwodGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbiksXG4gICAgICAgIHVybDogJy9jb250YWN0cy92MS9hdHRyaWJ1dGVTZXREZWZpbml0aW9ucycsXG4gICAgICAgIGhlYWRlcnM6IHJlc3RIZWFkZXJzLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICByZXR1cm4gcmVzcC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IFJlc3RFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgZGF0YSBleHRlbnNpb24uIEl0IHJlcXVpcmVzIHRoZSBkYXRhIGV4dGVuc2lvbiBmaWVsZHMuIFRoZSBtZXRob2QgcmV0dXJucyB0aGUgZGF0YSBleHRlbnNpb24gY3JlYXRlZC4gSWYgdGhlIGRhdGEgZXh0ZW5zaW9uIGlzIG5vdCBjcmVhdGVkLCBpdCByZXR1cm5zIGEgUmVzdEVycm9yLlxuICAgKiBAcGFyYW0gYm9keSBEYXRhRXh0ZW5zaW9uIGZpZWxkc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgY3JlYXRlRGF0YUV4dGVuc2lvbihcbiAgICBib2R5OiBEYXRhRXh0ZW5zaW9uQm9keSxcbiAgKTogUHJvbWlzZTxDcmVhdGVEYXRhRXh0ZW5zaW9uUmVzcG9uc2UgfCBSZXN0RXJyb3I+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdEhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHsoYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbigpKS5hY2Nlc3NfdG9rZW59YCxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJhc2VVUkw6IGdldFVybCh0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWluKSxcbiAgICAgICAgdXJsOiAnL2RhdGEvdjEvY3VzdG9tb2JqZWN0cycsXG4gICAgICAgIGhlYWRlcnM6IHJlc3RIZWFkZXJzLFxuICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICByZXR1cm4gcmVzcC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgUmVzdEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZldGNoZXMgdGhlIGJ1c2luZXNzIHVuaXRzLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGJ1c2luZXNzIHVuaXRzLiBJZiB0aGUgYnVzaW5lc3MgdW5pdHMgYXJlIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBhIFNvYXBFcnJvci5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldEJ1c2luZXNzVW5pdHMoKTogUHJvbWlzZTxCdXNpbmVzc1VuaXRbXSB8IFNvYXBFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IChhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbjtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYmFzZVVSTDogYGh0dHBzOi8vJHt0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWlufS5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb21gLFxuICAgICAgICB1cmw6ICcvU2VydmljZS5hc214JyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFNPQVBBY3Rpb246ICdSZXRyaWV2ZScsXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IGF3YWl0IHhtbEJ1aWxkZXIoJ0J1c2luZXNzVW5pdCcsIFsnbmFtZScsICdpZCddLCBhY2Nlc3NUb2tlbiksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBwYXJzZVhNTChyZXNwLmRhdGEpO1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VkRGF0YS5SZXRyaWV2ZVJlc3BvbnNlTXNnPy5SZXN1bHRzIGFzXG4gICAgICAgIHwgQnVzaW5lc3NVbml0UmVzcG9uc2VcbiAgICAgICAgfCBCdXNpbmVzc1VuaXRSZXNwb25zZVtdO1xuICAgICAgY29uc3QgYnVzaW5lc3NVbml0czogQnVzaW5lc3NVbml0W10gPSBbXTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgY29uc3QgY3JlYXRlQnVzaW5lc3NVbml0ID0gKHJlc3BvbnNlOiBCdXNpbmVzc1VuaXRSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgUGFydG5lclByb3BlcnRpZXMgfSA9IHJlc3BvbnNlO1xuICAgICAgICAgIGNvbnN0IGVudHJ5ID0ge30gYXMgQnVzaW5lc3NVbml0O1xuICAgICAgICAgIFBhcnRuZXJQcm9wZXJ0aWVzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcC5OYW1lKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgICAgICAgIGVudHJ5Lk5hbWUgPSBwcm9wLlZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnaWQnOlxuICAgICAgICAgICAgICAgIGVudHJ5LklEID0gcHJvcC5WYWx1ZSBhcyBudW1iZXI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcihgVW5rbm93biBwcm9wZXJ0eTogJHtwcm9wfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XG4gICAgICAgICAgcmVzLmZvckVhY2goKGVhY2hSZXMpID0+IHtcbiAgICAgICAgICAgIGJ1c2luZXNzVW5pdHMucHVzaChjcmVhdGVCdXNpbmVzc1VuaXQoZWFjaFJlcykpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1c2luZXNzVW5pdHMucHVzaChjcmVhdGVCdXNpbmVzc1VuaXQocmVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1c2luZXNzVW5pdHM7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgU29hcEVycm9yKCdObyBCdXNpbmVzcyBVbml0cyBmb3VuZCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBkYXRhIGZvbGRlcnMuIEl0IGJ1c2luZXNzIHVuaXQgaWQgaXMgcHJvdmlkZWQgYWxsIGRhdGEgZm9sZGVyIHVuZGVyIHRoYXQgYnVzaW5lc3MgaWQgd291bGQgYmUgcmV0cmlldmVkIG90aGVyd2lzZSBhbGwgdGhlIGRhdGEgZm9sZGVyIHdpbGwgYmUgcmV0cmlldmVkLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGRhdGEgZm9sZGVycy4gSWYgdGhlIGRhdGEgZm9sZGVycyBhcmUgbm90IGZvdW5kLCBpdCByZXR1cm5zIGEgU29hcEVycm9yLlxuICAgKiBAcGFyYW0gYnVzaW5lc3NVbml0SWQgdGhpcyBpcyB0aGUgaWQgb2YgdGhlIGJ1c2luZXNzIHVuaXRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldERhdGFGb2xkZXJzKGJ1c2luZXNzVW5pdElkPzogc3RyaW5nKTogUHJvbWlzZTxEYXRhRm9sZGVyW10gfCBTb2FwRXJyb3I+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAoYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbigpKS5hY2Nlc3NfdG9rZW47XG4gICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJhc2VVUkw6IGBodHRwczovLyR7dGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbn0uc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tYCxcbiAgICAgICAgdXJsOiAnL1NlcnZpY2UuYXNteCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBTT0FQQWN0aW9uOiAnUmV0cmlldmUnLFxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiBidXNpbmVzc1VuaXRJZFxuICAgICAgICAgID8gYXdhaXQgeG1sQnVpbGRlcihcbiAgICAgICAgICAgICAgJ0RhdGFGb2xkZXInLFxuICAgICAgICAgICAgICBbJ05hbWUnLCAnSUQnLCAnUGFyZW50Rm9sZGVyLklEJ10sXG4gICAgICAgICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICBwYXJzZUZpbHRlcih7IGxlZnRPcGVyYW5kOiAnQ2xpZW50LklEJywgcmlnaHRPcGVyYW5kOiBidXNpbmVzc1VuaXRJZCB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGF3YWl0IHhtbEJ1aWxkZXIoJ0RhdGFGb2xkZXInLCBbJ05hbWUnLCAnSUQnLCAnUGFyZW50Rm9sZGVyLklEJ10sIGFjY2Vzc1Rva2VuKSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgYXhpb3MocmVxdWVzdE9wdGlvbnMpO1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHBhcnNlWE1MKHJlc3AuZGF0YSk7XG4gICAgICBjb25zdCByZXMgPSBwYXJzZWREYXRhLlJldHJpZXZlUmVzcG9uc2VNc2c/LlJlc3VsdHMgYXMgRGF0YUZvbGRlciB8IERhdGFGb2xkZXJbXTtcbiAgICAgIGNvbnN0IGRhdGFGb2xkZXJzOiBEYXRhRm9sZGVyW10gPSBbXTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgIHJlcy5mb3JFYWNoKChlYWNoUmVzKSA9PiB7XG4gICAgICAgICAgICBkYXRhRm9sZGVycy5wdXNoKGVhY2hSZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFGb2xkZXJzLnB1c2gocmVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YUZvbGRlcnM7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgU29hcEVycm9yKCdObyBEYXRhIEZvbGRlciBmb3VuZCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhlIGRhdGEgZXh0ZW5zaW9ucy4gSXQgdGhlIGRhdGEgZm9sZGVyIGlkIGlzIHByb3ZpZGVkIGFsbCB0aGUgZGF0YSBleHRlbnNpb24gdW5kZXIgdGhhdCBkYXRhIGZvbGRlciB3aWxsIGJlIHJldHJpZXZlZCBvdGhlcndpc2UgYWxsIHRoZSBkYXRhIGV4dGVuc2lvbnMgdW5kZXIgdGhlIGFjY2VzcyB0b2tlbiB3aWxsIGJlIGZldGNoZWQuIFRoZSBtZXRob2QgcmV0dXJucyB0aGUgZGF0YSBleHRlbnNpb25zLiBJZiB0aGUgZGF0YSBleHRlbnNpb25zIGFyZSBub3QgZm91bmQsIGl0IHJldHVybnMgYSBTb2FwRXJyb3IuXG4gICAqIEBwYXJhbSBkYXRhRm9sZGVySWQgSWQgb2YgdGhlIGRhdGEgZm9sZGVyXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3luYyBnZXREYXRhRXh0ZW5zaW9ucyhkYXRhRm9sZGVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPERhdGFFeHRlbnNpb25bXSB8IFNvYXBFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IChhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbjtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYmFzZVVSTDogYGh0dHBzOi8vJHt0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWlufS5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb21gLFxuICAgICAgICB1cmw6ICcvU2VydmljZS5hc214JyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFNPQVBBY3Rpb246ICdSZXRyaWV2ZScsXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IGRhdGFGb2xkZXJJZFxuICAgICAgICAgID8gYXdhaXQgeG1sQnVpbGRlcihcbiAgICAgICAgICAgICAgJ0RhdGFFeHRlbnNpb24nLFxuICAgICAgICAgICAgICBbJ05BTUUnLCAnT2JqZWN0SWQnLCAnQ2F0ZWdvcnlJZCddLFxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgcGFyc2VGaWx0ZXIoeyBsZWZ0T3BlcmFuZDogJ0NhdGVnb3J5SWQnLCByaWdodE9wZXJhbmQ6IGRhdGFGb2xkZXJJZCB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGF3YWl0IHhtbEJ1aWxkZXIoJ0RhdGFFeHRlbnNpb24nLCBbJ05BTUUnLCAnT2JqZWN0SWQnLCAnQ2F0ZWdvcnlJZCddLCBhY2Nlc3NUb2tlbiksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBwYXJzZVhNTChyZXNwLmRhdGEpO1xuICAgICAgY29uc3QgcmVzID0gcGFyc2VkRGF0YS5SZXRyaWV2ZVJlc3BvbnNlTXNnPy5SZXN1bHRzIGFzXG4gICAgICAgIHwgRGF0YUV4dGVuc2lvblJlc3BvbnNlXG4gICAgICAgIHwgRGF0YUV4dGVuc2lvblJlc3BvbnNlW107XG4gICAgICBjb25zdCBkYXRhRXh0ZW5zaW9uczogRGF0YUV4dGVuc2lvbltdID0gW107XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICByZXMuZm9yRWFjaCgoZWFjaFJlcykgPT4ge1xuICAgICAgICAgICAgZGF0YUV4dGVuc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgIE9iamVjdElkOiBlYWNoUmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzBdLlZhbHVlLFxuICAgICAgICAgICAgICBOYW1lOiBlYWNoUmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzFdLlZhbHVlLFxuICAgICAgICAgICAgICBDYXRlZ29yeUlkOiBlYWNoUmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzJdLlZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YUV4dGVuc2lvbnMucHVzaCh7XG4gICAgICAgICAgICBPYmplY3RJZDogcmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzBdLlZhbHVlLFxuICAgICAgICAgICAgTmFtZTogcmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzFdLlZhbHVlLFxuICAgICAgICAgICAgQ2F0ZWdvcnlJZDogcmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzJdLlZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhRXh0ZW5zaW9ucztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBTb2FwRXJyb3IoJ05vIERhdGEgRXh0ZW5zaW9uIGZvdW5kJyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgU29hcEVycm9yKGVycik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -463,8 +463,8 @@ describe('sfmc', () => {
|
|
|
463
463
|
expect(utils.isExpired).toHaveBeenCalledWith(validAuthObject);
|
|
464
464
|
expect(requestTokenSpy).not.toHaveBeenCalled();
|
|
465
465
|
expect(result).toStrictEqual([
|
|
466
|
-
{
|
|
467
|
-
{
|
|
466
|
+
{ Name: 'Lansdowne Stadium LP', ID: 534003210 },
|
|
467
|
+
{ Name: 'Lansdowne Stadium LP', ID: 534003210 },
|
|
468
468
|
]);
|
|
469
469
|
});
|
|
470
470
|
it('should handle failure scenario', async () => {
|
|
@@ -748,4 +748,4 @@ describe('sfmc', () => {
|
|
|
748
748
|
});
|
|
749
749
|
});
|
|
750
750
|
});
|
|
751
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL3NmbWMvaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiw0RUFBa0Q7QUFDbEQseUNBQXFCO0FBQ3JCLCtDQUFpQztBQUVqQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUNwQixRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyw2REFBNkQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMzRSxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILDBEQUEwRDtRQUMxRCxFQUFFLENBQUMsbURBQW1ELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakUsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjthQUMxQyxDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQUc7Z0JBQ3BCLEdBQUcsZUFBZTtnQkFDbEIsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLFVBQVUsRUFBRSxLQUFLO2FBQ2xCLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsa0VBQWtFO1lBQ2xFLE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywyRUFBMkUsQ0FBQztpQkFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMseURBQXlELEVBQUUsR0FBRyxFQUFFO1lBQ2pFLE1BQU0saUJBQWlCLEdBQUc7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsTUFBTTthQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDO2dCQUNILE1BQU0sWUFBWSxHQUFHLElBQUksVUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2pELFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekUsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjthQUMxQyxDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQUc7Z0JBQ3BCLEdBQUcsZUFBZTtnQkFDbEIsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLFVBQVUsRUFBRSxLQUFLO2FBQ2xCLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLFdBQVc7aUJBQ1IsTUFBTSxDQUFDLDJFQUEyRSxDQUFDO2lCQUNuRixLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2pGLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7YUFDMUMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO1lBRXhDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsV0FBVztpQkFDUixNQUFNLENBQUMsMkVBQTJFLENBQUM7aUJBQ25GLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDZixJQUFJLEtBQUssQ0FDUCxpRkFBaUYsQ0FDbEYsQ0FDRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNuRCxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sYUFBYSxHQUFHO2dCQUNwQixJQUFJLEVBQUUsU0FBUztnQkFDZixVQUFVLEVBQUUsT0FBTztnQkFDbkIsTUFBTSxFQUFFO29CQUNOO3dCQUNFLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxNQUFNO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLFdBQVc7aUJBQ1IsS0FBSyxDQUNKLDBHQUEwRyxDQUMzRztpQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25FLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLEtBQUssQ0FDSiwwR0FBMEcsQ0FDM0c7aUJBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDVixhQUFhLEVBQ1gsMkZBQTJGO2dCQUM3RixTQUFTLEVBQUUsQ0FBQztnQkFDWixPQUFPLEVBQUUsZ0JBQWdCO2FBQzFCLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7UUFDcEMsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hELE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxhQUFhLEdBQUc7Z0JBQ3BCLElBQUksRUFBRTtvQkFDSixLQUFLLEVBQUU7d0JBQ0w7NEJBQ0UsVUFBVSxFQUFFLElBQUk7NEJBQ2hCLFVBQVUsRUFBRTtnQ0FDVjtvQ0FDRSxVQUFVLEVBQUUsSUFBSTtvQ0FDaEIsa0JBQWtCLEVBQUUsV0FBVztvQ0FDL0IsUUFBUSxFQUFFLFFBQVE7aUNBQ25COzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLFdBQVc7aUJBQ1IsS0FBSyxDQUNKLHNHQUFzRyxDQUN2RztpQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM5QyxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLFdBQVc7aUJBQ1IsS0FBSyxDQUNKLHNHQUFzRyxDQUN2RztpQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLGFBQWEsRUFDWCwyRkFBMkY7Z0JBQzdGLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE9BQU8sRUFBRSxnQkFBZ0I7YUFDMUIsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNoRCxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sYUFBYSxHQUFHO2dCQUNwQixFQUFFLEVBQUUsc0NBQXNDO2dCQUMxQyxJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixHQUFHLEVBQUUsd0JBQXdCO2dCQUM3QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsS0FBSztnQkFDakIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLE1BQU0sRUFBRSxDQUFDO2dCQUNULFVBQVUsRUFBRSxLQUFLO2dCQUNqQixPQUFPLEVBQUUsU0FBUztnQkFDbEIsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsc0JBQXNCLEVBQUUsSUFBSTtnQkFDNUIsMEJBQTBCLEVBQUUsSUFBSTtnQkFDaEMsV0FBVyxFQUFFLG1DQUFtQztnQkFDaEQsV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLFlBQVksRUFBRSxtQ0FBbUM7Z0JBQ2pELFlBQVksRUFBRSxTQUFTO2dCQUN2QixTQUFTLEVBQUUsaUNBQWlDO2dCQUM1QyxRQUFRLEVBQUUsQ0FBQztnQkFDWCx1QkFBdUIsRUFBRTtvQkFDdkIsOEJBQThCLEVBQUUsSUFBSTtvQkFDcEMsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsOEJBQThCLEVBQUUsS0FBSztvQkFDckMsaUJBQWlCLEVBQUUsVUFBVTtpQkFDOUI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLEVBQUUsRUFBRSxzQ0FBc0M7d0JBQzFDLElBQUksRUFBRSxNQUFNO3dCQUNaLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixXQUFXLEVBQUUsT0FBTzt3QkFDcEIsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsT0FBTyxFQUFFLENBQUM7d0JBQ1YsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxJQUFJO3dCQUNsQixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsYUFBYSxFQUFFLEtBQUs7d0JBQ3BCLGFBQWEsRUFBRSxJQUFJO3dCQUNuQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCO29CQUNEO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLEVBQUUsRUFBRSxzQ0FBc0M7d0JBQzFDLElBQUksRUFBRSxjQUFjO3dCQUNwQixRQUFRLEVBQUUsTUFBTTt3QkFDaEIsV0FBVyxFQUFFLE9BQU87d0JBQ3BCLE1BQU0sRUFBRSxHQUFHO3dCQUNYLE9BQU8sRUFBRSxDQUFDO3dCQUNWLFVBQVUsRUFBRSxJQUFJO3dCQUNoQixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsZUFBZSxFQUFFLEtBQUs7d0JBQ3RCLGFBQWEsRUFBRSxLQUFLO3dCQUNwQixhQUFhLEVBQUUsSUFBSTt3QkFDbkIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxLQUFLO3FCQUNwQjtpQkFDRjtnQkFDRCxVQUFVLEVBQUUsQ0FBQzthQUNkLENBQUM7WUFDRixXQUFXO2lCQUNSLE1BQU0sQ0FDTCx3RkFBd0YsQ0FDekY7aUJBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLHVCQUF1QixFQUFFO29CQUN2Qiw4QkFBOEIsRUFBRSxJQUFJO29CQUNwQyxtQkFBbUIsRUFBRSxLQUFLO29CQUMxQiw4QkFBOEIsRUFBRSxLQUFLO2lCQUN0QztnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLE1BQU07d0JBQ1osTUFBTSxFQUFFLEdBQUc7d0JBQ1gsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxJQUFJO3dCQUNsQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsYUFBYSxFQUFFLElBQUk7d0JBQ25CLGVBQWUsRUFBRSxLQUFLO3dCQUN0QixhQUFhLEVBQUUsS0FBSzt3QkFDcEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLE9BQU8sRUFBRSxDQUFDO3FCQUNYO29CQUNEO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxjQUFjO3dCQUNwQixNQUFNLEVBQUUsR0FBRzt3QkFDWCxVQUFVLEVBQUUsSUFBSTt3QkFDaEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxLQUFLO3dCQUNmLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixhQUFhLEVBQUUsSUFBSTt3QkFDbkIsZUFBZSxFQUFFLEtBQUs7d0JBQ3RCLGFBQWEsRUFBRSxLQUFLO3dCQUNwQixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsT0FBTyxFQUFFLENBQUM7cUJBQ1g7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzlDLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsV0FBVztpQkFDUixNQUFNLENBQ0wsd0ZBQXdGLENBQ3pGO2lCQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsYUFBYSxFQUNYLDJGQUEyRjtnQkFDN0YsU0FBUyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLGdCQUFnQjthQUMxQixDQUFDLENBQUM7WUFDTCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxPQUFPO29CQUNuQixNQUFNLEVBQUU7d0JBQ047NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLE1BQU07NEJBQ1osTUFBTSxFQUFFLEdBQUc7NEJBQ1gsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLFlBQVksRUFBRSxJQUFJOzRCQUNsQixRQUFRLEVBQUUsS0FBSzs0QkFDZixVQUFVLEVBQUUsS0FBSzs0QkFDakIsYUFBYSxFQUFFLElBQUk7NEJBQ25CLGVBQWUsRUFBRSxLQUFLOzRCQUN0QixhQUFhLEVBQUUsS0FBSzs0QkFDcEIsWUFBWSxFQUFFLEtBQUs7NEJBQ25CLE9BQU8sRUFBRSxDQUFDO3lCQUNYO3FCQUNGO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUNoQyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakQsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixNQUFNLGFBQWEsR0FBRyw2ekRBQTZ6RCxDQUFDO1lBQ3AxRCxXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQy9DLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7YUFDaEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUNKLEdBQUcsRUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQXFCTyxDQUNSLENBQUM7WUFDSixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQy9DLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxhQUFhLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBaURILENBQUM7WUFDcEIsV0FBVztpQkFDUixNQUFNLENBQUMsK0VBQStFLENBQUM7aUJBQ3ZGLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDM0I7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLEVBQUUsRUFBRSxTQUFTO3FCQUNkO29CQUNELFdBQVcsRUFBRSxPQUFPO29CQUNwQixXQUFXLEVBQUUsRUFBRTtvQkFDZixFQUFFLEVBQUUsS0FBSztvQkFDVCxJQUFJLEVBQUUsV0FBVztvQkFDakIsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLEVBQUUsRUFBRSxTQUFTO3FCQUNkO29CQUNELFdBQVcsRUFBRSxpQkFBaUI7b0JBQzlCLFdBQVcsRUFBRSxFQUFFO29CQUNmLEVBQUUsRUFBRSxLQUFLO29CQUNULElBQUksRUFBRSx5QkFBeUI7b0JBQy9CLFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUNKLEdBQUcsRUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQXFCaUIsQ0FDbEIsQ0FBQztZQUNKLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2xELE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxhQUFhLEdBQUcsZ2pHQUFnakcsQ0FBQztZQUN2a0csV0FBVztpQkFDUixNQUFNLENBQUMsK0VBQStFLENBQUM7aUJBQ3ZGLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNyRSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUMzQjtvQkFDRSxVQUFVLEVBQUUsS0FBSztvQkFDakIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsUUFBUSxFQUFFLHNDQUFzQztpQkFDakQ7Z0JBQ0Q7b0JBQ0UsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLFFBQVEsRUFBRSxzQ0FBc0M7aUJBQ2pEO2dCQUNEO29CQUNFLFVBQVUsRUFBRSxLQUFLO29CQUNqQixJQUFJLEVBQUUsMEJBQTBCO29CQUNoQyxRQUFRLEVBQUUsc0NBQXNDO2lCQUNqRDtnQkFDRDtvQkFDRSxVQUFVLEVBQUUsS0FBSztvQkFDakIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsUUFBUSxFQUFFLHNDQUFzQztpQkFDakQ7Z0JBQ0Q7b0JBQ0UsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLElBQUksRUFBRSx3QkFBd0I7b0JBQzlCLFFBQVEsRUFBRSxzQ0FBc0M7aUJBQ2pEO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUNKLEdBQUcsRUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQXFCaUIsQ0FDbEIsQ0FBQztZQUNKLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEF4aW9zTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJztcbmltcG9ydCBTRk1DIGZyb20gJy4nO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmRlc2NyaWJlKCdzZm1jJywgKCkgPT4ge1xuICBkZXNjcmliZSgnZ2V0QWNjZXNzVG9rZW4nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZXhpc3RpbmcgYXV0aE9iamVjdCB3aGVuIHRva2VuIGlzIG5vdCBleHBpcmVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgc2ZtY0NsaWVudC5hdXRoT2JqZWN0ID0gdmFsaWRBdXRoT2JqZWN0O1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QodXRpbHMuaXNFeHBpcmVkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgZXhwZWN0KHJlcXVlc3RUb2tlblNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgICAvLyBIYW5kbGVzIGNhc2Ugd2hlbiBhdXRoT2JqZWN0IGlzIGluaXRpYWxseSBlbXB0eSBvciBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXF1ZXN0IG5ldyB0b2tlbiB3aGVuIGF1dGhPYmplY3QgaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbXB0eUF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbmV3QXV0aE9iamVjdCA9IHtcbiAgICAgICAgLi4uZW1wdHlBdXRoT2JqZWN0LFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICduZXctdG9rZW4nLFxuICAgICAgICBleHBpcmVzX2luOiAxMjM0NSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyhlbXB0eUF1dGhPYmplY3QpO1xuICAgICAgc2ZtY0NsaWVudC5hdXRoT2JqZWN0ID0gZW1wdHlBdXRoT2JqZWN0O1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKHRydWUpO1xuICAgICAgLy8gamVzdC5zcHlPbihheGlvcywgJ2dldFRva2VuJykubW9ja1Jlc29sdmVkVmFsdWUobmV3QXV0aE9iamVjdCk7XG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5hdXRoLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vdjIvdG9rZW4nKVxuICAgICAgICAucmVwbHkoMjAwLCBuZXdBdXRoT2JqZWN0KTtcbiAgICAgIGplc3Quc3B5T24ocHJvY2VzcywgJ2hydGltZScpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBbMCwgMF0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IC4uLm5ld0F1dGhPYmplY3QsIGV4cGlyYXRpb246IDEyMzQ1IH0pO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdCh1dGlscy5nZXRUb2tlbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gYXV0aE9iamVjdCBoYXMgaW52YWxpZCBjbGllbnRJZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGludmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogbnVsbCxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICd0ZXN0JyxcbiAgICAgIH07XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzZm1jSW5zdGFuY2UgPSBuZXcgU0ZNQyhpbnZhbGlkQXV0aE9iamVjdCk7XG4gICAgICAgIHNmbWNJbnN0YW5jZS5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChuZXcgRXJyb3IoJ2NsaWVudElkIGlzIG1pc3Npbmcgb3IgaW52YWxpZCcpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjb25jdXJyZW50IHRva2VuIHJlZnJlc2ggcmVxdWVzdHMgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW1wdHlBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5ld0F1dGhPYmplY3QgPSB7XG4gICAgICAgIC4uLmVtcHR5QXV0aE9iamVjdCxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAnbmV3LXRva2VuJyxcbiAgICAgICAgZXhwaXJlc19pbjogMTIzNDUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUMoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICAgIHNmbWNDbGllbnQuYXV0aE9iamVjdCA9IGVtcHR5QXV0aE9iamVjdDtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZSh0cnVlKTtcbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uUG9zdCgnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLmF1dGgubWFya2V0aW5nY2xvdWRhcGlzLmNvbS92Mi90b2tlbicpXG4gICAgICAgIC5yZXBseSgyMDAsIG5ld0F1dGhPYmplY3QpO1xuICAgICAgamVzdC5zcHlPbihwcm9jZXNzLCAnaHJ0aW1lJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFswLCAwXSk7XG4gICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICByZXN1bHQgPSBhd2FpdCBzZm1jQ2xpZW50LmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgLi4ubmV3QXV0aE9iamVjdCwgZXhwaXJhdGlvbjogMTIzNDUgfSk7XG4gICAgICBleHBlY3QodXRpbHMuaXNFeHBpcmVkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChlbXB0eUF1dGhPYmplY3QpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdpdGggb3JpZ2luYWwgbWVzc2FnZSB3aGVuIHRva2VuIHJlcXVlc3QgZmFpbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbXB0eUF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKGVtcHR5QXV0aE9iamVjdCk7XG4gICAgICBzZm1jQ2xpZW50LmF1dGhPYmplY3QgPSBlbXB0eUF1dGhPYmplY3Q7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUodHJ1ZSk7XG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5hdXRoLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vdjIvdG9rZW4nKVxuICAgICAgICAucmVwbHkoNDAwLCBuZXcgRXJyb3IoJ0JhZCBSZXF1ZXN0JykpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnVW5hYmxlIHRvIGdlbmVyYXRlIHRva2VuLCB3aXRoIGVycm9yOkVycm9yOiBSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDQwMCcsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdnZXREZXN0aW5hdGlvbkZpZWxkcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBkYXRhIGV4dGVuc2lvbiBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IHtcbiAgICAgICAgbmFtZTogJ1Rlc3QgREUnLFxuICAgICAgICBjYXRlZ29yeUlEOiAnMTIzNDUnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZmllbGQxJyxcbiAgICAgICAgICAgIHR5cGU6ICdUZXh0JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vbkdldChcbiAgICAgICAgICAnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnJlc3QubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9kYXRhL3YxL2N1c3RvbW9iamVjdHMvdGVzdC1kZS1pZC9maWVsZHMnLFxuICAgICAgICApXG4gICAgICAgIC5yZXBseSgyMDAsIHZhbGlkUmVzcG9uc2UpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXREZXN0aW5hdGlvbkZpZWxkcygndGVzdC1kZS1pZCcpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHZhbGlkUmVzcG9uc2UpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmUgc2NlbmFyaW8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uR2V0KFxuICAgICAgICAgICdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEucmVzdC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL2RhdGEvdjEvY3VzdG9tb2JqZWN0cy90ZXN0LWRlLWlkL2ZpZWxkcycsXG4gICAgICAgIClcbiAgICAgICAgLnJlcGx5KDQwMSwge1xuICAgICAgICAgIGRvY3VtZW50YXRpb246XG4gICAgICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXIuc2FsZXNmb3JjZS5jb20vZG9jcy9hdGxhcy5lbi11cy5tYy1hcGlzLm1ldGEvbWMtYXBpcy9lcnJvci1oYW5kbGluZy5odG0nLFxuICAgICAgICAgIGVycm9yY29kZTogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnTm90IEF1dGhvcml6ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0RGVzdGluYXRpb25GaWVsZHMoJ3Rlc3QtZGUtaWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhwZWN0KGUpLnRvRXF1YWwobmV3IEVycm9yKCdOb3QgQXV0aG9yaXplZCcpKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2dldENvbnRhY3RBdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbnRhY3QgYXR0cmlidXRlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgY2xpZW50SWQ6ICd0ZXN0LWNsaWVudCcsXG4gICAgICAgIGNsaWVudFNlY3JldDogJ3Rlc3Qtc2VjcmV0JyxcbiAgICAgICAgc3ViRG9tYWluOiAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMScsXG4gICAgICAgIGFjY2Vzc190b2tlbjogJ3ZhbGlkLXRva2VuJyxcbiAgICAgICAgZXhwaXJhdGlvbjogcHJvY2Vzcy5ocnRpbWUoKVswXSArIDM2MDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUModmFsaWRBdXRoT2JqZWN0KTtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICBjb25zdCByZXF1ZXN0VG9rZW5TcHkgPSBqZXN0LnNweU9uKHV0aWxzLCAnZ2V0VG9rZW4nKTtcblxuICAgICAgY29uc3QgbW9ja0FkYXB0ZXIgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gICAgICBjb25zdCB2YWxpZFJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNSZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlzUmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6ICd0ZXN0Lm5hbWUnLFxuICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uR2V0KFxuICAgICAgICAgICdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEucmVzdC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL2NvbnRhY3RzL3YxL2F0dHJpYnV0ZVNldERlZmluaXRpb25zJyxcbiAgICAgICAgKVxuICAgICAgICAucmVwbHkoMjAwLCB2YWxpZFJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNmbWNDbGllbnQuZ2V0Q29udGFjdEF0dHJpYnV0ZXMoKTtcbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh2YWxpZFJlc3BvbnNlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vbkdldChcbiAgICAgICAgICAnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnJlc3QubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9jb250YWN0cy92MS9hdHRyaWJ1dGVTZXREZWZpbml0aW9ucycsXG4gICAgICAgIClcbiAgICAgICAgLnJlcGx5KDQwMSwge1xuICAgICAgICAgIGRvY3VtZW50YXRpb246XG4gICAgICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXIuc2FsZXNmb3JjZS5jb20vZG9jcy9hdGxhcy5lbi11cy5tYy1hcGlzLm1ldGEvbWMtYXBpcy9lcnJvci1oYW5kbGluZy5odG0nLFxuICAgICAgICAgIGVycm9yY29kZTogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnTm90IEF1dGhvcml6ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0Q29udGFjdEF0dHJpYnV0ZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhwZWN0KGUpLnRvRXF1YWwobmV3IEVycm9yKCdOb3QgQXV0aG9yaXplZCcpKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2NyZWF0ZURhdGFFeHRlbnNpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgbmV3IGRhdGEgZXh0ZW5zaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIGNvbnN0IHZhbGlkUmVzcG9uc2UgPSB7XG4gICAgICAgIGlkOiAnNGJhZjRjZjEtOGNjOS1lZjExLWJhNmUtZjQwMzQzZDM4MGM4JyxcbiAgICAgICAgbmFtZTogJ3J1ZGRlcnN0YWNrVGVzdGluZzAyOTUnLFxuICAgICAgICBrZXk6ICdydWRkZXJzdGFja1Rlc3RpbmcwMjk1JyxcbiAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgIGlzU2VuZGFibGU6IGZhbHNlLFxuICAgICAgICBpc1Rlc3RhYmxlOiBmYWxzZSxcbiAgICAgICAgc3RhdHVzOiAwLFxuICAgICAgICBjYXRlZ29yeUlkOiAxMjM0NSxcbiAgICAgICAgb3duZXJJZDogNzM1NDQ0NTMxLFxuICAgICAgICBpc09iamVjdERlbGV0YWJsZTogdHJ1ZSxcbiAgICAgICAgaXNGaWVsZEFkZGl0aW9uQWxsb3dlZDogdHJ1ZSxcbiAgICAgICAgaXNGaWVsZE1vZGlmaWNhdGlvbkFsbG93ZWQ6IHRydWUsXG4gICAgICAgIGNyZWF0ZWREYXRlOiAnMjAyNS0wMS0wMlQyMjo0MToxMi41MDE4NDE1LTA2OjAwJyxcbiAgICAgICAgY3JlYXRlZEJ5SWQ6IDczNTQ0NDUzMSxcbiAgICAgICAgbW9kaWZpZWREYXRlOiAnMjAyNS0wMS0wMlQyMjo0MToxMi41MDE4NDE1LTA2OjAwJyxcbiAgICAgICAgbW9kaWZpZWRCeUlkOiA3MzU0NDQ1MzEsXG4gICAgICAgIG93bmVyTmFtZTogJ1J1ZGRlcnN0YWNrSW50ZWdyYXRpb24gYXBwIHVzZXInLFxuICAgICAgICByb3dDb3VudDogMCxcbiAgICAgICAgZGF0YVJldGVudGlvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICBpc0RlbGV0ZUF0RW5kT2ZSZXRlbnRpb25QZXJpb2Q6IHRydWUsXG4gICAgICAgICAgaXNSb3dCYXNlZFJldGVudGlvbjogZmFsc2UsXG4gICAgICAgICAgaXNSZXNldFJldGVudGlvblBlcmlvZE9uSW1wb3J0OiBmYWxzZSxcbiAgICAgICAgICByb3dCYXNlZFRocmVzaG9sZDogMTAwMDAwMDAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2tleTEnLFxuICAgICAgICAgICAgaWQ6ICczMDBiYTIzMy1iN2UwLTQ3MzItYmE4NS0xYmMwMTIwOGZjMWInLFxuICAgICAgICAgICAgdHlwZTogJ1RleHQnLFxuICAgICAgICAgICAgbWFza1R5cGU6ICdOb25lJyxcbiAgICAgICAgICAgIHN0b3JhZ2VUeXBlOiAnUGxhaW4nLFxuICAgICAgICAgICAgbGVuZ3RoOiAyNTQsXG4gICAgICAgICAgICBvcmRpbmFsOiAwLFxuICAgICAgICAgICAgaXNOdWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByaW1hcnlLZXk6IHRydWUsXG4gICAgICAgICAgICBpc1RlbXBsYXRlRmllbGQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNJbmhlcml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpc092ZXJyaWRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaXNIaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgaXNSZWFkT25seTogZmFsc2UsXG4gICAgICAgICAgICBtdXN0T3ZlcnJpZGU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2tleTInLFxuICAgICAgICAgICAgaWQ6ICc3NWEzOGY5OC1lODY1LTQzY2UtOTcwMi01YjMxN2JhMjlkOTInLFxuICAgICAgICAgICAgdHlwZTogJ0VtYWlsQWRkcmVzcycsXG4gICAgICAgICAgICBtYXNrVHlwZTogJ05vbmUnLFxuICAgICAgICAgICAgc3RvcmFnZVR5cGU6ICdQbGFpbicsXG4gICAgICAgICAgICBsZW5ndGg6IDI1NCxcbiAgICAgICAgICAgIG9yZGluYWw6IDAsXG4gICAgICAgICAgICBpc051bGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaXNQcmltYXJ5S2V5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzVGVtcGxhdGVGaWVsZDogZmFsc2UsXG4gICAgICAgICAgICBpc0luaGVyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzT3ZlcnJpZGFibGU6IHRydWUsXG4gICAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBpc1JlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICAgIG11c3RPdmVycmlkZTogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmllbGRDb3VudDogMixcbiAgICAgIH07XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEucmVzdC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL2RhdGEvdjEvY3VzdG9tb2JqZWN0cycsXG4gICAgICAgIClcbiAgICAgICAgLnJlcGx5KDIwMCwgdmFsaWRSZXNwb25zZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZm1jQ2xpZW50LmNyZWF0ZURhdGFFeHRlbnNpb24oe1xuICAgICAgICBuYW1lOiAndGVzdC1kZScsXG4gICAgICAgIGNhdGVnb3J5SUQ6ICcxMjM0NScsXG4gICAgICAgIGRhdGFSZXRlbnRpb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgaXNEZWxldGVBdEVuZE9mUmV0ZW50aW9uUGVyaW9kOiB0cnVlLFxuICAgICAgICAgIGlzUm93QmFzZWRSZXRlbnRpb246IGZhbHNlLFxuICAgICAgICAgIGlzUmVzZXRSZXRlbnRpb25QZXJpb2RPbkltcG9ydDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXkxJyxcbiAgICAgICAgICAgIHR5cGU6ICdUZXh0JyxcbiAgICAgICAgICAgIGxlbmd0aDogMjU0LFxuICAgICAgICAgICAgaXNOdWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByaW1hcnlLZXk6IHRydWUsXG4gICAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBpc1JlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzT3ZlcnJpZGFibGU6IHRydWUsXG4gICAgICAgICAgICBpc1RlbXBsYXRlRmllbGQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNJbmhlcml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBtdXN0T3ZlcnJpZGU6IGZhbHNlLFxuICAgICAgICAgICAgb3JkaW5hbDogMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXkyJyxcbiAgICAgICAgICAgIHR5cGU6ICdFbWFpbEFkZHJlc3MnLFxuICAgICAgICAgICAgbGVuZ3RoOiAyNTQsXG4gICAgICAgICAgICBpc051bGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaXNQcmltYXJ5S2V5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzSGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGlzUmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgaXNPdmVycmlkYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGVtcGxhdGVGaWVsZDogZmFsc2UsXG4gICAgICAgICAgICBpc0luaGVyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG11c3RPdmVycmlkZTogZmFsc2UsXG4gICAgICAgICAgICBvcmRpbmFsOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh2YWxpZFJlc3BvbnNlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5yZXN0Lm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vZGF0YS92MS9jdXN0b21vYmplY3RzJyxcbiAgICAgICAgKVxuICAgICAgICAucmVwbHkoNDAxLCB7XG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjpcbiAgICAgICAgICAgICdodHRwczovL2RldmVsb3Blci5zYWxlc2ZvcmNlLmNvbS9kb2NzL2F0bGFzLmVuLXVzLm1jLWFwaXMubWV0YS9tYy1hcGlzL2Vycm9yLWhhbmRsaW5nLmh0bScsXG4gICAgICAgICAgZXJyb3Jjb2RlOiAwLFxuICAgICAgICAgIG1lc3NhZ2U6ICdOb3QgQXV0aG9yaXplZCcsXG4gICAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2ZtY0NsaWVudC5jcmVhdGVEYXRhRXh0ZW5zaW9uKHtcbiAgICAgICAgICBuYW1lOiAndGVzdC1kZScsXG4gICAgICAgICAgY2F0ZWdvcnlJRDogJzEyMzQ1JyxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2tleTEnLFxuICAgICAgICAgICAgICB0eXBlOiAnVGV4dCcsXG4gICAgICAgICAgICAgIGxlbmd0aDogMjU0LFxuICAgICAgICAgICAgICBpc051bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaXNQcmltYXJ5S2V5OiB0cnVlLFxuICAgICAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgIGlzUmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgICBpc092ZXJyaWRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBpc1RlbXBsYXRlRmllbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0luaGVyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbXVzdE92ZXJyaWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgb3JkaW5hbDogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4cGVjdChlKS50b0VxdWFsKG5ldyBFcnJvcignTm90IEF1dGhvcml6ZWQnKSk7XG4gICAgICB9XG4gICAgICBleHBlY3QodXRpbHMuaXNFeHBpcmVkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgZXhwZWN0KHJlcXVlc3RUb2tlblNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdnZXRCdXNpbmVzc1VuaXRzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2V0IGFsbCB0aGUgYnVzaW5lc3MgdW5pdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIHhtbG5zOnhzZD1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hXCIgeG1sbnM6d3NhPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCIgeG1sbnM6d3NzZT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiIHhtbG5zOndzdT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS11dGlsaXR5LTEuMC54c2RcIj48c29hcDpIZWFkZXI+PHdzYTpBY3Rpb24+UmV0cmlldmVSZXNwb25zZTwvd3NhOkFjdGlvbj48d3NhOk1lc3NhZ2VJRD51cm46dXVpZDowYmVkNjAyYi02M2M0LTRiYjQtOTU4Mi0yYjI3YzhmMmIxZGE8L3dzYTpNZXNzYWdlSUQ+PHdzYTpSZWxhdGVzVG8+dXJuOnV1aWQ6NDVkY2MyNTEtYTAzNy00MTcyLTk5Y2UtNjY2YTZiM2I4NzJjPC93c2E6UmVsYXRlc1RvPjx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+PHdzc2U6U2VjdXJpdHk+PHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLWQwMzA4YWUyLTRhZGYtNDU3OC04ZDg1LWZhYTcyMGE5NjZjZVwiPjx3c3U6Q3JlYXRlZD4yMDI1LTAxLTA5VDA1OjUwOjEwWjwvd3N1OkNyZWF0ZWQ+PHdzdTpFeHBpcmVzPjIwMjUtMDEtMDlUMDU6NTU6MTBaPC93c3U6RXhwaXJlcz48L3dzdTpUaW1lc3RhbXA+PC93c3NlOlNlY3VyaXR5Pjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48UmV0cmlldmVSZXNwb25zZU1zZyB4bWxucz1cImh0dHA6Ly9leGFjdHRhcmdldC5jb20vd3NkbC9wYXJ0bmVyQVBJXCI+PE92ZXJhbGxTdGF0dXM+T0s8L092ZXJhbGxTdGF0dXM+PFJlcXVlc3RJRD5hYjk0N2NhYS0zNGJkLTRlNWItODRjMS01NGFiMWU2MzNhNmY8L1JlcXVlc3RJRD48UmVzdWx0cyB4c2k6dHlwZT1cIkJ1c2luZXNzVW5pdFwiPjxQYXJ0bmVyS2V5IHhzaTpuaWw9XCJ0cnVlXCIgLz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+aWQ8L05hbWU+PFZhbHVlPjUzNDAwMzIxMDwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+bmFtZTwvTmFtZT48VmFsdWU+TGFuc2Rvd25lIFN0YWRpdW0gTFA8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PE9iamVjdElEIHhzaTpuaWw9XCJ0cnVlXCIgLz48QWNjb3VudFR5cGU+Tm9uZTwvQWNjb3VudFR5cGU+PFN1YnNjcmlwdGlvbiB4c2k6bmlsPVwidHJ1ZVwiIC8+PC9SZXN1bHRzPjxSZXN1bHRzIHhzaTp0eXBlPVwiQnVzaW5lc3NVbml0XCI+PFBhcnRuZXJLZXkgeHNpOm5pbD1cInRydWVcIiAvPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5pZDwvTmFtZT48VmFsdWU+NTM0MDAzMjEwPC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5uYW1lPC9OYW1lPjxWYWx1ZT5MYW5zZG93bmUgU3RhZGl1bSBMUDwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48T2JqZWN0SUQgeHNpOm5pbD1cInRydWVcIiAvPjxBY2NvdW50VHlwZT5Ob25lPC9BY2NvdW50VHlwZT48U3Vic2NyaXB0aW9uIHhzaTpuaWw9XCJ0cnVlXCIgLz48L1Jlc3VsdHM+PC9SZXRyaWV2ZVJlc3BvbnNlTXNnPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT5gO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uUG9zdCgnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9TZXJ2aWNlLmFzbXgnKVxuICAgICAgICAucmVwbHkoMjAwLCB2YWxpZFJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNmbWNDbGllbnQuZ2V0QnVzaW5lc3NVbml0cygpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKFtcbiAgICAgICAgeyBJRDogJ0xhbnNkb3duZSBTdGFkaXVtIExQJywgTmFtZTogNTM0MDAzMjEwIH0sXG4gICAgICAgIHsgSUQ6ICdMYW5zZG93bmUgU3RhZGl1bSBMUCcsIE5hbWU6IDUzNDAwMzIxMCB9LFxuICAgICAgXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZSBzY2VuYXJpbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgY2xpZW50SWQ6ICd0ZXN0LWNsaWVudCcsXG4gICAgICAgIGNsaWVudFNlY3JldDogJ3Rlc3Qtc2VjcmV0JyxcbiAgICAgICAgc3ViRG9tYWluOiAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMScsXG4gICAgICAgIGFjY2Vzc190b2tlbjogJ3ZhbGlkLXRva2VuJyxcbiAgICAgICAgZXhwaXJhdGlvbjogcHJvY2Vzcy5ocnRpbWUoKVswXSArIDM2MDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUModmFsaWRBdXRoT2JqZWN0KTtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICBjb25zdCByZXF1ZXN0VG9rZW5TcHkgPSBqZXN0LnNweU9uKHV0aWxzLCAnZ2V0VG9rZW4nKTtcblxuICAgICAgY29uc3QgbW9ja0FkYXB0ZXIgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KCdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEuc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL1NlcnZpY2UuYXNteCcpXG4gICAgICAgIC5yZXBseShcbiAgICAgICAgICA1MDAsXG4gICAgICAgICAgYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PlxuPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvXCIgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiB4bWxuczp4c2Q9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiIHhtbG5zOndzYT1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiIHhtbG5zOndzc2U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2RcIiB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCI+XG4gICAgPHNvYXA6SGVhZGVyPlxuICAgICAgICA8d3NhOkFjdGlvbj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmcvZmF1bHQ8L3dzYTpBY3Rpb24+XG4gICAgICAgIDx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjE1ZDNlMjg2LTk3ZjUtNGY1Yy1iMGZhLWQ1ODY3MzYyMTU2ODwvd3NhOk1lc3NhZ2VJRD5cbiAgICAgICAgPHdzYTpSZWxhdGVzVG8+dXJuOnV1aWQ6YjM4ZWU4NWItOGY2Yi00ZWRjLTlhYjktMjNhYjZlNWE1MWUzPC93c2E6UmVsYXRlc1RvPlxuICAgICAgICA8d3NhOlRvPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9yb2xlL2Fub255bW91czwvd3NhOlRvPlxuICAgICAgICA8d3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgIDx3c3U6VGltZXN0YW1wIHdzdTpJZD1cIlRpbWVzdGFtcC1kYzAyZjhlOC1hZjc0LTQ3OTktYjVlOS05ZTljMDI5OTI3OGZcIj5cbiAgICAgICAgICAgICAgICA8d3N1OkNyZWF0ZWQ+MjAyNS0wMS0wM1QwNDo1OTo0NVo8L3dzdTpDcmVhdGVkPlxuICAgICAgICAgICAgICAgIDx3c3U6RXhwaXJlcz4yMDI1LTAxLTAzVDA1OjA0OjQ1Wjwvd3N1OkV4cGlyZXM+XG4gICAgICAgICAgICA8L3dzdTpUaW1lc3RhbXA+XG4gICAgICAgIDwvd3NzZTpTZWN1cml0eT5cbiAgICA8L3NvYXA6SGVhZGVyPlxuICAgIDxzb2FwOkJvZHk+XG4gICAgICAgIDxzb2FwOkZhdWx0PlxuICAgICAgICAgICAgPGZhdWx0Y29kZSB4bWxuczpxMD1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiPnEwOlNlY3VyaXR5PC9mYXVsdGNvZGU+XG4gICAgICAgICAgICA8ZmF1bHRzdHJpbmc+TG9naW4gRmFpbGVkPC9mYXVsdHN0cmluZz5cbiAgICAgICAgICAgIDxmYXVsdGFjdG9yPmh0dHBzOi8vbWN2Z2txejNjMWNocmJzejU4Nms5MHM0MWhwOC5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vU2VydmljZS5hc214PC9mYXVsdGFjdG9yPlxuICAgICAgICA8L3NvYXA6RmF1bHQ+XG4gICAgPC9zb2FwOkJvZHk+XG48L3NvYXA6RW52ZWxvcGU+YCxcbiAgICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0QnVzaW5lc3NVbml0cygpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChuZXcgRXJyb3IoJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgNTAwJykpO1xuICAgICAgfVxuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnZ2V0RGF0YUZvbGRlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgYWxsIHRoZSBkYXRhIGZvbGRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz5cbiAgICAgICAgPHNvYXA6RW52ZWxvcGVcbiAgICAgICAgICB4bWxuczpzb2FwPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIlxuICAgICAgICAgIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCJcbiAgICAgICAgICB4bWxuczp4c2Q9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiXG4gICAgICAgICAgeG1sbnM6d3NhPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCJcbiAgICAgICAgICB4bWxuczp3c3NlPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkXCJcbiAgICAgICAgICB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCI+XG4gICAgICAgICAgPHNvYXA6SGVhZGVyPlxuICAgICAgICAgICAgPHdzYTpBY3Rpb24+UmV0cmlldmVSZXNwb25zZTwvd3NhOkFjdGlvbj5cbiAgICAgICAgICAgIDx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjFjZjRmZDcyLTkzYTktNDM2MC1hNzVjLTk4OGRjNzA4ZWI3Yzwvd3NhOk1lc3NhZ2VJRD5cbiAgICAgICAgICAgIDx3c2E6UmVsYXRlc1RvPnVybjp1dWlkOjUyN2ExM2E1LWE3OTgtNDQzOC1iMjNkLWI3ZmQwODRhYzk1Mzwvd3NhOlJlbGF0ZXNUbz5cbiAgICAgICAgICAgIDx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+XG4gICAgICAgICAgICA8d3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgICAgPHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLTlkN2M1NzA3LWU4ZWMtNGRiOC1iNTVlLTdjYmQyY2UyMmZhM1wiPlxuICAgICAgICAgICAgICAgIDx3c3U6Q3JlYXRlZD4yMDI1LTAxLTAzVDA1OjU0OjE2Wjwvd3N1OkNyZWF0ZWQ+XG4gICAgICAgICAgICAgICAgPHdzdTpFeHBpcmVzPjIwMjUtMDEtMDNUMDU6NTk6MTZaPC93c3U6RXhwaXJlcz5cbiAgICAgICAgICAgICAgPC93c3U6VGltZXN0YW1wPlxuICAgICAgICAgICAgPC93c3NlOlNlY3VyaXR5PlxuICAgICAgICAgIDwvc29hcDpIZWFkZXI+XG4gICAgICAgICAgPHNvYXA6Qm9keT5cbiAgICAgICAgICAgIDxSZXRyaWV2ZVJlc3BvbnNlTXNnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL2V4YWN0dGFyZ2V0LmNvbS93c2RsL3BhcnRuZXJBUElcIj5cbiAgICAgICAgICAgICAgPE92ZXJhbGxTdGF0dXM+T0s8L092ZXJhbGxTdGF0dXM+XG4gICAgICAgICAgICAgIDxSZXF1ZXN0SUQ+NWQ5MTcwOGItMjVkMS00YjI3LTgwYTAtZGM4NGVmMGFhYzBjPC9SZXF1ZXN0SUQ+XG4gICAgICAgICAgICAgIDxSZXN1bHRzIHhzaTp0eXBlPVwiRGF0YUZvbGRlclwiPlxuICAgICAgICAgICAgICAgIDxDbGllbnQ+XG4gICAgICAgICAgICAgICAgICA8SUQ+NTM0MDAzMjEwPC9JRD5cbiAgICAgICAgICAgICAgICA8L0NsaWVudD5cbiAgICAgICAgICAgICAgICA8UGFydG5lcktleSB4c2k6bmlsPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPElEPjExNTQ2PC9JRD5cbiAgICAgICAgICAgICAgICA8T2JqZWN0SUQ+NGY1OTFjYTEtODIzNi00N2I4LTkyZmUtY2YwZGNmN2NmZmI1PC9PYmplY3RJRD5cbiAgICAgICAgICAgICAgICA8TmFtZT5teSBlbWFpbHM8L05hbWU+XG4gICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIC8+XG4gICAgICAgICAgICAgICAgPENvbnRlbnRUeXBlPmVtYWlsPC9Db250ZW50VHlwZT5cbiAgICAgICAgICAgICAgPC9SZXN1bHRzPlxuICAgICAgICAgICAgICA8UmVzdWx0cyB4c2k6dHlwZT1cIkRhdGFGb2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8Q2xpZW50PlxuICAgICAgICAgICAgICAgICAgPElEPjUzNDAwMzIxMDwvSUQ+XG4gICAgICAgICAgICAgICAgPC9DbGllbnQ+XG4gICAgICAgICAgICAgICAgPFBhcnRuZXJLZXkgeHNpOm5pbD1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDxJRD4xMTU0NzwvSUQ+XG4gICAgICAgICAgICAgICAgPE9iamVjdElEPjY5NWRkN2M2LWQ3NjQtNDc5ZC05ZTc3LTM2ZDE0MWNkZDM0MjwvT2JqZWN0SUQ+XG4gICAgICAgICAgICAgICAgPE5hbWU+c2ltcGxlIGF1dG9tYXRlZCBlbWFpbHM8L05hbWU+XG4gICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIC8+XG4gICAgICAgICAgICAgICAgPENvbnRlbnRUeXBlPmF1dG9tYXRlZF9lbWFpbDwvQ29udGVudFR5cGU+XG4gICAgICAgICAgICAgIDwvUmVzdWx0cz5cbiAgICAgICAgICAgIDwvUmV0cmlldmVSZXNwb25zZU1zZz5cbiAgICAgICAgICA8L3NvYXA6Qm9keT5cbiAgICAgICAgPC9zb2FwOkVudmVsb3BlPmA7XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KCdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEuc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL1NlcnZpY2UuYXNteCcpXG4gICAgICAgIC5yZXBseSgyMDAsIHZhbGlkUmVzcG9uc2UpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXREYXRhRm9sZGVycygpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIENsaWVudDoge1xuICAgICAgICAgICAgSUQ6IDUzNDAwMzIxMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIENvbnRlbnRUeXBlOiAnZW1haWwnLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBJRDogMTE1NDYsXG4gICAgICAgICAgTmFtZTogJ215IGVtYWlscycsXG4gICAgICAgICAgT2JqZWN0SUQ6ICc0ZjU5MWNhMS04MjM2LTQ3YjgtOTJmZS1jZjBkY2Y3Y2ZmYjUnLFxuICAgICAgICAgIFBhcnRuZXJLZXk6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2xpZW50OiB7XG4gICAgICAgICAgICBJRDogNTM0MDAzMjEwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQ29udGVudFR5cGU6ICdhdXRvbWF0ZWRfZW1haWwnLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBJRDogMTE1NDcsXG4gICAgICAgICAgTmFtZTogJ3NpbXBsZSBhdXRvbWF0ZWQgZW1haWxzJyxcbiAgICAgICAgICBPYmplY3RJRDogJzY5NWRkN2M2LWQ3NjQtNDc5ZC05ZTc3LTM2ZDE0MWNkZDM0MicsXG4gICAgICAgICAgUGFydG5lcktleTogJycsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vU2VydmljZS5hc214JylcbiAgICAgICAgLnJlcGx5KFxuICAgICAgICAgIDUwMCxcbiAgICAgICAgICBgPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+XG4gICAgICAgICAgPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvXCIgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiB4bWxuczp4c2Q9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiIHhtbG5zOndzYT1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiIHhtbG5zOndzc2U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2RcIiB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCI+XG4gICAgICAgICAgICAgIDxzb2FwOkhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDx3c2E6QWN0aW9uPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9mYXVsdDwvd3NhOkFjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjE1ZDNlMjg2LTk3ZjUtNGY1Yy1iMGZhLWQ1ODY3MzYyMTU2ODwvd3NhOk1lc3NhZ2VJRD5cbiAgICAgICAgICAgICAgICAgIDx3c2E6UmVsYXRlc1RvPnVybjp1dWlkOmIzOGVlODViLThmNmItNGVkYy05YWI5LTIzYWI2ZTVhNTFlMzwvd3NhOlJlbGF0ZXNUbz5cbiAgICAgICAgICAgICAgICAgIDx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+XG4gICAgICAgICAgICAgICAgICA8d3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgICAgICAgICAgICA8d3N1OlRpbWVzdGFtcCB3c3U6SWQ9XCJUaW1lc3RhbXAtZGMwMmY4ZTgtYWY3NC00Nzk5LWI1ZTktOWU5YzAyOTkyNzhmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3U6Q3JlYXRlZD4yMDI1LTAxLTAzVDA0OjU5OjQ1Wjwvd3N1OkNyZWF0ZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3U6RXhwaXJlcz4yMDI1LTAxLTAzVDA1OjA0OjQ1Wjwvd3N1OkV4cGlyZXM+XG4gICAgICAgICAgICAgICAgICAgICAgPC93c3U6VGltZXN0YW1wPlxuICAgICAgICAgICAgICAgICAgPC93c3NlOlNlY3VyaXR5PlxuICAgICAgICAgICAgICA8L3NvYXA6SGVhZGVyPlxuICAgICAgICAgICAgICA8c29hcDpCb2R5PlxuICAgICAgICAgICAgICAgICAgPHNvYXA6RmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGZhdWx0Y29kZSB4bWxuczpxMD1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiPnEwOlNlY3VyaXR5PC9mYXVsdGNvZGU+XG4gICAgICAgICAgICAgICAgICAgICAgPGZhdWx0c3RyaW5nPkxvZ2luIEZhaWxlZDwvZmF1bHRzdHJpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPGZhdWx0YWN0b3I+aHR0cHM6Ly9tY3Zna3F6M2MxY2hyYnN6NTg2azkwczQxaHA4LnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9TZXJ2aWNlLmFzbXg8L2ZhdWx0YWN0b3I+XG4gICAgICAgICAgICAgICAgICA8L3NvYXA6RmF1bHQ+XG4gICAgICAgICAgICAgIDwvc29hcDpCb2R5PlxuICAgICAgICAgIDwvc29hcDpFbnZlbG9wZT5gLFxuICAgICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2ZtY0NsaWVudC5nZXREYXRhRm9sZGVycygpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChuZXcgRXJyb3IoJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgNTAwJykpO1xuICAgICAgfVxuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnZ2V0RGF0YUV4dGVuc2lvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgYWxsIHRoZSBkYXRhIGV4dGVuc2lvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIHhtbG5zOnhzZD1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hXCIgeG1sbnM6d3NhPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCIgeG1sbnM6d3NzZT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiIHhtbG5zOndzdT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS11dGlsaXR5LTEuMC54c2RcIj48c29hcDpIZWFkZXI+PHdzYTpBY3Rpb24+UmV0cmlldmVSZXNwb25zZTwvd3NhOkFjdGlvbj48d3NhOk1lc3NhZ2VJRD51cm46dXVpZDowMjE0ZDU5NS0zOWYyLTQyYmItYjE4Zi03ODJlM2FlYzkxMjU8L3dzYTpNZXNzYWdlSUQ+PHdzYTpSZWxhdGVzVG8+dXJuOnV1aWQ6OGM5ZjFmZTYtNTg0YS00OTJmLWFkMWUtYjYyODg3ZTZiMjdkPC93c2E6UmVsYXRlc1RvPjx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+PHdzc2U6U2VjdXJpdHk+PHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLTc0OWM1YjkwLTdjM2UtNDA1ZS1hODkxLTRjYWI5YWEzMTlkNVwiPjx3c3U6Q3JlYXRlZD4yMDI1LTAxLTA5VDEwOjAxOjE1Wjwvd3N1OkNyZWF0ZWQ+PHdzdTpFeHBpcmVzPjIwMjUtMDEtMDlUMTA6MDY6MTVaPC93c3U6RXhwaXJlcz48L3dzdTpUaW1lc3RhbXA+PC93c3NlOlNlY3VyaXR5Pjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48UmV0cmlldmVSZXNwb25zZU1zZyB4bWxucz1cImh0dHA6Ly9leGFjdHRhcmdldC5jb20vd3NkbC9wYXJ0bmVyQVBJXCI+PE92ZXJhbGxTdGF0dXM+T0s8L092ZXJhbGxTdGF0dXM+PFJlcXVlc3RJRD4yNjEyMzg0Ni00MDQ2LTQzMGItODlkYy05ZTVjMmViNTg3ZmQ8L1JlcXVlc3RJRD48UmVzdWx0cyB4c2k6dHlwZT1cIkRhdGFFeHRlbnNpb25cIj48UGFydG5lcktleSB4c2k6bmlsPVwidHJ1ZVwiIC8+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk9iamVjdElkPC9OYW1lPjxWYWx1ZT5iMzBlMjZkYi01ZTU5LWVmMTEtYmE2ZC1mNDAzNDNjZTg5ZDg8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk5BTUU8L05hbWU+PFZhbHVlPnJ1ZGRlcnN0YWNrVGVzdGluZzEzMzQyPC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5DYXRlZ29yeUlkPC9OYW1lPjxWYWx1ZT4xMjM0NTwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48T2JqZWN0SUQgeHNpOm5pbD1cInRydWVcIiAvPjwvUmVzdWx0cz48UmVzdWx0cyB4c2k6dHlwZT1cIkRhdGFFeHRlbnNpb25cIj48UGFydG5lcktleSB4c2k6bmlsPVwidHJ1ZVwiIC8+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk9iamVjdElkPC9OYW1lPjxWYWx1ZT4xOTFjNWIyYS01N2I4LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzg8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk5BTUU8L05hbWU+PFZhbHVlPlRlc3RGcm9tU0RLMTIzNDwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+Q2F0ZWdvcnlJZDwvTmFtZT48VmFsdWU+MTIzNDU8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PE9iamVjdElEIHhzaTpuaWw9XCJ0cnVlXCIgLz48L1Jlc3VsdHM+PFJlc3VsdHMgeHNpOnR5cGU9XCJEYXRhRXh0ZW5zaW9uXCI+PFBhcnRuZXJLZXkgeHNpOm5pbD1cInRydWVcIiAvPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5PYmplY3RJZDwvTmFtZT48VmFsdWU+NTAzODU2ZTMtNWFiOC1lZjExLWJhNmUtZjQwMzQzZDM4MGM4PC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5OQU1FPC9OYW1lPjxWYWx1ZT5ydWRkZXJzdGFja1Rlc3RpbmcxMjExMjA8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPkNhdGVnb3J5SWQ8L05hbWU+PFZhbHVlPjEyMzQ1PC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxPYmplY3RJRCB4c2k6bmlsPVwidHJ1ZVwiIC8+PC9SZXN1bHRzPjxSZXN1bHRzIHhzaTp0eXBlPVwiRGF0YUV4dGVuc2lvblwiPjxQYXJ0bmVyS2V5IHhzaTpuaWw9XCJ0cnVlXCIgLz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+T2JqZWN0SWQ8L05hbWU+PFZhbHVlPjE3NDJmNmYxLTc5YjgtZWYxMS1iYTZlLWY0MDM0M2QzODBjODwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+TkFNRTwvTmFtZT48VmFsdWU+cnVkZGVyc3RhY2tUZXN0aW5nMTI0NDI8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPkNhdGVnb3J5SWQ8L05hbWU+PFZhbHVlPjEyMzQ1PC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxPYmplY3RJRCB4c2k6bmlsPVwidHJ1ZVwiIC8+PC9SZXN1bHRzPjxSZXN1bHRzIHhzaTp0eXBlPVwiRGF0YUV4dGVuc2lvblwiPjxQYXJ0bmVyS2V5IHhzaTpuaWw9XCJ0cnVlXCIgLz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+T2JqZWN0SWQ8L05hbWU+PFZhbHVlPjRiYWY0Y2YxLThjYzktZWYxMS1iYTZlLWY0MDM0M2QzODBjODwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+TkFNRTwvTmFtZT48VmFsdWU+cnVkZGVyc3RhY2tUZXN0aW5nMDI5NTwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+Q2F0ZWdvcnlJZDwvTmFtZT48VmFsdWU+MTIzNDU8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PE9iamVjdElEIHhzaTpuaWw9XCJ0cnVlXCIgLz48L1Jlc3VsdHM+PC9SZXRyaWV2ZVJlc3BvbnNlTXNnPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT5gO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uUG9zdCgnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9TZXJ2aWNlLmFzbXgnKVxuICAgICAgICAucmVwbHkoMjAwLCB2YWxpZFJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNmbWNDbGllbnQuZ2V0RGF0YUV4dGVuc2lvbnMoJ3ZhbGlkLWZvbGRlci1pZCcpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIENhdGVnb3J5SWQ6IDEyMzQ1LFxuICAgICAgICAgIE5hbWU6ICdydWRkZXJzdGFja1Rlc3RpbmcxMzM0MicsXG4gICAgICAgICAgT2JqZWN0SWQ6ICdiMzBlMjZkYi01ZTU5LWVmMTEtYmE2ZC1mNDAzNDNjZTg5ZDgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2F0ZWdvcnlJZDogMTIzNDUsXG4gICAgICAgICAgTmFtZTogJ1Rlc3RGcm9tU0RLMTIzNCcsXG4gICAgICAgICAgT2JqZWN0SWQ6ICcxOTFjNWIyYS01N2I4LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2F0ZWdvcnlJZDogMTIzNDUsXG4gICAgICAgICAgTmFtZTogJ3J1ZGRlcnN0YWNrVGVzdGluZzEyMTEyMCcsXG4gICAgICAgICAgT2JqZWN0SWQ6ICc1MDM4NTZlMy01YWI4LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2F0ZWdvcnlJZDogMTIzNDUsXG4gICAgICAgICAgTmFtZTogJ3J1ZGRlcnN0YWNrVGVzdGluZzEyNDQyJyxcbiAgICAgICAgICBPYmplY3RJZDogJzE3NDJmNmYxLTc5YjgtZWYxMS1iYTZlLWY0MDM0M2QzODBjOCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBDYXRlZ29yeUlkOiAxMjM0NSxcbiAgICAgICAgICBOYW1lOiAncnVkZGVyc3RhY2tUZXN0aW5nMDI5NScsXG4gICAgICAgICAgT2JqZWN0SWQ6ICc0YmFmNGNmMS04Y2M5LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzgnLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZSBzY2VuYXJpbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgY2xpZW50SWQ6ICd0ZXN0LWNsaWVudCcsXG4gICAgICAgIGNsaWVudFNlY3JldDogJ3Rlc3Qtc2VjcmV0JyxcbiAgICAgICAgc3ViRG9tYWluOiAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMScsXG4gICAgICAgIGFjY2Vzc190b2tlbjogJ3ZhbGlkLXRva2VuJyxcbiAgICAgICAgZXhwaXJhdGlvbjogcHJvY2Vzcy5ocnRpbWUoKVswXSArIDM2MDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUModmFsaWRBdXRoT2JqZWN0KTtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICBjb25zdCByZXF1ZXN0VG9rZW5TcHkgPSBqZXN0LnNweU9uKHV0aWxzLCAnZ2V0VG9rZW4nKTtcblxuICAgICAgY29uc3QgbW9ja0FkYXB0ZXIgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KCdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEuc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL1NlcnZpY2UuYXNteCcpXG4gICAgICAgIC5yZXBseShcbiAgICAgICAgICA1MDAsXG4gICAgICAgICAgYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PlxuICAgICAgICAgIDxzb2FwOkVudmVsb3BlIHhtbG5zOnNvYXA9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlL1wiIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIgeG1sbnM6eHNkPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIiB4bWxuczp3c2E9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmdcIiB4bWxuczp3c3NlPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkXCIgeG1sbnM6d3N1PVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZFwiPlxuICAgICAgICAgICAgICA8c29hcDpIZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8d3NhOkFjdGlvbj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmcvZmF1bHQ8L3dzYTpBY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8d3NhOk1lc3NhZ2VJRD51cm46dXVpZDoxNWQzZTI4Ni05N2Y1LTRmNWMtYjBmYS1kNTg2NzM2MjE1Njg8L3dzYTpNZXNzYWdlSUQ+XG4gICAgICAgICAgICAgICAgICA8d3NhOlJlbGF0ZXNUbz51cm46dXVpZDpiMzhlZTg1Yi04ZjZiLTRlZGMtOWFiOS0yM2FiNmU1YTUxZTM8L3dzYTpSZWxhdGVzVG8+XG4gICAgICAgICAgICAgICAgICA8d3NhOlRvPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9yb2xlL2Fub255bW91czwvd3NhOlRvPlxuICAgICAgICAgICAgICAgICAgPHdzc2U6U2VjdXJpdHk+XG4gICAgICAgICAgICAgICAgICAgICAgPHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLWRjMDJmOGU4LWFmNzQtNDc5OS1iNWU5LTllOWMwMjk5Mjc4ZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N1OkNyZWF0ZWQ+MjAyNS0wMS0wM1QwNDo1OTo0NVo8L3dzdTpDcmVhdGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N1OkV4cGlyZXM+MjAyNS0wMS0wM1QwNTowNDo0NVo8L3dzdTpFeHBpcmVzPlxuICAgICAgICAgICAgICAgICAgICAgIDwvd3N1OlRpbWVzdGFtcD5cbiAgICAgICAgICAgICAgICAgIDwvd3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgICAgPC9zb2FwOkhlYWRlcj5cbiAgICAgICAgICAgICAgPHNvYXA6Qm9keT5cbiAgICAgICAgICAgICAgICAgIDxzb2FwOkZhdWx0PlxuICAgICAgICAgICAgICAgICAgICAgIDxmYXVsdGNvZGUgeG1sbnM6cTA9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2RcIj5xMDpTZWN1cml0eTwvZmF1bHRjb2RlPlxuICAgICAgICAgICAgICAgICAgICAgIDxmYXVsdHN0cmluZz5Mb2dpbiBGYWlsZWQ8L2ZhdWx0c3RyaW5nPlxuICAgICAgICAgICAgICAgICAgICAgIDxmYXVsdGFjdG9yPmh0dHBzOi8vbWN2Z2txejNjMWNocmJzejU4Nms5MHM0MWhwOC5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vU2VydmljZS5hc214PC9mYXVsdGFjdG9yPlxuICAgICAgICAgICAgICAgICAgPC9zb2FwOkZhdWx0PlxuICAgICAgICAgICAgICA8L3NvYXA6Qm9keT5cbiAgICAgICAgICA8L3NvYXA6RW52ZWxvcGU+YCxcbiAgICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0RGF0YUV4dGVuc2lvbnMoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhwZWN0KGUpLnRvRXF1YWwobmV3IEVycm9yKCdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDUwMCcpKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
751
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL3NmbWMvaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiw0RUFBa0Q7QUFDbEQseUNBQXFCO0FBQ3JCLCtDQUFpQztBQUVqQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUNwQixRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyw2REFBNkQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMzRSxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILDBEQUEwRDtRQUMxRCxFQUFFLENBQUMsbURBQW1ELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakUsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjthQUMxQyxDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQUc7Z0JBQ3BCLEdBQUcsZUFBZTtnQkFDbEIsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLFVBQVUsRUFBRSxLQUFLO2FBQ2xCLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsa0VBQWtFO1lBQ2xFLE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywyRUFBMkUsQ0FBQztpQkFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMseURBQXlELEVBQUUsR0FBRyxFQUFFO1lBQ2pFLE1BQU0saUJBQWlCLEdBQUc7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsTUFBTTthQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDO2dCQUNILE1BQU0sWUFBWSxHQUFHLElBQUksVUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2pELFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekUsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjthQUMxQyxDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQUc7Z0JBQ3BCLEdBQUcsZUFBZTtnQkFDbEIsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLFVBQVUsRUFBRSxLQUFLO2FBQ2xCLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLFdBQVc7aUJBQ1IsTUFBTSxDQUFDLDJFQUEyRSxDQUFDO2lCQUNuRixLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2pGLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7YUFDMUMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO1lBRXhDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsV0FBVztpQkFDUixNQUFNLENBQUMsMkVBQTJFLENBQUM7aUJBQ25GLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDZixJQUFJLEtBQUssQ0FDUCxpRkFBaUYsQ0FDbEYsQ0FDRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNuRCxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sYUFBYSxHQUFHO2dCQUNwQixJQUFJLEVBQUUsU0FBUztnQkFDZixVQUFVLEVBQUUsT0FBTztnQkFDbkIsTUFBTSxFQUFFO29CQUNOO3dCQUNFLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxNQUFNO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLFdBQVc7aUJBQ1IsS0FBSyxDQUNKLDBHQUEwRyxDQUMzRztpQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25FLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLEtBQUssQ0FDSiwwR0FBMEcsQ0FDM0c7aUJBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDVixhQUFhLEVBQ1gsMkZBQTJGO2dCQUM3RixTQUFTLEVBQUUsQ0FBQztnQkFDWixPQUFPLEVBQUUsZ0JBQWdCO2FBQzFCLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7UUFDcEMsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hELE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxhQUFhLEdBQUc7Z0JBQ3BCLElBQUksRUFBRTtvQkFDSixLQUFLLEVBQUU7d0JBQ0w7NEJBQ0UsVUFBVSxFQUFFLElBQUk7NEJBQ2hCLFVBQVUsRUFBRTtnQ0FDVjtvQ0FDRSxVQUFVLEVBQUUsSUFBSTtvQ0FDaEIsa0JBQWtCLEVBQUUsV0FBVztvQ0FDL0IsUUFBUSxFQUFFLFFBQVE7aUNBQ25COzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLFdBQVc7aUJBQ1IsS0FBSyxDQUNKLHNHQUFzRyxDQUN2RztpQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM5QyxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLFdBQVc7aUJBQ1IsS0FBSyxDQUNKLHNHQUFzRyxDQUN2RztpQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLGFBQWEsRUFDWCwyRkFBMkY7Z0JBQzdGLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE9BQU8sRUFBRSxnQkFBZ0I7YUFDMUIsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNoRCxNQUFNLGVBQWUsR0FBRztnQkFDdEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixTQUFTLEVBQUUsOEJBQThCO2dCQUN6QyxZQUFZLEVBQUUsYUFBYTtnQkFDM0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO2FBQ3ZDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBZ0IsQ0FBQyxlQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sYUFBYSxHQUFHO2dCQUNwQixFQUFFLEVBQUUsc0NBQXNDO2dCQUMxQyxJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixHQUFHLEVBQUUsd0JBQXdCO2dCQUM3QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsS0FBSztnQkFDakIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLE1BQU0sRUFBRSxDQUFDO2dCQUNULFVBQVUsRUFBRSxLQUFLO2dCQUNqQixPQUFPLEVBQUUsU0FBUztnQkFDbEIsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsc0JBQXNCLEVBQUUsSUFBSTtnQkFDNUIsMEJBQTBCLEVBQUUsSUFBSTtnQkFDaEMsV0FBVyxFQUFFLG1DQUFtQztnQkFDaEQsV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLFlBQVksRUFBRSxtQ0FBbUM7Z0JBQ2pELFlBQVksRUFBRSxTQUFTO2dCQUN2QixTQUFTLEVBQUUsaUNBQWlDO2dCQUM1QyxRQUFRLEVBQUUsQ0FBQztnQkFDWCx1QkFBdUIsRUFBRTtvQkFDdkIsOEJBQThCLEVBQUUsSUFBSTtvQkFDcEMsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsOEJBQThCLEVBQUUsS0FBSztvQkFDckMsaUJBQWlCLEVBQUUsVUFBVTtpQkFDOUI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLEVBQUUsRUFBRSxzQ0FBc0M7d0JBQzFDLElBQUksRUFBRSxNQUFNO3dCQUNaLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixXQUFXLEVBQUUsT0FBTzt3QkFDcEIsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsT0FBTyxFQUFFLENBQUM7d0JBQ1YsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxJQUFJO3dCQUNsQixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsYUFBYSxFQUFFLEtBQUs7d0JBQ3BCLGFBQWEsRUFBRSxJQUFJO3dCQUNuQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCO29CQUNEO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLEVBQUUsRUFBRSxzQ0FBc0M7d0JBQzFDLElBQUksRUFBRSxjQUFjO3dCQUNwQixRQUFRLEVBQUUsTUFBTTt3QkFDaEIsV0FBVyxFQUFFLE9BQU87d0JBQ3BCLE1BQU0sRUFBRSxHQUFHO3dCQUNYLE9BQU8sRUFBRSxDQUFDO3dCQUNWLFVBQVUsRUFBRSxJQUFJO3dCQUNoQixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsZUFBZSxFQUFFLEtBQUs7d0JBQ3RCLGFBQWEsRUFBRSxLQUFLO3dCQUNwQixhQUFhLEVBQUUsSUFBSTt3QkFDbkIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxLQUFLO3FCQUNwQjtpQkFDRjtnQkFDRCxVQUFVLEVBQUUsQ0FBQzthQUNkLENBQUM7WUFDRixXQUFXO2lCQUNSLE1BQU0sQ0FDTCx3RkFBd0YsQ0FDekY7aUJBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLHVCQUF1QixFQUFFO29CQUN2Qiw4QkFBOEIsRUFBRSxJQUFJO29CQUNwQyxtQkFBbUIsRUFBRSxLQUFLO29CQUMxQiw4QkFBOEIsRUFBRSxLQUFLO2lCQUN0QztnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLE1BQU07d0JBQ1osTUFBTSxFQUFFLEdBQUc7d0JBQ1gsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxJQUFJO3dCQUNsQixRQUFRLEVBQUUsS0FBSzt3QkFDZixVQUFVLEVBQUUsS0FBSzt3QkFDakIsYUFBYSxFQUFFLElBQUk7d0JBQ25CLGVBQWUsRUFBRSxLQUFLO3dCQUN0QixhQUFhLEVBQUUsS0FBSzt3QkFDcEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLE9BQU8sRUFBRSxDQUFDO3FCQUNYO29CQUNEO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxjQUFjO3dCQUNwQixNQUFNLEVBQUUsR0FBRzt3QkFDWCxVQUFVLEVBQUUsSUFBSTt3QkFDaEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxLQUFLO3dCQUNmLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixhQUFhLEVBQUUsSUFBSTt3QkFDbkIsZUFBZSxFQUFFLEtBQUs7d0JBQ3RCLGFBQWEsRUFBRSxLQUFLO3dCQUNwQixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsT0FBTyxFQUFFLENBQUM7cUJBQ1g7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzlDLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsV0FBVztpQkFDUixNQUFNLENBQ0wsd0ZBQXdGLENBQ3pGO2lCQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsYUFBYSxFQUNYLDJGQUEyRjtnQkFDN0YsU0FBUyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLGdCQUFnQjthQUMxQixDQUFDLENBQUM7WUFDTCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxPQUFPO29CQUNuQixNQUFNLEVBQUU7d0JBQ047NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLE1BQU07NEJBQ1osTUFBTSxFQUFFLEdBQUc7NEJBQ1gsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLFlBQVksRUFBRSxJQUFJOzRCQUNsQixRQUFRLEVBQUUsS0FBSzs0QkFDZixVQUFVLEVBQUUsS0FBSzs0QkFDakIsYUFBYSxFQUFFLElBQUk7NEJBQ25CLGVBQWUsRUFBRSxLQUFLOzRCQUN0QixhQUFhLEVBQUUsS0FBSzs0QkFDcEIsWUFBWSxFQUFFLEtBQUs7NEJBQ25CLE9BQU8sRUFBRSxDQUFDO3lCQUNYO3FCQUNGO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUNoQyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakQsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixNQUFNLGFBQWEsR0FBRyw2ekRBQTZ6RCxDQUFDO1lBQ3AxRCxXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7Z0JBQy9DLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7YUFDaEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUNKLEdBQUcsRUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQXFCTyxDQUNSLENBQUM7WUFDSixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQy9DLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxhQUFhLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBaURILENBQUM7WUFDcEIsV0FBVztpQkFDUixNQUFNLENBQUMsK0VBQStFLENBQUM7aUJBQ3ZGLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDM0I7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLEVBQUUsRUFBRSxTQUFTO3FCQUNkO29CQUNELFdBQVcsRUFBRSxPQUFPO29CQUNwQixXQUFXLEVBQUUsRUFBRTtvQkFDZixFQUFFLEVBQUUsS0FBSztvQkFDVCxJQUFJLEVBQUUsV0FBVztvQkFDakIsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLEVBQUUsRUFBRSxTQUFTO3FCQUNkO29CQUNELFdBQVcsRUFBRSxpQkFBaUI7b0JBQzlCLFdBQVcsRUFBRSxFQUFFO29CQUNmLEVBQUUsRUFBRSxLQUFLO29CQUNULElBQUksRUFBRSx5QkFBeUI7b0JBQy9CLFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUNKLEdBQUcsRUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQXFCaUIsQ0FDbEIsQ0FBQztZQUNKLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2xELE1BQU0sZUFBZSxHQUFHO2dCQUN0QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSw4QkFBOEI7Z0JBQ3pDLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDRCQUFnQixDQUFDLGVBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxhQUFhLEdBQUcsZ2pHQUFnakcsQ0FBQztZQUN2a0csV0FBVztpQkFDUixNQUFNLENBQUMsK0VBQStFLENBQUM7aUJBQ3ZGLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNyRSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUMzQjtvQkFDRSxVQUFVLEVBQUUsS0FBSztvQkFDakIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsUUFBUSxFQUFFLHNDQUFzQztpQkFDakQ7Z0JBQ0Q7b0JBQ0UsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLFFBQVEsRUFBRSxzQ0FBc0M7aUJBQ2pEO2dCQUNEO29CQUNFLFVBQVUsRUFBRSxLQUFLO29CQUNqQixJQUFJLEVBQUUsMEJBQTBCO29CQUNoQyxRQUFRLEVBQUUsc0NBQXNDO2lCQUNqRDtnQkFDRDtvQkFDRSxVQUFVLEVBQUUsS0FBSztvQkFDakIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsUUFBUSxFQUFFLHNDQUFzQztpQkFDakQ7Z0JBQ0Q7b0JBQ0UsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLElBQUksRUFBRSx3QkFBd0I7b0JBQzlCLFFBQVEsRUFBRSxzQ0FBc0M7aUJBQ2pEO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUMsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsU0FBUyxFQUFFLDhCQUE4QjtnQkFDekMsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTthQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQWdCLENBQUMsZUFBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixXQUFXO2lCQUNSLE1BQU0sQ0FBQywrRUFBK0UsQ0FBQztpQkFDdkYsS0FBSyxDQUNKLEdBQUcsRUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQXFCaUIsQ0FDbEIsQ0FBQztZQUNKLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEF4aW9zTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJztcbmltcG9ydCBTRk1DIGZyb20gJy4nO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmRlc2NyaWJlKCdzZm1jJywgKCkgPT4ge1xuICBkZXNjcmliZSgnZ2V0QWNjZXNzVG9rZW4nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZXhpc3RpbmcgYXV0aE9iamVjdCB3aGVuIHRva2VuIGlzIG5vdCBleHBpcmVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgc2ZtY0NsaWVudC5hdXRoT2JqZWN0ID0gdmFsaWRBdXRoT2JqZWN0O1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QodXRpbHMuaXNFeHBpcmVkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgZXhwZWN0KHJlcXVlc3RUb2tlblNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgICAvLyBIYW5kbGVzIGNhc2Ugd2hlbiBhdXRoT2JqZWN0IGlzIGluaXRpYWxseSBlbXB0eSBvciBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXF1ZXN0IG5ldyB0b2tlbiB3aGVuIGF1dGhPYmplY3QgaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbXB0eUF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbmV3QXV0aE9iamVjdCA9IHtcbiAgICAgICAgLi4uZW1wdHlBdXRoT2JqZWN0LFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICduZXctdG9rZW4nLFxuICAgICAgICBleHBpcmVzX2luOiAxMjM0NSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyhlbXB0eUF1dGhPYmplY3QpO1xuICAgICAgc2ZtY0NsaWVudC5hdXRoT2JqZWN0ID0gZW1wdHlBdXRoT2JqZWN0O1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKHRydWUpO1xuICAgICAgLy8gamVzdC5zcHlPbihheGlvcywgJ2dldFRva2VuJykubW9ja1Jlc29sdmVkVmFsdWUobmV3QXV0aE9iamVjdCk7XG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5hdXRoLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vdjIvdG9rZW4nKVxuICAgICAgICAucmVwbHkoMjAwLCBuZXdBdXRoT2JqZWN0KTtcbiAgICAgIGplc3Quc3B5T24ocHJvY2VzcywgJ2hydGltZScpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBbMCwgMF0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IC4uLm5ld0F1dGhPYmplY3QsIGV4cGlyYXRpb246IDEyMzQ1IH0pO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdCh1dGlscy5nZXRUb2tlbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gYXV0aE9iamVjdCBoYXMgaW52YWxpZCBjbGllbnRJZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGludmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogbnVsbCxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICd0ZXN0JyxcbiAgICAgIH07XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzZm1jSW5zdGFuY2UgPSBuZXcgU0ZNQyhpbnZhbGlkQXV0aE9iamVjdCk7XG4gICAgICAgIHNmbWNJbnN0YW5jZS5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChuZXcgRXJyb3IoJ2NsaWVudElkIGlzIG1pc3Npbmcgb3IgaW52YWxpZCcpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjb25jdXJyZW50IHRva2VuIHJlZnJlc2ggcmVxdWVzdHMgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW1wdHlBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5ld0F1dGhPYmplY3QgPSB7XG4gICAgICAgIC4uLmVtcHR5QXV0aE9iamVjdCxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAnbmV3LXRva2VuJyxcbiAgICAgICAgZXhwaXJlc19pbjogMTIzNDUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUMoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICAgIHNmbWNDbGllbnQuYXV0aE9iamVjdCA9IGVtcHR5QXV0aE9iamVjdDtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZSh0cnVlKTtcbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uUG9zdCgnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLmF1dGgubWFya2V0aW5nY2xvdWRhcGlzLmNvbS92Mi90b2tlbicpXG4gICAgICAgIC5yZXBseSgyMDAsIG5ld0F1dGhPYmplY3QpO1xuICAgICAgamVzdC5zcHlPbihwcm9jZXNzLCAnaHJ0aW1lJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFswLCAwXSk7XG4gICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICByZXN1bHQgPSBhd2FpdCBzZm1jQ2xpZW50LmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgLi4ubmV3QXV0aE9iamVjdCwgZXhwaXJhdGlvbjogMTIzNDUgfSk7XG4gICAgICBleHBlY3QodXRpbHMuaXNFeHBpcmVkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChlbXB0eUF1dGhPYmplY3QpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZW1wdHlBdXRoT2JqZWN0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdpdGggb3JpZ2luYWwgbWVzc2FnZSB3aGVuIHRva2VuIHJlcXVlc3QgZmFpbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbXB0eUF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKGVtcHR5QXV0aE9iamVjdCk7XG4gICAgICBzZm1jQ2xpZW50LmF1dGhPYmplY3QgPSBlbXB0eUF1dGhPYmplY3Q7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUodHJ1ZSk7XG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5hdXRoLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vdjIvdG9rZW4nKVxuICAgICAgICAucmVwbHkoNDAwLCBuZXcgRXJyb3IoJ0JhZCBSZXF1ZXN0JykpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2ZtY0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnVW5hYmxlIHRvIGdlbmVyYXRlIHRva2VuLCB3aXRoIGVycm9yOkVycm9yOiBSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDQwMCcsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdnZXREZXN0aW5hdGlvbkZpZWxkcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBkYXRhIGV4dGVuc2lvbiBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IHtcbiAgICAgICAgbmFtZTogJ1Rlc3QgREUnLFxuICAgICAgICBjYXRlZ29yeUlEOiAnMTIzNDUnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZmllbGQxJyxcbiAgICAgICAgICAgIHR5cGU6ICdUZXh0JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vbkdldChcbiAgICAgICAgICAnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnJlc3QubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9kYXRhL3YxL2N1c3RvbW9iamVjdHMvdGVzdC1kZS1pZC9maWVsZHMnLFxuICAgICAgICApXG4gICAgICAgIC5yZXBseSgyMDAsIHZhbGlkUmVzcG9uc2UpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXREZXN0aW5hdGlvbkZpZWxkcygndGVzdC1kZS1pZCcpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHZhbGlkUmVzcG9uc2UpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmUgc2NlbmFyaW8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uR2V0KFxuICAgICAgICAgICdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEucmVzdC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL2RhdGEvdjEvY3VzdG9tb2JqZWN0cy90ZXN0LWRlLWlkL2ZpZWxkcycsXG4gICAgICAgIClcbiAgICAgICAgLnJlcGx5KDQwMSwge1xuICAgICAgICAgIGRvY3VtZW50YXRpb246XG4gICAgICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXIuc2FsZXNmb3JjZS5jb20vZG9jcy9hdGxhcy5lbi11cy5tYy1hcGlzLm1ldGEvbWMtYXBpcy9lcnJvci1oYW5kbGluZy5odG0nLFxuICAgICAgICAgIGVycm9yY29kZTogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnTm90IEF1dGhvcml6ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0RGVzdGluYXRpb25GaWVsZHMoJ3Rlc3QtZGUtaWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhwZWN0KGUpLnRvRXF1YWwobmV3IEVycm9yKCdOb3QgQXV0aG9yaXplZCcpKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2dldENvbnRhY3RBdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbnRhY3QgYXR0cmlidXRlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgY2xpZW50SWQ6ICd0ZXN0LWNsaWVudCcsXG4gICAgICAgIGNsaWVudFNlY3JldDogJ3Rlc3Qtc2VjcmV0JyxcbiAgICAgICAgc3ViRG9tYWluOiAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMScsXG4gICAgICAgIGFjY2Vzc190b2tlbjogJ3ZhbGlkLXRva2VuJyxcbiAgICAgICAgZXhwaXJhdGlvbjogcHJvY2Vzcy5ocnRpbWUoKVswXSArIDM2MDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUModmFsaWRBdXRoT2JqZWN0KTtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICBjb25zdCByZXF1ZXN0VG9rZW5TcHkgPSBqZXN0LnNweU9uKHV0aWxzLCAnZ2V0VG9rZW4nKTtcblxuICAgICAgY29uc3QgbW9ja0FkYXB0ZXIgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gICAgICBjb25zdCB2YWxpZFJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNSZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlzUmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6ICd0ZXN0Lm5hbWUnLFxuICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uR2V0KFxuICAgICAgICAgICdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEucmVzdC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL2NvbnRhY3RzL3YxL2F0dHJpYnV0ZVNldERlZmluaXRpb25zJyxcbiAgICAgICAgKVxuICAgICAgICAucmVwbHkoMjAwLCB2YWxpZFJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNmbWNDbGllbnQuZ2V0Q29udGFjdEF0dHJpYnV0ZXMoKTtcbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh2YWxpZFJlc3BvbnNlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vbkdldChcbiAgICAgICAgICAnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnJlc3QubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9jb250YWN0cy92MS9hdHRyaWJ1dGVTZXREZWZpbml0aW9ucycsXG4gICAgICAgIClcbiAgICAgICAgLnJlcGx5KDQwMSwge1xuICAgICAgICAgIGRvY3VtZW50YXRpb246XG4gICAgICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXIuc2FsZXNmb3JjZS5jb20vZG9jcy9hdGxhcy5lbi11cy5tYy1hcGlzLm1ldGEvbWMtYXBpcy9lcnJvci1oYW5kbGluZy5odG0nLFxuICAgICAgICAgIGVycm9yY29kZTogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnTm90IEF1dGhvcml6ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0Q29udGFjdEF0dHJpYnV0ZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhwZWN0KGUpLnRvRXF1YWwobmV3IEVycm9yKCdOb3QgQXV0aG9yaXplZCcpKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2NyZWF0ZURhdGFFeHRlbnNpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgbmV3IGRhdGEgZXh0ZW5zaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIGNvbnN0IHZhbGlkUmVzcG9uc2UgPSB7XG4gICAgICAgIGlkOiAnNGJhZjRjZjEtOGNjOS1lZjExLWJhNmUtZjQwMzQzZDM4MGM4JyxcbiAgICAgICAgbmFtZTogJ3J1ZGRlcnN0YWNrVGVzdGluZzAyOTUnLFxuICAgICAgICBrZXk6ICdydWRkZXJzdGFja1Rlc3RpbmcwMjk1JyxcbiAgICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICAgIGlzU2VuZGFibGU6IGZhbHNlLFxuICAgICAgICBpc1Rlc3RhYmxlOiBmYWxzZSxcbiAgICAgICAgc3RhdHVzOiAwLFxuICAgICAgICBjYXRlZ29yeUlkOiAxMjM0NSxcbiAgICAgICAgb3duZXJJZDogNzM1NDQ0NTMxLFxuICAgICAgICBpc09iamVjdERlbGV0YWJsZTogdHJ1ZSxcbiAgICAgICAgaXNGaWVsZEFkZGl0aW9uQWxsb3dlZDogdHJ1ZSxcbiAgICAgICAgaXNGaWVsZE1vZGlmaWNhdGlvbkFsbG93ZWQ6IHRydWUsXG4gICAgICAgIGNyZWF0ZWREYXRlOiAnMjAyNS0wMS0wMlQyMjo0MToxMi41MDE4NDE1LTA2OjAwJyxcbiAgICAgICAgY3JlYXRlZEJ5SWQ6IDczNTQ0NDUzMSxcbiAgICAgICAgbW9kaWZpZWREYXRlOiAnMjAyNS0wMS0wMlQyMjo0MToxMi41MDE4NDE1LTA2OjAwJyxcbiAgICAgICAgbW9kaWZpZWRCeUlkOiA3MzU0NDQ1MzEsXG4gICAgICAgIG93bmVyTmFtZTogJ1J1ZGRlcnN0YWNrSW50ZWdyYXRpb24gYXBwIHVzZXInLFxuICAgICAgICByb3dDb3VudDogMCxcbiAgICAgICAgZGF0YVJldGVudGlvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICBpc0RlbGV0ZUF0RW5kT2ZSZXRlbnRpb25QZXJpb2Q6IHRydWUsXG4gICAgICAgICAgaXNSb3dCYXNlZFJldGVudGlvbjogZmFsc2UsXG4gICAgICAgICAgaXNSZXNldFJldGVudGlvblBlcmlvZE9uSW1wb3J0OiBmYWxzZSxcbiAgICAgICAgICByb3dCYXNlZFRocmVzaG9sZDogMTAwMDAwMDAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2tleTEnLFxuICAgICAgICAgICAgaWQ6ICczMDBiYTIzMy1iN2UwLTQ3MzItYmE4NS0xYmMwMTIwOGZjMWInLFxuICAgICAgICAgICAgdHlwZTogJ1RleHQnLFxuICAgICAgICAgICAgbWFza1R5cGU6ICdOb25lJyxcbiAgICAgICAgICAgIHN0b3JhZ2VUeXBlOiAnUGxhaW4nLFxuICAgICAgICAgICAgbGVuZ3RoOiAyNTQsXG4gICAgICAgICAgICBvcmRpbmFsOiAwLFxuICAgICAgICAgICAgaXNOdWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByaW1hcnlLZXk6IHRydWUsXG4gICAgICAgICAgICBpc1RlbXBsYXRlRmllbGQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNJbmhlcml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpc092ZXJyaWRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaXNIaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgaXNSZWFkT25seTogZmFsc2UsXG4gICAgICAgICAgICBtdXN0T3ZlcnJpZGU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2tleTInLFxuICAgICAgICAgICAgaWQ6ICc3NWEzOGY5OC1lODY1LTQzY2UtOTcwMi01YjMxN2JhMjlkOTInLFxuICAgICAgICAgICAgdHlwZTogJ0VtYWlsQWRkcmVzcycsXG4gICAgICAgICAgICBtYXNrVHlwZTogJ05vbmUnLFxuICAgICAgICAgICAgc3RvcmFnZVR5cGU6ICdQbGFpbicsXG4gICAgICAgICAgICBsZW5ndGg6IDI1NCxcbiAgICAgICAgICAgIG9yZGluYWw6IDAsXG4gICAgICAgICAgICBpc051bGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaXNQcmltYXJ5S2V5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzVGVtcGxhdGVGaWVsZDogZmFsc2UsXG4gICAgICAgICAgICBpc0luaGVyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzT3ZlcnJpZGFibGU6IHRydWUsXG4gICAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBpc1JlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICAgIG11c3RPdmVycmlkZTogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmllbGRDb3VudDogMixcbiAgICAgIH07XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KFxuICAgICAgICAgICdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEucmVzdC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL2RhdGEvdjEvY3VzdG9tb2JqZWN0cycsXG4gICAgICAgIClcbiAgICAgICAgLnJlcGx5KDIwMCwgdmFsaWRSZXNwb25zZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZm1jQ2xpZW50LmNyZWF0ZURhdGFFeHRlbnNpb24oe1xuICAgICAgICBuYW1lOiAndGVzdC1kZScsXG4gICAgICAgIGNhdGVnb3J5SUQ6ICcxMjM0NScsXG4gICAgICAgIGRhdGFSZXRlbnRpb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgaXNEZWxldGVBdEVuZE9mUmV0ZW50aW9uUGVyaW9kOiB0cnVlLFxuICAgICAgICAgIGlzUm93QmFzZWRSZXRlbnRpb246IGZhbHNlLFxuICAgICAgICAgIGlzUmVzZXRSZXRlbnRpb25QZXJpb2RPbkltcG9ydDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXkxJyxcbiAgICAgICAgICAgIHR5cGU6ICdUZXh0JyxcbiAgICAgICAgICAgIGxlbmd0aDogMjU0LFxuICAgICAgICAgICAgaXNOdWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByaW1hcnlLZXk6IHRydWUsXG4gICAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBpc1JlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzT3ZlcnJpZGFibGU6IHRydWUsXG4gICAgICAgICAgICBpc1RlbXBsYXRlRmllbGQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNJbmhlcml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBtdXN0T3ZlcnJpZGU6IGZhbHNlLFxuICAgICAgICAgICAgb3JkaW5hbDogMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXkyJyxcbiAgICAgICAgICAgIHR5cGU6ICdFbWFpbEFkZHJlc3MnLFxuICAgICAgICAgICAgbGVuZ3RoOiAyNTQsXG4gICAgICAgICAgICBpc051bGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaXNQcmltYXJ5S2V5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzSGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGlzUmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgaXNPdmVycmlkYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGVtcGxhdGVGaWVsZDogZmFsc2UsXG4gICAgICAgICAgICBpc0luaGVyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG11c3RPdmVycmlkZTogZmFsc2UsXG4gICAgICAgICAgICBvcmRpbmFsOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh2YWxpZFJlc3BvbnNlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoXG4gICAgICAgICAgJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5yZXN0Lm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vZGF0YS92MS9jdXN0b21vYmplY3RzJyxcbiAgICAgICAgKVxuICAgICAgICAucmVwbHkoNDAxLCB7XG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjpcbiAgICAgICAgICAgICdodHRwczovL2RldmVsb3Blci5zYWxlc2ZvcmNlLmNvbS9kb2NzL2F0bGFzLmVuLXVzLm1jLWFwaXMubWV0YS9tYy1hcGlzL2Vycm9yLWhhbmRsaW5nLmh0bScsXG4gICAgICAgICAgZXJyb3Jjb2RlOiAwLFxuICAgICAgICAgIG1lc3NhZ2U6ICdOb3QgQXV0aG9yaXplZCcsXG4gICAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2ZtY0NsaWVudC5jcmVhdGVEYXRhRXh0ZW5zaW9uKHtcbiAgICAgICAgICBuYW1lOiAndGVzdC1kZScsXG4gICAgICAgICAgY2F0ZWdvcnlJRDogJzEyMzQ1JyxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2tleTEnLFxuICAgICAgICAgICAgICB0eXBlOiAnVGV4dCcsXG4gICAgICAgICAgICAgIGxlbmd0aDogMjU0LFxuICAgICAgICAgICAgICBpc051bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaXNQcmltYXJ5S2V5OiB0cnVlLFxuICAgICAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgIGlzUmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgICBpc092ZXJyaWRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBpc1RlbXBsYXRlRmllbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0luaGVyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbXVzdE92ZXJyaWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgb3JkaW5hbDogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4cGVjdChlKS50b0VxdWFsKG5ldyBFcnJvcignTm90IEF1dGhvcml6ZWQnKSk7XG4gICAgICB9XG4gICAgICBleHBlY3QodXRpbHMuaXNFeHBpcmVkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh2YWxpZEF1dGhPYmplY3QpO1xuICAgICAgZXhwZWN0KHJlcXVlc3RUb2tlblNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdnZXRCdXNpbmVzc1VuaXRzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2V0IGFsbCB0aGUgYnVzaW5lc3MgdW5pdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIHhtbG5zOnhzZD1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hXCIgeG1sbnM6d3NhPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCIgeG1sbnM6d3NzZT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiIHhtbG5zOndzdT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS11dGlsaXR5LTEuMC54c2RcIj48c29hcDpIZWFkZXI+PHdzYTpBY3Rpb24+UmV0cmlldmVSZXNwb25zZTwvd3NhOkFjdGlvbj48d3NhOk1lc3NhZ2VJRD51cm46dXVpZDowYmVkNjAyYi02M2M0LTRiYjQtOTU4Mi0yYjI3YzhmMmIxZGE8L3dzYTpNZXNzYWdlSUQ+PHdzYTpSZWxhdGVzVG8+dXJuOnV1aWQ6NDVkY2MyNTEtYTAzNy00MTcyLTk5Y2UtNjY2YTZiM2I4NzJjPC93c2E6UmVsYXRlc1RvPjx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+PHdzc2U6U2VjdXJpdHk+PHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLWQwMzA4YWUyLTRhZGYtNDU3OC04ZDg1LWZhYTcyMGE5NjZjZVwiPjx3c3U6Q3JlYXRlZD4yMDI1LTAxLTA5VDA1OjUwOjEwWjwvd3N1OkNyZWF0ZWQ+PHdzdTpFeHBpcmVzPjIwMjUtMDEtMDlUMDU6NTU6MTBaPC93c3U6RXhwaXJlcz48L3dzdTpUaW1lc3RhbXA+PC93c3NlOlNlY3VyaXR5Pjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48UmV0cmlldmVSZXNwb25zZU1zZyB4bWxucz1cImh0dHA6Ly9leGFjdHRhcmdldC5jb20vd3NkbC9wYXJ0bmVyQVBJXCI+PE92ZXJhbGxTdGF0dXM+T0s8L092ZXJhbGxTdGF0dXM+PFJlcXVlc3RJRD5hYjk0N2NhYS0zNGJkLTRlNWItODRjMS01NGFiMWU2MzNhNmY8L1JlcXVlc3RJRD48UmVzdWx0cyB4c2k6dHlwZT1cIkJ1c2luZXNzVW5pdFwiPjxQYXJ0bmVyS2V5IHhzaTpuaWw9XCJ0cnVlXCIgLz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+aWQ8L05hbWU+PFZhbHVlPjUzNDAwMzIxMDwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+bmFtZTwvTmFtZT48VmFsdWU+TGFuc2Rvd25lIFN0YWRpdW0gTFA8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PE9iamVjdElEIHhzaTpuaWw9XCJ0cnVlXCIgLz48QWNjb3VudFR5cGU+Tm9uZTwvQWNjb3VudFR5cGU+PFN1YnNjcmlwdGlvbiB4c2k6bmlsPVwidHJ1ZVwiIC8+PC9SZXN1bHRzPjxSZXN1bHRzIHhzaTp0eXBlPVwiQnVzaW5lc3NVbml0XCI+PFBhcnRuZXJLZXkgeHNpOm5pbD1cInRydWVcIiAvPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5pZDwvTmFtZT48VmFsdWU+NTM0MDAzMjEwPC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5uYW1lPC9OYW1lPjxWYWx1ZT5MYW5zZG93bmUgU3RhZGl1bSBMUDwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48T2JqZWN0SUQgeHNpOm5pbD1cInRydWVcIiAvPjxBY2NvdW50VHlwZT5Ob25lPC9BY2NvdW50VHlwZT48U3Vic2NyaXB0aW9uIHhzaTpuaWw9XCJ0cnVlXCIgLz48L1Jlc3VsdHM+PC9SZXRyaWV2ZVJlc3BvbnNlTXNnPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT5gO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uUG9zdCgnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9TZXJ2aWNlLmFzbXgnKVxuICAgICAgICAucmVwbHkoMjAwLCB2YWxpZFJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNmbWNDbGllbnQuZ2V0QnVzaW5lc3NVbml0cygpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKFtcbiAgICAgICAgeyBOYW1lOiAnTGFuc2Rvd25lIFN0YWRpdW0gTFAnLCBJRDogNTM0MDAzMjEwIH0sXG4gICAgICAgIHsgTmFtZTogJ0xhbnNkb3duZSBTdGFkaXVtIExQJywgSUQ6IDUzNDAwMzIxMCB9LFxuICAgICAgXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZSBzY2VuYXJpbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgY2xpZW50SWQ6ICd0ZXN0LWNsaWVudCcsXG4gICAgICAgIGNsaWVudFNlY3JldDogJ3Rlc3Qtc2VjcmV0JyxcbiAgICAgICAgc3ViRG9tYWluOiAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMScsXG4gICAgICAgIGFjY2Vzc190b2tlbjogJ3ZhbGlkLXRva2VuJyxcbiAgICAgICAgZXhwaXJhdGlvbjogcHJvY2Vzcy5ocnRpbWUoKVswXSArIDM2MDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUModmFsaWRBdXRoT2JqZWN0KTtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICBjb25zdCByZXF1ZXN0VG9rZW5TcHkgPSBqZXN0LnNweU9uKHV0aWxzLCAnZ2V0VG9rZW4nKTtcblxuICAgICAgY29uc3QgbW9ja0FkYXB0ZXIgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KCdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEuc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL1NlcnZpY2UuYXNteCcpXG4gICAgICAgIC5yZXBseShcbiAgICAgICAgICA1MDAsXG4gICAgICAgICAgYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PlxuPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvXCIgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiB4bWxuczp4c2Q9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiIHhtbG5zOndzYT1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiIHhtbG5zOndzc2U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2RcIiB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCI+XG4gICAgPHNvYXA6SGVhZGVyPlxuICAgICAgICA8d3NhOkFjdGlvbj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmcvZmF1bHQ8L3dzYTpBY3Rpb24+XG4gICAgICAgIDx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjE1ZDNlMjg2LTk3ZjUtNGY1Yy1iMGZhLWQ1ODY3MzYyMTU2ODwvd3NhOk1lc3NhZ2VJRD5cbiAgICAgICAgPHdzYTpSZWxhdGVzVG8+dXJuOnV1aWQ6YjM4ZWU4NWItOGY2Yi00ZWRjLTlhYjktMjNhYjZlNWE1MWUzPC93c2E6UmVsYXRlc1RvPlxuICAgICAgICA8d3NhOlRvPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9yb2xlL2Fub255bW91czwvd3NhOlRvPlxuICAgICAgICA8d3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgIDx3c3U6VGltZXN0YW1wIHdzdTpJZD1cIlRpbWVzdGFtcC1kYzAyZjhlOC1hZjc0LTQ3OTktYjVlOS05ZTljMDI5OTI3OGZcIj5cbiAgICAgICAgICAgICAgICA8d3N1OkNyZWF0ZWQ+MjAyNS0wMS0wM1QwNDo1OTo0NVo8L3dzdTpDcmVhdGVkPlxuICAgICAgICAgICAgICAgIDx3c3U6RXhwaXJlcz4yMDI1LTAxLTAzVDA1OjA0OjQ1Wjwvd3N1OkV4cGlyZXM+XG4gICAgICAgICAgICA8L3dzdTpUaW1lc3RhbXA+XG4gICAgICAgIDwvd3NzZTpTZWN1cml0eT5cbiAgICA8L3NvYXA6SGVhZGVyPlxuICAgIDxzb2FwOkJvZHk+XG4gICAgICAgIDxzb2FwOkZhdWx0PlxuICAgICAgICAgICAgPGZhdWx0Y29kZSB4bWxuczpxMD1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiPnEwOlNlY3VyaXR5PC9mYXVsdGNvZGU+XG4gICAgICAgICAgICA8ZmF1bHRzdHJpbmc+TG9naW4gRmFpbGVkPC9mYXVsdHN0cmluZz5cbiAgICAgICAgICAgIDxmYXVsdGFjdG9yPmh0dHBzOi8vbWN2Z2txejNjMWNocmJzejU4Nms5MHM0MWhwOC5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vU2VydmljZS5hc214PC9mYXVsdGFjdG9yPlxuICAgICAgICA8L3NvYXA6RmF1bHQ+XG4gICAgPC9zb2FwOkJvZHk+XG48L3NvYXA6RW52ZWxvcGU+YCxcbiAgICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0QnVzaW5lc3NVbml0cygpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChuZXcgRXJyb3IoJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgNTAwJykpO1xuICAgICAgfVxuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnZ2V0RGF0YUZvbGRlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgYWxsIHRoZSBkYXRhIGZvbGRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz5cbiAgICAgICAgPHNvYXA6RW52ZWxvcGVcbiAgICAgICAgICB4bWxuczpzb2FwPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIlxuICAgICAgICAgIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCJcbiAgICAgICAgICB4bWxuczp4c2Q9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiXG4gICAgICAgICAgeG1sbnM6d3NhPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCJcbiAgICAgICAgICB4bWxuczp3c3NlPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkXCJcbiAgICAgICAgICB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCI+XG4gICAgICAgICAgPHNvYXA6SGVhZGVyPlxuICAgICAgICAgICAgPHdzYTpBY3Rpb24+UmV0cmlldmVSZXNwb25zZTwvd3NhOkFjdGlvbj5cbiAgICAgICAgICAgIDx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjFjZjRmZDcyLTkzYTktNDM2MC1hNzVjLTk4OGRjNzA4ZWI3Yzwvd3NhOk1lc3NhZ2VJRD5cbiAgICAgICAgICAgIDx3c2E6UmVsYXRlc1RvPnVybjp1dWlkOjUyN2ExM2E1LWE3OTgtNDQzOC1iMjNkLWI3ZmQwODRhYzk1Mzwvd3NhOlJlbGF0ZXNUbz5cbiAgICAgICAgICAgIDx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+XG4gICAgICAgICAgICA8d3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgICAgPHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLTlkN2M1NzA3LWU4ZWMtNGRiOC1iNTVlLTdjYmQyY2UyMmZhM1wiPlxuICAgICAgICAgICAgICAgIDx3c3U6Q3JlYXRlZD4yMDI1LTAxLTAzVDA1OjU0OjE2Wjwvd3N1OkNyZWF0ZWQ+XG4gICAgICAgICAgICAgICAgPHdzdTpFeHBpcmVzPjIwMjUtMDEtMDNUMDU6NTk6MTZaPC93c3U6RXhwaXJlcz5cbiAgICAgICAgICAgICAgPC93c3U6VGltZXN0YW1wPlxuICAgICAgICAgICAgPC93c3NlOlNlY3VyaXR5PlxuICAgICAgICAgIDwvc29hcDpIZWFkZXI+XG4gICAgICAgICAgPHNvYXA6Qm9keT5cbiAgICAgICAgICAgIDxSZXRyaWV2ZVJlc3BvbnNlTXNnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL2V4YWN0dGFyZ2V0LmNvbS93c2RsL3BhcnRuZXJBUElcIj5cbiAgICAgICAgICAgICAgPE92ZXJhbGxTdGF0dXM+T0s8L092ZXJhbGxTdGF0dXM+XG4gICAgICAgICAgICAgIDxSZXF1ZXN0SUQ+NWQ5MTcwOGItMjVkMS00YjI3LTgwYTAtZGM4NGVmMGFhYzBjPC9SZXF1ZXN0SUQ+XG4gICAgICAgICAgICAgIDxSZXN1bHRzIHhzaTp0eXBlPVwiRGF0YUZvbGRlclwiPlxuICAgICAgICAgICAgICAgIDxDbGllbnQ+XG4gICAgICAgICAgICAgICAgICA8SUQ+NTM0MDAzMjEwPC9JRD5cbiAgICAgICAgICAgICAgICA8L0NsaWVudD5cbiAgICAgICAgICAgICAgICA8UGFydG5lcktleSB4c2k6bmlsPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPElEPjExNTQ2PC9JRD5cbiAgICAgICAgICAgICAgICA8T2JqZWN0SUQ+NGY1OTFjYTEtODIzNi00N2I4LTkyZmUtY2YwZGNmN2NmZmI1PC9PYmplY3RJRD5cbiAgICAgICAgICAgICAgICA8TmFtZT5teSBlbWFpbHM8L05hbWU+XG4gICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIC8+XG4gICAgICAgICAgICAgICAgPENvbnRlbnRUeXBlPmVtYWlsPC9Db250ZW50VHlwZT5cbiAgICAgICAgICAgICAgPC9SZXN1bHRzPlxuICAgICAgICAgICAgICA8UmVzdWx0cyB4c2k6dHlwZT1cIkRhdGFGb2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8Q2xpZW50PlxuICAgICAgICAgICAgICAgICAgPElEPjUzNDAwMzIxMDwvSUQ+XG4gICAgICAgICAgICAgICAgPC9DbGllbnQ+XG4gICAgICAgICAgICAgICAgPFBhcnRuZXJLZXkgeHNpOm5pbD1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDxJRD4xMTU0NzwvSUQ+XG4gICAgICAgICAgICAgICAgPE9iamVjdElEPjY5NWRkN2M2LWQ3NjQtNDc5ZC05ZTc3LTM2ZDE0MWNkZDM0MjwvT2JqZWN0SUQ+XG4gICAgICAgICAgICAgICAgPE5hbWU+c2ltcGxlIGF1dG9tYXRlZCBlbWFpbHM8L05hbWU+XG4gICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIC8+XG4gICAgICAgICAgICAgICAgPENvbnRlbnRUeXBlPmF1dG9tYXRlZF9lbWFpbDwvQ29udGVudFR5cGU+XG4gICAgICAgICAgICAgIDwvUmVzdWx0cz5cbiAgICAgICAgICAgIDwvUmV0cmlldmVSZXNwb25zZU1zZz5cbiAgICAgICAgICA8L3NvYXA6Qm9keT5cbiAgICAgICAgPC9zb2FwOkVudmVsb3BlPmA7XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KCdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEuc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL1NlcnZpY2UuYXNteCcpXG4gICAgICAgIC5yZXBseSgyMDAsIHZhbGlkUmVzcG9uc2UpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2ZtY0NsaWVudC5nZXREYXRhRm9sZGVycygpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIENsaWVudDoge1xuICAgICAgICAgICAgSUQ6IDUzNDAwMzIxMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIENvbnRlbnRUeXBlOiAnZW1haWwnLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBJRDogMTE1NDYsXG4gICAgICAgICAgTmFtZTogJ215IGVtYWlscycsXG4gICAgICAgICAgT2JqZWN0SUQ6ICc0ZjU5MWNhMS04MjM2LTQ3YjgtOTJmZS1jZjBkY2Y3Y2ZmYjUnLFxuICAgICAgICAgIFBhcnRuZXJLZXk6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2xpZW50OiB7XG4gICAgICAgICAgICBJRDogNTM0MDAzMjEwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQ29udGVudFR5cGU6ICdhdXRvbWF0ZWRfZW1haWwnLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBJRDogMTE1NDcsXG4gICAgICAgICAgTmFtZTogJ3NpbXBsZSBhdXRvbWF0ZWQgZW1haWxzJyxcbiAgICAgICAgICBPYmplY3RJRDogJzY5NWRkN2M2LWQ3NjQtNDc5ZC05ZTc3LTM2ZDE0MWNkZDM0MicsXG4gICAgICAgICAgUGFydG5lcktleTogJycsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlIHNjZW5hcmlvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRBdXRoT2JqZWN0ID0ge1xuICAgICAgICBjbGllbnRJZDogJ3Rlc3QtY2xpZW50JyxcbiAgICAgICAgY2xpZW50U2VjcmV0OiAndGVzdC1zZWNyZXQnLFxuICAgICAgICBzdWJEb21haW46ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxJyxcbiAgICAgICAgYWNjZXNzX3Rva2VuOiAndmFsaWQtdG9rZW4nLFxuICAgICAgICBleHBpcmF0aW9uOiBwcm9jZXNzLmhydGltZSgpWzBdICsgMzYwMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNmbWNDbGllbnQgPSBuZXcgU0ZNQyh2YWxpZEF1dGhPYmplY3QpO1xuXG4gICAgICBqZXN0LnNweU9uKHV0aWxzLCAnaXNFeHBpcmVkJykubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlblNweSA9IGplc3Quc3B5T24odXRpbHMsICdnZXRUb2tlbicpO1xuXG4gICAgICBjb25zdCBtb2NrQWRhcHRlciA9IG5ldyBBeGlvc01vY2tBZGFwdGVyKGF4aW9zLCB7IG9uTm9NYXRjaDogJ3Rocm93RXhjZXB0aW9uJyB9KTtcbiAgICAgIG1vY2tBZGFwdGVyXG4gICAgICAgIC5vblBvc3QoJ2h0dHBzOi8vYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMS5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vU2VydmljZS5hc214JylcbiAgICAgICAgLnJlcGx5KFxuICAgICAgICAgIDUwMCxcbiAgICAgICAgICBgPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+XG4gICAgICAgICAgPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvXCIgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiB4bWxuczp4c2Q9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiIHhtbG5zOndzYT1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiIHhtbG5zOndzc2U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2RcIiB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCI+XG4gICAgICAgICAgICAgIDxzb2FwOkhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDx3c2E6QWN0aW9uPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9mYXVsdDwvd3NhOkFjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDx3c2E6TWVzc2FnZUlEPnVybjp1dWlkOjE1ZDNlMjg2LTk3ZjUtNGY1Yy1iMGZhLWQ1ODY3MzYyMTU2ODwvd3NhOk1lc3NhZ2VJRD5cbiAgICAgICAgICAgICAgICAgIDx3c2E6UmVsYXRlc1RvPnVybjp1dWlkOmIzOGVlODViLThmNmItNGVkYy05YWI5LTIzYWI2ZTVhNTFlMzwvd3NhOlJlbGF0ZXNUbz5cbiAgICAgICAgICAgICAgICAgIDx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+XG4gICAgICAgICAgICAgICAgICA8d3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgICAgICAgICAgICA8d3N1OlRpbWVzdGFtcCB3c3U6SWQ9XCJUaW1lc3RhbXAtZGMwMmY4ZTgtYWY3NC00Nzk5LWI1ZTktOWU5YzAyOTkyNzhmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3U6Q3JlYXRlZD4yMDI1LTAxLTAzVDA0OjU5OjQ1Wjwvd3N1OkNyZWF0ZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3U6RXhwaXJlcz4yMDI1LTAxLTAzVDA1OjA0OjQ1Wjwvd3N1OkV4cGlyZXM+XG4gICAgICAgICAgICAgICAgICAgICAgPC93c3U6VGltZXN0YW1wPlxuICAgICAgICAgICAgICAgICAgPC93c3NlOlNlY3VyaXR5PlxuICAgICAgICAgICAgICA8L3NvYXA6SGVhZGVyPlxuICAgICAgICAgICAgICA8c29hcDpCb2R5PlxuICAgICAgICAgICAgICAgICAgPHNvYXA6RmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGZhdWx0Y29kZSB4bWxuczpxMD1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiPnEwOlNlY3VyaXR5PC9mYXVsdGNvZGU+XG4gICAgICAgICAgICAgICAgICAgICAgPGZhdWx0c3RyaW5nPkxvZ2luIEZhaWxlZDwvZmF1bHRzdHJpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPGZhdWx0YWN0b3I+aHR0cHM6Ly9tY3Zna3F6M2MxY2hyYnN6NTg2azkwczQxaHA4LnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9TZXJ2aWNlLmFzbXg8L2ZhdWx0YWN0b3I+XG4gICAgICAgICAgICAgICAgICA8L3NvYXA6RmF1bHQ+XG4gICAgICAgICAgICAgIDwvc29hcDpCb2R5PlxuICAgICAgICAgIDwvc29hcDpFbnZlbG9wZT5gLFxuICAgICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2ZtY0NsaWVudC5nZXREYXRhRm9sZGVycygpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBleHBlY3QoZSkudG9FcXVhbChuZXcgRXJyb3IoJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgNTAwJykpO1xuICAgICAgfVxuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnZ2V0RGF0YUV4dGVuc2lvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgYWxsIHRoZSBkYXRhIGV4dGVuc2lvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZEF1dGhPYmplY3QgPSB7XG4gICAgICAgIGNsaWVudElkOiAndGVzdC1jbGllbnQnLFxuICAgICAgICBjbGllbnRTZWNyZXQ6ICd0ZXN0LXNlY3JldCcsXG4gICAgICAgIHN1YkRvbWFpbjogJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEnLFxuICAgICAgICBhY2Nlc3NfdG9rZW46ICd2YWxpZC10b2tlbicsXG4gICAgICAgIGV4cGlyYXRpb246IHByb2Nlc3MuaHJ0aW1lKClbMF0gKyAzNjAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2ZtY0NsaWVudCA9IG5ldyBTRk1DKHZhbGlkQXV0aE9iamVjdCk7XG5cbiAgICAgIGplc3Quc3B5T24odXRpbHMsICdpc0V4cGlyZWQnKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuU3B5ID0gamVzdC5zcHlPbih1dGlscywgJ2dldFRva2VuJyk7XG5cbiAgICAgIGNvbnN0IG1vY2tBZGFwdGVyID0gbmV3IEF4aW9zTW9ja0FkYXB0ZXIoYXhpb3MsIHsgb25Ob01hdGNoOiAndGhyb3dFeGNlcHRpb24nIH0pO1xuICAgICAgY29uc3QgdmFsaWRSZXNwb25zZSA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIHhtbG5zOnhzZD1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hXCIgeG1sbnM6d3NhPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCIgeG1sbnM6d3NzZT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZFwiIHhtbG5zOndzdT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS11dGlsaXR5LTEuMC54c2RcIj48c29hcDpIZWFkZXI+PHdzYTpBY3Rpb24+UmV0cmlldmVSZXNwb25zZTwvd3NhOkFjdGlvbj48d3NhOk1lc3NhZ2VJRD51cm46dXVpZDowMjE0ZDU5NS0zOWYyLTQyYmItYjE4Zi03ODJlM2FlYzkxMjU8L3dzYTpNZXNzYWdlSUQ+PHdzYTpSZWxhdGVzVG8+dXJuOnV1aWQ6OGM5ZjFmZTYtNTg0YS00OTJmLWFkMWUtYjYyODg3ZTZiMjdkPC93c2E6UmVsYXRlc1RvPjx3c2E6VG8+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC93c2E6VG8+PHdzc2U6U2VjdXJpdHk+PHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLTc0OWM1YjkwLTdjM2UtNDA1ZS1hODkxLTRjYWI5YWEzMTlkNVwiPjx3c3U6Q3JlYXRlZD4yMDI1LTAxLTA5VDEwOjAxOjE1Wjwvd3N1OkNyZWF0ZWQ+PHdzdTpFeHBpcmVzPjIwMjUtMDEtMDlUMTA6MDY6MTVaPC93c3U6RXhwaXJlcz48L3dzdTpUaW1lc3RhbXA+PC93c3NlOlNlY3VyaXR5Pjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48UmV0cmlldmVSZXNwb25zZU1zZyB4bWxucz1cImh0dHA6Ly9leGFjdHRhcmdldC5jb20vd3NkbC9wYXJ0bmVyQVBJXCI+PE92ZXJhbGxTdGF0dXM+T0s8L092ZXJhbGxTdGF0dXM+PFJlcXVlc3RJRD4yNjEyMzg0Ni00MDQ2LTQzMGItODlkYy05ZTVjMmViNTg3ZmQ8L1JlcXVlc3RJRD48UmVzdWx0cyB4c2k6dHlwZT1cIkRhdGFFeHRlbnNpb25cIj48UGFydG5lcktleSB4c2k6bmlsPVwidHJ1ZVwiIC8+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk9iamVjdElkPC9OYW1lPjxWYWx1ZT5iMzBlMjZkYi01ZTU5LWVmMTEtYmE2ZC1mNDAzNDNjZTg5ZDg8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk5BTUU8L05hbWU+PFZhbHVlPnJ1ZGRlcnN0YWNrVGVzdGluZzEzMzQyPC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5DYXRlZ29yeUlkPC9OYW1lPjxWYWx1ZT4xMjM0NTwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48T2JqZWN0SUQgeHNpOm5pbD1cInRydWVcIiAvPjwvUmVzdWx0cz48UmVzdWx0cyB4c2k6dHlwZT1cIkRhdGFFeHRlbnNpb25cIj48UGFydG5lcktleSB4c2k6bmlsPVwidHJ1ZVwiIC8+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk9iamVjdElkPC9OYW1lPjxWYWx1ZT4xOTFjNWIyYS01N2I4LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzg8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPk5BTUU8L05hbWU+PFZhbHVlPlRlc3RGcm9tU0RLMTIzNDwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+Q2F0ZWdvcnlJZDwvTmFtZT48VmFsdWU+MTIzNDU8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PE9iamVjdElEIHhzaTpuaWw9XCJ0cnVlXCIgLz48L1Jlc3VsdHM+PFJlc3VsdHMgeHNpOnR5cGU9XCJEYXRhRXh0ZW5zaW9uXCI+PFBhcnRuZXJLZXkgeHNpOm5pbD1cInRydWVcIiAvPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5PYmplY3RJZDwvTmFtZT48VmFsdWU+NTAzODU2ZTMtNWFiOC1lZjExLWJhNmUtZjQwMzQzZDM4MGM4PC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxQYXJ0bmVyUHJvcGVydGllcz48TmFtZT5OQU1FPC9OYW1lPjxWYWx1ZT5ydWRkZXJzdGFja1Rlc3RpbmcxMjExMjA8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPkNhdGVnb3J5SWQ8L05hbWU+PFZhbHVlPjEyMzQ1PC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxPYmplY3RJRCB4c2k6bmlsPVwidHJ1ZVwiIC8+PC9SZXN1bHRzPjxSZXN1bHRzIHhzaTp0eXBlPVwiRGF0YUV4dGVuc2lvblwiPjxQYXJ0bmVyS2V5IHhzaTpuaWw9XCJ0cnVlXCIgLz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+T2JqZWN0SWQ8L05hbWU+PFZhbHVlPjE3NDJmNmYxLTc5YjgtZWYxMS1iYTZlLWY0MDM0M2QzODBjODwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+TkFNRTwvTmFtZT48VmFsdWU+cnVkZGVyc3RhY2tUZXN0aW5nMTI0NDI8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PFBhcnRuZXJQcm9wZXJ0aWVzPjxOYW1lPkNhdGVnb3J5SWQ8L05hbWU+PFZhbHVlPjEyMzQ1PC9WYWx1ZT48L1BhcnRuZXJQcm9wZXJ0aWVzPjxPYmplY3RJRCB4c2k6bmlsPVwidHJ1ZVwiIC8+PC9SZXN1bHRzPjxSZXN1bHRzIHhzaTp0eXBlPVwiRGF0YUV4dGVuc2lvblwiPjxQYXJ0bmVyS2V5IHhzaTpuaWw9XCJ0cnVlXCIgLz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+T2JqZWN0SWQ8L05hbWU+PFZhbHVlPjRiYWY0Y2YxLThjYzktZWYxMS1iYTZlLWY0MDM0M2QzODBjODwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+TkFNRTwvTmFtZT48VmFsdWU+cnVkZGVyc3RhY2tUZXN0aW5nMDI5NTwvVmFsdWU+PC9QYXJ0bmVyUHJvcGVydGllcz48UGFydG5lclByb3BlcnRpZXM+PE5hbWU+Q2F0ZWdvcnlJZDwvTmFtZT48VmFsdWU+MTIzNDU8L1ZhbHVlPjwvUGFydG5lclByb3BlcnRpZXM+PE9iamVjdElEIHhzaTpuaWw9XCJ0cnVlXCIgLz48L1Jlc3VsdHM+PC9SZXRyaWV2ZVJlc3BvbnNlTXNnPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT5gO1xuICAgICAgbW9ja0FkYXB0ZXJcbiAgICAgICAgLm9uUG9zdCgnaHR0cHM6Ly9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxLnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbS9TZXJ2aWNlLmFzbXgnKVxuICAgICAgICAucmVwbHkoMjAwLCB2YWxpZFJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNmbWNDbGllbnQuZ2V0RGF0YUV4dGVuc2lvbnMoJ3ZhbGlkLWZvbGRlci1pZCcpO1xuICAgICAgZXhwZWN0KHV0aWxzLmlzRXhwaXJlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodmFsaWRBdXRoT2JqZWN0KTtcbiAgICAgIGV4cGVjdChyZXF1ZXN0VG9rZW5TcHkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIENhdGVnb3J5SWQ6IDEyMzQ1LFxuICAgICAgICAgIE5hbWU6ICdydWRkZXJzdGFja1Rlc3RpbmcxMzM0MicsXG4gICAgICAgICAgT2JqZWN0SWQ6ICdiMzBlMjZkYi01ZTU5LWVmMTEtYmE2ZC1mNDAzNDNjZTg5ZDgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2F0ZWdvcnlJZDogMTIzNDUsXG4gICAgICAgICAgTmFtZTogJ1Rlc3RGcm9tU0RLMTIzNCcsXG4gICAgICAgICAgT2JqZWN0SWQ6ICcxOTFjNWIyYS01N2I4LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2F0ZWdvcnlJZDogMTIzNDUsXG4gICAgICAgICAgTmFtZTogJ3J1ZGRlcnN0YWNrVGVzdGluZzEyMTEyMCcsXG4gICAgICAgICAgT2JqZWN0SWQ6ICc1MDM4NTZlMy01YWI4LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQ2F0ZWdvcnlJZDogMTIzNDUsXG4gICAgICAgICAgTmFtZTogJ3J1ZGRlcnN0YWNrVGVzdGluZzEyNDQyJyxcbiAgICAgICAgICBPYmplY3RJZDogJzE3NDJmNmYxLTc5YjgtZWYxMS1iYTZlLWY0MDM0M2QzODBjOCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBDYXRlZ29yeUlkOiAxMjM0NSxcbiAgICAgICAgICBOYW1lOiAncnVkZGVyc3RhY2tUZXN0aW5nMDI5NScsXG4gICAgICAgICAgT2JqZWN0SWQ6ICc0YmFmNGNmMS04Y2M5LWVmMTEtYmE2ZS1mNDAzNDNkMzgwYzgnLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZSBzY2VuYXJpbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQXV0aE9iamVjdCA9IHtcbiAgICAgICAgY2xpZW50SWQ6ICd0ZXN0LWNsaWVudCcsXG4gICAgICAgIGNsaWVudFNlY3JldDogJ3Rlc3Qtc2VjcmV0JyxcbiAgICAgICAgc3ViRG9tYWluOiAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMScsXG4gICAgICAgIGFjY2Vzc190b2tlbjogJ3ZhbGlkLXRva2VuJyxcbiAgICAgICAgZXhwaXJhdGlvbjogcHJvY2Vzcy5ocnRpbWUoKVswXSArIDM2MDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZm1jQ2xpZW50ID0gbmV3IFNGTUModmFsaWRBdXRoT2JqZWN0KTtcblxuICAgICAgamVzdC5zcHlPbih1dGlscywgJ2lzRXhwaXJlZCcpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG4gICAgICBjb25zdCByZXF1ZXN0VG9rZW5TcHkgPSBqZXN0LnNweU9uKHV0aWxzLCAnZ2V0VG9rZW4nKTtcblxuICAgICAgY29uc3QgbW9ja0FkYXB0ZXIgPSBuZXcgQXhpb3NNb2NrQWRhcHRlcihheGlvcywgeyBvbk5vTWF0Y2g6ICd0aHJvd0V4Y2VwdGlvbicgfSk7XG4gICAgICBtb2NrQWRhcHRlclxuICAgICAgICAub25Qb3N0KCdodHRwczovL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEuc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tL1NlcnZpY2UuYXNteCcpXG4gICAgICAgIC5yZXBseShcbiAgICAgICAgICA1MDAsXG4gICAgICAgICAgYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PlxuICAgICAgICAgIDxzb2FwOkVudmVsb3BlIHhtbG5zOnNvYXA9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlL1wiIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIgeG1sbnM6eHNkPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIiB4bWxuczp3c2E9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmdcIiB4bWxuczp3c3NlPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkXCIgeG1sbnM6d3N1PVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZFwiPlxuICAgICAgICAgICAgICA8c29hcDpIZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8d3NhOkFjdGlvbj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmcvZmF1bHQ8L3dzYTpBY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8d3NhOk1lc3NhZ2VJRD51cm46dXVpZDoxNWQzZTI4Ni05N2Y1LTRmNWMtYjBmYS1kNTg2NzM2MjE1Njg8L3dzYTpNZXNzYWdlSUQ+XG4gICAgICAgICAgICAgICAgICA8d3NhOlJlbGF0ZXNUbz51cm46dXVpZDpiMzhlZTg1Yi04ZjZiLTRlZGMtOWFiOS0yM2FiNmU1YTUxZTM8L3dzYTpSZWxhdGVzVG8+XG4gICAgICAgICAgICAgICAgICA8d3NhOlRvPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9yb2xlL2Fub255bW91czwvd3NhOlRvPlxuICAgICAgICAgICAgICAgICAgPHdzc2U6U2VjdXJpdHk+XG4gICAgICAgICAgICAgICAgICAgICAgPHdzdTpUaW1lc3RhbXAgd3N1OklkPVwiVGltZXN0YW1wLWRjMDJmOGU4LWFmNzQtNDc5OS1iNWU5LTllOWMwMjk5Mjc4ZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N1OkNyZWF0ZWQ+MjAyNS0wMS0wM1QwNDo1OTo0NVo8L3dzdTpDcmVhdGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N1OkV4cGlyZXM+MjAyNS0wMS0wM1QwNTowNDo0NVo8L3dzdTpFeHBpcmVzPlxuICAgICAgICAgICAgICAgICAgICAgIDwvd3N1OlRpbWVzdGFtcD5cbiAgICAgICAgICAgICAgICAgIDwvd3NzZTpTZWN1cml0eT5cbiAgICAgICAgICAgICAgPC9zb2FwOkhlYWRlcj5cbiAgICAgICAgICAgICAgPHNvYXA6Qm9keT5cbiAgICAgICAgICAgICAgICAgIDxzb2FwOkZhdWx0PlxuICAgICAgICAgICAgICAgICAgICAgIDxmYXVsdGNvZGUgeG1sbnM6cTA9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2RcIj5xMDpTZWN1cml0eTwvZmF1bHRjb2RlPlxuICAgICAgICAgICAgICAgICAgICAgIDxmYXVsdHN0cmluZz5Mb2dpbiBGYWlsZWQ8L2ZhdWx0c3RyaW5nPlxuICAgICAgICAgICAgICAgICAgICAgIDxmYXVsdGFjdG9yPmh0dHBzOi8vbWN2Z2txejNjMWNocmJzejU4Nms5MHM0MWhwOC5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb20vU2VydmljZS5hc214PC9mYXVsdGFjdG9yPlxuICAgICAgICAgICAgICAgICAgPC9zb2FwOkZhdWx0PlxuICAgICAgICAgICAgICA8L3NvYXA6Qm9keT5cbiAgICAgICAgICA8L3NvYXA6RW52ZWxvcGU+YCxcbiAgICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNmbWNDbGllbnQuZ2V0RGF0YUV4dGVuc2lvbnMoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhwZWN0KGUpLnRvRXF1YWwobmV3IEVycm9yKCdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDUwMCcpKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCh1dGlscy5pc0V4cGlyZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHZhbGlkQXV0aE9iamVjdCk7XG4gICAgICBleHBlY3QocmVxdWVzdFRva2VuU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -78,14 +78,17 @@ export interface CreateDataExtensionResponse extends Omit<DataExtensionFields, '
|
|
|
78
78
|
key: string;
|
|
79
79
|
name: string;
|
|
80
80
|
}
|
|
81
|
+
interface PartnerPropertyID {
|
|
82
|
+
Name: 'id';
|
|
83
|
+
Value: number;
|
|
84
|
+
}
|
|
85
|
+
interface PartnerPropertyName {
|
|
86
|
+
Name: 'name';
|
|
87
|
+
Value: string;
|
|
88
|
+
}
|
|
89
|
+
export type PartnerProperty = PartnerPropertyName | PartnerPropertyID;
|
|
81
90
|
export interface BusinessUnitResponse {
|
|
82
|
-
PartnerProperties: [
|
|
83
|
-
Name: string;
|
|
84
|
-
Value: string;
|
|
85
|
-
}, {
|
|
86
|
-
Name: string;
|
|
87
|
-
Value: number;
|
|
88
|
-
}];
|
|
91
|
+
PartnerProperties: PartnerProperty[];
|
|
89
92
|
}
|
|
90
93
|
export interface DataExtensionResponse {
|
|
91
94
|
PartnerProperties: [
|
|
@@ -108,4 +111,5 @@ export interface SoapResponseBody {
|
|
|
108
111
|
Results: BusinessUnitResponse | BusinessUnitResponse[] | DataFolder | DataFolder[] | DataExtensionResponse | DataExtensionResponse[];
|
|
109
112
|
};
|
|
110
113
|
}
|
|
114
|
+
export {};
|
|
111
115
|
//# sourceMappingURL=type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/sdks/sfmc/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE;QACxB,8BAA8B,CAAC,EAAE,OAAO,CAAC;QACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,8BAA8B,CAAC,EAAE,OAAO,CAAC;KAC1C,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE;QACL;YACE,UAAU,EAAE,OAAO,CAAC;YACpB,UAAU,EAAE,CAAC;gBAAE,UAAU,EAAE,OAAO,CAAC;gBAAC,kBAAkB,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SACrF;KACF,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,mBAAmB,EAAE,WAAW,GAAG,eAAe,CAAC;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/sdks/sfmc/type.ts"],"names":[],"mappings":"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"}
|
package/build/sdks/sfmc/type.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL3NmbWMvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRoT2JqZWN0IHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XG4gIHN1YkRvbWFpbjogc3RyaW5nO1xuICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICBhY2Nlc3NfdG9rZW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT2JqIHtcbiAgbGVmdE9wZXJhbmQ6IHN0cmluZztcbiAgcmlnaHRPcGVyYW5kOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzY2FsZT86IG51bWJlcjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgaXNOdWxsYWJsZTogYm9vbGVhbjtcbiAgaXNQcmltYXJ5S2V5OiBib29sZWFuO1xuICBpc0hpZGRlbjogYm9vbGVhbjtcbiAgaXNSZWFkT25seTogYm9vbGVhbjtcbiAgaXNPdmVycmlkYWJsZTogYm9vbGVhbjtcbiAgaXNUZW1wbGF0ZUZpZWxkOiBib29sZWFuO1xuICBpc0luaGVyaXRhYmxlOiBib29sZWFuO1xuICBtdXN0T3ZlcnJpZGU6IGJvb2xlYW47XG4gIG9yZGluYWw6IDA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUV4dGVuc2lvbkJvZHkge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3J5SUQ6IHN0cmluZztcbiAgZGF0YVJldGVudGlvblByb3BlcnRpZXM/OiB7XG4gICAgaXNEZWxldGVBdEVuZE9mUmV0ZW50aW9uUGVyaW9kPzogYm9vbGVhbjtcbiAgICBpc1Jvd0Jhc2VkUmV0ZW50aW9uPzogYm9vbGVhbjtcbiAgICBpc1Jlc2V0UmV0ZW50aW9uUGVyaW9kT25JbXBvcnQ/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL3NmbWMvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRoT2JqZWN0IHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XG4gIHN1YkRvbWFpbjogc3RyaW5nO1xuICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICBhY2Nlc3NfdG9rZW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT2JqIHtcbiAgbGVmdE9wZXJhbmQ6IHN0cmluZztcbiAgcmlnaHRPcGVyYW5kOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzY2FsZT86IG51bWJlcjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgaXNOdWxsYWJsZTogYm9vbGVhbjtcbiAgaXNQcmltYXJ5S2V5OiBib29sZWFuO1xuICBpc0hpZGRlbjogYm9vbGVhbjtcbiAgaXNSZWFkT25seTogYm9vbGVhbjtcbiAgaXNPdmVycmlkYWJsZTogYm9vbGVhbjtcbiAgaXNUZW1wbGF0ZUZpZWxkOiBib29sZWFuO1xuICBpc0luaGVyaXRhYmxlOiBib29sZWFuO1xuICBtdXN0T3ZlcnJpZGU6IGJvb2xlYW47XG4gIG9yZGluYWw6IDA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUV4dGVuc2lvbkJvZHkge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3J5SUQ6IHN0cmluZztcbiAgZGF0YVJldGVudGlvblByb3BlcnRpZXM/OiB7XG4gICAgaXNEZWxldGVBdEVuZE9mUmV0ZW50aW9uUGVyaW9kPzogYm9vbGVhbjtcbiAgICBpc1Jvd0Jhc2VkUmV0ZW50aW9uPzogYm9vbGVhbjtcbiAgICBpc1Jlc2V0UmV0ZW50aW9uUGVyaW9kT25JbXBvcnQ/OiBib29sZWFuO1xuICB9O1xuICBmaWVsZHM6IEZpZWxkc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1c2luZXNzVW5pdCB7XG4gIE5hbWU6IHN0cmluZztcbiAgSUQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUZvbGRlciB7XG4gIFBhcnRuZXJLZXk6IHN0cmluZztcbiAgSUQ6IG51bWJlcjtcbiAgT2JqZWN0SUQ6IHN0cmluZztcbiAgUGFyZW50Rm9sZGVyOiB7XG4gICAgUGFydG5lcktleTogc3RyaW5nO1xuICAgIElEOiBudW1iZXI7XG4gICAgT2JqZWN0SUQ6IHN0cmluZztcbiAgfTtcbiAgTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFFeHRlbnNpb24ge1xuICBOYW1lOiBzdHJpbmc7XG4gIE9iamVjdElkOiBzdHJpbmc7XG4gIENhdGVnb3J5SWQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdEF0dHJpYnV0ZXNSZXNwb25zZSB7XG4gIGl0ZW1zOiBbXG4gICAge1xuICAgICAgaXNSZWFkT25seTogYm9vbGVhbjtcbiAgICAgIGF0dHJpYnV0ZXM6IFt7IGlzUmVhZE9ubHk6IGJvb2xlYW47IGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nOyBkYXRhVHlwZTogc3RyaW5nIH1dO1xuICAgIH0sXG4gIF07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUV4dGVuc2lvbkZpZWxkcyB7XG4gIGZpZWxkczogRmllbGRzW107XG4gIGZpZWxkQ291bnQ6IG51bWJlcjtcbiAgZmllbGRQYWdlOiBudW1iZXI7XG4gIGZpZWxkUGFnZVNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVEYXRhRXh0ZW5zaW9uUmVzcG9uc2VcbiAgZXh0ZW5kcyBPbWl0PERhdGFFeHRlbnNpb25GaWVsZHMsICdmaWVsc1BhZ2UnIHwgJ2ZpZWxkUGFnZVNpemUnPiB7XG4gIGlkOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQYXJ0bmVyUHJvcGVydHlJRCB7XG4gIE5hbWU6ICdpZCc7XG4gIFZhbHVlOiBudW1iZXI7XG59XG5pbnRlcmZhY2UgUGFydG5lclByb3BlcnR5TmFtZSB7XG4gIE5hbWU6ICduYW1lJztcbiAgVmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGFydG5lclByb3BlcnR5ID0gUGFydG5lclByb3BlcnR5TmFtZSB8IFBhcnRuZXJQcm9wZXJ0eUlEO1xuZXhwb3J0IGludGVyZmFjZSBCdXNpbmVzc1VuaXRSZXNwb25zZSB7XG4gIFBhcnRuZXJQcm9wZXJ0aWVzOiBQYXJ0bmVyUHJvcGVydHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhRXh0ZW5zaW9uUmVzcG9uc2Uge1xuICBQYXJ0bmVyUHJvcGVydGllczogW1xuICAgIHsgTmFtZTogc3RyaW5nOyBWYWx1ZTogc3RyaW5nIH0sXG4gICAgeyBOYW1lOiBzdHJpbmc7IFZhbHVlOiBzdHJpbmcgfSxcbiAgICB7IE5hbWU6IHN0cmluZzsgVmFsdWU6IG51bWJlciB9LFxuICBdO1xufVxuZXhwb3J0IGludGVyZmFjZSBTb2FwUmVzcG9uc2VCb2R5IHtcbiAgUmV0cmlldmVSZXNwb25zZU1zZzoge1xuICAgIFJlc3VsdHM6XG4gICAgICB8IEJ1c2luZXNzVW5pdFJlc3BvbnNlXG4gICAgICB8IEJ1c2luZXNzVW5pdFJlc3BvbnNlW11cbiAgICAgIHwgRGF0YUZvbGRlclxuICAgICAgfCBEYXRhRm9sZGVyW11cbiAgICAgIHwgRGF0YUV4dGVuc2lvblJlc3BvbnNlXG4gICAgICB8IERhdGFFeHRlbnNpb25SZXNwb25zZVtdO1xuICB9O1xufVxuIl19
|