@esfaenza/admin-module 15.2.49 → 15.2.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/esm2020/lib/admin-module.module.mjs +10 -10
  2. package/esm2020/lib/components/audits/adm_audits.component.mjs +3 -2
  3. package/esm2020/lib/components/dynamic_views/adm_dynamic_views.component.mjs +5 -4
  4. package/esm2020/lib/components/enqueues/adm_enq.component.mjs +4 -3
  5. package/esm2020/lib/components/logs/adm_logs.component.mjs +3 -2
  6. package/esm2020/lib/components/metrics/metrics_search.component.mjs +4 -3
  7. package/esm2020/lib/components/mtd_query/mtd_query.component.mjs +9 -5
  8. package/esm2020/lib/components/profiler/adm_profiler.component.mjs +6 -5
  9. package/esm2020/lib/components/topact/topact_search.component.mjs +9 -6
  10. package/esm2020/lib/components/workers/adm_wrk.component.mjs +6 -5
  11. package/esm2020/lib/models/components/ProcessesView.mjs +1 -1
  12. package/esm2020/lib/models/components/TopActivitiesDataView.mjs +1 -1
  13. package/esm2020/lib/services/admin-module.base.service.mjs +51 -37
  14. package/fesm2015/esfaenza-admin-module.mjs +99 -71
  15. package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
  16. package/fesm2020/esfaenza-admin-module.mjs +99 -71
  17. package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
  18. package/lib/components/audits/adm_audits.component.d.ts +1 -0
  19. package/lib/components/dynamic_views/adm_dynamic_views.component.d.ts +1 -0
  20. package/lib/components/enqueues/adm_enq.component.d.ts +1 -0
  21. package/lib/components/logs/adm_logs.component.d.ts +1 -0
  22. package/lib/components/metrics/metrics_search.component.d.ts +1 -0
  23. package/lib/components/mtd_query/mtd_query.component.d.ts +2 -0
  24. package/lib/components/profiler/adm_profiler.component.d.ts +1 -0
  25. package/lib/components/topact/topact_search.component.d.ts +1 -0
  26. package/lib/components/workers/adm_wrk.component.d.ts +1 -0
  27. package/lib/models/components/ProcessesView.d.ts +1 -0
  28. package/lib/models/components/TopActivitiesDataView.d.ts +1 -0
  29. package/lib/services/admin-module.base.service.d.ts +18 -18
  30. package/package.json +1 -1
@@ -36,96 +36,110 @@ export class AdminModuleBaseService {
36
36
  let ret = await firstValueFrom(this.http.post(POST_Director_GetServerWorkers, sv));
37
37
  return ret;
38
38
  }
39
- async doSetProcessTracing(instanceid, sid, serial, enable) {
39
+ async doSetProcessTracing(be, instanceid, sid, serial, enable) {
40
40
  var pars = new HttpParams()
41
41
  .set("instanceid", instanceid)
42
42
  .set("sid", sid)
43
43
  .set("serial", serial)
44
- .set("enable", enable);
44
+ .set("enable", enable)
45
+ .set("be", be);
45
46
  let ret = await firstValueFrom(this.http.get(GET_Director_SetProcessTracing, pars));
46
47
  return ret;
47
48
  }
48
- async doKillProcess(instanceid, sid, serial) {
49
+ async doKillProcess(be, instanceid, sid, serial) {
49
50
  var pars = new HttpParams()
50
51
  .set("instanceid", instanceid)
51
52
  .set("sid", sid)
52
- .set("serial", serial);
53
+ .set("serial", serial)
54
+ .set("be", be);
53
55
  let ret = await firstValueFrom(this.http.get(GET_Director_KillProcess, pars));
54
56
  return ret;
55
57
  }
56
- async doChangeProcessConsumerGroup(instanceid, sid, serial, consumerGroup) {
58
+ async doChangeProcessConsumerGroup(be, instanceid, sid, serial, consumerGroup) {
57
59
  var pars = new HttpParams()
58
60
  .set("instanceid", instanceid)
59
61
  .set("sid", sid)
60
62
  .set("serial", serial)
61
- .set("consumer_group", consumerGroup);
63
+ .set("consumer_group", consumerGroup)
64
+ .set("be", be);
62
65
  let ret = await firstValueFrom(this.http.get(GET_Director_ChangeProcessConsumerGroup, pars));
63
66
  return ret;
64
67
  }
65
- async getConsumerGroups() {
66
- let ret = await firstValueFrom(this.http.get(GET_Director_GetConsumerGroups));
68
+ async getConsumerGroups(be) {
69
+ var pars = new HttpParams().set("be", be);
70
+ let ret = await firstValueFrom(this.http.get(GET_Director_GetConsumerGroups, pars));
67
71
  return ret;
68
72
  }
69
- async getServerLogs(from, to) {
70
- var pars = new HttpParams().set("from", from).set("to", to);
73
+ async getServerLogs(be, from, to) {
74
+ var pars = new HttpParams().set("from", from).set("to", to).set("be", be);
71
75
  let ret = await firstValueFrom(this.http.get(GET_Director_GetServerLogs, pars));
72
76
  return ret;
73
77
  }
74
- async getTopActivities(sv) {
75
- let ret = await firstValueFrom(this.http.post(POST_Director_GetTopActivities, sv));
78
+ async getTopActivities(be, sv) {
79
+ var pars = new HttpParams().set("be", be);
80
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetTopActivities, sv, pars));
76
81
  return ret;
77
82
  }
78
- async getInfos() {
79
- let ret = await firstValueFrom(this.http.get(GET_Director_GetInfos, null, null, false).pipe(catchError(_ => of(null))));
83
+ async getInfos(be) {
84
+ var pars = new HttpParams().set("be", be);
85
+ let ret = await firstValueFrom(this.http.get(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null))));
80
86
  return ret;
81
87
  }
82
- async getNodeStats(nodeId) {
83
- let pars = new HttpParams().set("nodeId", nodeId);
88
+ async getNodeStats(be, nodeId) {
89
+ let pars = new HttpParams().set("nodeId", nodeId).set("be", be);
84
90
  let ret = await firstValueFrom(this.http.get(GET_Director_GetNodeStats, pars));
85
91
  return ret;
86
92
  }
87
- async getSessionStats(sid, serial) {
88
- let pars = new HttpParams().set('sid', sid).set('serial', serial);
93
+ async getSessionStats(be, sid, serial) {
94
+ let pars = new HttpParams().set('sid', sid).set('serial', serial).set("be", be);
89
95
  let ret = await firstValueFrom(this.http.get(GET_Director_GetSessionStats, pars));
90
96
  return ret;
91
97
  }
92
- async getProfilerDataNodes(sv) {
93
- let ret = await firstValueFrom(this.http.post(POST_Director_GetProfilerDataNodes, sv));
98
+ async getProfilerDataNodes(be, sv) {
99
+ var pars = new HttpParams().set("be", be);
100
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetProfilerDataNodes, sv, pars));
94
101
  return ret;
95
102
  }
96
- downloadWorkloadReport(from, to) {
97
- let pars = new HttpParams().set("from", from || "").set("to", to || "");
103
+ downloadWorkloadReport(be, from, to) {
104
+ let pars = new HttpParams().set("from", from || "").set("to", to || "").set("be", be);
98
105
  this.http.getFileNative(GET_Director_GetWorkloadReport, pars);
99
106
  }
100
- async getMetrics(sv) {
101
- let ret = await firstValueFrom(this.http.post(POST_Director_GetMetrics, sv));
107
+ async getMetrics(be, sv) {
108
+ var pars = new HttpParams().set("be", be);
109
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetMetrics, sv, pars));
102
110
  return ret;
103
111
  }
104
- async getMetricsList(from, to) {
112
+ async getMetricsList(be, from, to) {
105
113
  let pars = new HttpParams()
106
114
  .set("from", from || "")
107
- .set("to", to || "");
115
+ .set("to", to || "")
116
+ .set("be", be);
108
117
  let ret = await firstValueFrom(this.http.get(GET_Director_GetMetrics, pars));
109
118
  return ret.sort((a, b) => a.name.localeCompare(b.name));
110
119
  }
111
- async getServerLocks(sv) {
112
- let ret = await firstValueFrom(this.http.post(POST_Director_GetServerLocks, sv));
120
+ async getServerLocks(be, sv) {
121
+ var pars = new HttpParams().set("be", be);
122
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetServerLocks, sv, pars));
113
123
  return ret;
114
124
  }
115
- async getServerQuery(sv) {
116
- let ret = await firstValueFrom(this.http.post(POST_Director_GetServerQuery, sv));
125
+ async getServerQuery(be, sv) {
126
+ var pars = new HttpParams().set("be", be);
127
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetServerQuery, sv, pars));
117
128
  return ret;
118
129
  }
119
- async getDynamicViewData(sv) {
120
- let ret = await firstValueFrom(this.http.post(POST_Director_GetDynamicViewData, sv));
130
+ async getDynamicViewData(be, sv) {
131
+ var pars = new HttpParams().set("be", be);
132
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetDynamicViewData, sv, pars));
121
133
  return ret;
122
134
  }
123
- async getDynamicViews() {
124
- let ret = await firstValueFrom(this.http.get(GET_Director_GetDynamicViews));
135
+ async getDynamicViews(be) {
136
+ var pars = new HttpParams().set("be", be);
137
+ let ret = await firstValueFrom(this.http.get(GET_Director_GetDynamicViews, pars));
125
138
  return ret;
126
139
  }
127
- async getServerAudits(sv) {
128
- let ret = await firstValueFrom(this.http.post(POST_Director_GetServerAudits, sv));
140
+ async getServerAudits(be, sv) {
141
+ var pars = new HttpParams().set("be", be);
142
+ let ret = await firstValueFrom(this.http.post(POST_Director_GetServerAudits, sv, pars));
129
143
  return ret;
130
144
  }
131
145
  }
@@ -134,4 +148,4 @@ AdminModuleBaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
134
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleBaseService, decorators: [{
135
149
  type: Injectable
136
150
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbW9kdWxlLmJhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL2FkbWluLW1vZHVsZS5iYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELEtBQUs7QUFDTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFjdEQseUJBQXlCO0FBQ3pCLE1BQU0sdUNBQXVDLEdBQVcsMENBQTBDLENBQUM7QUFDbkcsTUFBTSw4QkFBOEIsR0FBVyx1Q0FBdUMsQ0FBQztBQUN2RixNQUFNLHFCQUFxQixHQUFXLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sdUJBQXVCLEdBQVcsMEJBQTBCLENBQUM7QUFDbkUsTUFBTSx3QkFBd0IsR0FBVywwQkFBMEIsQ0FBQztBQUNwRSxNQUFNLGtDQUFrQyxHQUFXLG9DQUFvQyxDQUFDO0FBQ3hGLE1BQU0sOEJBQThCLEdBQVcsaUNBQWlDLENBQUM7QUFDakYsTUFBTSw2QkFBNkIsR0FBVywrQkFBK0IsQ0FBQztBQUM5RSxNQUFNLGdDQUFnQyxHQUFXLGtDQUFrQyxDQUFDO0FBQ3BGLE1BQU0sNEJBQTRCLEdBQVcsOEJBQThCLENBQUM7QUFDNUUsTUFBTSw0QkFBNEIsR0FBVyw4QkFBOEIsQ0FBQztBQUM1RSxNQUFNLDBCQUEwQixHQUFXLDZCQUE2QixDQUFDO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQVcsK0JBQStCLENBQUM7QUFDN0UsTUFBTSw4QkFBOEIsR0FBVyxnQ0FBZ0MsQ0FBQztBQUNoRixNQUFNLDhCQUE4QixHQUFXLGdDQUFnQyxDQUFDO0FBQ2hGLE1BQU0sd0JBQXdCLEdBQVcsMkJBQTJCLENBQUM7QUFDckUsTUFBTSw4QkFBOEIsR0FBVyxpQ0FBaUMsQ0FBQztBQUNqRixNQUFNLHlCQUF5QixHQUFXLDRCQUE0QixDQUFDO0FBQ3ZFLE1BQU0sNEJBQTRCLEdBQVcsK0JBQStCLENBQUM7QUFHN0UsTUFBTSxPQUFPLHNCQUFzQjtJQUkvQixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQWlCO1FBQzNDLElBQUksR0FBRyxHQUFrQixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZ0IsOEJBQThCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqSCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBa0IsRUFBRSxHQUFXLEVBQUUsTUFBYyxFQUFFLE1BQWM7UUFDNUYsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUU7YUFDdEIsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7YUFDN0IsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7YUFDZixHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQzthQUNyQixHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNCLElBQUksR0FBRyxHQUFXLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLDhCQUE4QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFrQixFQUFFLEdBQVcsRUFBRSxNQUFjO1FBQ3RFLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxFQUFFO2FBQ3RCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO2FBQzdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO2FBQ2YsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzQixJQUFJLEdBQUcsR0FBVyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxVQUFrQixFQUFFLEdBQVcsRUFBRSxNQUFjLEVBQUUsYUFBcUI7UUFDNUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUU7YUFDdEIsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7YUFDN0IsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7YUFDZixHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQzthQUNyQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFMUMsSUFBSSxHQUFHLEdBQVcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVMsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCO1FBQzFCLElBQUksR0FBRyxHQUFlLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFhLDhCQUE4QixDQUFDLENBQUMsQ0FBQztRQUN0RyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVksRUFBRSxFQUFVO1FBQy9DLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzNELElBQUksR0FBRyxHQUFXLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQXlCO1FBQ25ELElBQUksR0FBRyxHQUEwQixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBd0IsOEJBQThCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUTtRQUNqQixJQUFJLEdBQUcsR0FBa0IsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdCLHFCQUFxQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkssT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFjO1FBQ3BDLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLEdBQUcsR0FBYyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBWSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBVyxFQUFFLE1BQWM7UUFDcEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEUsSUFBSSxHQUFHLEdBQWlCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFlLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEVBQXlCO1FBQ3ZELElBQUksR0FBRyxHQUEwQixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBd0Isa0NBQWtDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNySSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsRUFBVTtRQUNsRCxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQWU7UUFDbkMsSUFBSSxHQUFHLEdBQWdCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFjLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFZLEVBQUUsRUFBVTtRQUNoRCxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRTthQUN0QixHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7YUFDdkIsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekIsSUFBSSxHQUFHLEdBQWEsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVcsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFhO1FBQ3JDLElBQUksR0FBRyxHQUFjLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFZLDRCQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFhO1FBQ3JDLElBQUksR0FBRyxHQUFjLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFZLDRCQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQW9CO1FBQ2hELElBQUksR0FBRyxHQUFxQixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUIsZ0NBQWdDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6SCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZTtRQUN4QixJQUFJLEdBQUcsR0FBZSxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBYSw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7UUFDcEcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFjO1FBQ3ZDLElBQUksR0FBRyxHQUFlLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFhLDZCQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOztvSEE5SFEsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vLyBFU1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFByb2Nlc3Nlc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvUHJvY2Vzc2VzVmlld1wiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgVG9wQWN0aXZpdGllc0RhdGFWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1RvcEFjdGl2aXRpZXNEYXRhVmlld1wiO1xyXG5pbXBvcnQgeyBEaXJlY3RvckluZm9zIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0RpcmVjdG9ySW5mb3NcIjtcclxuaW1wb3J0IHsgTm9kZVN0YXRzIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL05vZGVTdGF0c1wiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RhdHMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvU2Vzc2lvblN0YXRzXCI7XHJcbmltcG9ydCB7IFByb2ZpbGVyRGF0YU5vZGVzVmlldyB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9uZW50cy9Qcm9maWxlckRhdGFOb2Rlc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTWV0cmljc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL01ldHJpY1wiO1xyXG5pbXBvcnQgeyBMb2Nrc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTG9ja3NWaWV3XCI7XHJcbmltcG9ydCB7IER5bmFtaWNWaWV3c1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvRHluYW1pY1ZpZXdzVmlld1wiO1xyXG5pbXBvcnQgeyBBdWRpdHNWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0F1ZGl0c1ZpZXdcIjtcclxuaW1wb3J0IHsgUXVlcnlWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1F1ZXJ5Vmlld1wiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfRGlyZWN0b3JfQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXA6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9DaGFuZ2VQcm9jZXNzQ29uc3VtZXJHcm91cFwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0Q29uc3VtZXJHcm91cHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRDb25zdW1lckdyb3VwcyNjYWNoZVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0SW5mb3M6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRJbmZvc1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0TWV0cmljczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE1ldHJpY3NcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRNZXRyaWNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0TWV0cmljc1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0UHJvZmlsZXJEYXRhTm9kZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldFdvcmtsb2FkUmVwb3J0OiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0V29ya2xvYWRSZXBvcnRcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJBdWRpdHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJBdWRpdHNcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld0RhdGE6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXREeW5hbWljVmlld0RhdGFcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJMb2Nrczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvY2tzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnk6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJRdWVyeVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9nczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvZ3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldER5bmFtaWNWaWV3czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldER5bmFtaWNWaWV3c1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFNlcnZlcldvcmtlcnM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJXb3JrZXJzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0VG9wQWN0aXZpdGllczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFRvcEFjdGl2aXRpZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0tpbGxQcm9jZXNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvS2lsbFByb2Nlc3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX1NldFByb2Nlc3NUcmFjaW5nOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvU2V0UHJvY2Vzc1RyYWNpbmdcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE5vZGVTdGF0c1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2Vzc2lvblN0YXRzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0U2Vzc2lvblN0YXRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbk1vZHVsZUJhc2VTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBodHRwOiBIVFRQU2VydmljZTtcclxuICAgIHB1YmxpYyBtc2dFeHRzOiBNZXNzYWdlU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlcldvcmtlcnMoc3Y6IFByb2Nlc3Nlc1ZpZXcpOiBQcm9taXNlPFByb2Nlc3Nlc1ZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBQcm9jZXNzZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvY2Vzc2VzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJXb3JrZXJzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvU2V0UHJvY2Vzc1RyYWNpbmcoaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcsIGVuYWJsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgICAgLnNldChcImluc3RhbmNlaWRcIiwgaW5zdGFuY2VpZClcclxuICAgICAgICAgICAgLnNldChcInNpZFwiLCBzaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzZXJpYWxcIiwgc2VyaWFsKVxyXG4gICAgICAgICAgICAuc2V0KFwiZW5hYmxlXCIsIGVuYWJsZSk7XHJcblxyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfU2V0UHJvY2Vzc1RyYWNpbmcsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb0tpbGxQcm9jZXNzKGluc3RhbmNlaWQ6IHN0cmluZywgc2lkOiBzdHJpbmcsIHNlcmlhbDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgICAgLnNldChcImluc3RhbmNlaWRcIiwgaW5zdGFuY2VpZClcclxuICAgICAgICAgICAgLnNldChcInNpZFwiLCBzaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzZXJpYWxcIiwgc2VyaWFsKTtcclxuXHJcbiAgICAgICAgbGV0IHJldDogc3RyaW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxzdHJpbmc+KEdFVF9EaXJlY3Rvcl9LaWxsUHJvY2VzcywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXAoaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcsIGNvbnN1bWVyR3JvdXA6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpXHJcbiAgICAgICAgICAgIC5zZXQoXCJpbnN0YW5jZWlkXCIsIGluc3RhbmNlaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzaWRcIiwgc2lkKVxyXG4gICAgICAgICAgICAuc2V0KFwic2VyaWFsXCIsIHNlcmlhbClcclxuICAgICAgICAgICAgLnNldChcImNvbnN1bWVyX2dyb3VwXCIsIGNvbnN1bWVyR3JvdXApO1xyXG5cclxuICAgICAgICBsZXQgcmV0OiBzdHJpbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PHN0cmluZz4oR0VUX0RpcmVjdG9yX0NoYW5nZVByb2Nlc3NDb25zdW1lckdyb3VwLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uc3VtZXJHcm91cHMoKTogUHJvbWlzZTxLZXlWYWx1ZVtdPiB7XHJcbiAgICAgICAgbGV0IHJldDogS2V5VmFsdWVbXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8S2V5VmFsdWVbXT4oR0VUX0RpcmVjdG9yX0dldENvbnN1bWVyR3JvdXBzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyTG9ncyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJmcm9tXCIsIGZyb20pLnNldChcInRvXCIsIHRvKVxyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9ncywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFRvcEFjdGl2aXRpZXMoc3Y6IFRvcEFjdGl2aXRpZXNEYXRhVmlldyk6IFByb21pc2U8VG9wQWN0aXZpdGllc0RhdGFWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogVG9wQWN0aXZpdGllc0RhdGFWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8VG9wQWN0aXZpdGllc0RhdGFWaWV3PihQT1NUX0RpcmVjdG9yX0dldFRvcEFjdGl2aXRpZXMsIHN2KSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mb3MoKTogUHJvbWlzZTxEaXJlY3RvckluZm9zPiB7XHJcbiAgICAgICAgbGV0IHJldDogRGlyZWN0b3JJbmZvcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RGlyZWN0b3JJbmZvcz4oR0VUX0RpcmVjdG9yX0dldEluZm9zLCBudWxsLCBudWxsLCBmYWxzZSkucGlwZShjYXRjaEVycm9yKF8gPT4gb2YobnVsbCBhcyBEaXJlY3RvckluZm9zKSkpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXROb2RlU3RhdHMobm9kZUlkOiBzdHJpbmcpOiBQcm9taXNlPE5vZGVTdGF0cz4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJub2RlSWRcIiwgbm9kZUlkKTtcclxuICAgICAgICBsZXQgcmV0OiBOb2RlU3RhdHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PE5vZGVTdGF0cz4oR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0cywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlc3Npb25TdGF0cyhzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25TdGF0cz4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3NpZCcsIHNpZCkuc2V0KCdzZXJpYWwnLCBzZXJpYWwpO1xyXG4gICAgICAgIGxldCByZXQ6IFNlc3Npb25TdGF0cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8U2Vzc2lvblN0YXRzPihHRVRfRGlyZWN0b3JfR2V0U2Vzc2lvblN0YXRzLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHJvZmlsZXJEYXRhTm9kZXMoc3Y6IFByb2ZpbGVyRGF0YU5vZGVzVmlldyk6IFByb21pc2U8UHJvZmlsZXJEYXRhTm9kZXNWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogUHJvZmlsZXJEYXRhTm9kZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvZmlsZXJEYXRhTm9kZXNWaWV3PihQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvd25sb2FkV29ya2xvYWRSZXBvcnQoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImZyb21cIiwgZnJvbSB8fCBcIlwiKS5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0RmlsZU5hdGl2ZShHRVRfRGlyZWN0b3JfR2V0V29ya2xvYWRSZXBvcnQsIHBhcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRNZXRyaWNzKHN2OiBNZXRyaWNzVmlldyk6IFByb21pc2U8TWV0cmljc1ZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBNZXRyaWNzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PE1ldHJpY3NWaWV3PihQT1NUX0RpcmVjdG9yX0dldE1ldHJpY3MsIHN2KSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0cmljc0xpc3QoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUHJvbWlzZTxNZXRyaWNbXT4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiZnJvbVwiLCBmcm9tIHx8IFwiXCIpXHJcbiAgICAgICAgICAgIC5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKTtcclxuXHJcbiAgICAgICAgbGV0IHJldDogTWV0cmljW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PE1ldHJpY1tdPihHRVRfRGlyZWN0b3JfR2V0TWV0cmljcywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlckxvY2tzKHN2OiBMb2Nrc1ZpZXcpOiBQcm9taXNlPExvY2tzVmlldz4ge1xyXG4gICAgICAgIGxldCByZXQ6IExvY2tzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PExvY2tzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJMb2Nrcywgc3YpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRTZXJ2ZXJRdWVyeShzdjogUXVlcnlWaWV3KTogUHJvbWlzZTxRdWVyeVZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBRdWVyeVZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxRdWVyeVZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnksIHN2KSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RHluYW1pY1ZpZXdEYXRhKHN2OiBEeW5hbWljVmlld3NWaWV3KTogUHJvbWlzZTxEeW5hbWljVmlld3NWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogRHluYW1pY1ZpZXdzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PER5bmFtaWNWaWV3c1ZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0RHluYW1pY1ZpZXdEYXRhLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldER5bmFtaWNWaWV3cygpOiBQcm9taXNlPEtleVZhbHVlW10+IHtcclxuICAgICAgICBsZXQgcmV0OiBLZXlWYWx1ZVtdID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxLZXlWYWx1ZVtdPihHRVRfRGlyZWN0b3JfR2V0RHluYW1pY1ZpZXdzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyQXVkaXRzKHN2OiBBdWRpdHNWaWV3KTogUHJvbWlzZTxBdWRpdHNWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogQXVkaXRzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PEF1ZGl0c1ZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyQXVkaXRzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbn0iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbW9kdWxlLmJhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL2FkbWluLW1vZHVsZS5iYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELEtBQUs7QUFDTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFjdEQseUJBQXlCO0FBQ3pCLE1BQU0sdUNBQXVDLEdBQVcsMENBQTBDLENBQUM7QUFDbkcsTUFBTSw4QkFBOEIsR0FBVyx1Q0FBdUMsQ0FBQztBQUN2RixNQUFNLHFCQUFxQixHQUFXLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sdUJBQXVCLEdBQVcsMEJBQTBCLENBQUM7QUFDbkUsTUFBTSx3QkFBd0IsR0FBVywwQkFBMEIsQ0FBQztBQUNwRSxNQUFNLGtDQUFrQyxHQUFXLG9DQUFvQyxDQUFDO0FBQ3hGLE1BQU0sOEJBQThCLEdBQVcsaUNBQWlDLENBQUM7QUFDakYsTUFBTSw2QkFBNkIsR0FBVywrQkFBK0IsQ0FBQztBQUM5RSxNQUFNLGdDQUFnQyxHQUFXLGtDQUFrQyxDQUFDO0FBQ3BGLE1BQU0sNEJBQTRCLEdBQVcsOEJBQThCLENBQUM7QUFDNUUsTUFBTSw0QkFBNEIsR0FBVyw4QkFBOEIsQ0FBQztBQUM1RSxNQUFNLDBCQUEwQixHQUFXLDZCQUE2QixDQUFDO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQVcsK0JBQStC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QUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxHQUFHLEdBQXFCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQixnQ0FBZ0MsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvSCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQVU7UUFDbkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksR0FBRyxHQUFlLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFhLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFVLEVBQUUsRUFBYztRQUNuRCxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxHQUFHLEdBQWUsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWEsNkJBQTZCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOztvSEE3SVEsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vLyBFU1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFByb2Nlc3Nlc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvUHJvY2Vzc2VzVmlld1wiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgVG9wQWN0aXZpdGllc0RhdGFWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1RvcEFjdGl2aXRpZXNEYXRhVmlld1wiO1xyXG5pbXBvcnQgeyBEaXJlY3RvckluZm9zIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0RpcmVjdG9ySW5mb3NcIjtcclxuaW1wb3J0IHsgTm9kZVN0YXRzIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL05vZGVTdGF0c1wiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RhdHMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvU2Vzc2lvblN0YXRzXCI7XHJcbmltcG9ydCB7IFByb2ZpbGVyRGF0YU5vZGVzVmlldyB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9uZW50cy9Qcm9maWxlckRhdGFOb2Rlc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTWV0cmljc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL01ldHJpY1wiO1xyXG5pbXBvcnQgeyBMb2Nrc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTG9ja3NWaWV3XCI7XHJcbmltcG9ydCB7IER5bmFtaWNWaWV3c1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvRHluYW1pY1ZpZXdzVmlld1wiO1xyXG5pbXBvcnQgeyBBdWRpdHNWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0F1ZGl0c1ZpZXdcIjtcclxuaW1wb3J0IHsgUXVlcnlWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1F1ZXJ5Vmlld1wiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfRGlyZWN0b3JfQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXA6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9DaGFuZ2VQcm9jZXNzQ29uc3VtZXJHcm91cFwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0Q29uc3VtZXJHcm91cHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRDb25zdW1lckdyb3VwcyNjYWNoZVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0SW5mb3M6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRJbmZvc1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0TWV0cmljczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE1ldHJpY3NcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRNZXRyaWNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0TWV0cmljc1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0UHJvZmlsZXJEYXRhTm9kZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldFdvcmtsb2FkUmVwb3J0OiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0V29ya2xvYWRSZXBvcnRcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJBdWRpdHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJBdWRpdHNcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld0RhdGE6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXREeW5hbWljVmlld0RhdGFcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJMb2Nrczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvY2tzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnk6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJRdWVyeVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9nczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvZ3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldER5bmFtaWNWaWV3czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldER5bmFtaWNWaWV3c1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFNlcnZlcldvcmtlcnM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJXb3JrZXJzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0VG9wQWN0aXZpdGllczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFRvcEFjdGl2aXRpZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0tpbGxQcm9jZXNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvS2lsbFByb2Nlc3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX1NldFByb2Nlc3NUcmFjaW5nOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvU2V0UHJvY2Vzc1RyYWNpbmdcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE5vZGVTdGF0c1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2Vzc2lvblN0YXRzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0U2Vzc2lvblN0YXRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbk1vZHVsZUJhc2VTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBodHRwOiBIVFRQU2VydmljZTtcclxuICAgIHB1YmxpYyBtc2dFeHRzOiBNZXNzYWdlU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlcldvcmtlcnMoc3Y6IFByb2Nlc3Nlc1ZpZXcpOiBQcm9taXNlPFByb2Nlc3Nlc1ZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBQcm9jZXNzZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvY2Vzc2VzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJXb3JrZXJzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvU2V0UHJvY2Vzc1RyYWNpbmcoYmU6IHN0cmluZywgaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcsIGVuYWJsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgICAgLnNldChcImluc3RhbmNlaWRcIiwgaW5zdGFuY2VpZClcclxuICAgICAgICAgICAgLnNldChcInNpZFwiLCBzaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzZXJpYWxcIiwgc2VyaWFsKVxyXG4gICAgICAgICAgICAuc2V0KFwiZW5hYmxlXCIsIGVuYWJsZSlcclxuICAgICAgICAgICAgLnNldChcImJlXCIsIGJlKTtcclxuXHJcbiAgICAgICAgbGV0IHJldDogc3RyaW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxzdHJpbmc+KEdFVF9EaXJlY3Rvcl9TZXRQcm9jZXNzVHJhY2luZywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvS2lsbFByb2Nlc3MoYmU6IHN0cmluZywgaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiaW5zdGFuY2VpZFwiLCBpbnN0YW5jZWlkKVxyXG4gICAgICAgICAgICAuc2V0KFwic2lkXCIsIHNpZClcclxuICAgICAgICAgICAgLnNldChcInNlcmlhbFwiLCBzZXJpYWwpXHJcbiAgICAgICAgICAgIC5zZXQoXCJiZVwiLCBiZSk7XHJcblxyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfS2lsbFByb2Nlc3MsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb0NoYW5nZVByb2Nlc3NDb25zdW1lckdyb3VwKGJlOiBzdHJpbmcsIGluc3RhbmNlaWQ6IHN0cmluZywgc2lkOiBzdHJpbmcsIHNlcmlhbDogc3RyaW5nLCBjb25zdW1lckdyb3VwOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiaW5zdGFuY2VpZFwiLCBpbnN0YW5jZWlkKVxyXG4gICAgICAgICAgICAuc2V0KFwic2lkXCIsIHNpZClcclxuICAgICAgICAgICAgLnNldChcInNlcmlhbFwiLCBzZXJpYWwpXHJcbiAgICAgICAgICAgIC5zZXQoXCJjb25zdW1lcl9ncm91cFwiLCBjb25zdW1lckdyb3VwKVxyXG4gICAgICAgICAgICAuc2V0KFwiYmVcIiwgYmUpO1xyXG5cclxuICAgICAgICBsZXQgcmV0OiBzdHJpbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PHN0cmluZz4oR0VUX0RpcmVjdG9yX0NoYW5nZVByb2Nlc3NDb25zdW1lckdyb3VwLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uc3VtZXJHcm91cHMoYmU6IHN0cmluZyk6IFByb21pc2U8S2V5VmFsdWVbXT4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJiZVwiLCBiZSk7XHJcblxyXG4gICAgICAgIGxldCByZXQ6IEtleVZhbHVlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEtleVZhbHVlW10+KEdFVF9EaXJlY3Rvcl9HZXRDb25zdW1lckdyb3VwcywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlckxvZ3MoYmU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiZnJvbVwiLCBmcm9tKS5zZXQoXCJ0b1wiLCB0bykuc2V0KFwiYmVcIiwgYmUpO1xyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9ncywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFRvcEFjdGl2aXRpZXMoYmU6IHN0cmluZywgc3Y6IFRvcEFjdGl2aXRpZXNEYXRhVmlldyk6IFByb21pc2U8VG9wQWN0aXZpdGllc0RhdGFWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBUb3BBY3Rpdml0aWVzRGF0YVZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxUb3BBY3Rpdml0aWVzRGF0YVZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0VG9wQWN0aXZpdGllcywgc3YsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvcyhiZTogc3RyaW5nKTogUHJvbWlzZTxEaXJlY3RvckluZm9zPiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBEaXJlY3RvckluZm9zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxEaXJlY3RvckluZm9zPihHRVRfRGlyZWN0b3JfR2V0SW5mb3MsIHBhcnMsIG51bGwsIGZhbHNlKS5waXBlKGNhdGNoRXJyb3IoXyA9PiBvZihudWxsIGFzIERpcmVjdG9ySW5mb3MpKSkpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldE5vZGVTdGF0cyhiZTogc3RyaW5nLCBub2RlSWQ6IHN0cmluZyk6IFByb21pc2U8Tm9kZVN0YXRzPiB7XHJcbiAgICAgICAgbGV0IHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcIm5vZGVJZFwiLCBub2RlSWQpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBOb2RlU3RhdHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PE5vZGVTdGF0cz4oR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0cywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlc3Npb25TdGF0cyhiZTogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25TdGF0cz4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3NpZCcsIHNpZCkuc2V0KCdzZXJpYWwnLCBzZXJpYWwpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBTZXNzaW9uU3RhdHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PFNlc3Npb25TdGF0cz4oR0VUX0RpcmVjdG9yX0dldFNlc3Npb25TdGF0cywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFByb2ZpbGVyRGF0YU5vZGVzKGJlOiBzdHJpbmcsIHN2OiBQcm9maWxlckRhdGFOb2Rlc1ZpZXcpOiBQcm9taXNlPFByb2ZpbGVyRGF0YU5vZGVzVmlldz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJiZVwiLCBiZSk7XHJcbiAgICAgICAgbGV0IHJldDogUHJvZmlsZXJEYXRhTm9kZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvZmlsZXJEYXRhTm9kZXNWaWV3PihQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzLCBzdiwgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvd25sb2FkV29ya2xvYWRSZXBvcnQoYmU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImZyb21cIiwgZnJvbSB8fCBcIlwiKS5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKS5zZXQoXCJiZVwiLCBiZSk7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldEZpbGVOYXRpdmUoR0VUX0RpcmVjdG9yX0dldFdvcmtsb2FkUmVwb3J0LCBwYXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0cmljcyhiZTogc3RyaW5nLCBzdjogTWV0cmljc1ZpZXcpOiBQcm9taXNlPE1ldHJpY3NWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBNZXRyaWNzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PE1ldHJpY3NWaWV3PihQT1NUX0RpcmVjdG9yX0dldE1ldHJpY3MsIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0cmljc0xpc3QoYmU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUHJvbWlzZTxNZXRyaWNbXT4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiZnJvbVwiLCBmcm9tIHx8IFwiXCIpXHJcbiAgICAgICAgICAgIC5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKVxyXG4gICAgICAgICAgICAuc2V0KFwiYmVcIiwgYmUpO1xyXG5cclxuICAgICAgICBsZXQgcmV0OiBNZXRyaWNbXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8TWV0cmljW10+KEdFVF9EaXJlY3Rvcl9HZXRNZXRyaWNzLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldC5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyTG9ja3MoYmU6IHN0cmluZywgc3Y6IExvY2tzVmlldyk6IFByb21pc2U8TG9ja3NWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBMb2Nrc1ZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxMb2Nrc1ZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyTG9ja3MsIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyUXVlcnkoYmU6IHN0cmluZywgc3Y6IFF1ZXJ5Vmlldyk6IFByb21pc2U8UXVlcnlWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBRdWVyeVZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxRdWVyeVZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnksIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RHluYW1pY1ZpZXdEYXRhKGJlOiBzdHJpbmcsIHN2OiBEeW5hbWljVmlld3NWaWV3KTogUHJvbWlzZTxEeW5hbWljVmlld3NWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBEeW5hbWljVmlld3NWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8RHluYW1pY1ZpZXdzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld0RhdGEsIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RHluYW1pY1ZpZXdzKGJlOiBzdHJpbmcpOiBQcm9taXNlPEtleVZhbHVlW10+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiYmVcIiwgYmUpO1xyXG4gICAgICAgIGxldCByZXQ6IEtleVZhbHVlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEtleVZhbHVlW10+KEdFVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld3MsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRTZXJ2ZXJBdWRpdHMoYmU6IHN0cmluZywgc3Y6IEF1ZGl0c1ZpZXcpOiBQcm9taXNlPEF1ZGl0c1ZpZXc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiYmVcIiwgYmUpO1xyXG4gICAgICAgIGxldCByZXQ6IEF1ZGl0c1ZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxBdWRpdHNWaWV3PihQT1NUX0RpcmVjdG9yX0dldFNlcnZlckF1ZGl0cywgc3YsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG59Il19