@csmart/ngc-smart-victim 1.14.43 → 1.14.45

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. package/README.md +25 -25
  2. package/esm2020/csmart-ngc-smart-victim.mjs +4 -4
  3. package/esm2020/lib/caseNote/caseNote.component.mjs +194 -194
  4. package/esm2020/lib/common-dialog/common-dialog.component.mjs +23 -23
  5. package/esm2020/lib/common-dialog/common-dialog.module.mjs +34 -34
  6. package/esm2020/lib/common-dialog/common-dialog.service.mjs +33 -33
  7. package/esm2020/lib/contact/contact.component.mjs +140 -140
  8. package/esm2020/lib/email.services.mjs +42 -42
  9. package/esm2020/lib/intake.service.mjs +57 -57
  10. package/esm2020/lib/safetyPlan/serviceProvider.component.mjs +99 -99
  11. package/esm2020/lib/safetyPlan/victimSafetyPlan.component.mjs +116 -116
  12. package/esm2020/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +340 -340
  13. package/esm2020/lib/shared/app.shared.module.mjs +215 -215
  14. package/esm2020/lib/shared/validators/date.validator.mjs +59 -59
  15. package/esm2020/lib/shared/validators/index.mjs +1 -1
  16. package/esm2020/lib/smart-victim-delete-confirm.component.mjs +44 -44
  17. package/esm2020/lib/smart-victim-detail/smart-victim-detail.component.mjs +1104 -1104
  18. package/esm2020/lib/smart-victim.component.mjs +314 -314
  19. package/esm2020/lib/smart-victim.model.mjs +133 -133
  20. package/esm2020/lib/smart-victim.module.mjs +128 -128
  21. package/esm2020/lib/smart-victim.service.mjs +352 -352
  22. package/esm2020/lib/victim-routing.module.mjs +41 -41
  23. package/esm2020/lib/victimSearch/VictimSearchFilter.mjs +3 -3
  24. package/esm2020/lib/victimSearch/victimSearchForm.component.mjs +38 -38
  25. package/esm2020/public-api.mjs +11 -11
  26. package/fesm2015/csmart-ngc-smart-victim.mjs +3150 -3150
  27. package/fesm2015/csmart-ngc-smart-victim.mjs.map +1 -1
  28. package/fesm2020/csmart-ngc-smart-victim.mjs +3138 -3138
  29. package/fesm2020/csmart-ngc-smart-victim.mjs.map +1 -1
  30. package/index.d.ts +5 -5
  31. package/lib/caseNote/caseNote.component.d.ts +51 -51
  32. package/lib/common-dialog/common-dialog.component.d.ts +14 -14
  33. package/lib/common-dialog/common-dialog.module.d.ts +8 -8
  34. package/lib/common-dialog/common-dialog.service.d.ts +11 -11
  35. package/lib/contact/contact.component.d.ts +40 -40
  36. package/lib/email.services.d.ts +11 -11
  37. package/lib/intake.service.d.ts +57 -57
  38. package/lib/safetyPlan/serviceProvider.component.d.ts +19 -19
  39. package/lib/safetyPlan/victimSafetyPlan.component.d.ts +54 -54
  40. package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +62 -62
  41. package/lib/shared/app.shared.module.d.ts +33 -33
  42. package/lib/shared/validators/date.validator.d.ts +9 -9
  43. package/lib/shared/validators/index.d.ts +1 -1
  44. package/lib/smart-victim-delete-confirm.component.d.ts +12 -12
  45. package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +129 -129
  46. package/lib/smart-victim.component.d.ts +68 -68
  47. package/lib/smart-victim.model.d.ts +205 -205
  48. package/lib/smart-victim.module.d.ts +49 -49
  49. package/lib/smart-victim.service.d.ts +71 -71
  50. package/lib/victim-routing.module.d.ts +7 -7
  51. package/lib/victimSearch/VictimSearchFilter.d.ts +7 -7
  52. package/lib/victimSearch/victimSearchForm.component.d.ts +14 -14
  53. package/package.json +1 -1
  54. package/public-api.d.ts +7 -7
@@ -1,352 +1,352 @@
1
- import { HttpClient, HttpHeaders } from '@angular/common/http';
2
- import { Injectable, Inject } from '@angular/core';
3
- import { SMART_LOOKUP_SERVICE_URL, SMART_OFFENDER_SERVICE_URL, SMART_VICTIM_SERVICE_URL } from './smart-victim.model';
4
- import { throwError as observableThrowError } from 'rxjs';
5
- import { map, catchError } from 'rxjs/operators';
6
- import { Apollo } from 'apollo-angular';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- import * as i2 from "apollo-angular";
10
- const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
11
- const options = { headers: headers };
12
- export class NgcSmartVictimService {
13
- constructor(http, smartOffenderServiceUrl, smartLookupServiceUrl, smartVictimServiceUrl, apollo) {
14
- this.http = http;
15
- this.smartOffenderServiceUrl = smartOffenderServiceUrl;
16
- this.smartLookupServiceUrl = smartLookupServiceUrl;
17
- this.smartVictimServiceUrl = smartVictimServiceUrl;
18
- this.apollo = apollo;
19
- this.serviceApiUrl = 'https://smart-service-test.azurewebsites.net/graphql';
20
- }
21
- // getVictimInsurances(offenderId: any) {
22
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
23
- // }
24
- // getVictimInsurance(id: any) {
25
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
26
- // }
27
- // postVictimInsurance(val: any) {
28
- // return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
29
- // }
30
- // putVictimInsurance(id: any, val: any) {
31
- // return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
32
- // }
33
- // deleteVictimInsurance(id: any) {
34
- // return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
35
- // }
36
- // getVictimInsuranceTypes() {
37
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
38
- // }
39
- // getVictimInsurancePolicyHolders() {
40
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
41
- // }
42
- // getVictimInsuranceSwitchReasons() {
43
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
44
- // }
45
- // getVictimInsuranceProviders() {
46
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
47
- // }
48
- // getVictimInsuranceProvider(id) {
49
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
50
- // }
51
- // postProviderInformation(val: any) {
52
- // return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
53
- // }
54
- getCurrentHousing(offenderId) {
55
- return this.http
56
- .get(this.smartOffenderServiceUrl + 'Housings/current/' + offenderId)
57
- .pipe();
58
- }
59
- handleError(error) {
60
- console.error(error);
61
- return observableThrowError(error.json().error || 'Server error');
62
- }
63
- getDrugsTypes() {
64
- return this.http.get(this.smartLookupServiceUrl + 'DrugTypes', options).pipe(map(res => res));
65
- }
66
- getDocketList(offenderId) {
67
- const queryString = `
68
- {
69
- findDockets(input: { where: { offenderId:${offenderId} } }) {
70
- totalCount
71
- message
72
- data {
73
- docketId
74
- docketNumber
75
-
76
- }
77
- }
78
- }`;
79
- return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
80
- console.log('dockets for this offender:', data.findDockets.data);
81
- return data.findDockets.data;
82
- }));
83
- }
84
- getSupportTypes() {
85
- return this.http.get(this.smartLookupServiceUrl + 'VictimSupportTypes', options).pipe(map(res => res));
86
- }
87
- getPrefixes() {
88
- return this.http.get(this.smartLookupServiceUrl + 'Prefixes', options).pipe(map(res => res));
89
- }
90
- getSuffixes() {
91
- return this.http.get(this.smartLookupServiceUrl + 'Suffixes', options).pipe(map(res => res));
92
- }
93
- getRelationshipTypes() {
94
- return this.http.get(this.smartLookupServiceUrl + 'RelationshipTypes', options).pipe(map(res => res));
95
- }
96
- getGenders() {
97
- return this.http.get(this.smartLookupServiceUrl + 'Genders', options).pipe(map(res => res));
98
- }
99
- getWeaponTypes() {
100
- return this.http.get(this.smartLookupServiceUrl + 'WeaponTypes', options).pipe(map(res => res));
101
- }
102
- getFlagOptionYesNoUnknowns() {
103
- return this.http.get(this.smartLookupServiceUrl + 'FlagOptionYesNoUnknowns', options).pipe(map(res => {
104
- return res;
105
- }));
106
- }
107
- getContactTypes() {
108
- return this.http.get(this.smartLookupServiceUrl + 'ContactTypes', options).pipe(map(res => {
109
- return res;
110
- }));
111
- }
112
- getContactMethods() {
113
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactMethods', options).pipe(map(res => {
114
- return res;
115
- }));
116
- }
117
- getContactBys() {
118
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map(res => {
119
- return res;
120
- }));
121
- }
122
- getVictimContactPurposes() {
123
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map(res => {
124
- return res;
125
- }));
126
- }
127
- getVictimServiceTypes() {
128
- return this.http.get(this.smartLookupServiceUrl + 'VictimServiceTypes', options).pipe(map(res => {
129
- return res;
130
- }));
131
- }
132
- getVictimServiceStatus() {
133
- return this.http.get(this.smartLookupServiceUrl + 'VictimServiceStatus', options).pipe(map(res => {
134
- return res;
135
- }));
136
- }
137
- getvVictimServiceTypeProgramProviders() {
138
- return this.http.get(this.smartLookupServiceUrl + 'vVictimServiceTypeProgramProviders', options).pipe(map(res => {
139
- return res;
140
- }));
141
- }
142
- getVictim(val) {
143
- return this.http.get(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map(res => {
144
- console.log('victim return data');
145
- console.log(res);
146
- return res;
147
- }));
148
- }
149
- getVictimAdvocate(val) {
150
- return this.http.get(this.smartVictimServiceUrl + 'VictimAdvocates/' + val, options).pipe(map(res => {
151
- return res;
152
- }));
153
- }
154
- getVictimGuardian(val) {
155
- return this.http.get(this.smartVictimServiceUrl + 'VictimGuardians/' + val, options).pipe(map(res => {
156
- return res;
157
- }));
158
- }
159
- postVictims(val) {
160
- const tempVal = JSON.stringify(val);
161
- return this.http.post(this.smartVictimServiceUrl + 'Victims', tempVal, options).pipe(map(res => { return res; }));
162
- }
163
- putVictims(id, val) {
164
- const tempVal = JSON.stringify(val);
165
- return this.http.put(this.smartVictimServiceUrl + 'Victims/' + id, tempVal, options).pipe(map(res => { return res; }));
166
- }
167
- putVictimAdvocate(id, val) {
168
- let body;
169
- body = JSON.stringify(val);
170
- return this.http.put(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, body, options).pipe(map(res => { return res; }));
171
- }
172
- postVictimAdvocate(id, val) {
173
- const tempVal = JSON.stringify(val);
174
- return this.http.post(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, tempVal, options).pipe(map(res => { return res; }));
175
- }
176
- putVictimGuardian(id, val) {
177
- console.log('update victim guardian');
178
- console.log(val);
179
- const tempVal = JSON.stringify(val);
180
- return this.http.put(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map(res => { return res; }));
181
- }
182
- postVictimGuardian(id, val) {
183
- const tempVal = JSON.stringify(val);
184
- return this.http.post(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map(res => { return res; }));
185
- }
186
- getVictimDrugUse(val) {
187
- return this.http.get(this.smartVictimServiceUrl + 'VictimDrugUses/' + val, options).pipe(map((res) => {
188
- return res;
189
- }));
190
- }
191
- putVictimDrugUse(id, val) {
192
- const tempVal = JSON.stringify(val);
193
- return this.http.put(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map(res => { return res; }));
194
- }
195
- postVictimDrugUse(id, val) {
196
- const tempVal = JSON.stringify(val);
197
- return this.http.post(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map(res => { return res; }));
198
- }
199
- putVictimWeaponUse(id, val) {
200
- const tempVal = JSON.stringify(val);
201
- return this.http.put(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map(res => { return res; }));
202
- }
203
- postVictimWeaponUse(id, val) {
204
- const tempVal = JSON.stringify(val);
205
- return this.http.post(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map(res => { return res; }));
206
- }
207
- putVictimSupport(id, val) {
208
- const tempVal = JSON.stringify(val);
209
- return this.http.put(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map(res => { return res; }));
210
- }
211
- postVictimSupport(id, val) {
212
- const tempVal = JSON.stringify(val);
213
- return this.http.post(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map(res => { return res; }));
214
- }
215
- deleteVictims(val, staffId) {
216
- return this.http.delete(this.smartVictimServiceUrl + 'Victims/' + val + '?staffId=' + staffId, options).pipe(map(res => { return res; }));
217
- }
218
- // //==============Victim Serive===================================
219
- getVictims(offenderId) {
220
- return this.http.get(this.smartVictimServiceUrl + 'Victims/offender/' + offenderId)
221
- .pipe(map((res) => {
222
- return res;
223
- }), catchError(this.handleError));
224
- }
225
- getVictimsByFilter(filter) {
226
- return this.http
227
- .post(this.smartVictimServiceUrl + '/Victims', JSON.stringify(filter), { headers: headers })
228
- .pipe(map((res) => {
229
- return res;
230
- }), catchError(this.handleError));
231
- }
232
- getVictimListByFilter(filter) {
233
- console.log('filer in service');
234
- console.log(filter);
235
- return this.http
236
- .post(this.smartVictimServiceUrl + 'vVictims/Filter', JSON.stringify(filter), options)
237
- .pipe();
238
- }
239
- getCasetNotes(victimId) {
240
- return this.http.get(this.smartVictimServiceUrl + 'VictimCaseNotes/victim/' + victimId)
241
- .pipe(map((res) => {
242
- return res;
243
- }), catchError(this.handleError));
244
- }
245
- addCaseNote(caseNote) {
246
- let body;
247
- body = JSON.stringify(caseNote);
248
- return this.http
249
- .post(this.smartVictimServiceUrl + 'VictimCaseNotes/', body, options);
250
- }
251
- updateCaseNote(caseNote) {
252
- let body;
253
- body = JSON.stringify(caseNote);
254
- return this.http
255
- .put(this.smartVictimServiceUrl + 'VictimCaseNotes/' + caseNote.victimCaseNoteId, body, options);
256
- }
257
- deleteCaseNote(id, staffId) {
258
- return this.http.delete(`${this.smartVictimServiceUrl}VictimCaseNotes/${id}?staffId=${staffId}`);
259
- }
260
- getContacts(victimId) {
261
- return this.http.get(this.smartVictimServiceUrl + 'VictimContacts/victim/' + victimId)
262
- .pipe(map((res) => {
263
- return res;
264
- }), catchError(this.handleError));
265
- }
266
- addContact(contact) {
267
- let body;
268
- body = JSON.stringify(contact);
269
- return this.http
270
- .post(this.smartVictimServiceUrl + 'VictimContacts/', body, options);
271
- }
272
- updateContact(contact) {
273
- let body;
274
- body = JSON.stringify(contact);
275
- return this.http
276
- .put(this.smartVictimServiceUrl + 'VictimContacts/' + contact.victimContactId, body, options);
277
- }
278
- getSafetyPlans(victimId) {
279
- return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victim/' + victimId)
280
- .pipe(map((res) => {
281
- return res;
282
- }), catchError(this.handleError));
283
- }
284
- getVictimServices(victimServiceId) {
285
- return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victimServiceId/' + victimServiceId)
286
- .pipe(map((res) => {
287
- return res;
288
- }), catchError(this.handleError));
289
- }
290
- getVictimServiceDetail(victimServiceId) {
291
- return this.http.get(this.smartVictimServiceUrl + 'VictimServiceDetails/' + victimServiceId)
292
- .pipe(map((res) => {
293
- return res;
294
- }), catchError(this.handleError));
295
- }
296
- addSafetyPlan(victimSafetyPlan) {
297
- let body;
298
- body = JSON.stringify(victimSafetyPlan);
299
- return this.http
300
- .post(this.smartVictimServiceUrl + 'VictimServices/', body, options)
301
- .pipe();
302
- }
303
- updateSafetyPlan(victimSafetyPlan) {
304
- let body;
305
- body = JSON.stringify(victimSafetyPlan);
306
- return this.http
307
- .put(this.smartVictimServiceUrl + 'VictimServices/' + victimSafetyPlan.victimServiceId, body, options);
308
- }
309
- addVictimServiceStatus(victimServiceStatusHistory) {
310
- let body;
311
- body = JSON.stringify(victimServiceStatusHistory);
312
- return this.http
313
- .post(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/', body, options);
314
- }
315
- getServiceStatusHistories(victimServiceId) {
316
- return this.http.get(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/victimServiceId/' + victimServiceId)
317
- .pipe(map((res) => {
318
- return res;
319
- }), catchError(this.handleError));
320
- }
321
- deleteSafetyPlan(victimServiceId, staffId) {
322
- return this.http.delete(`${this.smartVictimServiceUrl}VictimServices/${victimServiceId}?staffId=${staffId}`);
323
- }
324
- addPlanProvider(victimServiceDetail) {
325
- let body;
326
- body = JSON.stringify(victimServiceDetail);
327
- return this.http
328
- .post(this.smartVictimServiceUrl + 'VictimServiceDetails/', body, options)
329
- .pipe();
330
- }
331
- deleteProvider(victimProgramProviderId, staffId) {
332
- return this.http.delete(`${this.smartVictimServiceUrl}VictimServiceDetails/${victimProgramProviderId}?staffId=${staffId}`);
333
- }
334
- }
335
- /** @nocollapse */ NgcSmartVictimService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartVictimService, deps: [{ token: i1.HttpClient }, { token: SMART_OFFENDER_SERVICE_URL }, { token: SMART_LOOKUP_SERVICE_URL }, { token: SMART_VICTIM_SERVICE_URL }, { token: i2.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
336
- /** @nocollapse */ NgcSmartVictimService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartVictimService, providedIn: 'root' });
337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartVictimService, decorators: [{
338
- type: Injectable,
339
- args: [{
340
- providedIn: 'root'
341
- }]
342
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
343
- type: Inject,
344
- args: [SMART_OFFENDER_SERVICE_URL]
345
- }] }, { type: undefined, decorators: [{
346
- type: Inject,
347
- args: [SMART_LOOKUP_SERVICE_URL]
348
- }] }, { type: undefined, decorators: [{
349
- type: Inject,
350
- args: [SMART_VICTIM_SERVICE_URL]
351
- }] }, { type: i2.Apollo }]; } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc21hcnQtdmljdGltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQUMsd0JBQXdCLEVBRVcsTUFBTSxzQkFBc0IsQ0FBQztBQUM5SCxPQUFPLEVBQWMsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxHQUFHLEVBQUMsVUFBVSxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSXhDLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQUN4RSxNQUFNLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUtyQyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW9CLElBQWdCLEVBRVUsdUJBQStCLEVBQ2pDLHFCQUE2QixFQUM3QixxQkFBNkIsRUFDL0QsTUFBYztRQUxKLFNBQUksR0FBSixJQUFJLENBQVk7UUFFVSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVE7UUFDakMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUMvRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTmhCLGtCQUFhLEdBQUksc0RBQXNELENBQUM7SUFRMUUsQ0FBQztJQUVQLHlDQUF5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QUMsbUJBQXVDO1FBQ2pELElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNmLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUN6RSxJQUFJLEVBQUUsQ0FBQztJQUVaLENBQUM7SUFFSCxjQUFjLENBQUMsdUJBQStCLEVBQUUsT0FBZTtRQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQix3QkFBd0IsdUJBQXVCLFlBQVksT0FBTyxFQUFFLENBQUMsQ0FBQztJQUU3SCxDQUFDOztxSUF2aEJZLHFCQUFxQiw0Q0FJdEIsMEJBQTBCLGFBQzFCLHdCQUF3QixhQUN4Qix3QkFBd0I7eUlBTnZCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMvQixNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsSHR0cFJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNNQVJUX0xPT0tVUF9TRVJWSUNFX1VSTCwgU01BUlRfT0ZGRU5ERVJfU0VSVklDRV9VUkwsU01BUlRfVklDVElNX1NFUlZJQ0VfVVJMLFxyXG4gICAgVmljdGltTGlzdEZpbHRlcixWaWN0aW1EcnVnVXNlLFZpY3RpbSxWaWN0aW1TYWZldHlQbGFuLFxyXG4gICBDYXNlTm90ZSxDb250YWN0LFZpY3RpbVNlcnZpY2VEZXRhaWwsVmljdGltU2VydmljZVN0YXR1c0hpc3RvcnksVmljdGltQWR2b2NhdGUsVmljdGltR3VhcmRpYW59IGZyb20gJy4vc21hcnQtdmljdGltLm1vZGVsJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCxjYXRjaEVycm9yLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuXHJcblxyXG5cclxuY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XHJcbmNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nY1NtYXJ0VmljdGltU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlQXBpVXJsID0gICdodHRwczovL3NtYXJ0LXNlcnZpY2UtdGVzdC5henVyZXdlYnNpdGVzLm5ldC9ncmFwaHFsJztcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgIFxyXG4gICAgQEluamVjdChTTUFSVF9PRkZFTkRFUl9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydE9mZmVuZGVyU2VydmljZVVybDogc3RyaW5nLFxyXG4gICAgQEluamVjdChTTUFSVF9MT09LVVBfU0VSVklDRV9VUkwpIHByaXZhdGUgc21hcnRMb29rdXBTZXJ2aWNlVXJsOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KFNNQVJUX1ZJQ1RJTV9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydFZpY3RpbVNlcnZpY2VVcmw6IHN0cmluZyxcclxuICAgIHByaXZhdGUgYXBvbGxvOiBBcG9sbG9cclxuXHJcbiAgICApIHsgfVxyXG5cclxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2VzKG9mZmVuZGVySWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/b2ZmZW5kZXJJZD0nICsgb2ZmZW5kZXJJZCkucGlwZSgpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0VmljdGltSW5zdXJhbmNlKGlkOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMvP2lkPScgKyBpZCkucGlwZSgpO1xyXG4gIC8vIH0gXHJcblxyXG4gIC8vIHBvc3RWaWN0aW1JbnN1cmFuY2UodmFsOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzJywgdmFsKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwdXRWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMvP2lkPScgKyBpZCwgdmFsKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkKS5waXBlKCk7XHJcbiAgLy8gfVxyXG4gIFxyXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZVR5cGVzKCkge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlVHlwZXMnKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2VQb2xpY3lIb2xkZXJzKCkge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUG9saWN5SG9sZGVycycpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4vLyAgIGdldFZpY3RpbUluc3VyYW5jZVN3aXRjaFJlYXNvbnMoKSB7XHJcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VTd2l0Y2hSZWFzb25zJykucGlwZSgpO1xyXG4vLyAgIH1cclxuXHJcbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlUHJvdmlkZXJzKCkge1xyXG4vLyAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXInKS5waXBlKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBnZXRWaWN0aW1JbnN1cmFuY2VQcm92aWRlcihpZCkge1xyXG4vLyAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVByb3ZpZGVycy8nICsgaWQpLnBpcGUoKTtcclxuLy8gfVxyXG5cclxuLy8gICBwb3N0UHJvdmlkZXJJbmZvcm1hdGlvbih2YWw6IGFueSkge1xyXG4vLyAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVByb3ZpZGVycycsIHZhbCkucGlwZSgpO1xyXG4vLyAgIH1cclxuXHJcbmdldEN1cnJlbnRIb3VzaW5nKG9mZmVuZGVySWQ6IG51bWJlcikge1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAuZ2V0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnSG91c2luZ3MvY3VycmVudC8nICsgb2ZmZW5kZXJJZClcclxuICAgIC5waXBlKCk7XHJcbn1cclxuXHJcbnByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvci5qc29uKCkuZXJyb3IgfHwgJ1NlcnZlciBlcnJvcicpO1xyXG59XHJcblxyXG5nZXREcnVnc1R5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdEcnVnVHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldERvY2tldExpc3Qob2ZmZW5kZXJJZDogbnVtYmVyKSB7XHJcbiAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbiAge1xyXG4gICAgZmluZERvY2tldHMoaW5wdXQ6IHsgd2hlcmU6IHsgb2ZmZW5kZXJJZDoke29mZmVuZGVySWR9IH0gfSkge1xyXG4gICAgICB0b3RhbENvdW50XHJcbiAgICAgIG1lc3NhZ2VcclxuICAgICAgZGF0YSB7XHJcbiAgICAgICAgZG9ja2V0SWRcclxuICAgICAgICBkb2NrZXROdW1iZXJcclxuICAgICAgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9YDtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5zZXJ2aWNlQXBpVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KS5waXBlKFxyXG4gICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnZG9ja2V0cyBmb3IgdGhpcyBvZmZlbmRlcjonLCBkYXRhLmZpbmREb2NrZXRzLmRhdGEpO1xyXG4gICAgICByZXR1cm4gZGF0YS5maW5kRG9ja2V0cy5kYXRhO1xyXG4gICAgfSkpO1xyXG5cclxuXHJcbn1cclxuXHJcbmdldFN1cHBvcnRUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1TdXBwb3J0VHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFByZWZpeGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdQcmVmaXhlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0U3VmZml4ZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1N1ZmZpeGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRSZWxhdGlvbnNoaXBUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnUmVsYXRpb25zaGlwVHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldEdlbmRlcnMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ0dlbmRlcnMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFdlYXBvblR5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdXZWFwb25UeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0RmxhZ09wdGlvblllc05vVW5rbm93bnMoKSB7XHJcbiByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdGbGFnT3B0aW9uWWVzTm9Vbmtub3ducycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRDb250YWN0VHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnQ29udGFjdFR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuIGdldENvbnRhY3RNZXRob2RzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RNZXRob2RzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuIGdldENvbnRhY3RCeXMoKXtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1Db250YWN0UHVycG9zZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgKFxyXG4gIG1hcChyZXMgPT4geyBcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICk7XHJcblxyXG4gfVxyXG5cclxuZ2V0VmljdGltQ29udGFjdFB1cnBvc2VzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RQdXJwb3NlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcblxyXG4gZ2V0VmljdGltU2VydmljZVR5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VUeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcbiBnZXRWaWN0aW1TZXJ2aWNlU3RhdHVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG5cclxuIGdldHZWaWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlcnMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAndlZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcblxyXG5cclxuZ2V0VmljdGltKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltcy8nICsgdmFsLCBvcHRpb25zKS5waXBlXHJcbiAgKFxyXG4gICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICBjb25zb2xlLmxvZygndmljdGltIHJldHVybiBkYXRhJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7ICBcclxuICAgICAgcmV0dXJuIHJlcztcclxuXHJcbiAgICB9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRWaWN0aW1BZHZvY2F0ZSh2YWw6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUFkdm9jYXRlcy8nICsgdmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuXHJcbiAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgIHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0VmljdGltR3VhcmRpYW4odmFsOiBhbnkpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1HdWFyZGlhbnMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcblxyXG4gICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnBvc3RWaWN0aW1zKHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsKyAnVmljdGltcycsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wdXRWaWN0aW1zKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wdXRWaWN0aW1BZHZvY2F0ZShpZDogYW55LCB2YWw6IFZpY3RpbUFkdm9jYXRlKSB7XHJcbiAgbGV0IGJvZHk6IHN0cmluZztcclxuICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1BZHZvY2F0ZXMvJyArIGlkLCBib2R5LCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxuXHJcblxyXG5cclxuXHJcbn1cclxuXHJcbnBvc3RWaWN0aW1BZHZvY2F0ZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1BZHZvY2F0ZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltR3VhcmRpYW4oaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zb2xlLmxvZygndXBkYXRlIHZpY3RpbSBndWFyZGlhbicpO1xyXG4gIGNvbnNvbGUubG9nKHZhbCk7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltR3VhcmRpYW5zLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnBvc3RWaWN0aW1HdWFyZGlhbihpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1HdWFyZGlhbnMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0VmljdGltRHJ1Z1VzZSh2YWw6IGFueSk6IE9ic2VydmFibGU8VmljdGltRHJ1Z1VzZVtdPntcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1EcnVnVXNlcy8nICsgdmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKChyZXM6IFZpY3RpbURydWdVc2VbXSkgPT4geyBcclxuICAgICAgICAgICAgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wdXRWaWN0aW1EcnVnVXNlKGlkOiBhbnksIHZhbDogVmljdGltRHJ1Z1VzZVtdKSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbURydWdVc2VzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnBvc3RWaWN0aW1EcnVnVXNlKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbURydWdVc2VzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnB1dFZpY3RpbVdlYXBvblVzZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVdlYXBvblVzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucG9zdFZpY3RpbVdlYXBvblVzZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1XZWFwb25Vc2VzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxucHV0VmljdGltU3VwcG9ydChpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVN1cHBvcnRzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnBvc3RWaWN0aW1TdXBwb3J0KGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVN1cHBvcnRzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmRlbGV0ZVZpY3RpbXModmFsOiBhbnksICBzdGFmZklkOiBudW1iZXIpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCsgJ1ZpY3RpbXMvJyArIHZhbCArICc/c3RhZmZJZD0nKyBzdGFmZklkLCBvcHRpb25zKS5waXBlXHJcbiAgKFxyXG4gIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgKTtcclxufVxyXG5cclxuXHJcbi8vIC8vPT09PT09PT09PT09PT1WaWN0aW0gU2VyaXZlPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbmdldFZpY3RpbXMob2ZmZW5kZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZSA8VmljdGltW10+IHtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgICsgJ1ZpY3RpbXMvb2ZmZW5kZXIvJyArIG9mZmVuZGVySWQpXHJcbiAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVtdKSA9PiB7XHJcbiAgICBcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxufVxyXG5cclxuZ2V0VmljdGltc0J5RmlsdGVyKGZpbHRlcjogVmljdGltTGlzdEZpbHRlcik6IE9ic2VydmFibGU8VmljdGltW10+e1xyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJy9WaWN0aW1zJywgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcbiAgICAgICAgICAucGlwZShtYXAoKHJlczogVmljdGltW10pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxufVxyXG5cclxuZ2V0VmljdGltTGlzdEJ5RmlsdGVyKGZpbHRlcjogVmljdGltTGlzdEZpbHRlcikgXHJcbntcclxuICBjb25zb2xlLmxvZygnZmlsZXIgaW4gc2VydmljZScpO1xyXG4gIGNvbnNvbGUubG9nKGZpbHRlcik7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICd2VmljdGltcy9GaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLCBvcHRpb25zKVxyXG4gIC5waXBlKCk7XHJcblxyXG59XHJcblxyXG5cclxuZ2V0Q2FzZXROb3Rlcyh2aWN0aW1JZDogbnVtYmVyKTogT2JzZXJ2YWJsZSA8Q2FzZU5vdGVbXT4ge1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvdmljdGltLycgKyB2aWN0aW1JZClcclxuICAucGlwZShtYXAoKHJlczogQ2FzZU5vdGVbXSkgPT4ge1xyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gIH0pXHJcbiAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gXHJcblxyXG59XHJcbmFkZENhc2VOb3RlKGNhc2VOb3RlOiBDYXNlTm90ZSkge1xyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShjYXNlTm90ZSk7XHJcbiAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNhc2VOb3Rlcy8nLCBib2R5LCBvcHRpb25zKTtcclxuIFxyXG4gfVxyXG5cclxuIFxyXG51cGRhdGVDYXNlTm90ZShjYXNlTm90ZTogQ2FzZU5vdGUpe1xyXG5cclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeShjYXNlTm90ZSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNhc2VOb3Rlcy8nICsgY2FzZU5vdGUudmljdGltQ2FzZU5vdGVJZCwgYm9keSwgb3B0aW9ucylcclxuXHJcbiAgICAgIDtcclxuIH1cclxuXHJcbmRlbGV0ZUNhc2VOb3RlKGlkOiBudW1iZXIsIHN0YWZmSWQ6IG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybH1WaWN0aW1DYXNlTm90ZXMvJHtpZH0/c3RhZmZJZD0ke3N0YWZmSWR9YCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250YWN0cyh2aWN0aW1JZDogbnVtYmVyKTogT2JzZXJ2YWJsZSA8Q29udGFjdFtdPiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdHMvdmljdGltLycgKyB2aWN0aW1JZClcclxuICAgIC5waXBlKG1hcCgocmVzOiBDb250YWN0W10pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfSlcclxuICAgICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuICBcclxuICB9XHJcbiAgYWRkQ29udGFjdChjb250YWN0OiBDb250YWN0KSB7XHJcbiAgICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShjb250YWN0KTtcclxuICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RzLycsIGJvZHksIG9wdGlvbnMpO1xyXG4gICBcclxuICAgfVxyXG4gIFxyXG4gICBcclxuICB1cGRhdGVDb250YWN0KGNvbnRhY3Q6IENvbnRhY3Qpe1xyXG4gIFxyXG4gICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShjb250YWN0KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RzLycgKyBjb250YWN0LnZpY3RpbUNvbnRhY3RJZCwgYm9keSwgb3B0aW9ucylcclxuICBcclxuICAgICAgICA7XHJcbiAgIH1cclxuICBcclxuZ2V0U2FmZXR5UGxhbnModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNhZmV0eVBsYW5bXT4ge1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAndlZpY3RpbVNlcnZpY2VMaXN0cy92aWN0aW0vJyArIHZpY3RpbUlkKVxyXG4gICAgICAucGlwZShtYXAoKHJlczogVmljdGltU2FmZXR5UGxhbltdKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgfVxyXG5cclxuZ2V0VmljdGltU2VydmljZXModmljdGltU2VydmljZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxWaWN0aW1TYWZldHlQbGFuW10+IHtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlTGlzdHMvdmljdGltU2VydmljZUlkLycgKyB2aWN0aW1TZXJ2aWNlSWQpXHJcbiAgICAgIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TYWZldHlQbGFuW10pID0+IHtcclxuICAgICAgICAgIHJldHVybiAgcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgXHJcbiAgfVxyXG5cclxuZ2V0VmljdGltU2VydmljZURldGFpbCh2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNlcnZpY2VEZXRhaWxbXT4ge1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlRGV0YWlscy8nICsgdmljdGltU2VydmljZUlkKVxyXG4gIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlRGV0YWlsW10pID0+IHtcclxuICBcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuXHJcbn1cclxuYWRkU2FmZXR5UGxhbih2aWN0aW1TYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuKSB7XHJcblxyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2FmZXR5UGxhbik7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlcy8nLCBib2R5LCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoKTtcclxuICBcclxuICB9XHJcbnVwZGF0ZVNhZmV0eVBsYW4odmljdGltU2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbil7XHJcblxyXG4gICAgICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2FmZXR5UGxhbik7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgIC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZXMvJyArIHZpY3RpbVNhZmV0eVBsYW4udmljdGltU2VydmljZUlkLCBib2R5LCBvcHRpb25zKVxyXG5cclxuICAgICAgICAgIDtcclxuICAgICB9XHJcbmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1c0hpc3Rvcnk6IFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5KXtcclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMvJywgYm9keSwgb3B0aW9ucyk7XHJcblxyXG4gIH1cclxuXHJcbmdldFNlcnZpY2VTdGF0dXNIaXN0b3JpZXModmljdGltU2VydmljZUlkOiBudW1iZXIpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMvdmljdGltU2VydmljZUlkLycgKyB2aWN0aW1TZXJ2aWNlSWQpXHJcbiAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeVtdKSA9PiB7XHJcbiAgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICk7XHJcbn1cclxuXHJcbmRlbGV0ZVNhZmV0eVBsYW4odmljdGltU2VydmljZUlkOiBudW1iZXIsIHN0YWZmSWQ6IG51bWJlcikge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbVNlcnZpY2VzLyR7dmljdGltU2VydmljZUlkfT9zdGFmZklkPSR7c3RhZmZJZH1gKTtcclxuXHJcbiAgfVxyXG5hZGRQbGFuUHJvdmlkZXIodmljdGltU2VydmljZURldGFpbDpWaWN0aW1TZXJ2aWNlRGV0YWlsKXtcclxuICAgICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNlcnZpY2VEZXRhaWwpO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VEZXRhaWxzLycsIGJvZHksIG9wdGlvbnMpXHJcbiAgICAgIC5waXBlKCk7XHJcblxyXG4gIH1cclxuXHJcbmRlbGV0ZVByb3ZpZGVyKHZpY3RpbVByb2dyYW1Qcm92aWRlcklkOiBzdHJpbmcsIHN0YWZmSWQ6IG51bWJlcil7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmx9VmljdGltU2VydmljZURldGFpbHMvJHt2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZH0/c3RhZmZJZD0ke3N0YWZmSWR9YCk7XHJcblxyXG59XHJcblxyXG5cclxuXHJcbn1cclxuIl19
1
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
2
+ import { Injectable, Inject } from '@angular/core';
3
+ import { SMART_LOOKUP_SERVICE_URL, SMART_OFFENDER_SERVICE_URL, SMART_VICTIM_SERVICE_URL } from './smart-victim.model';
4
+ import { throwError as observableThrowError } from 'rxjs';
5
+ import { map, catchError } from 'rxjs/operators';
6
+ import { Apollo } from 'apollo-angular';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http";
9
+ import * as i2 from "apollo-angular";
10
+ const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
11
+ const options = { headers: headers };
12
+ export class NgcSmartVictimService {
13
+ constructor(http, smartOffenderServiceUrl, smartLookupServiceUrl, smartVictimServiceUrl, apollo) {
14
+ this.http = http;
15
+ this.smartOffenderServiceUrl = smartOffenderServiceUrl;
16
+ this.smartLookupServiceUrl = smartLookupServiceUrl;
17
+ this.smartVictimServiceUrl = smartVictimServiceUrl;
18
+ this.apollo = apollo;
19
+ this.serviceApiUrl = 'https://smart-service-test.azurewebsites.net/graphql';
20
+ }
21
+ // getVictimInsurances(offenderId: any) {
22
+ // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
23
+ // }
24
+ // getVictimInsurance(id: any) {
25
+ // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
26
+ // }
27
+ // postVictimInsurance(val: any) {
28
+ // return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
29
+ // }
30
+ // putVictimInsurance(id: any, val: any) {
31
+ // return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
32
+ // }
33
+ // deleteVictimInsurance(id: any) {
34
+ // return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
35
+ // }
36
+ // getVictimInsuranceTypes() {
37
+ // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
38
+ // }
39
+ // getVictimInsurancePolicyHolders() {
40
+ // return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
41
+ // }
42
+ // getVictimInsuranceSwitchReasons() {
43
+ // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
44
+ // }
45
+ // getVictimInsuranceProviders() {
46
+ // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
47
+ // }
48
+ // getVictimInsuranceProvider(id) {
49
+ // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
50
+ // }
51
+ // postProviderInformation(val: any) {
52
+ // return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
53
+ // }
54
+ getCurrentHousing(offenderId) {
55
+ return this.http
56
+ .get(this.smartOffenderServiceUrl + 'Housings/current/' + offenderId)
57
+ .pipe();
58
+ }
59
+ handleError(error) {
60
+ console.error(error);
61
+ return observableThrowError(error.json().error || 'Server error');
62
+ }
63
+ getDrugsTypes() {
64
+ return this.http.get(this.smartLookupServiceUrl + 'DrugTypes', options).pipe(map(res => res));
65
+ }
66
+ getDocketList(offenderId) {
67
+ const queryString = `
68
+ {
69
+ findDockets(input: { where: { offenderId:${offenderId} } }) {
70
+ totalCount
71
+ message
72
+ data {
73
+ docketId
74
+ docketNumber
75
+
76
+ }
77
+ }
78
+ }`;
79
+ return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map(({ data }) => {
80
+ console.log('dockets for this offender:', data.findDockets.data);
81
+ return data.findDockets.data;
82
+ }));
83
+ }
84
+ getSupportTypes() {
85
+ return this.http.get(this.smartLookupServiceUrl + 'VictimSupportTypes', options).pipe(map(res => res));
86
+ }
87
+ getPrefixes() {
88
+ return this.http.get(this.smartLookupServiceUrl + 'Prefixes', options).pipe(map(res => res));
89
+ }
90
+ getSuffixes() {
91
+ return this.http.get(this.smartLookupServiceUrl + 'Suffixes', options).pipe(map(res => res));
92
+ }
93
+ getRelationshipTypes() {
94
+ return this.http.get(this.smartLookupServiceUrl + 'RelationshipTypes', options).pipe(map(res => res));
95
+ }
96
+ getGenders() {
97
+ return this.http.get(this.smartLookupServiceUrl + 'Genders', options).pipe(map(res => res));
98
+ }
99
+ getWeaponTypes() {
100
+ return this.http.get(this.smartLookupServiceUrl + 'WeaponTypes', options).pipe(map(res => res));
101
+ }
102
+ getFlagOptionYesNoUnknowns() {
103
+ return this.http.get(this.smartLookupServiceUrl + 'FlagOptionYesNoUnknowns', options).pipe(map(res => {
104
+ return res;
105
+ }));
106
+ }
107
+ getContactTypes() {
108
+ return this.http.get(this.smartLookupServiceUrl + 'ContactTypes', options).pipe(map(res => {
109
+ return res;
110
+ }));
111
+ }
112
+ getContactMethods() {
113
+ return this.http.get(this.smartLookupServiceUrl + 'VictimContactMethods', options).pipe(map(res => {
114
+ return res;
115
+ }));
116
+ }
117
+ getContactBys() {
118
+ return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map(res => {
119
+ return res;
120
+ }));
121
+ }
122
+ getVictimContactPurposes() {
123
+ return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map(res => {
124
+ return res;
125
+ }));
126
+ }
127
+ getVictimServiceTypes() {
128
+ return this.http.get(this.smartLookupServiceUrl + 'VictimServiceTypes', options).pipe(map(res => {
129
+ return res;
130
+ }));
131
+ }
132
+ getVictimServiceStatus() {
133
+ return this.http.get(this.smartLookupServiceUrl + 'VictimServiceStatus', options).pipe(map(res => {
134
+ return res;
135
+ }));
136
+ }
137
+ getvVictimServiceTypeProgramProviders() {
138
+ return this.http.get(this.smartLookupServiceUrl + 'vVictimServiceTypeProgramProviders', options).pipe(map(res => {
139
+ return res;
140
+ }));
141
+ }
142
+ getVictim(val) {
143
+ return this.http.get(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map(res => {
144
+ console.log('victim return data');
145
+ console.log(res);
146
+ return res;
147
+ }));
148
+ }
149
+ getVictimAdvocate(val) {
150
+ return this.http.get(this.smartVictimServiceUrl + 'VictimAdvocates/' + val, options).pipe(map(res => {
151
+ return res;
152
+ }));
153
+ }
154
+ getVictimGuardian(val) {
155
+ return this.http.get(this.smartVictimServiceUrl + 'VictimGuardians/' + val, options).pipe(map(res => {
156
+ return res;
157
+ }));
158
+ }
159
+ postVictims(val) {
160
+ const tempVal = JSON.stringify(val);
161
+ return this.http.post(this.smartVictimServiceUrl + 'Victims', tempVal, options).pipe(map(res => { return res; }));
162
+ }
163
+ putVictims(id, val) {
164
+ const tempVal = JSON.stringify(val);
165
+ return this.http.put(this.smartVictimServiceUrl + 'Victims/' + id, tempVal, options).pipe(map(res => { return res; }));
166
+ }
167
+ putVictimAdvocate(id, val) {
168
+ let body;
169
+ body = JSON.stringify(val);
170
+ return this.http.put(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, body, options).pipe(map(res => { return res; }));
171
+ }
172
+ postVictimAdvocate(id, val) {
173
+ const tempVal = JSON.stringify(val);
174
+ return this.http.post(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, tempVal, options).pipe(map(res => { return res; }));
175
+ }
176
+ putVictimGuardian(id, val) {
177
+ console.log('update victim guardian');
178
+ console.log(val);
179
+ const tempVal = JSON.stringify(val);
180
+ return this.http.put(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map(res => { return res; }));
181
+ }
182
+ postVictimGuardian(id, val) {
183
+ const tempVal = JSON.stringify(val);
184
+ return this.http.post(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map(res => { return res; }));
185
+ }
186
+ getVictimDrugUse(val) {
187
+ return this.http.get(this.smartVictimServiceUrl + 'VictimDrugUses/' + val, options).pipe(map((res) => {
188
+ return res;
189
+ }));
190
+ }
191
+ putVictimDrugUse(id, val) {
192
+ const tempVal = JSON.stringify(val);
193
+ return this.http.put(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map(res => { return res; }));
194
+ }
195
+ postVictimDrugUse(id, val) {
196
+ const tempVal = JSON.stringify(val);
197
+ return this.http.post(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map(res => { return res; }));
198
+ }
199
+ putVictimWeaponUse(id, val) {
200
+ const tempVal = JSON.stringify(val);
201
+ return this.http.put(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map(res => { return res; }));
202
+ }
203
+ postVictimWeaponUse(id, val) {
204
+ const tempVal = JSON.stringify(val);
205
+ return this.http.post(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map(res => { return res; }));
206
+ }
207
+ putVictimSupport(id, val) {
208
+ const tempVal = JSON.stringify(val);
209
+ return this.http.put(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map(res => { return res; }));
210
+ }
211
+ postVictimSupport(id, val) {
212
+ const tempVal = JSON.stringify(val);
213
+ return this.http.post(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map(res => { return res; }));
214
+ }
215
+ deleteVictims(val, staffId) {
216
+ return this.http.delete(this.smartVictimServiceUrl + 'Victims/' + val + '?staffId=' + staffId, options).pipe(map(res => { return res; }));
217
+ }
218
+ // //==============Victim Serive===================================
219
+ getVictims(offenderId) {
220
+ return this.http.get(this.smartVictimServiceUrl + 'Victims/offender/' + offenderId)
221
+ .pipe(map((res) => {
222
+ return res;
223
+ }), catchError(this.handleError));
224
+ }
225
+ getVictimsByFilter(filter) {
226
+ return this.http
227
+ .post(this.smartVictimServiceUrl + '/Victims', JSON.stringify(filter), { headers: headers })
228
+ .pipe(map((res) => {
229
+ return res;
230
+ }), catchError(this.handleError));
231
+ }
232
+ getVictimListByFilter(filter) {
233
+ console.log('filer in service');
234
+ console.log(filter);
235
+ return this.http
236
+ .post(this.smartVictimServiceUrl + 'vVictims/Filter', JSON.stringify(filter), options)
237
+ .pipe();
238
+ }
239
+ getCasetNotes(victimId) {
240
+ return this.http.get(this.smartVictimServiceUrl + 'VictimCaseNotes/victim/' + victimId)
241
+ .pipe(map((res) => {
242
+ return res;
243
+ }), catchError(this.handleError));
244
+ }
245
+ addCaseNote(caseNote) {
246
+ let body;
247
+ body = JSON.stringify(caseNote);
248
+ return this.http
249
+ .post(this.smartVictimServiceUrl + 'VictimCaseNotes/', body, options);
250
+ }
251
+ updateCaseNote(caseNote) {
252
+ let body;
253
+ body = JSON.stringify(caseNote);
254
+ return this.http
255
+ .put(this.smartVictimServiceUrl + 'VictimCaseNotes/' + caseNote.victimCaseNoteId, body, options);
256
+ }
257
+ deleteCaseNote(id, staffId) {
258
+ return this.http.delete(`${this.smartVictimServiceUrl}VictimCaseNotes/${id}?staffId=${staffId}`);
259
+ }
260
+ getContacts(victimId) {
261
+ return this.http.get(this.smartVictimServiceUrl + 'VictimContacts/victim/' + victimId)
262
+ .pipe(map((res) => {
263
+ return res;
264
+ }), catchError(this.handleError));
265
+ }
266
+ addContact(contact) {
267
+ let body;
268
+ body = JSON.stringify(contact);
269
+ return this.http
270
+ .post(this.smartVictimServiceUrl + 'VictimContacts/', body, options);
271
+ }
272
+ updateContact(contact) {
273
+ let body;
274
+ body = JSON.stringify(contact);
275
+ return this.http
276
+ .put(this.smartVictimServiceUrl + 'VictimContacts/' + contact.victimContactId, body, options);
277
+ }
278
+ getSafetyPlans(victimId) {
279
+ return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victim/' + victimId)
280
+ .pipe(map((res) => {
281
+ return res;
282
+ }), catchError(this.handleError));
283
+ }
284
+ getVictimServices(victimServiceId) {
285
+ return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victimServiceId/' + victimServiceId)
286
+ .pipe(map((res) => {
287
+ return res;
288
+ }), catchError(this.handleError));
289
+ }
290
+ getVictimServiceDetail(victimServiceId) {
291
+ return this.http.get(this.smartVictimServiceUrl + 'VictimServiceDetails/' + victimServiceId)
292
+ .pipe(map((res) => {
293
+ return res;
294
+ }), catchError(this.handleError));
295
+ }
296
+ addSafetyPlan(victimSafetyPlan) {
297
+ let body;
298
+ body = JSON.stringify(victimSafetyPlan);
299
+ return this.http
300
+ .post(this.smartVictimServiceUrl + 'VictimServices/', body, options)
301
+ .pipe();
302
+ }
303
+ updateSafetyPlan(victimSafetyPlan) {
304
+ let body;
305
+ body = JSON.stringify(victimSafetyPlan);
306
+ return this.http
307
+ .put(this.smartVictimServiceUrl + 'VictimServices/' + victimSafetyPlan.victimServiceId, body, options);
308
+ }
309
+ addVictimServiceStatus(victimServiceStatusHistory) {
310
+ let body;
311
+ body = JSON.stringify(victimServiceStatusHistory);
312
+ return this.http
313
+ .post(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/', body, options);
314
+ }
315
+ getServiceStatusHistories(victimServiceId) {
316
+ return this.http.get(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/victimServiceId/' + victimServiceId)
317
+ .pipe(map((res) => {
318
+ return res;
319
+ }), catchError(this.handleError));
320
+ }
321
+ deleteSafetyPlan(victimServiceId, staffId) {
322
+ return this.http.delete(`${this.smartVictimServiceUrl}VictimServices/${victimServiceId}?staffId=${staffId}`);
323
+ }
324
+ addPlanProvider(victimServiceDetail) {
325
+ let body;
326
+ body = JSON.stringify(victimServiceDetail);
327
+ return this.http
328
+ .post(this.smartVictimServiceUrl + 'VictimServiceDetails/', body, options)
329
+ .pipe();
330
+ }
331
+ deleteProvider(victimProgramProviderId, staffId) {
332
+ return this.http.delete(`${this.smartVictimServiceUrl}VictimServiceDetails/${victimProgramProviderId}?staffId=${staffId}`);
333
+ }
334
+ }
335
+ /** @nocollapse */ NgcSmartVictimService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartVictimService, deps: [{ token: i1.HttpClient }, { token: SMART_OFFENDER_SERVICE_URL }, { token: SMART_LOOKUP_SERVICE_URL }, { token: SMART_VICTIM_SERVICE_URL }, { token: i2.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
336
+ /** @nocollapse */ NgcSmartVictimService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartVictimService, providedIn: 'root' });
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgcSmartVictimService, decorators: [{
338
+ type: Injectable,
339
+ args: [{
340
+ providedIn: 'root'
341
+ }]
342
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
343
+ type: Inject,
344
+ args: [SMART_OFFENDER_SERVICE_URL]
345
+ }] }, { type: undefined, decorators: [{
346
+ type: Inject,
347
+ args: [SMART_LOOKUP_SERVICE_URL]
348
+ }] }, { type: undefined, decorators: [{
349
+ type: Inject,
350
+ args: [SMART_VICTIM_SERVICE_URL]
351
+ }] }, { type: i2.Apollo }]; } });
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc21hcnQtdmljdGltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQUMsd0JBQXdCLEVBRVcsTUFBTSxzQkFBc0IsQ0FBQztBQUM5SCxPQUFPLEVBQWMsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxHQUFHLEVBQUMsVUFBVSxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSXhDLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQUN4RSxNQUFNLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUtyQyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW9CLElBQWdCLEVBRVUsdUJBQStCLEVBQ2pDLHFCQUE2QixFQUM3QixxQkFBNkIsRUFDL0QsTUFBYztRQUxKLFNBQUksR0FBSixJQUFJLENBQVk7UUFFVSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVE7UUFDakMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUMvRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTmhCLGtCQUFhLEdBQUksc0RBQXNELENBQUM7SUFRMUUsQ0FBQztJQUVQLHlDQUF5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QUMsbUJBQXVDO1FBQ2pELElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNmLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUN6RSxJQUFJLEVBQUUsQ0FBQztJQUVaLENBQUM7SUFFSCxjQUFjLENBQUMsdUJBQStCLEVBQUUsT0FBZTtRQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQix3QkFBd0IsdUJBQXVCLFlBQVksT0FBTyxFQUFFLENBQUMsQ0FBQztJQUU3SCxDQUFDOztxSUF2aEJZLHFCQUFxQiw0Q0FJdEIsMEJBQTBCLGFBQzFCLHdCQUF3QixhQUN4Qix3QkFBd0I7eUlBTnZCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMvQixNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsSHR0cFJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU01BUlRfTE9PS1VQX1NFUlZJQ0VfVVJMLCBTTUFSVF9PRkZFTkRFUl9TRVJWSUNFX1VSTCxTTUFSVF9WSUNUSU1fU0VSVklDRV9VUkwsXG4gICAgVmljdGltTGlzdEZpbHRlcixWaWN0aW1EcnVnVXNlLFZpY3RpbSxWaWN0aW1TYWZldHlQbGFuLFxuICAgQ2FzZU5vdGUsQ29udGFjdCxWaWN0aW1TZXJ2aWNlRGV0YWlsLFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5LFZpY3RpbUFkdm9jYXRlLFZpY3RpbUd1YXJkaWFufSBmcm9tICcuL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCxjYXRjaEVycm9yLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5cblxuXG5jb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbmNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmdjU21hcnRWaWN0aW1TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzZXJ2aWNlQXBpVXJsID0gICdodHRwczovL3NtYXJ0LXNlcnZpY2UtdGVzdC5henVyZXdlYnNpdGVzLm5ldC9ncmFwaHFsJztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgXG4gICAgQEluamVjdChTTUFSVF9PRkZFTkRFUl9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydE9mZmVuZGVyU2VydmljZVVybDogc3RyaW5nLFxuICAgIEBJbmplY3QoU01BUlRfTE9PS1VQX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0TG9va3VwU2VydmljZVVybDogc3RyaW5nLFxuICAgIEBJbmplY3QoU01BUlRfVklDVElNX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0VmljdGltU2VydmljZVVybDogc3RyaW5nLFxuICAgIHByaXZhdGUgYXBvbGxvOiBBcG9sbG9cblxuICAgICkgeyB9XG5cbiAgLy8gZ2V0VmljdGltSW5zdXJhbmNlcyhvZmZlbmRlcklkOiBhbnkpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzLz9vZmZlbmRlcklkPScgKyBvZmZlbmRlcklkKS5waXBlKCk7XG4gIC8vIH1cblxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSkge1xuICAvLyAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMvP2lkPScgKyBpZCkucGlwZSgpO1xuICAvLyB9IFxuXG4gIC8vIHBvc3RWaWN0aW1JbnN1cmFuY2UodmFsOiBhbnkpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcycsIHZhbCkucGlwZSgpO1xuICAvLyB9XG5cbiAgLy8gcHV0VmljdGltSW5zdXJhbmNlKGlkOiBhbnksIHZhbDogYW55KSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkLCB2YWwpLnBpcGUoKTtcbiAgLy8gfVxuXG4gIC8vIGRlbGV0ZVZpY3RpbUluc3VyYW5jZShpZDogYW55KSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkKS5waXBlKCk7XG4gIC8vIH1cbiAgXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZVR5cGVzKCkge1xuICAvLyAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVR5cGVzJykucGlwZSgpO1xuICAvLyB9XG5cbiAgLy8gZ2V0VmljdGltSW5zdXJhbmNlUG9saWN5SG9sZGVycygpIHtcbiAgLy8gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VQb2xpY3lIb2xkZXJzJykucGlwZSgpO1xuICAvLyB9XG5cbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlU3dpdGNoUmVhc29ucygpIHtcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VTd2l0Y2hSZWFzb25zJykucGlwZSgpO1xuLy8gICB9XG5cbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlUHJvdmlkZXJzKCkge1xuLy8gICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVByb3ZpZGVyJykucGlwZSgpO1xuLy8gICB9XG5cbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlUHJvdmlkZXIoaWQpIHtcbi8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXJzLycgKyBpZCkucGlwZSgpO1xuLy8gfVxuXG4vLyAgIHBvc3RQcm92aWRlckluZm9ybWF0aW9uKHZhbDogYW55KSB7XG4vLyAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVByb3ZpZGVycycsIHZhbCkucGlwZSgpO1xuLy8gICB9XG5cbmdldEN1cnJlbnRIb3VzaW5nKG9mZmVuZGVySWQ6IG51bWJlcikge1xuXG4gIHJldHVybiB0aGlzLmh0dHBcbiAgICAuZ2V0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnSG91c2luZ3MvY3VycmVudC8nICsgb2ZmZW5kZXJJZClcbiAgICAucGlwZSgpO1xufVxuXG5wcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcbiAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvci5qc29uKCkuZXJyb3IgfHwgJ1NlcnZlciBlcnJvcicpO1xufVxuXG5nZXREcnVnc1R5cGVzKCkge1xuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnRHJ1Z1R5cGVzJywgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKHJlcyA9PiByZXMpXG4gICAgICApO1xufVxuXG5nZXREb2NrZXRMaXN0KG9mZmVuZGVySWQ6IG51bWJlcikge1xuICBjb25zdCBxdWVyeVN0cmluZyA9IGBcbiAge1xuICAgIGZpbmREb2NrZXRzKGlucHV0OiB7IHdoZXJlOiB7IG9mZmVuZGVySWQ6JHtvZmZlbmRlcklkfSB9IH0pIHtcbiAgICAgIHRvdGFsQ291bnRcbiAgICAgIG1lc3NhZ2VcbiAgICAgIGRhdGEge1xuICAgICAgICBkb2NrZXRJZFxuICAgICAgICBkb2NrZXROdW1iZXJcbiAgICAgIFxuICAgICAgfVxuICAgIH1cbiAgfWA7XG5cbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5zZXJ2aWNlQXBpVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KS5waXBlKFxuICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdkb2NrZXRzIGZvciB0aGlzIG9mZmVuZGVyOicsIGRhdGEuZmluZERvY2tldHMuZGF0YSk7XG4gICAgICByZXR1cm4gZGF0YS5maW5kRG9ja2V0cy5kYXRhO1xuICAgIH0pKTtcblxuXG59XG5cbmdldFN1cHBvcnRUeXBlcygpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltU3VwcG9ydFR5cGVzJywgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKHJlcyA9PiByZXMpXG4gICAgICApO1xufVxuXG5nZXRQcmVmaXhlcygpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1ByZWZpeGVzJywgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKHJlcyA9PiByZXMpXG4gICAgICApO1xufVxuXG5nZXRTdWZmaXhlcygpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1N1ZmZpeGVzJywgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKHJlcyA9PiByZXMpXG4gICAgICApO1xufVxuXG5nZXRSZWxhdGlvbnNoaXBUeXBlcygpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1JlbGF0aW9uc2hpcFR5cGVzJywgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKHJlcyA9PiByZXMpXG4gICAgICApO1xufVxuXG5nZXRHZW5kZXJzKCkge1xuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnR2VuZGVycycsIG9wdGlvbnMpLnBpcGVcbiAgICAgIChcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxuICAgICAgKTtcbn1cblxuZ2V0V2VhcG9uVHlwZXMoKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdXZWFwb25UeXBlcycsIG9wdGlvbnMpLnBpcGVcbiAgICAgIChcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxuICAgICAgKTtcbn1cblxuZ2V0RmxhZ09wdGlvblllc05vVW5rbm93bnMoKSB7XG4gcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnRmxhZ09wdGlvblllc05vVW5rbm93bnMnLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgXG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICApO1xufVxuXG5nZXRDb250YWN0VHlwZXMoKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ0NvbnRhY3RUeXBlcycsIG9wdGlvbnMpLnBpcGVcbiAgICAgICAoXG4gICAgICAgbWFwKHJlcyA9PiB7IFxuICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgIH0pXG4gICAgICAgKTtcbiB9XG4gZ2V0Q29udGFjdE1ldGhvZHMoKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RNZXRob2RzJywgb3B0aW9ucykucGlwZVxuICAgICAgIChcbiAgICAgICBtYXAocmVzID0+IHsgXG4gICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgfSlcbiAgICAgICApO1xuIH1cbiBnZXRDb250YWN0QnlzKCl7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RQdXJwb3NlcycsIG9wdGlvbnMpLnBpcGVcbiAgKFxuICBtYXAocmVzID0+IHsgXG4gICAgICByZXR1cm4gcmVzO1xuICB9KVxuICApO1xuXG4gfVxuXG5nZXRWaWN0aW1Db250YWN0UHVycG9zZXMoKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RQdXJwb3NlcycsIG9wdGlvbnMpLnBpcGVcbiAgICAgICAoXG4gICAgICAgbWFwKHJlcyA9PiB7IFxuICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgIH0pXG4gICAgICAgKTtcbiB9XG5cbiBnZXRWaWN0aW1TZXJ2aWNlVHlwZXMoKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VUeXBlcycsIG9wdGlvbnMpLnBpcGVcbiAgICAgICAoXG4gICAgICAgbWFwKHJlcyA9PiB7IFxuICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgIH0pXG4gICAgICAgKTtcbiB9XG4gZ2V0VmljdGltU2VydmljZVN0YXR1cygpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZVN0YXR1cycsIG9wdGlvbnMpLnBpcGVcbiAgICAgICAoXG4gICAgICAgbWFwKHJlcyA9PiB7IFxuICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgIH0pXG4gICAgICAgKTtcbiB9XG5cbiBnZXR2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzKCkge1xuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICd2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzJywgb3B0aW9ucykucGlwZVxuICAgICAgIChcbiAgICAgICBtYXAocmVzID0+IHsgXG4gICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgfSlcbiAgICAgICApO1xuIH1cblxuXG5nZXRWaWN0aW0odmFsOiBhbnkpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltcy8nICsgdmFsLCBvcHRpb25zKS5waXBlXG4gIChcbiAgICBtYXAocmVzID0+IHsgXG4gICAgICBjb25zb2xlLmxvZygndmljdGltIHJldHVybiBkYXRhJyk7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpOyAgXG4gICAgICByZXR1cm4gcmVzO1xuXG4gICAgfSlcbiAgICAgICk7XG59XG5cbmdldFZpY3RpbUFkdm9jYXRlKHZhbDogYW55KSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUFkdm9jYXRlcy8nICsgdmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG5cbiAgICAgIG1hcChyZXMgPT4geyBcbiAgICAgICAgICByZXR1cm4gcmVzO30pXG4gICAgICApO1xufVxuXG5nZXRWaWN0aW1HdWFyZGlhbih2YWw6IGFueSkge1xuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1HdWFyZGlhbnMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxuICAgICAgKFxuXG4gICAgICBtYXAocmVzID0+IHsgXG4gICAgICAgICAgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxucG9zdFZpY3RpbXModmFsOiBhbnkpIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCsgJ1ZpY3RpbXMnLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxucHV0VmljdGltcyhpZDogYW55LCB2YWw6IGFueSkge1xuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcbiAgICAgIChcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXG4gICAgICApO1xufVxuXG5wdXRWaWN0aW1BZHZvY2F0ZShpZDogYW55LCB2YWw6IFZpY3RpbUFkdm9jYXRlKSB7XG4gIGxldCBib2R5OiBzdHJpbmc7XG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1BZHZvY2F0ZXMvJyArIGlkLCBib2R5LCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcblxuXG5cblxufVxuXG5wb3N0VmljdGltQWR2b2NhdGUoaWQ6IGFueSwgdmFsOiBhbnkpIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1BZHZvY2F0ZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxucHV0VmljdGltR3VhcmRpYW4oaWQ6IGFueSwgdmFsOiBhbnkpIHtcbiAgY29uc29sZS5sb2coJ3VwZGF0ZSB2aWN0aW0gZ3VhcmRpYW4nKTtcbiAgY29uc29sZS5sb2codmFsKTtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUd1YXJkaWFucy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcbiAgICAgIChcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXG4gICAgICApO1xufVxuXG5wb3N0VmljdGltR3VhcmRpYW4oaWQ6IGFueSwgdmFsOiBhbnkpIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1HdWFyZGlhbnMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxuZ2V0VmljdGltRHJ1Z1VzZSh2YWw6IGFueSk6IE9ic2VydmFibGU8VmljdGltRHJ1Z1VzZVtdPntcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltRHJ1Z1VzZXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKChyZXM6IFZpY3RpbURydWdVc2VbXSkgPT4geyBcbiAgICAgICAgICAgIHJldHVybiByZXM7fSlcbiAgICAgICk7XG59XG5cbnB1dFZpY3RpbURydWdVc2UoaWQ6IGFueSwgdmFsOiBWaWN0aW1EcnVnVXNlW10pIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG5cbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltRHJ1Z1VzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxucG9zdFZpY3RpbURydWdVc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1EcnVnVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcbiAgICAgIChcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXG4gICAgICApO1xufVxuXG5wdXRWaWN0aW1XZWFwb25Vc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVdlYXBvblVzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxucG9zdFZpY3RpbVdlYXBvblVzZShpZDogYW55LCB2YWw6IGFueSkge1xuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVdlYXBvblVzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cbnB1dFZpY3RpbVN1cHBvcnQoaWQ6IGFueSwgdmFsOiBhbnkpIHtcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVN1cHBvcnRzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxuICAgICAgKFxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcbiAgICAgICk7XG59XG5cbnBvc3RWaWN0aW1TdXBwb3J0KGlkOiBhbnksIHZhbDogYW55KSB7XG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU3VwcG9ydHMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXG4gICAgICAoXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxuICAgICAgKTtcbn1cblxuZGVsZXRlVmljdGltcyh2YWw6IGFueSwgIHN0YWZmSWQ6IG51bWJlcikge1xuICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCsgJ1ZpY3RpbXMvJyArIHZhbCArICc/c3RhZmZJZD0nKyBzdGFmZklkLCBvcHRpb25zKS5waXBlXG4gIChcbiAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcbiAgKTtcbn1cblxuXG4vLyAvLz09PT09PT09PT09PT09VmljdGltIFNlcml2ZT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmdldFZpY3RpbXMob2ZmZW5kZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZSA8VmljdGltW10+IHtcblxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCAgKyAnVmljdGltcy9vZmZlbmRlci8nICsgb2ZmZW5kZXJJZClcbiAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVtdKSA9PiB7XG4gICAgXG4gICAgICByZXR1cm4gcmVzO1xuICB9KVxuICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG59XG5cbmdldFZpY3RpbXNCeUZpbHRlcihmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpOiBPYnNlcnZhYmxlPFZpY3RpbVtdPntcbiAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJy9WaWN0aW1zJywgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gICAgICAgICAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVtdKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG59XG5cbmdldFZpY3RpbUxpc3RCeUZpbHRlcihmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpIFxue1xuICBjb25zb2xlLmxvZygnZmlsZXIgaW4gc2VydmljZScpO1xuICBjb25zb2xlLmxvZyhmaWx0ZXIpO1xuXG4gIHJldHVybiB0aGlzLmh0dHBcbiAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAndlZpY3RpbXMvRmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSwgb3B0aW9ucylcbiAgLnBpcGUoKTtcblxufVxuXG5cbmdldENhc2V0Tm90ZXModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPENhc2VOb3RlW10+IHtcblxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvdmljdGltLycgKyB2aWN0aW1JZClcbiAgLnBpcGUobWFwKChyZXM6IENhc2VOb3RlW10pID0+IHtcbiAgICAgIHJldHVybiByZXM7XG4gIH0pXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiBcblxufVxuYWRkQ2FzZU5vdGUoY2FzZU5vdGU6IENhc2VOb3RlKSB7XG4gIGxldCBib2R5OiBzdHJpbmc7XG4gICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY2FzZU5vdGUpO1xuICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNhc2VOb3Rlcy8nLCBib2R5LCBvcHRpb25zKTtcbiBcbiB9XG5cbiBcbnVwZGF0ZUNhc2VOb3RlKGNhc2VOb3RlOiBDYXNlTm90ZSl7XG5cbiAgbGV0IGJvZHk6IHN0cmluZztcbiAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNhc2VOb3RlKTtcbiAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvJyArIGNhc2VOb3RlLnZpY3RpbUNhc2VOb3RlSWQsIGJvZHksIG9wdGlvbnMpXG5cbiAgICAgIDtcbiB9XG5cbmRlbGV0ZUNhc2VOb3RlKGlkOiBudW1iZXIsIHN0YWZmSWQ6IG51bWJlcikge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmx9VmljdGltQ2FzZU5vdGVzLyR7aWR9P3N0YWZmSWQ9JHtzdGFmZklkfWApO1xuICB9XG5cbiAgZ2V0Q29udGFjdHModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPENvbnRhY3RbXT4ge1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdHMvdmljdGltLycgKyB2aWN0aW1JZClcbiAgICAucGlwZShtYXAoKHJlczogQ29udGFjdFtdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSlcbiAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIFxuICB9XG4gIGFkZENvbnRhY3QoY29udGFjdDogQ29udGFjdCkge1xuICAgIGxldCBib2R5OiBzdHJpbmc7XG4gICAgICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShjb250YWN0KTtcbiAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdHMvJywgYm9keSwgb3B0aW9ucyk7XG4gICBcbiAgIH1cbiAgXG4gICBcbiAgdXBkYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KXtcbiAgXG4gICAgbGV0IGJvZHk6IHN0cmluZztcbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY29udGFjdCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RzLycgKyBjb250YWN0LnZpY3RpbUNvbnRhY3RJZCwgYm9keSwgb3B0aW9ucylcbiAgXG4gICAgICAgIDtcbiAgIH1cbiAgXG5nZXRTYWZldHlQbGFucyh2aWN0aW1JZDogbnVtYmVyKTogT2JzZXJ2YWJsZSA8VmljdGltU2FmZXR5UGxhbltdPiB7XG5cbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlTGlzdHMvdmljdGltLycgKyB2aWN0aW1JZClcbiAgICAgIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TYWZldHlQbGFuW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICAgICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG5nZXRWaWN0aW1TZXJ2aWNlcyh2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNhZmV0eVBsYW5bXT4ge1xuXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICd2VmljdGltU2VydmljZUxpc3RzL3ZpY3RpbVNlcnZpY2VJZC8nICsgdmljdGltU2VydmljZUlkKVxuICAgICAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVNhZmV0eVBsYW5bXSkgPT4ge1xuICAgICAgICAgIHJldHVybiAgcmVzO1xuICAgICAgfSlcbiAgICAgICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgXG4gIH1cblxuZ2V0VmljdGltU2VydmljZURldGFpbCh2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNlcnZpY2VEZXRhaWxbXT4ge1xuXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VEZXRhaWxzLycgKyB2aWN0aW1TZXJ2aWNlSWQpXG4gIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlRGV0YWlsW10pID0+IHtcbiAgXG4gICAgICByZXR1cm4gcmVzO1xuICB9KVxuICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbn1cbmFkZFNhZmV0eVBsYW4odmljdGltU2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbikge1xuXG4gIGxldCBib2R5OiBzdHJpbmc7XG4gICAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNhZmV0eVBsYW4pO1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlcy8nLCBib2R5LCBvcHRpb25zKVxuICAgICAgICAgIC5waXBlKCk7XG4gIFxuICB9XG51cGRhdGVTYWZldHlQbGFuKHZpY3RpbVNhZmV0eVBsYW46IFZpY3RpbVNhZmV0eVBsYW4pe1xuXG4gICAgICBsZXQgYm9keTogc3RyaW5nO1xuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNhZmV0eVBsYW4pO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZXMvJyArIHZpY3RpbVNhZmV0eVBsYW4udmljdGltU2VydmljZUlkLCBib2R5LCBvcHRpb25zKVxuXG4gICAgICAgICAgO1xuICAgICB9XG5hZGRWaWN0aW1TZXJ2aWNlU3RhdHVzKHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5OiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSl7XG4gIGxldCBib2R5OiBzdHJpbmc7XG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSk7XG4gIHJldHVybiB0aGlzLmh0dHBcbiAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllcy8nLCBib2R5LCBvcHRpb25zKTtcblxuICB9XG5cbmdldFNlcnZpY2VTdGF0dXNIaXN0b3JpZXModmljdGltU2VydmljZUlkOiBudW1iZXIpe1xuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzL3ZpY3RpbVNlcnZpY2VJZC8nICsgdmljdGltU2VydmljZUlkKVxuICAucGlwZShcbiAgICAgIG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeVtdKSA9PiB7XG4gIFxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcbiAgKTtcbn1cblxuZGVsZXRlU2FmZXR5UGxhbih2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlciwgc3RhZmZJZDogbnVtYmVyKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbVNlcnZpY2VzLyR7dmljdGltU2VydmljZUlkfT9zdGFmZklkPSR7c3RhZmZJZH1gKTtcblxuICB9XG5hZGRQbGFuUHJvdmlkZXIodmljdGltU2VydmljZURldGFpbDpWaWN0aW1TZXJ2aWNlRGV0YWlsKXtcbiAgICAgIGxldCBib2R5OiBzdHJpbmc7XG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2VydmljZURldGFpbCk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlRGV0YWlscy8nLCBib2R5LCBvcHRpb25zKVxuICAgICAgLnBpcGUoKTtcblxuICB9XG5cbmRlbGV0ZVByb3ZpZGVyKHZpY3RpbVByb2dyYW1Qcm92aWRlcklkOiBzdHJpbmcsIHN0YWZmSWQ6IG51bWJlcil7XG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbVNlcnZpY2VEZXRhaWxzLyR7dmljdGltUHJvZ3JhbVByb3ZpZGVySWR9P3N0YWZmSWQ9JHtzdGFmZklkfWApO1xuXG59XG5cblxuXG59XG4iXX0=