@csmart/ngc-smart-victim 0.1.6 → 1.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. package/csmart-ngc-smart-victim.d.ts +1 -15
  2. package/esm2020/csmart-ngc-smart-victim.mjs +5 -0
  3. package/esm2020/lib/caseNote/caseNote.component.mjs +185 -0
  4. package/esm2020/lib/common-dialog/common-dialog.component.mjs +23 -0
  5. package/esm2020/lib/common-dialog/common-dialog.module.mjs +38 -0
  6. package/esm2020/lib/common-dialog/common-dialog.service.mjs +33 -0
  7. package/esm2020/lib/contact/contact.component.mjs +140 -0
  8. package/esm2020/lib/intake.service.mjs +57 -0
  9. package/esm2020/lib/safetyPlan/serviceProvider.component.mjs +115 -0
  10. package/esm2020/lib/safetyPlan/victimSafetyPlan.component.mjs +116 -0
  11. package/esm2020/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +340 -0
  12. package/esm2020/lib/shared/app.shared.module.mjs +213 -0
  13. package/esm2020/lib/shared/directives/phone-mask.directive.mjs +114 -0
  14. package/esm2020/lib/shared/validators/date.validator.mjs +59 -0
  15. package/esm2020/lib/shared/validators/index.mjs +2 -0
  16. package/esm2020/lib/smart-victim-delete-confirm.component.mjs +53 -0
  17. package/esm2020/lib/smart-victim-detail/smart-victim-detail.component.mjs +961 -0
  18. package/esm2020/lib/smart-victim.component.mjs +310 -0
  19. package/esm2020/lib/smart-victim.model.mjs +133 -0
  20. package/esm2020/lib/smart-victim.module.mjs +138 -0
  21. package/esm2020/lib/smart-victim.service.mjs +347 -0
  22. package/esm2020/lib/victim-routing.module.mjs +42 -0
  23. package/esm2020/lib/victimSearch/VictimSearchFilter.mjs +3 -0
  24. package/esm2020/lib/victimSearch/victimSearchForm.component.mjs +38 -0
  25. package/esm2020/public-api.mjs +12 -0
  26. package/fesm2015/csmart-ngc-smart-victim.mjs +3225 -0
  27. package/fesm2015/csmart-ngc-smart-victim.mjs.map +1 -0
  28. package/fesm2020/csmart-ngc-smart-victim.mjs +3214 -0
  29. package/fesm2020/csmart-ngc-smart-victim.mjs.map +1 -0
  30. package/lib/caseNote/caseNote.component.d.ts +6 -2
  31. package/lib/common-dialog/common-dialog.component.d.ts +4 -1
  32. package/lib/common-dialog/common-dialog.module.d.ts +6 -0
  33. package/lib/common-dialog/common-dialog.service.d.ts +4 -1
  34. package/lib/contact/contact.component.d.ts +4 -1
  35. package/lib/intake.service.d.ts +3 -0
  36. package/lib/safetyPlan/serviceProvider.component.d.ts +4 -1
  37. package/lib/safetyPlan/victimSafetyPlan.component.d.ts +7 -2
  38. package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +7 -2
  39. package/lib/shared/app.shared.module.d.ts +30 -0
  40. package/lib/shared/directives/phone-mask.directive.d.ts +5 -2
  41. package/lib/smart-victim-delete-confirm.component.d.ts +3 -0
  42. package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +9 -4
  43. package/lib/smart-victim.component.d.ts +8 -3
  44. package/lib/smart-victim.model.d.ts +2 -1
  45. package/lib/smart-victim.module.d.ts +47 -0
  46. package/lib/smart-victim.service.d.ts +3 -0
  47. package/lib/victim-routing.module.d.ts +5 -0
  48. package/lib/victimSearch/victimSearchForm.component.d.ts +3 -0
  49. package/package.json +28 -18
  50. package/public-api.d.ts +4 -0
  51. package/bundles/csmart-ngc-smart-victim.umd.js +0 -6430
  52. package/bundles/csmart-ngc-smart-victim.umd.js.map +0 -1
  53. package/bundles/csmart-ngc-smart-victim.umd.min.js +0 -16
  54. package/bundles/csmart-ngc-smart-victim.umd.min.js.map +0 -1
  55. package/csmart-ngc-smart-victim.metadata.json +0 -1
  56. package/esm2015/csmart-ngc-smart-victim.js +0 -25
  57. package/esm2015/lib/caseNote/caseNote.component.js +0 -349
  58. package/esm2015/lib/common-dialog/common-dialog.component.js +0 -46
  59. package/esm2015/lib/common-dialog/common-dialog.module.js +0 -32
  60. package/esm2015/lib/common-dialog/common-dialog.service.js +0 -63
  61. package/esm2015/lib/contact/contact.component.js +0 -232
  62. package/esm2015/lib/intake.service.js +0 -183
  63. package/esm2015/lib/safetyPlan/serviceProvider.component.js +0 -130
  64. package/esm2015/lib/safetyPlan/victimSafetyPlan.component.js +0 -257
  65. package/esm2015/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -556
  66. package/esm2015/lib/shared/app.shared.module.js +0 -81
  67. package/esm2015/lib/shared/directives/phone-mask.directive.js +0 -168
  68. package/esm2015/lib/shared/validators/date.validator.js +0 -108
  69. package/esm2015/lib/shared/validators/index.js +0 -7
  70. package/esm2015/lib/smart-victim-delete-confirm.component.js +0 -61
  71. package/esm2015/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1406
  72. package/esm2015/lib/smart-victim.component.js +0 -476
  73. package/esm2015/lib/smart-victim.model.js +0 -631
  74. package/esm2015/lib/smart-victim.module.js +0 -84
  75. package/esm2015/lib/smart-victim.service.js +0 -792
  76. package/esm2015/lib/victim-routing.module.js +0 -40
  77. package/esm2015/lib/victimSearch/VictimSearchFilter.js +0 -20
  78. package/esm2015/lib/victimSearch/victimSearchForm.component.js +0 -59
  79. package/esm2015/public-api.js +0 -13
  80. package/esm5/csmart-ngc-smart-victim.js +0 -25
  81. package/esm5/lib/caseNote/caseNote.component.js +0 -372
  82. package/esm5/lib/common-dialog/common-dialog.component.js +0 -48
  83. package/esm5/lib/common-dialog/common-dialog.module.js +0 -36
  84. package/esm5/lib/common-dialog/common-dialog.service.js +0 -75
  85. package/esm5/lib/contact/contact.component.js +0 -285
  86. package/esm5/lib/intake.service.js +0 -194
  87. package/esm5/lib/safetyPlan/serviceProvider.component.js +0 -99
  88. package/esm5/lib/safetyPlan/victimSafetyPlan.component.js +0 -306
  89. package/esm5/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -628
  90. package/esm5/lib/shared/app.shared.module.js +0 -85
  91. package/esm5/lib/shared/directives/phone-mask.directive.js +0 -184
  92. package/esm5/lib/shared/validators/date.validator.js +0 -108
  93. package/esm5/lib/shared/validators/index.js +0 -7
  94. package/esm5/lib/smart-victim-delete-confirm.component.js +0 -51
  95. package/esm5/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1498
  96. package/esm5/lib/smart-victim.component.js +0 -528
  97. package/esm5/lib/smart-victim.model.js +0 -541
  98. package/esm5/lib/smart-victim.module.js +0 -84
  99. package/esm5/lib/smart-victim.service.js +0 -1063
  100. package/esm5/lib/victim-routing.module.js +0 -44
  101. package/esm5/lib/victimSearch/VictimSearchFilter.js +0 -24
  102. package/esm5/lib/victimSearch/victimSearchForm.component.js +0 -70
  103. package/esm5/public-api.js +0 -13
  104. package/fesm2015/csmart-ngc-smart-victim.js +0 -5686
  105. package/fesm2015/csmart-ngc-smart-victim.js.map +0 -1
  106. package/fesm5/csmart-ngc-smart-victim.js +0 -6207
  107. package/fesm5/csmart-ngc-smart-victim.js.map +0 -1
@@ -1,792 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/smart-victim.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { HttpClient, HttpHeaders } from '@angular/common/http';
7
- import { Injectable, Inject } from '@angular/core';
8
- import { SMART_LOOKUP_SERVICE_URL, SMART_OFFENDER_SERVICE_URL, SMART_VICTIM_SERVICE_URL } from './smart-victim.model';
9
- import { throwError as observableThrowError } from 'rxjs';
10
- import { map, catchError } from 'rxjs/operators';
11
- import { Apollo } from 'apollo-angular';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/common/http";
14
- import * as i2 from "./smart-victim.model";
15
- import * as i3 from "apollo-angular";
16
- /** @type {?} */
17
- const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
18
- /** @type {?} */
19
- const options = { headers: headers };
20
- export class NgcSmartVictimService {
21
- /**
22
- * @param {?} http
23
- * @param {?} smartOffenderServiceUrl
24
- * @param {?} smartLookupServiceUrl
25
- * @param {?} smartVictimServiceUrl
26
- * @param {?} apollo
27
- */
28
- constructor(http, smartOffenderServiceUrl, smartLookupServiceUrl, smartVictimServiceUrl, apollo) {
29
- this.http = http;
30
- this.smartOffenderServiceUrl = smartOffenderServiceUrl;
31
- this.smartLookupServiceUrl = smartLookupServiceUrl;
32
- this.smartVictimServiceUrl = smartVictimServiceUrl;
33
- this.apollo = apollo;
34
- this.serviceApiUrl = 'https://smart-service-test.azurewebsites.net/graphql';
35
- }
36
- // getVictimInsurances(offenderId: any) {
37
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
38
- // }
39
- // getVictimInsurance(id: any) {
40
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
41
- // }
42
- // postVictimInsurance(val: any) {
43
- // return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
44
- // }
45
- // putVictimInsurance(id: any, val: any) {
46
- // return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
47
- // }
48
- // deleteVictimInsurance(id: any) {
49
- // return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
50
- // }
51
- // getVictimInsuranceTypes() {
52
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
53
- // }
54
- // getVictimInsurancePolicyHolders() {
55
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
56
- // }
57
- // getVictimInsuranceSwitchReasons() {
58
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
59
- // }
60
- // getVictimInsuranceProviders() {
61
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
62
- // }
63
- // getVictimInsuranceProvider(id) {
64
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
65
- // }
66
- // postProviderInformation(val: any) {
67
- // return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
68
- // }
69
- /**
70
- * @private
71
- * @param {?} error
72
- * @return {?}
73
- */
74
- handleError(error) {
75
- console.error(error);
76
- return observableThrowError(error.json().error || 'Server error');
77
- }
78
- /**
79
- * @return {?}
80
- */
81
- getDrugsTypes() {
82
- return this.http.get(this.smartLookupServiceUrl + 'DrugTypes', options).pipe(map((/**
83
- * @param {?} res
84
- * @return {?}
85
- */
86
- res => res)));
87
- }
88
- /**
89
- * @param {?} offenderId
90
- * @return {?}
91
- */
92
- getDocketList(offenderId) {
93
- /** @type {?} */
94
- const queryString = `
95
- {
96
- findDockets(input: { where: { offenderId:${offenderId} } }) {
97
- totalCount
98
- message
99
- data {
100
- docketId
101
- docketNumber
102
-
103
- }
104
- }
105
- }`;
106
- return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map((/**
107
- * @param {?} __0
108
- * @return {?}
109
- */
110
- ({ data }) => {
111
- console.log('dockets for this offender:', data.findDockets.data);
112
- return data.findDockets.data;
113
- })));
114
- }
115
- /**
116
- * @return {?}
117
- */
118
- getSupportTypes() {
119
- return this.http.get(this.smartLookupServiceUrl + 'VictimSupportTypes', options).pipe(map((/**
120
- * @param {?} res
121
- * @return {?}
122
- */
123
- res => res)));
124
- }
125
- /**
126
- * @return {?}
127
- */
128
- getPrefixes() {
129
- return this.http.get(this.smartLookupServiceUrl + 'Prefixes', options).pipe(map((/**
130
- * @param {?} res
131
- * @return {?}
132
- */
133
- res => res)));
134
- }
135
- /**
136
- * @return {?}
137
- */
138
- getSuffixes() {
139
- return this.http.get(this.smartLookupServiceUrl + 'Suffixes', options).pipe(map((/**
140
- * @param {?} res
141
- * @return {?}
142
- */
143
- res => res)));
144
- }
145
- /**
146
- * @return {?}
147
- */
148
- getRelationshipTypes() {
149
- return this.http.get(this.smartLookupServiceUrl + 'RelationshipTypes', options).pipe(map((/**
150
- * @param {?} res
151
- * @return {?}
152
- */
153
- res => res)));
154
- }
155
- /**
156
- * @return {?}
157
- */
158
- getGenders() {
159
- return this.http.get(this.smartLookupServiceUrl + 'Genders', options).pipe(map((/**
160
- * @param {?} res
161
- * @return {?}
162
- */
163
- res => res)));
164
- }
165
- /**
166
- * @return {?}
167
- */
168
- getWeaponTypes() {
169
- return this.http.get(this.smartLookupServiceUrl + 'WeaponTypes', options).pipe(map((/**
170
- * @param {?} res
171
- * @return {?}
172
- */
173
- res => res)));
174
- }
175
- /**
176
- * @return {?}
177
- */
178
- getFlagOptionYesNoUnknowns() {
179
- return this.http.get(this.smartLookupServiceUrl + 'FlagOptionYesNoUnknowns', options).pipe(map((/**
180
- * @param {?} res
181
- * @return {?}
182
- */
183
- res => {
184
- return res;
185
- })));
186
- }
187
- /**
188
- * @return {?}
189
- */
190
- getContactTypes() {
191
- return this.http.get(this.smartLookupServiceUrl + 'ContactTypes', options).pipe(map((/**
192
- * @param {?} res
193
- * @return {?}
194
- */
195
- res => {
196
- return res;
197
- })));
198
- }
199
- /**
200
- * @return {?}
201
- */
202
- getContactMethods() {
203
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactMethods', options).pipe(map((/**
204
- * @param {?} res
205
- * @return {?}
206
- */
207
- res => {
208
- return res;
209
- })));
210
- }
211
- /**
212
- * @return {?}
213
- */
214
- getContactBys() {
215
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map((/**
216
- * @param {?} res
217
- * @return {?}
218
- */
219
- res => {
220
- return res;
221
- })));
222
- }
223
- /**
224
- * @return {?}
225
- */
226
- getVictimContactPurposes() {
227
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map((/**
228
- * @param {?} res
229
- * @return {?}
230
- */
231
- res => {
232
- return res;
233
- })));
234
- }
235
- /**
236
- * @return {?}
237
- */
238
- getVictimServiceTypes() {
239
- return this.http.get(this.smartLookupServiceUrl + 'VictimServiceTypes', options).pipe(map((/**
240
- * @param {?} res
241
- * @return {?}
242
- */
243
- res => {
244
- return res;
245
- })));
246
- }
247
- /**
248
- * @return {?}
249
- */
250
- getVictimServiceStatus() {
251
- return this.http.get(this.smartLookupServiceUrl + 'VictimServiceStatus', options).pipe(map((/**
252
- * @param {?} res
253
- * @return {?}
254
- */
255
- res => {
256
- return res;
257
- })));
258
- }
259
- /**
260
- * @return {?}
261
- */
262
- getvVictimServiceTypeProgramProviders() {
263
- return this.http.get(this.smartLookupServiceUrl + 'vVictimServiceTypeProgramProviders', options).pipe(map((/**
264
- * @param {?} res
265
- * @return {?}
266
- */
267
- res => {
268
- return res;
269
- })));
270
- }
271
- /**
272
- * @param {?} val
273
- * @return {?}
274
- */
275
- getVictim(val) {
276
- return this.http.get(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map((/**
277
- * @param {?} res
278
- * @return {?}
279
- */
280
- res => {
281
- console.log('victim return data');
282
- console.log(res);
283
- return res;
284
- })));
285
- }
286
- /**
287
- * @param {?} val
288
- * @return {?}
289
- */
290
- getVictimAdvocate(val) {
291
- return this.http.get(this.smartVictimServiceUrl + 'VictimAdvocates/' + val, options).pipe(map((/**
292
- * @param {?} res
293
- * @return {?}
294
- */
295
- res => {
296
- return res;
297
- })));
298
- }
299
- /**
300
- * @param {?} val
301
- * @return {?}
302
- */
303
- getVictimGuardian(val) {
304
- return this.http.get(this.smartVictimServiceUrl + 'VictimGuardians/' + val, options).pipe(map((/**
305
- * @param {?} res
306
- * @return {?}
307
- */
308
- res => {
309
- return res;
310
- })));
311
- }
312
- /**
313
- * @param {?} val
314
- * @return {?}
315
- */
316
- postVictims(val) {
317
- /** @type {?} */
318
- const tempVal = JSON.stringify(val);
319
- return this.http.post(this.smartVictimServiceUrl + 'Victims', tempVal, options).pipe(map((/**
320
- * @param {?} res
321
- * @return {?}
322
- */
323
- res => { return res; })));
324
- }
325
- /**
326
- * @param {?} id
327
- * @param {?} val
328
- * @return {?}
329
- */
330
- putVictims(id, val) {
331
- /** @type {?} */
332
- const tempVal = JSON.stringify(val);
333
- return this.http.put(this.smartVictimServiceUrl + 'Victims/' + id, tempVal, options).pipe(map((/**
334
- * @param {?} res
335
- * @return {?}
336
- */
337
- res => { return res; })));
338
- }
339
- /**
340
- * @param {?} id
341
- * @param {?} val
342
- * @return {?}
343
- */
344
- putVictimAdvocate(id, val) {
345
- /** @type {?} */
346
- let body;
347
- body = JSON.stringify(val);
348
- return this.http.put(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, body, options).pipe(map((/**
349
- * @param {?} res
350
- * @return {?}
351
- */
352
- res => { return res; })));
353
- }
354
- /**
355
- * @param {?} id
356
- * @param {?} val
357
- * @return {?}
358
- */
359
- postVictimAdvocate(id, val) {
360
- /** @type {?} */
361
- const tempVal = JSON.stringify(val);
362
- return this.http.post(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, tempVal, options).pipe(map((/**
363
- * @param {?} res
364
- * @return {?}
365
- */
366
- res => { return res; })));
367
- }
368
- /**
369
- * @param {?} id
370
- * @param {?} val
371
- * @return {?}
372
- */
373
- putVictimGuardian(id, val) {
374
- console.log('update victim guardian');
375
- console.log(val);
376
- /** @type {?} */
377
- const tempVal = JSON.stringify(val);
378
- return this.http.put(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map((/**
379
- * @param {?} res
380
- * @return {?}
381
- */
382
- res => { return res; })));
383
- }
384
- /**
385
- * @param {?} id
386
- * @param {?} val
387
- * @return {?}
388
- */
389
- postVictimGuardian(id, val) {
390
- /** @type {?} */
391
- const tempVal = JSON.stringify(val);
392
- return this.http.post(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map((/**
393
- * @param {?} res
394
- * @return {?}
395
- */
396
- res => { return res; })));
397
- }
398
- /**
399
- * @param {?} val
400
- * @return {?}
401
- */
402
- getVictimDrugUse(val) {
403
- return this.http.get(this.smartVictimServiceUrl + 'VictimDrugUses/' + val, options).pipe(map((/**
404
- * @param {?} res
405
- * @return {?}
406
- */
407
- (res) => {
408
- return res;
409
- })));
410
- }
411
- /**
412
- * @param {?} id
413
- * @param {?} val
414
- * @return {?}
415
- */
416
- putVictimDrugUse(id, val) {
417
- /** @type {?} */
418
- const tempVal = JSON.stringify(val);
419
- return this.http.put(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map((/**
420
- * @param {?} res
421
- * @return {?}
422
- */
423
- res => { return res; })));
424
- }
425
- /**
426
- * @param {?} id
427
- * @param {?} val
428
- * @return {?}
429
- */
430
- postVictimDrugUse(id, val) {
431
- /** @type {?} */
432
- const tempVal = JSON.stringify(val);
433
- return this.http.post(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map((/**
434
- * @param {?} res
435
- * @return {?}
436
- */
437
- res => { return res; })));
438
- }
439
- /**
440
- * @param {?} id
441
- * @param {?} val
442
- * @return {?}
443
- */
444
- putVictimWeaponUse(id, val) {
445
- /** @type {?} */
446
- const tempVal = JSON.stringify(val);
447
- return this.http.put(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map((/**
448
- * @param {?} res
449
- * @return {?}
450
- */
451
- res => { return res; })));
452
- }
453
- /**
454
- * @param {?} id
455
- * @param {?} val
456
- * @return {?}
457
- */
458
- postVictimWeaponUse(id, val) {
459
- /** @type {?} */
460
- const tempVal = JSON.stringify(val);
461
- return this.http.post(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map((/**
462
- * @param {?} res
463
- * @return {?}
464
- */
465
- res => { return res; })));
466
- }
467
- /**
468
- * @param {?} id
469
- * @param {?} val
470
- * @return {?}
471
- */
472
- putVictimSupport(id, val) {
473
- /** @type {?} */
474
- const tempVal = JSON.stringify(val);
475
- return this.http.put(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map((/**
476
- * @param {?} res
477
- * @return {?}
478
- */
479
- res => { return res; })));
480
- }
481
- /**
482
- * @param {?} id
483
- * @param {?} val
484
- * @return {?}
485
- */
486
- postVictimSupport(id, val) {
487
- /** @type {?} */
488
- const tempVal = JSON.stringify(val);
489
- return this.http.post(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map((/**
490
- * @param {?} res
491
- * @return {?}
492
- */
493
- res => { return res; })));
494
- }
495
- /**
496
- * @param {?} val
497
- * @return {?}
498
- */
499
- deleteVictims(val) {
500
- return this.http.delete(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map((/**
501
- * @param {?} res
502
- * @return {?}
503
- */
504
- res => { return res; })));
505
- }
506
- // //==============Victim Serive===================================
507
- /**
508
- * @param {?} offenderId
509
- * @return {?}
510
- */
511
- getVictims(offenderId) {
512
- return this.http.get(this.smartVictimServiceUrl + 'Victims/offender/' + offenderId)
513
- .pipe(map((/**
514
- * @param {?} res
515
- * @return {?}
516
- */
517
- (res) => {
518
- return res;
519
- })), catchError(this.handleError));
520
- }
521
- /**
522
- * @param {?} filter
523
- * @return {?}
524
- */
525
- getVictimsByFilter(filter) {
526
- return this.http
527
- .post(this.smartVictimServiceUrl + '/Victims', JSON.stringify(filter), { headers: headers })
528
- .pipe(map((/**
529
- * @param {?} res
530
- * @return {?}
531
- */
532
- (res) => {
533
- return res;
534
- })), catchError(this.handleError));
535
- }
536
- /**
537
- * @param {?} filter
538
- * @return {?}
539
- */
540
- getVictimListByFilter(filter) {
541
- console.log('filer in service');
542
- console.log(filter);
543
- return this.http
544
- .post(this.smartVictimServiceUrl + 'vVictims/Filter', JSON.stringify(filter), options)
545
- .pipe();
546
- }
547
- /**
548
- * @param {?} victimId
549
- * @return {?}
550
- */
551
- getCasetNotes(victimId) {
552
- return this.http.get(this.smartVictimServiceUrl + 'VictimCaseNotes/victim/' + victimId)
553
- .pipe(map((/**
554
- * @param {?} res
555
- * @return {?}
556
- */
557
- (res) => {
558
- return res;
559
- })), catchError(this.handleError));
560
- }
561
- /**
562
- * @param {?} caseNote
563
- * @return {?}
564
- */
565
- addCaseNote(caseNote) {
566
- /** @type {?} */
567
- let body;
568
- body = JSON.stringify(caseNote);
569
- return this.http
570
- .post(this.smartVictimServiceUrl + 'VictimCaseNotes/', body, options);
571
- }
572
- /**
573
- * @param {?} caseNote
574
- * @return {?}
575
- */
576
- updateCaseNote(caseNote) {
577
- /** @type {?} */
578
- let body;
579
- body = JSON.stringify(caseNote);
580
- return this.http
581
- .put(this.smartVictimServiceUrl + 'VictimCaseNotes/' + caseNote.victimCaseNoteId, body, options);
582
- }
583
- /**
584
- * @param {?} id
585
- * @param {?} staffId
586
- * @return {?}
587
- */
588
- deleteCaseNote(id, staffId) {
589
- return this.http.delete(`${this.smartVictimServiceUrl}VictimCaseNotes/${id}?staffId=${staffId}`);
590
- }
591
- /**
592
- * @param {?} victimId
593
- * @return {?}
594
- */
595
- getContacts(victimId) {
596
- return this.http.get(this.smartVictimServiceUrl + 'VictimContacts/victim/' + victimId)
597
- .pipe(map((/**
598
- * @param {?} res
599
- * @return {?}
600
- */
601
- (res) => {
602
- return res;
603
- })), catchError(this.handleError));
604
- }
605
- /**
606
- * @param {?} contact
607
- * @return {?}
608
- */
609
- addContact(contact) {
610
- /** @type {?} */
611
- let body;
612
- body = JSON.stringify(contact);
613
- return this.http
614
- .post(this.smartVictimServiceUrl + 'VictimContacts/', body, options);
615
- }
616
- /**
617
- * @param {?} contact
618
- * @return {?}
619
- */
620
- updateContact(contact) {
621
- /** @type {?} */
622
- let body;
623
- body = JSON.stringify(contact);
624
- return this.http
625
- .put(this.smartVictimServiceUrl + 'VictimContacts/' + contact.victimContactId, body, options);
626
- }
627
- /**
628
- * @param {?} victimId
629
- * @return {?}
630
- */
631
- getSafetyPlans(victimId) {
632
- return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victim/' + victimId)
633
- .pipe(map((/**
634
- * @param {?} res
635
- * @return {?}
636
- */
637
- (res) => {
638
- return res;
639
- })), catchError(this.handleError));
640
- }
641
- /**
642
- * @param {?} victimServiceId
643
- * @return {?}
644
- */
645
- getVictimServices(victimServiceId) {
646
- return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victimServiceId/' + victimServiceId)
647
- .pipe(map((/**
648
- * @param {?} res
649
- * @return {?}
650
- */
651
- (res) => {
652
- return res;
653
- })), catchError(this.handleError));
654
- }
655
- /**
656
- * @param {?} victimServiceId
657
- * @return {?}
658
- */
659
- getVictimServiceDetail(victimServiceId) {
660
- return this.http.get(this.smartVictimServiceUrl + 'VictimServiceDetails/' + victimServiceId)
661
- .pipe(map((/**
662
- * @param {?} res
663
- * @return {?}
664
- */
665
- (res) => {
666
- return res;
667
- })), catchError(this.handleError));
668
- }
669
- /**
670
- * @param {?} victimSafetyPlan
671
- * @return {?}
672
- */
673
- addSafetyPlan(victimSafetyPlan) {
674
- /** @type {?} */
675
- let body;
676
- body = JSON.stringify(victimSafetyPlan);
677
- return this.http
678
- .post(this.smartVictimServiceUrl + 'VictimServices/', body, options)
679
- .pipe();
680
- }
681
- /**
682
- * @param {?} victimSafetyPlan
683
- * @return {?}
684
- */
685
- updateSafetyPlan(victimSafetyPlan) {
686
- /** @type {?} */
687
- let body;
688
- body = JSON.stringify(victimSafetyPlan);
689
- return this.http
690
- .put(this.smartVictimServiceUrl + 'VictimServices/' + victimSafetyPlan.victimServiceId, body, options);
691
- }
692
- /**
693
- * @param {?} victimServiceStatusHistory
694
- * @return {?}
695
- */
696
- addVictimServiceStatus(victimServiceStatusHistory) {
697
- /** @type {?} */
698
- let body;
699
- body = JSON.stringify(victimServiceStatusHistory);
700
- return this.http
701
- .post(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/', body, options);
702
- }
703
- /**
704
- * @param {?} victimServiceId
705
- * @return {?}
706
- */
707
- getServiceStatusHistories(victimServiceId) {
708
- return this.http.get(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/victimServiceId/' + victimServiceId)
709
- .pipe(map((/**
710
- * @param {?} res
711
- * @return {?}
712
- */
713
- (res) => {
714
- return res;
715
- })), catchError(this.handleError));
716
- }
717
- /**
718
- * @param {?} victimServiceId
719
- * @param {?} staffId
720
- * @return {?}
721
- */
722
- deleteSafetyPlan(victimServiceId, staffId) {
723
- return this.http.delete(`${this.smartVictimServiceUrl}VictimServices/${victimServiceId}?staffId=${staffId}`);
724
- }
725
- /**
726
- * @param {?} victimServiceDetail
727
- * @return {?}
728
- */
729
- addPlanProvider(victimServiceDetail) {
730
- /** @type {?} */
731
- let body;
732
- body = JSON.stringify(victimServiceDetail);
733
- return this.http
734
- .post(this.smartVictimServiceUrl + 'VictimServiceDetails/', body, options)
735
- .pipe();
736
- }
737
- /**
738
- * @param {?} victimProgramProviderId
739
- * @param {?} staffId
740
- * @return {?}
741
- */
742
- deleteProvider(victimProgramProviderId, staffId) {
743
- return this.http.delete(`${this.smartVictimServiceUrl}VictimServiceDetails/${victimProgramProviderId}?staffId=${staffId}`);
744
- }
745
- }
746
- NgcSmartVictimService.decorators = [
747
- { type: Injectable, args: [{
748
- providedIn: 'root'
749
- },] }
750
- ];
751
- /** @nocollapse */
752
- NgcSmartVictimService.ctorParameters = () => [
753
- { type: HttpClient },
754
- { type: String, decorators: [{ type: Inject, args: [SMART_OFFENDER_SERVICE_URL,] }] },
755
- { type: String, decorators: [{ type: Inject, args: [SMART_LOOKUP_SERVICE_URL,] }] },
756
- { type: String, decorators: [{ type: Inject, args: [SMART_VICTIM_SERVICE_URL,] }] },
757
- { type: Apollo }
758
- ];
759
- /** @nocollapse */ NgcSmartVictimService.ngInjectableDef = i0.defineInjectable({ factory: function NgcSmartVictimService_Factory() { return new NgcSmartVictimService(i0.inject(i1.HttpClient), i0.inject(i2.SMART_OFFENDER_SERVICE_URL), i0.inject(i2.SMART_LOOKUP_SERVICE_URL), i0.inject(i2.SMART_VICTIM_SERVICE_URL), i0.inject(i3.Apollo)); }, token: NgcSmartVictimService, providedIn: "root" });
760
- if (false) {
761
- /**
762
- * @type {?}
763
- * @private
764
- */
765
- NgcSmartVictimService.prototype.serviceApiUrl;
766
- /**
767
- * @type {?}
768
- * @private
769
- */
770
- NgcSmartVictimService.prototype.http;
771
- /**
772
- * @type {?}
773
- * @private
774
- */
775
- NgcSmartVictimService.prototype.smartOffenderServiceUrl;
776
- /**
777
- * @type {?}
778
- * @private
779
- */
780
- NgcSmartVictimService.prototype.smartLookupServiceUrl;
781
- /**
782
- * @type {?}
783
- * @private
784
- */
785
- NgcSmartVictimService.prototype.smartVictimServiceUrl;
786
- /**
787
- * @type {?}
788
- * @private
789
- */
790
- NgcSmartVictimService.prototype.apollo;
791
- }
792
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC12aWN0aW0vIiwic291cmNlcyI6WyJsaWIvc21hcnQtdmljdGltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFlLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBQyx3QkFBd0IsRUFFVyxNQUFNLHNCQUFzQixDQUFDO0FBQzlILE9BQU8sRUFBYyxVQUFVLElBQUksb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBQyxVQUFVLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztNQUdsQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs7TUFDakUsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUtwQyxNQUFNLE9BQU8scUJBQXFCOzs7Ozs7OztJQUVoQyxZQUFvQixJQUFnQixFQUNVLHVCQUErQixFQUNqQyxxQkFBNkIsRUFDN0IscUJBQTZCLEVBQy9ELE1BQWM7UUFKSixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1UsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFRO1FBQ2pDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUM3QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDL0QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUxoQixrQkFBYSxHQUFJLHNEQUFzRCxDQUFDO0lBTzFFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VTt5Q0FtQmQsTUFBTSxTQUFDLDBCQUEwQjt5Q0FDakMsTUFBTSxTQUFDLHdCQUF3Qjt5Q0FDL0IsTUFBTSxTQUFDLHdCQUF3QjtZQWQzQixNQUFNOzs7Ozs7OztJQVViLDhDQUFnRjs7Ozs7SUFDcEUscUNBQXdCOzs7OztJQUNsQyx3REFBMkU7Ozs7O0lBQzNFLHNEQUF1RTs7Ozs7SUFDdkUsc0RBQXVFOzs7OztJQUN2RSx1Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LEh0dHBSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTTUFSVF9MT09LVVBfU0VSVklDRV9VUkwsIFNNQVJUX09GRkVOREVSX1NFUlZJQ0VfVVJMLFNNQVJUX1ZJQ1RJTV9TRVJWSUNFX1VSTCxcclxuICAgIFZpY3RpbUxpc3RGaWx0ZXIsVmljdGltRHJ1Z1VzZSxWaWN0aW0sVmljdGltU2FmZXR5UGxhbixcclxuICAgQ2FzZU5vdGUsQ29udGFjdCxWaWN0aW1TZXJ2aWNlRGV0YWlsLFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5LFZpY3RpbUFkdm9jYXRlLFZpY3RpbUd1YXJkaWFufSBmcm9tICcuL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsY2F0Y2hFcnJvciwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcblxyXG5cclxuY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XHJcbmNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nY1NtYXJ0VmljdGltU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlQXBpVXJsID0gICdodHRwczovL3NtYXJ0LXNlcnZpY2UtdGVzdC5henVyZXdlYnNpdGVzLm5ldC9ncmFwaHFsJztcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KFNNQVJUX09GRkVOREVSX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KFNNQVJUX0xPT0tVUF9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydExvb2t1cFNlcnZpY2VVcmw6IHN0cmluZyxcclxuICAgIEBJbmplY3QoU01BUlRfVklDVElNX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0VmljdGltU2VydmljZVVybDogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsb1xyXG5cclxuICAgICkgeyB9XHJcblxyXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZXMob2ZmZW5kZXJJZDogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzLz9vZmZlbmRlcklkPScgKyBvZmZlbmRlcklkKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkKS5waXBlKCk7XHJcbiAgLy8gfSBcclxuXHJcbiAgLy8gcG9zdFZpY3RpbUluc3VyYW5jZSh2YWw6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMnLCB2YWwpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHB1dFZpY3RpbUluc3VyYW5jZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkLCB2YWwpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGRlbGV0ZVZpY3RpbUluc3VyYW5jZShpZDogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzLz9pZD0nICsgaWQpLnBpcGUoKTtcclxuICAvLyB9XHJcbiAgXHJcbiAgLy8gZ2V0VmljdGltSW5zdXJhbmNlVHlwZXMoKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VUeXBlcycpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZVBvbGljeUhvbGRlcnMoKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VQb2xpY3lIb2xkZXJzJykucGlwZSgpO1xyXG4gIC8vIH1cclxuXHJcbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlU3dpdGNoUmVhc29ucygpIHtcclxuLy8gICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVN3aXRjaFJlYXNvbnMnKS5waXBlKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBnZXRWaWN0aW1JbnN1cmFuY2VQcm92aWRlcnMoKSB7XHJcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VQcm92aWRlcicpLnBpcGUoKTtcclxuLy8gICB9XHJcblxyXG4vLyAgIGdldFZpY3RpbUluc3VyYW5jZVByb3ZpZGVyKGlkKSB7XHJcbi8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXJzLycgKyBpZCkucGlwZSgpO1xyXG4vLyB9XHJcblxyXG4vLyAgIHBvc3RQcm92aWRlckluZm9ybWF0aW9uKHZhbDogYW55KSB7XHJcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXJzJywgdmFsKS5waXBlKCk7XHJcbi8vICAgfVxyXG5cclxuXHJcblxyXG5wcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcclxuICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyb3IuanNvbigpLmVycm9yIHx8ICdTZXJ2ZXIgZXJyb3InKTtcclxufVxyXG5cclxuZ2V0RHJ1Z3NUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnRHJ1Z1R5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXREb2NrZXRMaXN0KG9mZmVuZGVySWQ6IG51bWJlcikge1xyXG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gIHtcclxuICAgIGZpbmREb2NrZXRzKGlucHV0OiB7IHdoZXJlOiB7IG9mZmVuZGVySWQ6JHtvZmZlbmRlcklkfSB9IH0pIHtcclxuICAgICAgdG90YWxDb3VudFxyXG4gICAgICBtZXNzYWdlXHJcbiAgICAgIGRhdGEge1xyXG4gICAgICAgIGRvY2tldElkXHJcbiAgICAgICAgZG9ja2V0TnVtYmVyXHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfWA7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuc2VydmljZUFwaVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSkucGlwZShcclxuICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ2RvY2tldHMgZm9yIHRoaXMgb2ZmZW5kZXI6JywgZGF0YS5maW5kRG9ja2V0cy5kYXRhKTtcclxuICAgICAgcmV0dXJuIGRhdGEuZmluZERvY2tldHMuZGF0YTtcclxuICAgIH0pKTtcclxuXHJcblxyXG59XHJcblxyXG5nZXRTdXBwb3J0VHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltU3VwcG9ydFR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRQcmVmaXhlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnUHJlZml4ZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFN1ZmZpeGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdTdWZmaXhlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0UmVsYXRpb25zaGlwVHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1JlbGF0aW9uc2hpcFR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRHZW5kZXJzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdHZW5kZXJzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRXZWFwb25UeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnV2VhcG9uVHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldEZsYWdPcHRpb25ZZXNOb1Vua25vd25zKCkge1xyXG4gcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnRmxhZ09wdGlvblllc05vVW5rbm93bnMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0Q29udGFjdFR5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ0NvbnRhY3RUeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcbiBnZXRDb250YWN0TWV0aG9kcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1Db250YWN0TWV0aG9kcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcbiBnZXRDb250YWN0QnlzKCl7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdFB1cnBvc2VzJywgb3B0aW9ucykucGlwZVxyXG4gIChcclxuICBtYXAocmVzID0+IHsgXHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgfSlcclxuICApO1xyXG5cclxuIH1cclxuXHJcbmdldFZpY3RpbUNvbnRhY3RQdXJwb3NlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1Db250YWN0UHVycG9zZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG5cclxuIGdldFZpY3RpbVNlcnZpY2VUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlVHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG4gZ2V0VmljdGltU2VydmljZVN0YXR1cygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlU3RhdHVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuXHJcbiBnZXR2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlcnMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG5cclxuXHJcbmdldFZpY3RpbSh2YWw6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gIChcclxuICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgY29uc29sZS5sb2coJ3ZpY3RpbSByZXR1cm4gZGF0YScpO1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXMpOyAgXHJcbiAgICAgIHJldHVybiByZXM7XHJcblxyXG4gICAgfSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0VmljdGltQWR2b2NhdGUodmFsOiBhbnkpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1BZHZvY2F0ZXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcblxyXG4gICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFZpY3RpbUd1YXJkaWFuKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltR3VhcmRpYW5zLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG5cclxuICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltcyh2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCsgJ1ZpY3RpbXMnLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltcyhpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltQWR2b2NhdGUoaWQ6IGFueSwgdmFsOiBWaWN0aW1BZHZvY2F0ZSkge1xyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQWR2b2NhdGVzLycgKyBpZCwgYm9keSwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcblxyXG5cclxuXHJcblxyXG59XHJcblxyXG5wb3N0VmljdGltQWR2b2NhdGUoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQWR2b2NhdGVzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnB1dFZpY3RpbUd1YXJkaWFuKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc29sZS5sb2coJ3VwZGF0ZSB2aWN0aW0gZ3VhcmRpYW4nKTtcclxuICBjb25zb2xlLmxvZyh2YWwpO1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUd1YXJkaWFucy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltR3VhcmRpYW4oaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltR3VhcmRpYW5zLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFZpY3RpbURydWdVc2UodmFsOiBhbnkpOiBPYnNlcnZhYmxlPFZpY3RpbURydWdVc2VbXT57XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltRHJ1Z1VzZXMvJyArIHZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcCgocmVzOiBWaWN0aW1EcnVnVXNlW10pID0+IHsgXHJcbiAgICAgICAgICAgIHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltRHJ1Z1VzZShpZDogYW55LCB2YWw6IFZpY3RpbURydWdVc2VbXSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1EcnVnVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltRHJ1Z1VzZShpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1EcnVnVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wdXRWaWN0aW1XZWFwb25Vc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1XZWFwb25Vc2VzLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnBvc3RWaWN0aW1XZWFwb25Vc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltV2VhcG9uVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcbnB1dFZpY3RpbVN1cHBvcnQoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TdXBwb3J0cy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltU3VwcG9ydChpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnN0IHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TdXBwb3J0cy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5kZWxldGVWaWN0aW1zKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwrICdWaWN0aW1zLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAoXHJcbiAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICApO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG4vLyAvLz09PT09PT09PT09PT09VmljdGltIFNlcml2ZT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG5nZXRWaWN0aW1zKG9mZmVuZGVySWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVtdPiB7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICArICdWaWN0aW1zL29mZmVuZGVyLycgKyBvZmZlbmRlcklkKVxyXG4gIC5waXBlKG1hcCgocmVzOiBWaWN0aW1bXSkgPT4ge1xyXG4gICAgXHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgfSlcclxuICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbn1cclxuXHJcbmdldFZpY3RpbXNCeUZpbHRlcihmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpOiBPYnNlcnZhYmxlPFZpY3RpbVtdPntcclxuICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICcvVmljdGltcycsIEpTT04uc3RyaW5naWZ5KGZpbHRlciksIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gICAgICAgICAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbn1cclxuXHJcbmdldFZpY3RpbUxpc3RCeUZpbHRlcihmaWx0ZXI6IFZpY3RpbUxpc3RGaWx0ZXIpIFxyXG57XHJcbiAgY29uc29sZS5sb2coJ2ZpbGVyIGluIHNlcnZpY2UnKTtcclxuICBjb25zb2xlLmxvZyhmaWx0ZXIpO1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwXHJcbiAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAndlZpY3RpbXMvRmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSwgb3B0aW9ucylcclxuICAucGlwZSgpO1xyXG5cclxufVxyXG5cclxuXHJcbmdldENhc2V0Tm90ZXModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPENhc2VOb3RlW10+IHtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ2FzZU5vdGVzL3ZpY3RpbS8nICsgdmljdGltSWQpXHJcbiAgLnBpcGUobWFwKChyZXM6IENhc2VOb3RlW10pID0+IHtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuIFxyXG5cclxufVxyXG5hZGRDYXNlTm90ZShjYXNlTm90ZTogQ2FzZU5vdGUpIHtcclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY2FzZU5vdGUpO1xyXG4gICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvJywgYm9keSwgb3B0aW9ucyk7XHJcbiBcclxuIH1cclxuXHJcbiBcclxudXBkYXRlQ2FzZU5vdGUoY2FzZU5vdGU6IENhc2VOb3RlKXtcclxuXHJcbiAgbGV0IGJvZHk6IHN0cmluZztcclxuICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY2FzZU5vdGUpO1xyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1DYXNlTm90ZXMvJyArIGNhc2VOb3RlLnZpY3RpbUNhc2VOb3RlSWQsIGJvZHksIG9wdGlvbnMpXHJcblxyXG4gICAgICA7XHJcbiB9XHJcblxyXG5kZWxldGVDYXNlTm90ZShpZDogbnVtYmVyLCBzdGFmZklkOiBudW1iZXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmx9VmljdGltQ2FzZU5vdGVzLyR7aWR9P3N0YWZmSWQ9JHtzdGFmZklkfWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGFjdHModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPENvbnRhY3RbXT4ge1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RzL3ZpY3RpbS8nICsgdmljdGltSWQpXHJcbiAgICAucGlwZShtYXAoKHJlczogQ29udGFjdFtdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0pXHJcbiAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgXHJcbiAgfVxyXG4gIGFkZENvbnRhY3QoY29udGFjdDogQ29udGFjdCkge1xyXG4gICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY29udGFjdCk7XHJcbiAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1Db250YWN0cy8nLCBib2R5LCBvcHRpb25zKTtcclxuICAgXHJcbiAgIH1cclxuICBcclxuICAgXHJcbiAgdXBkYXRlQ29udGFjdChjb250YWN0OiBDb250YWN0KXtcclxuICBcclxuICAgIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoY29udGFjdCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1Db250YWN0cy8nICsgY29udGFjdC52aWN0aW1Db250YWN0SWQsIGJvZHksIG9wdGlvbnMpXHJcbiAgXHJcbiAgICAgICAgO1xyXG4gICB9XHJcbiAgXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuZ2V0U2FmZXR5UGxhbnModmljdGltSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNhZmV0eVBsYW5bXT4ge1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAndlZpY3RpbVNlcnZpY2VMaXN0cy92aWN0aW0vJyArIHZpY3RpbUlkKVxyXG4gICAgICAucGlwZShtYXAoKHJlczogVmljdGltU2FmZXR5UGxhbltdKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgfVxyXG5cclxuZ2V0VmljdGltU2VydmljZXModmljdGltU2VydmljZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxWaWN0aW1TYWZldHlQbGFuW10+IHtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlTGlzdHMvdmljdGltU2VydmljZUlkLycgKyB2aWN0aW1TZXJ2aWNlSWQpXHJcbiAgICAgIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TYWZldHlQbGFuW10pID0+IHtcclxuICAgICAgICAgIHJldHVybiAgcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgXHJcbiAgfVxyXG5cclxuZ2V0VmljdGltU2VydmljZURldGFpbCh2aWN0aW1TZXJ2aWNlSWQ6IG51bWJlcik6IE9ic2VydmFibGUgPFZpY3RpbVNlcnZpY2VEZXRhaWxbXT4ge1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlRGV0YWlscy8nICsgdmljdGltU2VydmljZUlkKVxyXG4gIC5waXBlKG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlRGV0YWlsW10pID0+IHtcclxuICBcclxuICAgICAgcmV0dXJuIHJlcztcclxuICB9KVxyXG4gICxjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuXHJcbn1cclxuYWRkU2FmZXR5UGxhbih2aWN0aW1TYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuKSB7XHJcblxyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2FmZXR5UGxhbik7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlcy8nLCBib2R5LCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoKTtcclxuICBcclxuICB9XHJcbnVwZGF0ZVNhZmV0eVBsYW4odmljdGltU2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbil7XHJcblxyXG4gICAgICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2FmZXR5UGxhbik7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgIC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZXMvJyArIHZpY3RpbVNhZmV0eVBsYW4udmljdGltU2VydmljZUlkLCBib2R5LCBvcHRpb25zKVxyXG5cclxuICAgICAgICAgIDtcclxuICAgICB9XHJcbmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1c0hpc3Rvcnk6IFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5KXtcclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMvJywgYm9keSwgb3B0aW9ucyk7XHJcblxyXG4gIH1cclxuXHJcbmdldFNlcnZpY2VTdGF0dXNIaXN0b3JpZXModmljdGltU2VydmljZUlkOiBudW1iZXIpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMvdmljdGltU2VydmljZUlkLycgKyB2aWN0aW1TZXJ2aWNlSWQpXHJcbiAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeVtdKSA9PiB7XHJcbiAgXHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxyXG4gICk7XHJcbn1cclxuXHJcbmRlbGV0ZVNhZmV0eVBsYW4odmljdGltU2VydmljZUlkOiBudW1iZXIsIHN0YWZmSWQ6IG51bWJlcikge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbVNlcnZpY2VzLyR7dmljdGltU2VydmljZUlkfT9zdGFmZklkPSR7c3RhZmZJZH1gKTtcclxuXHJcbiAgfVxyXG5hZGRQbGFuUHJvdmlkZXIodmljdGltU2VydmljZURldGFpbDpWaWN0aW1TZXJ2aWNlRGV0YWlsKXtcclxuICAgICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNlcnZpY2VEZXRhaWwpO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VEZXRhaWxzLycsIGJvZHksIG9wdGlvbnMpXHJcbiAgICAgIC5waXBlKCk7XHJcblxyXG4gIH1cclxuXHJcbmRlbGV0ZVByb3ZpZGVyKHZpY3RpbVByb2dyYW1Qcm92aWRlcklkOiBzdHJpbmcsIHN0YWZmSWQ6IG51bWJlcil7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmx9VmljdGltU2VydmljZURldGFpbHMvJHt2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZH0/c3RhZmZJZD0ke3N0YWZmSWR9YCk7XHJcblxyXG59XHJcblxyXG59XHJcbiJdfQ==