gamma-app-controller 1.1.18 → 1.1.20
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/esm2020/lib/application-controller/application-content.service.mjs +1 -1
- package/esm2020/lib/application-controller/application-controller.module.mjs +2 -2
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +2 -1
- package/esm2020/lib/application-controller/page-module/exception-operation/exception-operation.component.mjs +357 -0
- package/esm2020/lib/application-controller/page-module/exception-operation/exception-service.mjs +97 -0
- package/esm2020/lib/application-controller/page-templates/cdr-config/cdr-config.component.mjs +13 -3
- package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +124 -19
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +1 -2
- package/esm2020/lib/gamma-app-controller.module.mjs +131 -8
- package/esm2020/public-api.mjs +3 -2
- package/fesm2015/gamma-app-controller.mjs +2504 -1842
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +2497 -1840
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/page-module/exception-operation/exception-operation.component.d.ts +76 -0
- package/lib/application-controller/page-module/exception-operation/exception-service.d.ts +21 -0
- package/lib/application-controller/page-templates/cdr-config/cdr-config.component.d.ts +2 -1
- package/lib/application-controller/support-components/dash-chart/dash-chart.component.d.ts +18 -1
- package/lib/gamma-app-controller.module.d.ts +11 -2
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
package/esm2020/lib/application-controller/page-module/exception-operation/exception-service.mjs
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, map } from 'rxjs';
|
|
3
|
+
import { AppHttpService } from '../../app.http.service';
|
|
4
|
+
import { APP_ENVIRONMENT } from '../../environment';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
export class ExceptionConfigsService extends AppHttpService {
|
|
8
|
+
constructor(httpClient, environment) {
|
|
9
|
+
super(httpClient);
|
|
10
|
+
this.httpClient = httpClient;
|
|
11
|
+
this.environment = environment;
|
|
12
|
+
}
|
|
13
|
+
saveFileSequenceAnalyzerGroup(body) {
|
|
14
|
+
return this.http
|
|
15
|
+
.post(this.environment.appUrl + this.environment.apiVersion + '/settings/operations/saveFileSequenceAnalyzerGroup', JSON.stringify(body), this.options)
|
|
16
|
+
.pipe(map((response) => {
|
|
17
|
+
return response;
|
|
18
|
+
}), catchError(this.handleError));
|
|
19
|
+
}
|
|
20
|
+
editFileSequenceAnalyzerGroup(body) {
|
|
21
|
+
return this.http
|
|
22
|
+
.post(this.environment.appUrl + this.environment.apiVersion + '/settings/operations/editFileSequenceAnalyzerGroup', JSON.stringify(body), this.options)
|
|
23
|
+
.pipe(map((response) => {
|
|
24
|
+
return response;
|
|
25
|
+
}), catchError(this.handleError));
|
|
26
|
+
}
|
|
27
|
+
getCdrBrowserOperations() {
|
|
28
|
+
return this.http
|
|
29
|
+
.get(this.environment.appUrl + this.environment.apiVersion + '/search/getCdrBrowserOperations', { withCredentials: true })
|
|
30
|
+
.pipe(map((response) => {
|
|
31
|
+
return response;
|
|
32
|
+
}), catchError(this.handleError));
|
|
33
|
+
}
|
|
34
|
+
getAppSqlFunctionList() {
|
|
35
|
+
const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/app-setting/getAppSqlFunctionList';
|
|
36
|
+
return this.http
|
|
37
|
+
.get(apiUrl, { withCredentials: true })
|
|
38
|
+
.pipe(map((response) => {
|
|
39
|
+
return response;
|
|
40
|
+
}), catchError(this.handleError));
|
|
41
|
+
}
|
|
42
|
+
listFileSequenceAnalyzerGroups() {
|
|
43
|
+
const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/settings/operations/listFileSequenceAnalyzerGroups';
|
|
44
|
+
return this.http
|
|
45
|
+
.get(apiUrl, { withCredentials: true })
|
|
46
|
+
.pipe(map((response) => {
|
|
47
|
+
return response;
|
|
48
|
+
}), catchError(this.handleError));
|
|
49
|
+
}
|
|
50
|
+
deleteFileSequenceAnalyzerGroup(configid) {
|
|
51
|
+
return this.http
|
|
52
|
+
.delete(this.environment.appUrl + this.environment.apiVersion + "/settings/operations/deleteFileSequenceAnalyzerGroup/" + configid, { withCredentials: true })
|
|
53
|
+
.pipe(map((response) => {
|
|
54
|
+
return response;
|
|
55
|
+
}), catchError(this.handleError));
|
|
56
|
+
}
|
|
57
|
+
activateFileSequenceAnalyzerGroup(configid) {
|
|
58
|
+
return this.http
|
|
59
|
+
.get(this.environment.appUrl + this.environment.apiVersion + "/settings/operations/activateFileSequenceAnalyzerGroup?configId=" + configid, { withCredentials: true })
|
|
60
|
+
.pipe(map((response) => {
|
|
61
|
+
return response;
|
|
62
|
+
}), catchError(this.handleError));
|
|
63
|
+
}
|
|
64
|
+
deactivateFileSequenceAnalyzerGroup(configid) {
|
|
65
|
+
return this.http
|
|
66
|
+
.get(this.environment.appUrl + this.environment.apiVersion + "/settings/operations/deactivateFileSequenceAnalyzerGroup?configId=" + configid, { withCredentials: true })
|
|
67
|
+
.pipe(map((response) => {
|
|
68
|
+
return response;
|
|
69
|
+
}), catchError(this.handleError));
|
|
70
|
+
}
|
|
71
|
+
updateFileSequenceAnalyzerJobs() {
|
|
72
|
+
return this.http
|
|
73
|
+
.get(this.environment.appUrl + this.environment.apiVersion + "/settings/operations/updateFileSequenceAnalyzerJobs", { withCredentials: true })
|
|
74
|
+
.pipe(map((response) => {
|
|
75
|
+
return response;
|
|
76
|
+
}), catchError(this.handleError));
|
|
77
|
+
}
|
|
78
|
+
getAppDatasource() {
|
|
79
|
+
return this.http
|
|
80
|
+
.get(this.environment.appUrl + this.environment.apiVersion + '/operations/getAppDatasource')
|
|
81
|
+
.pipe(map((response) => {
|
|
82
|
+
return response;
|
|
83
|
+
}), catchError(this.handleError));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
ExceptionConfigsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExceptionConfigsService, deps: [{ token: i1.HttpClient }, { token: APP_ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
87
|
+
ExceptionConfigsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExceptionConfigsService, providedIn: "root" });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExceptionConfigsService, decorators: [{
|
|
89
|
+
type: Injectable,
|
|
90
|
+
args: [{
|
|
91
|
+
providedIn: "root"
|
|
92
|
+
}]
|
|
93
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
94
|
+
type: Inject,
|
|
95
|
+
args: [APP_ENVIRONMENT]
|
|
96
|
+
}] }]; } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1tb2R1bGUvZXhjZXB0aW9uLW9wZXJhdGlvbi9leGNlcHRpb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQW1CLFVBQVUsRUFBRSxHQUFHLEVBQTBCLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQU1wRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQUd2RCxZQUFvQixVQUFzQixFQUFvQyxXQUFnQjtRQUMxRixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFERCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQW9DLGdCQUFXLEdBQVgsV0FBVyxDQUFLO0lBRTlGLENBQUM7SUFDRCw2QkFBNkIsQ0FBQyxJQUFJO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsb0RBQW9ELEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3RKLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFFLEVBQUU7WUFDdkIsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lB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dkIsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O29IQWxHUSx1QkFBdUIsNENBR3FCLGVBQWU7d0hBSDNELHVCQUF1QixjQUZwQixNQUFNOzJGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlpRCxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAuaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgRXhjZXB0aW9uQ29uZmlnc1NlcnZpY2UgZXh0ZW5kcyBBcHBIdHRwU2VydmljZSB7XG5cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCwgIEBJbmplY3QoQVBQX0VOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaHR0cENsaWVudClcbiAgICB9XG4gICAgc2F2ZUZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXAoYm9keSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9zZXR0aW5ncy9vcGVyYXRpb25zL3NhdmVGaWxlU2VxdWVuY2VBbmFseXplckdyb3VwJywgSlNPTi5zdHJpbmdpZnkoYm9keSksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG4gICAgZWRpdEZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXAoYm9keSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9zZXR0aW5ncy9vcGVyYXRpb25zL2VkaXRGaWxlU2VxdWVuY2VBbmFseXplckdyb3VwJywgSlNPTi5zdHJpbmdpZnkoYm9keSksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cblxuICAgIGdldENkckJyb3dzZXJPcGVyYXRpb25zKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL3NlYXJjaC9nZXRDZHJCcm93c2VyT3BlcmF0aW9ucycsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gICAgfVxuXG4gICAgZ2V0QXBwU3FsRnVuY3Rpb25MaXN0KCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9hcHAtc2V0dGluZy9nZXRBcHBTcWxGdW5jdGlvbkxpc3QnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gICAgfVxuXG4gICAgbGlzdEZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXBzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9zZXR0aW5ncy9vcGVyYXRpb25zL2xpc3RGaWxlU2VxdWVuY2VBbmFseXplckdyb3Vwcyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cblxuICAgIGRlbGV0ZUZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXAoY29uZmlnaWQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZGVsZXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgXCIvc2V0dGluZ3Mvb3BlcmF0aW9ucy9kZWxldGVGaWxlU2VxdWVuY2VBbmFseXplckdyb3VwL1wiICsgY29uZmlnaWQsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSk6IGFueSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cbiAgICBhY3RpdmF0ZUZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXAoY29uZmlnaWQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgXCIvc2V0dGluZ3Mvb3BlcmF0aW9ucy9hY3RpdmF0ZUZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXA/Y29uZmlnSWQ9XCIgKyBjb25maWdpZCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gICAgfVxuICAgIGRlYWN0aXZhdGVGaWxlU2VxdWVuY2VBbmFseXplckdyb3VwKGNvbmZpZ2lkKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChcbiAgICAgICAgICAgICAgICB0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIFwiL3NldHRpbmdzL29wZXJhdGlvbnMvZGVhY3RpdmF0ZUZpbGVTZXF1ZW5jZUFuYWx5emVyR3JvdXA/Y29uZmlnSWQ9XCIgKyBjb25maWdpZCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gICAgfVxuICAgIHVwZGF0ZUZpbGVTZXF1ZW5jZUFuYWx5emVySm9icygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgXCIvc2V0dGluZ3Mvb3BlcmF0aW9ucy91cGRhdGVGaWxlU2VxdWVuY2VBbmFseXplckpvYnNcIiwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gICAgfVxuICAgICAgZ2V0QXBwRGF0YXNvdXJjZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldCh0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcvb3BlcmF0aW9ucy9nZXRBcHBEYXRhc291cmNlJylcbiAgICAgICAgICAgIC8vIC5nZXQoJy9hc3NldHMvYXBpLWRhdGEvZ2V0QXBwRGF0YXNvdXJjZS5qc29uJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cblxufVxuIl19
|
package/esm2020/lib/application-controller/page-templates/cdr-config/cdr-config.component.mjs
CHANGED
|
@@ -217,11 +217,21 @@ export class CdrConfigComponent {
|
|
|
217
217
|
deleteColume(i) {
|
|
218
218
|
this.submitObject.columnDefList.splice(i, 1);
|
|
219
219
|
}
|
|
220
|
+
moveItemForColumns(index, direction) {
|
|
221
|
+
if (index < 0 || index >= this.submitObject.columnDefList.length)
|
|
222
|
+
return;
|
|
223
|
+
const newPosition = direction === 'up' ? index - 1 : index + 1;
|
|
224
|
+
if (newPosition < 0 || newPosition >= this.submitObject.columnDefList.length)
|
|
225
|
+
return;
|
|
226
|
+
const itemToMove = this.submitObject.columnDefList[index];
|
|
227
|
+
this.submitObject.columnDefList.splice(index, 1);
|
|
228
|
+
this.submitObject.columnDefList.splice(newPosition, 0, itemToMove);
|
|
229
|
+
}
|
|
220
230
|
}
|
|
221
231
|
CdrConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigComponent, deps: [{ token: i1.ApplicationContentService }, { token: i2.ToastrService }, { token: i3.CommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
222
|
-
CdrConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CdrConfigComponent, selector: "app-cdr-config", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i7.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i9.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i10.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.LoadingComponent, selector: "app-loading" }] });
|
|
232
|
+
CdrConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CdrConfigComponent, selector: "app-cdr-config", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== submitObject.columnDefList.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mx-1 mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n \n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i7.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i9.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i10.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.LoadingComponent, selector: "app-loading" }] });
|
|
223
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigComponent, decorators: [{
|
|
224
234
|
type: Component,
|
|
225
|
-
args: [{ selector: 'app-cdr-config', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>" }]
|
|
235
|
+
args: [{ selector: 'app-cdr-config', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== submitObject.columnDefList.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mx-1 mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n \n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>" }]
|
|
226
236
|
}], ctorParameters: function () { return [{ type: i1.ApplicationContentService }, { type: i2.ToastrService }, { type: i3.CommonService }]; } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RyLWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS10ZW1wbGF0ZXMvY2RyLWNvbmZpZy9jZHItY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLXRlbXBsYXRlcy9jZHItY29uZmlnL2Nkci1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTL0MsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0IsWUFBb0IsT0FBa0MsRUFBVSxNQUFxQixFQUFTLGFBQTRCO1FBQXRHLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbkIxSCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFLbkMsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsNkJBQXdCLEdBQVEsRUFBRSxDQUFDO1FBQ25DLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixnQ0FBMkIsR0FBUSxFQUFFLENBQUM7UUFJdEMsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBRTdCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFLMUUsQ0FBQztJQUdELFFBQVE7UUFFTixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUVqQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsWUFBWSxDQUFDLENBQUE7WUFDOUYsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFJRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDbEQsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7Z0JBRS9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3hELElBQUksRUFBRSxHQUFHO29CQUNULEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDYixDQUFDLENBQUMsQ0FBQztZQUVOLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0YsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFJRCw2QkFBNkI7UUFFM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMvRixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDakQsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO29CQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFFNUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDL0YsQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFMUMsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdEgsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXpCLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUUzSixJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixJQUFJLEdBQUcsR0FBRztvQkFDUixZQUFZLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQy9CLGVBQWUsRUFBRSxFQUFFO29CQUNuQixVQUFVLEVBQUUsRUFBRTtvQkFDZCxtQkFBbUIsRUFBRSxFQUFFO29CQUN2QixZQUFZLEVBQUUsRUFBRTtpQkFDakIsQ0FBQztnQkFDRixhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3pGLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztTQUNoRzthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsR0FBRyxhQUFhLENBQUM7U0FDcEQ7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdELElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO2dCQUMvQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtZQUNwRCxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUM3RixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUM1QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQUk7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkUsSUFBSSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0YsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0QsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1lBQ25ELENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0YsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBSTtRQUNsQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzNCLElBQUksWUFBWSxFQUFFO2dCQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3QkFDbEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7d0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUE7d0JBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO29CQUM1QixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO3dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO29CQUN0RyxDQUFDO2lCQUNGLENBQUMsQ0FBQTthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQzs7K0dBalBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNEQ1gvQixtcVNBb0xNOzJGRHpLTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IGNvbmZpcm0gfSBmcm9tICdkZXZleHRyZW1lL3VpL2RpYWxvZyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2RyLWNvbmZpZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZHItY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2RyLWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENkckNvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxvYWRpbmdNb2RhbDogYm9vbGVhbjtcbiAgYXZhaWxhYmxlVGFibGVEYXRhc291cmNlOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRUYWJsZU5hbWU6IGFueTtcbiAgaXNUYWJsZVNlbGVjdGVkOiBib29sZWFuO1xuICBpc1Byb2NlZWQ6IGJvb2xlYW47XG4gIGxpc3RPZkNvbHVtbnM6IGFueTtcbiAgc3VibWl0T2JqZWN0OiBhbnkgPSB7fTtcbiAgc2VsZWN0ZWRDb2x1bW5EYXRhc291cmNlOiBhbnkgPSBbXTtcbiAga3BpX2VucmljaG1lbnRfbmFtZTogYW55ID0gW107XG4gIENkckJyb3dzZXJBbGxvd2VkRGF0YXNvdXJjZTogYW55ID0gW107XG5cbiAgY2RyVGFibGVEYXRhU291cmNlOiBhbnk7XG4gIGFsbFRhYmxzRHJvcERvd25EYXRhOiBhbnk7XG4gIHNlbGVjdGVkQ29sdW1uTmFtZTogYW55ID0gW107XG5cbiAgaXNDZHJDb25maWdDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0RGF0YXNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJfdHlwZSA9IFsnZGF0ZScsICdzdHJpbmcnLCAndGltZXN0YW1wJywgJ2ludCcsICdkb3VibGUnLCAnYm9vbGVhbiddO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UpIHtcblxuICB9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2V0QXZhaWxhYmxlVGFiZU5hbWUoKTtcbiAgICB0aGlzLmdldEZpbHRlckRhdGFTZXQoKTtcbiAgICB0aGlzLmdldENkckJyb3dzZXJBbGxvd2VkT3BlcmF0aW9uKCk7XG4gICAgdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuXG4gIH1cblxuICBnZXRGaWx0ZXJEYXRhU2V0KCkge1xuICAgIHRoaXMua3BpX2VucmljaG1lbnRfbmFtZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRLUElSZWZlcmVuY2VFbmRQb2ludHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBkYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5rcGlfZW5yaWNobWVudF9uYW1lLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlVuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLlwiLCBcIkNEUiBDb25maWdcIilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cblxuXG4gIHNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCkge1xuICAgIHRoaXMuY2RyVGFibGVEYXRhU291cmNlID0ge307XG4gICAgdGhpcy5hbGxUYWJsc0Ryb3BEb3duRGF0YSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRTZWFyY2hEYXRhc291cmNlRGV0YWlscygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2RyVGFibGVEYXRhU291cmNlID0gZGF0YTtcblxuICAgICAgICB0aGlzLmFsbFRhYmxzRHJvcERvd25EYXRhID0gT2JqZWN0LmtleXMoZGF0YSkubWFwKGtleSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICAuLi5kYXRhW2tleV1cbiAgICAgICAgfSkpO1xuXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG5cbiAgZ2V0Q2RyQnJvd3NlckFsbG93ZWRPcGVyYXRpb24oKSB7XG5cbiAgICB0aGlzLnNlcnZpY2UuZ2V0Q2RyQnJvd3Nlck9wZXJhdGlvbnMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLkNkckJyb3dzZXJBbGxvd2VkRGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgfSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVRhYmVOYW1lKCkge1xuICAgIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gW107XG4gICAgdGhpcy5zZXJ2aWNlLmdldEF2YWlsYWJsZVRhYmxlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gZGF0YTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFNlbGVjdGVkVGFibGVNZXRhRGF0YShlKSB7XG4gICAgaWYgKGUudmFsdWUpIHtcbiAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgbGV0IHRhYmxlTmFtZSA9IGUudmFsdWU7XG4gICAgICB0aGlzLmxpc3RPZkNvbHVtbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VydmljZS5nZXRUYWJsZU1ldGFkYXRhKHRhYmxlTmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxpc3RPZkNvbHVtbnMgPSBkYXRhO1xuICAgICAgICAgIC8vIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gZGF0YTtcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldFNlbGVjdGVkQ29sdW1uU291cmNlKGUpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRGF0YXNvdXJjZSA9IGUudmFsdWU7XG5cbiAgfVxuXG4gIGdldFByb2Nlc3NGb3JDb25maWcoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5saXN0T2ZDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZWxlY3RlZENvbHVtbkRhdGFzb3VyY2UuaW5jbHVkZXMoY29sdW1uLmZpZWxkTmFtZSkpO1xuICAgIGNvbnN0IGNvbHVtbkRlZkxpc3QgPSBbXTtcblxuICAgIGZpbHRlcmVkQ29sdW1ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdDb2x1bW4gPSAodGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSkgPyB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLmZpbmQoY29sID0+IGNvbC5jb2x1bW5OYW1lID09PSBlbGVtZW50LmZpZWxkTmFtZSkgOiBmYWxzZTtcblxuICAgICAgaWYgKCFleGlzdGluZ0NvbHVtbikge1xuICAgICAgICBsZXQgb2JqID0ge1xuICAgICAgICAgIFwiY29sdW1uTmFtZVwiOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgICAgICBcImNvbnRhaW5lclR5cGVcIjogXCJcIixcbiAgICAgICAgICBcImRhdGF0eXBlXCI6IFwiXCIsXG4gICAgICAgICAgXCJhbGxvd2VkT3BlcmF0aW9uc1wiOiBbXSxcbiAgICAgICAgICBcImxvb2t1cE5hbWVcIjogXCJcIlxuICAgICAgICB9O1xuICAgICAgICBjb2x1bW5EZWZMaXN0LnB1c2gob2JqKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSAmJiB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFsuLi50aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLCAuLi5jb2x1bW5EZWZMaXN0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IGNvbHVtbkRlZkxpc3Q7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2NlZWQgPSB0cnVlO1xuICB9XG5cbiAgc3VibWl0RGF0YXNvdXJjZSgpIHtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnNhdmVEYXRhc291cmNlQ29uZmlnKHRoaXMuc3VibWl0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddID0gW107XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnc3RhcnREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGVkaXRDZHJDb25maWdDb25maWcoZGF0YSkge1xuICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuaXNDZHJDb25maWdDcmVhdGUgPSB0cnVlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0ID0gZGF0YTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0VGFibGVNZXRhZGF0YSh0aGlzLnN1Ym1pdE9iamVjdC50YWJsZU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoY29sRGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5saXN0T2ZDb2x1bW5zID0gY29sRGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbk5hbWUgPSB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0Lm1hcChpdGVtID0+IGl0ZW0uY29sdW1uTmFtZSk7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlRGF0YXNvdXJjZSgpIHtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmVkaXREYXRhc291cmNlQ29uZmlnKHRoaXMuc3VibWl0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddID0gW107XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnc3RhcnREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIFVwZGF0ZSBTdWNjZXNzZnVsbHknKVxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0NEUiBDb25maWcnKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGVsZXRlQ2RyQ29uZmlnKGRhdGEpIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIENvbmZpZ1wiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZVxuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlRGF0YXNvdXJjZUNvbmZpZyhkYXRhLnRhYmxlTmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdDb25maWcgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnIERlbGV0ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUNEUkNvbmZpZygpIHtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGNhbmNlbENkckNvbmZpZygpIHtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFtdO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydlbmREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgdGhpcy5zdWJtaXRPYmplY3RbJ3N0YXJ0RGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgLy8gdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVsZXRlQ29sdW1lKGkpIHtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0LnNwbGljZShpLCAxKVxuICB9XG5cbn1cbiIsIjxhcHAtbG9hZGluZyAqbmdJZj1cImxvYWRpbmdNb2RhbFwiPjwvYXBwLWxvYWRpbmc+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgPCEtLSBoZWFkZXIgc3RhcnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGRhcms6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTEgcHktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbG9hdC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNpemUtMlwiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6dGVtcGxhdGUnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxoMlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LTJ4bCBtZDp0ZXh0LTJ4bCBweS0yIGZvbnQtZXh0cmFib2xkIGl0ZW1zLWNlbnRlciBtbC0yIHRyYWNraW5nLXRpZ2h0IGxlYWRpbmctNSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ0RSIENvbmZpZyBDcmVhdGlvblxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWwtMiBwLTAgbS0wXCI+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEgaC1mdWxsIGJvcmRlci1sLTJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwLTFcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlQ0RSQ29uZmlnKClcIj5DcmVhdGUgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1iYXItY2hhcnQtbyBtci0yXCI+PC9pPiBUYWJsZSBDb25maWd1cmF0aW9uc1xuICAgICAgICAgICAgPC9oNj5cblxuICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbZGF0YVNvdXJjZV09XCJhbGxUYWJsc0Ryb3BEb3duRGF0YVwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIlxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIj5cblxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tc2VhcmNoLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cImFsZXJ0X2RhdGFfYnlfc3RhdHVzXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2VyIFtzaG93SW5mb109XCJ0cnVlXCIgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTAsMjAsNTAsMTAwXVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRhYmxlTmFtZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGFydERhdGVGdW5jdGlvblwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJlbmREYXRlRnVuY3Rpb25cIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gY2FwdGlvbj1cIlN0YXR1c1wiIGRhdGFGaWVsZD1cImFjdGl2ZVwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZTFcIj48L2R4aS1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkUG9zaXRpb249XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5QcmltYXJ5Qmx1ZX19XCIgKGNsaWNrKT1cImVkaXRDZHJDb25maWdDb25maWcoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVDZHJDb25maWcoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLmRhdGEuYWN0aXZlID09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuU3VjY2Vzc0dyZWVufX1cIj5BY3RpdmU8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEuZGF0YS5hY3RpdmUgPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuV2FybmluZ1llbGxvd319XCI+SW5hY3RpdmU8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NkckNvbmZpZ0NyZWF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0yIHB5LTMgYm9yZGVyLWIgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHB4LTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMyBweC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TZWxlY3QgVGFibGUgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiYXZhaWxhYmxlVGFibGVEYXRhc291cmNlXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3QudGFibGVOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXRTZWxlY3RlZFRhYmxlTWV0YURhdGEoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzMgcHgtMlwiICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TZWxlY3QgQ29sdW1uczwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtkYXRhU291cmNlXT1cImxpc3RPZkNvbHVtbnNcIiB2YWx1ZUV4cHI9XCJmaWVsZE5hbWVcIiBkaXNwbGF5RXhwcj1cImZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlsaW5lXT1cInRydWVcIiBbc2hvd1NlbGVjdGlvbkNvbnRyb2xzXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29sdW1uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U2VsZWN0ZWRDb2x1bW5Tb3VyY2UoJGV2ZW50KVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMyBweC0yXCIgKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19IG10LTZcIiAoY2xpY2spPVwiZ2V0UHJvY2Vzc0ZvckNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsQ2RyQ29uZmlnKClcIj5DYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTIgYm9yZGVyLWJcIiAqbmdJZj1cImlzUHJvY2VlZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGF0YSBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImZpbHRlcl90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YXR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29udGFpbmVyIFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2lucHV0Jywnc2VsZWN0JywnbXVsdGlzZWxlY3QnLCdkYXRlJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5jb250YWluZXJUeXBlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+QWxsb3dlZCBPcGVyYXRpb25zPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbZGF0YVNvdXJjZV09XCJDZHJCcm93c2VyQWxsb3dlZERhdGFzb3VyY2VcIiB2YWx1ZUV4cHI9XCJ2YWx1ZVwiIGRpc3BsYXlFeHByPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpc3BsYXllZFRhZ3NdPVwiM1wiIFttdWx0aWxpbmVdPVwidHJ1ZVwiIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmFsbG93ZWRPcGVyYXRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5Mb29rdXAgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCIgdmFsdWVFeHByPVwiYXBpVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cImFwaU5hbWVcIiBbKG5nTW9kZWwpXT1cIml0ZW0ubG9va3VwTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlciBtdC04XCIgKGNsaWNrKT1cImRlbGV0ZUNvbHVtZShpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMlwiICpuZ0lmPVwiaXNQcm9jZWVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+U3RhcnREYXRlIEZ1bmN0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ3N1YnRyYWN0J11cIiBbKG5nTW9kZWwpXT1cInN1Ym1pdE9iamVjdC5zdGFydERhdGVGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RW5kRGF0ZSBGdW5jdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydzdWJ0cmFjdCddXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3QuZW5kRGF0ZUZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwic3VibWl0T2JqZWN0LmFjdGl2ZVwiIHRleHQ9J0FjdGl2ZSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC02XCIgKm5nSWY9XCIhaXNFZGl0RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdERhdGFzb3VyY2UoKVwiPlN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiICpuZ0lmPVwiaXNFZGl0RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZURhdGFzb3VyY2UoKVwiPlVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPC9kaXY+Il19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RyLWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS10ZW1wbGF0ZXMvY2RyLWNvbmZpZy9jZHItY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLXRlbXBsYXRlcy9jZHItY29uZmlnL2Nkci1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRL0MsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0IsWUFBb0IsT0FBa0MsRUFBVSxNQUFxQixFQUFTLGFBQTRCO1FBQXRHLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbkIxSCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFLbkMsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsNkJBQXdCLEdBQVEsRUFBRSxDQUFDO1FBQ25DLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixnQ0FBMkIsR0FBUSxFQUFFLENBQUM7UUFJdEMsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBRTdCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVB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WSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7OytHQTVQVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzRENWL0IsMitUQW1NTTsyRkR6TE8sa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9kaWFsb2cnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNkci1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2RyLWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIENkckNvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxvYWRpbmdNb2RhbDogYm9vbGVhbjtcbiAgYXZhaWxhYmxlVGFibGVEYXRhc291cmNlOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRUYWJsZU5hbWU6IGFueTtcbiAgaXNUYWJsZVNlbGVjdGVkOiBib29sZWFuO1xuICBpc1Byb2NlZWQ6IGJvb2xlYW47XG4gIGxpc3RPZkNvbHVtbnM6IGFueTtcbiAgc3VibWl0T2JqZWN0OiBhbnkgPSB7fTtcbiAgc2VsZWN0ZWRDb2x1bW5EYXRhc291cmNlOiBhbnkgPSBbXTtcbiAga3BpX2VucmljaG1lbnRfbmFtZTogYW55ID0gW107XG4gIENkckJyb3dzZXJBbGxvd2VkRGF0YXNvdXJjZTogYW55ID0gW107XG5cbiAgY2RyVGFibGVEYXRhU291cmNlOiBhbnk7XG4gIGFsbFRhYmxzRHJvcERvd25EYXRhOiBhbnk7XG4gIHNlbGVjdGVkQ29sdW1uTmFtZTogYW55ID0gW107XG5cbiAgaXNDZHJDb25maWdDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0RGF0YXNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJfdHlwZSA9IFsnZGF0ZScsICdzdHJpbmcnLCAndGltZXN0YW1wJywgJ2ludCcsICdkb3VibGUnLCAnYm9vbGVhbiddO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UpIHtcblxuICB9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2V0QXZhaWxhYmxlVGFiZU5hbWUoKTtcbiAgICB0aGlzLmdldEZpbHRlckRhdGFTZXQoKTtcbiAgICB0aGlzLmdldENkckJyb3dzZXJBbGxvd2VkT3BlcmF0aW9uKCk7XG4gICAgdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuXG4gIH1cblxuICBnZXRGaWx0ZXJEYXRhU2V0KCkge1xuICAgIHRoaXMua3BpX2VucmljaG1lbnRfbmFtZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRLUElSZWZlcmVuY2VFbmRQb2ludHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBkYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5rcGlfZW5yaWNobWVudF9uYW1lLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlVuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLlwiLCBcIkNEUiBDb25maWdcIilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cblxuXG4gIHNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCkge1xuICAgIHRoaXMuY2RyVGFibGVEYXRhU291cmNlID0ge307XG4gICAgdGhpcy5hbGxUYWJsc0Ryb3BEb3duRGF0YSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRTZWFyY2hEYXRhc291cmNlRGV0YWlscygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2RyVGFibGVEYXRhU291cmNlID0gZGF0YTtcblxuICAgICAgICB0aGlzLmFsbFRhYmxzRHJvcERvd25EYXRhID0gT2JqZWN0LmtleXMoZGF0YSkubWFwKGtleSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICAuLi5kYXRhW2tleV1cbiAgICAgICAgfSkpO1xuXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG5cbiAgZ2V0Q2RyQnJvd3NlckFsbG93ZWRPcGVyYXRpb24oKSB7XG5cbiAgICB0aGlzLnNlcnZpY2UuZ2V0Q2RyQnJvd3Nlck9wZXJhdGlvbnMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLkNkckJyb3dzZXJBbGxvd2VkRGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgfSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVRhYmVOYW1lKCkge1xuICAgIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gW107XG4gICAgdGhpcy5zZXJ2aWNlLmdldEF2YWlsYWJsZVRhYmxlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gZGF0YTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFNlbGVjdGVkVGFibGVNZXRhRGF0YShlKSB7XG4gICAgaWYgKGUudmFsdWUpIHtcbiAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgbGV0IHRhYmxlTmFtZSA9IGUudmFsdWU7XG4gICAgICB0aGlzLmxpc3RPZkNvbHVtbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VydmljZS5nZXRUYWJsZU1ldGFkYXRhKHRhYmxlTmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxpc3RPZkNvbHVtbnMgPSBkYXRhO1xuICAgICAgICAgIC8vIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gZGF0YTtcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldFNlbGVjdGVkQ29sdW1uU291cmNlKGUpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRGF0YXNvdXJjZSA9IGUudmFsdWU7XG5cbiAgfVxuXG4gIGdldFByb2Nlc3NGb3JDb25maWcoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5saXN0T2ZDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZWxlY3RlZENvbHVtbkRhdGFzb3VyY2UuaW5jbHVkZXMoY29sdW1uLmZpZWxkTmFtZSkpO1xuICAgIGNvbnN0IGNvbHVtbkRlZkxpc3QgPSBbXTtcblxuICAgIGZpbHRlcmVkQ29sdW1ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdDb2x1bW4gPSAodGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSkgPyB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLmZpbmQoY29sID0+IGNvbC5jb2x1bW5OYW1lID09PSBlbGVtZW50LmZpZWxkTmFtZSkgOiBmYWxzZTtcblxuICAgICAgaWYgKCFleGlzdGluZ0NvbHVtbikge1xuICAgICAgICBsZXQgb2JqID0ge1xuICAgICAgICAgIFwiY29sdW1uTmFtZVwiOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgICAgICBcImNvbnRhaW5lclR5cGVcIjogXCJcIixcbiAgICAgICAgICBcImRhdGF0eXBlXCI6IFwiXCIsXG4gICAgICAgICAgXCJhbGxvd2VkT3BlcmF0aW9uc1wiOiBbXSxcbiAgICAgICAgICBcImxvb2t1cE5hbWVcIjogXCJcIlxuICAgICAgICB9O1xuICAgICAgICBjb2x1bW5EZWZMaXN0LnB1c2gob2JqKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSAmJiB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFsuLi50aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLCAuLi5jb2x1bW5EZWZMaXN0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IGNvbHVtbkRlZkxpc3Q7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2NlZWQgPSB0cnVlO1xuICB9XG5cbiAgc3VibWl0RGF0YXNvdXJjZSgpIHtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnNhdmVEYXRhc291cmNlQ29uZmlnKHRoaXMuc3VibWl0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddID0gW107XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnc3RhcnREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGVkaXRDZHJDb25maWdDb25maWcoZGF0YSkge1xuICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuaXNDZHJDb25maWdDcmVhdGUgPSB0cnVlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0ID0gZGF0YTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0VGFibGVNZXRhZGF0YSh0aGlzLnN1Ym1pdE9iamVjdC50YWJsZU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoY29sRGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5saXN0T2ZDb2x1bW5zID0gY29sRGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbk5hbWUgPSB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0Lm1hcChpdGVtID0+IGl0ZW0uY29sdW1uTmFtZSk7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlRGF0YXNvdXJjZSgpIHtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmVkaXREYXRhc291cmNlQ29uZmlnKHRoaXMuc3VibWl0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddID0gW107XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnc3RhcnREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIFVwZGF0ZSBTdWNjZXNzZnVsbHknKVxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0NEUiBDb25maWcnKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGVsZXRlQ2RyQ29uZmlnKGRhdGEpIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIENvbmZpZ1wiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZVxuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlRGF0YXNvdXJjZUNvbmZpZyhkYXRhLnRhYmxlTmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdDb25maWcgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnIERlbGV0ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUNEUkNvbmZpZygpIHtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGNhbmNlbENkckNvbmZpZygpIHtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFtdO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydlbmREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgdGhpcy5zdWJtaXRPYmplY3RbJ3N0YXJ0RGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgLy8gdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVsZXRlQ29sdW1lKGkpIHtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0LnNwbGljZShpLCAxKVxuICB9XG5cblxuICAgbW92ZUl0ZW1Gb3JDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5zdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdC5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMTtcbiAgICBpZiAobmV3UG9zaXRpb24gPCAwIHx8IG5ld1Bvc2l0aW9uID49IHRoaXMuc3VibWl0T2JqZWN0LmNvbHVtbkRlZkxpc3QubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBpdGVtVG9Nb3ZlID0gdGhpcy5zdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdFtpbmRleF07XG4gICAgdGhpcy5zdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyBcbiAgICB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0LnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaXRlbVRvTW92ZSk7IFxuICB9XG5cbn1cbiIsIjxhcHAtbG9hZGluZyAqbmdJZj1cImxvYWRpbmdNb2RhbFwiPjwvYXBwLWxvYWRpbmc+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgPCEtLSBoZWFkZXIgc3RhcnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGRhcms6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTEgcHktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbG9hdC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNpemUtMlwiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6dGVtcGxhdGUnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxoMlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LTJ4bCBtZDp0ZXh0LTJ4bCBweS0yIGZvbnQtZXh0cmFib2xkIGl0ZW1zLWNlbnRlciBtbC0yIHRyYWNraW5nLXRpZ2h0IGxlYWRpbmctNSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ0RSIENvbmZpZyBDcmVhdGlvblxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWwtMiBwLTAgbS0wXCI+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEgaC1mdWxsIGJvcmRlci1sLTJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwLTFcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlQ0RSQ29uZmlnKClcIj5DcmVhdGUgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1iYXItY2hhcnQtbyBtci0yXCI+PC9pPiBUYWJsZSBDb25maWd1cmF0aW9uc1xuICAgICAgICAgICAgPC9oNj5cblxuICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbZGF0YVNvdXJjZV09XCJhbGxUYWJsc0Ryb3BEb3duRGF0YVwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIlxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIj5cblxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tc2VhcmNoLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cImFsZXJ0X2RhdGFfYnlfc3RhdHVzXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2VyIFtzaG93SW5mb109XCJ0cnVlXCIgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTAsMjAsNTAsMTAwXVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRhYmxlTmFtZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGFydERhdGVGdW5jdGlvblwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJlbmREYXRlRnVuY3Rpb25cIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gY2FwdGlvbj1cIlN0YXR1c1wiIGRhdGFGaWVsZD1cImFjdGl2ZVwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZTFcIj48L2R4aS1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkUG9zaXRpb249XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5QcmltYXJ5Qmx1ZX19XCIgKGNsaWNrKT1cImVkaXRDZHJDb25maWdDb25maWcoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVDZHJDb25maWcoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLmRhdGEuYWN0aXZlID09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuU3VjY2Vzc0dyZWVufX1cIj5BY3RpdmU8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEuZGF0YS5hY3RpdmUgPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuV2FybmluZ1llbGxvd319XCI+SW5hY3RpdmU8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NkckNvbmZpZ0NyZWF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0yIHB5LTMgYm9yZGVyLWIgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHB4LTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMyBweC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TZWxlY3QgVGFibGUgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiYXZhaWxhYmxlVGFibGVEYXRhc291cmNlXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3QudGFibGVOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXRTZWxlY3RlZFRhYmxlTWV0YURhdGEoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzMgcHgtMlwiICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TZWxlY3QgQ29sdW1uczwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtkYXRhU291cmNlXT1cImxpc3RPZkNvbHVtbnNcIiB2YWx1ZUV4cHI9XCJmaWVsZE5hbWVcIiBkaXNwbGF5RXhwcj1cImZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlsaW5lXT1cInRydWVcIiBbc2hvd1NlbGVjdGlvbkNvbnRyb2xzXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29sdW1uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U2VsZWN0ZWRDb2x1bW5Tb3VyY2UoJGV2ZW50KVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMyBweC0yXCIgKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19IG10LTZcIiAoY2xpY2spPVwiZ2V0UHJvY2Vzc0ZvckNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsQ2RyQ29uZmlnKClcIj5DYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTIgYm9yZGVyLWJcIiAqbmdJZj1cImlzUHJvY2VlZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGF0YSBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImZpbHRlcl90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YXR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29udGFpbmVyIFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2lucHV0Jywnc2VsZWN0JywnbXVsdGlzZWxlY3QnLCdkYXRlJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5jb250YWluZXJUeXBlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+QWxsb3dlZCBPcGVyYXRpb25zPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbZGF0YVNvdXJjZV09XCJDZHJCcm93c2VyQWxsb3dlZERhdGFzb3VyY2VcIiB2YWx1ZUV4cHI9XCJ2YWx1ZVwiIGRpc3BsYXlFeHByPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpc3BsYXllZFRhZ3NdPVwiM1wiIFttdWx0aWxpbmVdPVwidHJ1ZVwiIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmFsbG93ZWRPcGVyYXRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5Mb29rdXAgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCIgdmFsdWVFeHByPVwiYXBpVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cImFwaU5hbWVcIiBbKG5nTW9kZWwpXT1cIml0ZW0ubG9va3VwTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMSBtdC04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAndXAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IHN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0Lmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfc219fSBjdXJzb3ItcG9pbnRlciBteC0xIG10LThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1Gb3JDb2x1bW5zKGksICdkb3duJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlciBteC0xIG10LThcIiAoY2xpY2spPVwiZGVsZXRlQ29sdW1lKGkpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMlwiICpuZ0lmPVwiaXNQcm9jZWVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+U3RhcnREYXRlIEZ1bmN0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ3N1YnRyYWN0J11cIiBbKG5nTW9kZWwpXT1cInN1Ym1pdE9iamVjdC5zdGFydERhdGVGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RW5kRGF0ZSBGdW5jdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydzdWJ0cmFjdCddXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3QuZW5kRGF0ZUZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwic3VibWl0T2JqZWN0LmFjdGl2ZVwiIHRleHQ9J0FjdGl2ZSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC02XCIgKm5nSWY9XCIhaXNFZGl0RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdERhdGFzb3VyY2UoKVwiPlN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiICpuZ0lmPVwiaXNFZGl0RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZURhdGFzb3VyY2UoKVwiPlVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPC9kaXY+Il19
|