@hmcts/ccpay-web-component 5.0.8-beta05 → 5.0.8-beta11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/bundles/hmcts-ccpay-web-component.umd.js +972 -7133
  2. package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
  3. package/bundles/hmcts-ccpay-web-component.umd.min.js +2 -2
  4. package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-ccpay-web-component.js +2 -7
  6. package/esm2015/lib/components/add-remission/add-remission.component.js +43 -408
  7. package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +46 -349
  8. package/esm2015/lib/components/card-details/card-details.component.js +7 -47
  9. package/esm2015/lib/components/case-transactions/case-transactions.component.js +112 -687
  10. package/esm2015/lib/components/error-banner/error-banner.component.js +2 -15
  11. package/esm2015/lib/components/fee-summary/fee-summary.component.js +36 -255
  12. package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +29 -182
  13. package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +33 -226
  14. package/esm2015/lib/components/page-not-found.component.js +2 -7
  15. package/esm2015/lib/components/payment-list/payment-list.component.js +7 -48
  16. package/esm2015/lib/components/payment-view/payment-view.component.js +44 -336
  17. package/esm2015/lib/components/pba-details/pba-details.component.js +2 -15
  18. package/esm2015/lib/components/pba-payment/pba-payment.component.js +15 -119
  19. package/esm2015/lib/components/process-refund/process-refund.component.js +23 -178
  20. package/esm2015/lib/components/processed-payments/processed-payments.component.js +6 -41
  21. package/esm2015/lib/components/refund-list/refund-list.component.js +12 -78
  22. package/esm2015/lib/components/refund-status/refund-status.component.js +30 -255
  23. package/esm2015/lib/components/reports/reports.component.js +28 -213
  24. package/esm2015/lib/components/service-request/service-request.component.js +40 -369
  25. package/esm2015/lib/components/status-history/status-history.component.js +7 -44
  26. package/esm2015/lib/components/table/table.component.js +13 -107
  27. package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +18 -184
  28. package/esm2015/lib/interfaces/AddRemissionRequest.js +1 -29
  29. package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +1 -16
  30. package/esm2015/lib/interfaces/AllocatePaymentRequest.js +1 -43
  31. package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +1 -27
  32. package/esm2015/lib/interfaces/IBSPayments.js +1 -46
  33. package/esm2015/lib/interfaces/ICardDetails.js +1 -22
  34. package/esm2015/lib/interfaces/IFee.js +1 -54
  35. package/esm2015/lib/interfaces/IOrderReferenceFee.js +1 -26
  36. package/esm2015/lib/interfaces/IPatchRefundAction.js +1 -16
  37. package/esm2015/lib/interfaces/IPayment.js +1 -66
  38. package/esm2015/lib/interfaces/IPaymentFailure.js +1 -34
  39. package/esm2015/lib/interfaces/IPaymentGroup.js +1 -20
  40. package/esm2015/lib/interfaces/IPaymentStatus.js +1 -26
  41. package/esm2015/lib/interfaces/IPaymentView.js +1 -18
  42. package/esm2015/lib/interfaces/IPayments.js +1 -14
  43. package/esm2015/lib/interfaces/IRefundAction.js +1 -16
  44. package/esm2015/lib/interfaces/IRefundList.js +1 -30
  45. package/esm2015/lib/interfaces/IRefundReasons.js +1 -20
  46. package/esm2015/lib/interfaces/IRefundRejectReason.js +1 -16
  47. package/esm2015/lib/interfaces/IRefundStatus.js +1 -24
  48. package/esm2015/lib/interfaces/IRefundStatusHistory.js +1 -16
  49. package/esm2015/lib/interfaces/IRemission.js +1 -26
  50. package/esm2015/lib/interfaces/IResubmitRefundRequest.js +1 -16
  51. package/esm2015/lib/interfaces/IStatusHistories.js +1 -20
  52. package/esm2015/lib/interfaces/IStatusHistory.js +1 -22
  53. package/esm2015/lib/interfaces/IserviceRequestCardPayment.js +1 -17
  54. package/esm2015/lib/interfaces/IserviceRequestPbaPayment.js +1 -24
  55. package/esm2015/lib/interfaces/IssueRefundRequest.js +1 -19
  56. package/esm2015/lib/interfaces/PayhubAntennaRequest.js +2 -22
  57. package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +2 -28
  58. package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +1 -13
  59. package/esm2015/lib/interfaces/PostRefundRetroRemission.js +1 -16
  60. package/esm2015/lib/interfaces/RefundsRequest.js +1 -16
  61. package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +1 -21
  62. package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +1 -30
  63. package/esm2015/lib/payment-lib.component.js +8 -149
  64. package/esm2015/lib/payment-lib.module.js +1 -6
  65. package/esm2015/lib/payment-lib.service.js +2 -46
  66. package/esm2015/lib/pipes/capitalize.pipe.js +1 -12
  67. package/esm2015/lib/pipes/ccd-hyphens.pipe.js +1 -13
  68. package/esm2015/lib/pipes/key-value.pipe.js +1 -12
  69. package/esm2015/lib/pipes/sanitize-html.pipe.js +5 -22
  70. package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +15 -103
  71. package/esm2015/lib/services/card-details/card-details.service.js +8 -40
  72. package/esm2015/lib/services/case-transactions/case-transactions.service.js +8 -40
  73. package/esm2015/lib/services/orderslist.service.js +2 -252
  74. package/esm2015/lib/services/payment-list/payment-list.service.js +8 -43
  75. package/esm2015/lib/services/payment-view/payment-view.service.js +11 -170
  76. package/esm2015/lib/services/refunds/refunds.service.js +14 -110
  77. package/esm2015/lib/services/shared/error-handler.service.js +2 -20
  78. package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +10 -83
  79. package/esm2015/lib/services/shared/logger/console-logger.service.js +3 -28
  80. package/esm2015/lib/services/shared/logger/logger.service.js +3 -36
  81. package/esm2015/lib/services/status-history/status-history.service.js +8 -41
  82. package/esm2015/lib/services/xl-file/xl-file.service.js +2 -61
  83. package/esm2015/public_api.js +4 -9
  84. package/esm5/hmcts-ccpay-web-component.js +2 -7
  85. package/esm5/lib/components/add-remission/add-remission.component.js +65 -506
  86. package/esm5/lib/components/allocate-payments/allocate-payments.component.js +63 -411
  87. package/esm5/lib/components/card-details/card-details.component.js +10 -49
  88. package/esm5/lib/components/case-transactions/case-transactions.component.js +149 -842
  89. package/esm5/lib/components/error-banner/error-banner.component.js +3 -19
  90. package/esm5/lib/components/fee-summary/fee-summary.component.js +51 -310
  91. package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +38 -216
  92. package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +44 -270
  93. package/esm5/lib/components/page-not-found.component.js +2 -7
  94. package/esm5/lib/components/payment-list/payment-list.component.js +9 -55
  95. package/esm5/lib/components/payment-view/payment-view.component.js +69 -419
  96. package/esm5/lib/components/pba-details/pba-details.component.js +3 -19
  97. package/esm5/lib/components/pba-payment/pba-payment.component.js +21 -141
  98. package/esm5/lib/components/process-refund/process-refund.component.js +32 -262
  99. package/esm5/lib/components/processed-payments/processed-payments.component.js +9 -53
  100. package/esm5/lib/components/refund-list/refund-list.component.js +13 -79
  101. package/esm5/lib/components/refund-status/refund-status.component.js +46 -322
  102. package/esm5/lib/components/reports/reports.component.js +41 -268
  103. package/esm5/lib/components/service-request/service-request.component.js +58 -439
  104. package/esm5/lib/components/status-history/status-history.component.js +8 -44
  105. package/esm5/lib/components/table/table.component.js +21 -143
  106. package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +31 -242
  107. package/esm5/lib/interfaces/AddRemissionRequest.js +1 -22
  108. package/esm5/lib/interfaces/AddRetroRemissionRequest.js +1 -12
  109. package/esm5/lib/interfaces/AllocatePaymentRequest.js +1 -36
  110. package/esm5/lib/interfaces/IAllocationPaymentsRequest.js +1 -20
  111. package/esm5/lib/interfaces/IBSPayments.js +1 -46
  112. package/esm5/lib/interfaces/ICardDetails.js +1 -22
  113. package/esm5/lib/interfaces/IFee.js +1 -54
  114. package/esm5/lib/interfaces/IOrderReferenceFee.js +1 -26
  115. package/esm5/lib/interfaces/IPatchRefundAction.js +1 -16
  116. package/esm5/lib/interfaces/IPayment.js +1 -66
  117. package/esm5/lib/interfaces/IPaymentFailure.js +1 -34
  118. package/esm5/lib/interfaces/IPaymentGroup.js +1 -20
  119. package/esm5/lib/interfaces/IPaymentStatus.js +1 -26
  120. package/esm5/lib/interfaces/IPaymentView.js +1 -18
  121. package/esm5/lib/interfaces/IPayments.js +1 -14
  122. package/esm5/lib/interfaces/IRefundAction.js +1 -16
  123. package/esm5/lib/interfaces/IRefundList.js +1 -30
  124. package/esm5/lib/interfaces/IRefundReasons.js +1 -20
  125. package/esm5/lib/interfaces/IRefundRejectReason.js +1 -16
  126. package/esm5/lib/interfaces/IRefundStatus.js +1 -24
  127. package/esm5/lib/interfaces/IRefundStatusHistory.js +1 -16
  128. package/esm5/lib/interfaces/IRemission.js +1 -26
  129. package/esm5/lib/interfaces/IResubmitRefundRequest.js +1 -12
  130. package/esm5/lib/interfaces/IStatusHistories.js +1 -20
  131. package/esm5/lib/interfaces/IStatusHistory.js +1 -22
  132. package/esm5/lib/interfaces/IserviceRequestCardPayment.js +1 -14
  133. package/esm5/lib/interfaces/IserviceRequestPbaPayment.js +1 -18
  134. package/esm5/lib/interfaces/IssueRefundRequest.js +1 -14
  135. package/esm5/lib/interfaces/PayhubAntennaRequest.js +2 -17
  136. package/esm5/lib/interfaces/PaymentToPayhubRequest.js +2 -23
  137. package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +1 -10
  138. package/esm5/lib/interfaces/PostRefundRetroRemission.js +1 -12
  139. package/esm5/lib/interfaces/RefundsRequest.js +1 -12
  140. package/esm5/lib/interfaces/UnidentifiedPaymentsRequest.js +1 -16
  141. package/esm5/lib/interfaces/UnsolicitedPaymentsRequest.js +1 -22
  142. package/esm5/lib/payment-lib.component.js +10 -152
  143. package/esm5/lib/payment-lib.module.js +1 -6
  144. package/esm5/lib/payment-lib.service.js +10 -82
  145. package/esm5/lib/pipes/capitalize.pipe.js +2 -18
  146. package/esm5/lib/pipes/ccd-hyphens.pipe.js +2 -19
  147. package/esm5/lib/pipes/key-value.pipe.js +2 -17
  148. package/esm5/lib/pipes/sanitize-html.pipe.js +6 -24
  149. package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +24 -148
  150. package/esm5/lib/services/card-details/card-details.service.js +9 -39
  151. package/esm5/lib/services/case-transactions/case-transactions.service.js +9 -39
  152. package/esm5/lib/services/orderslist.service.js +38 -414
  153. package/esm5/lib/services/payment-list/payment-list.service.js +9 -43
  154. package/esm5/lib/services/payment-view/payment-view.service.js +36 -302
  155. package/esm5/lib/services/refunds/refunds.service.js +25 -159
  156. package/esm5/lib/services/shared/error-handler.service.js +4 -32
  157. package/esm5/lib/services/shared/httpclient/webcomponent.http.client.js +16 -117
  158. package/esm5/lib/services/shared/logger/console-logger.service.js +10 -40
  159. package/esm5/lib/services/shared/logger/logger.service.js +5 -49
  160. package/esm5/lib/services/status-history/status-history.service.js +9 -41
  161. package/esm5/lib/services/xl-file/xl-file.service.js +10 -111
  162. package/esm5/public_api.js +4 -9
  163. package/fesm2015/hmcts-ccpay-web-component.js +626 -5699
  164. package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
  165. package/fesm5/hmcts-ccpay-web-component.js +972 -7137
  166. package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
  167. package/hmcts-ccpay-web-component.metadata.json +1 -1
  168. package/lib/components/card-details/card-details.component.d.ts +1 -1
  169. package/lib/components/payment-view/payment-view.component.d.ts +2 -2
  170. package/lib/services/shared/logger/console-logger.service.d.ts +3 -3
  171. package/package.json +2 -2
@@ -1,10 +1,5 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/services/payment-view/payment-view.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Injectable } from '@angular/core';
7
- import { HttpClient } from '@angular/common/http';
2
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
8
3
  import { PaymentLibService } from '../../payment-lib.service';
9
4
  import { WebComponentHttpClient } from '../shared/httpclient/webcomponent.http.client';
10
5
  import { ErrorHandlerService } from '../shared/error-handler.service';
@@ -24,19 +19,9 @@ var PaymentViewService = /** @class */ (function () {
24
19
  this.logger = logger;
25
20
  this.errorHandlerService = errorHandlerService;
26
21
  this.paymentLibService = paymentLibService;
27
- this.ordersList = (/** @type {?} */ (new BehaviorSubject([])));
22
+ this.ordersList = new BehaviorSubject([]);
28
23
  }
29
- /**
30
- * @param {?} paymentReference
31
- * @param {?} paymentMethod
32
- * @return {?}
33
- */
34
- PaymentViewService.prototype.getPaymentDetails = /**
35
- * @param {?} paymentReference
36
- * @param {?} paymentMethod
37
- * @return {?}
38
- */
39
- function (paymentReference, paymentMethod) {
24
+ PaymentViewService.prototype.getPaymentDetails = function (paymentReference, paymentMethod) {
40
25
  this.logger.info('Payment-view-service getPaymentDetails for: ', paymentReference);
41
26
  return this.http.get(paymentMethod === 'card' || paymentMethod === 'cash' || paymentMethod === 'cheque' || paymentMethod === 'postal order' ?
42
27
  this.paymentLibService.API_ROOT + "/card-payments/" + paymentReference :
@@ -45,327 +30,114 @@ var PaymentViewService = /** @class */ (function () {
45
30
  })
46
31
  .pipe(catchError(this.errorHandlerService.handleError));
47
32
  };
48
- /**
49
- * @param {?} paymentGroupReference
50
- * @return {?}
51
- */
52
- PaymentViewService.prototype.getPaymentGroupDetails = /**
53
- * @param {?} paymentGroupReference
54
- * @return {?}
55
- */
56
- function (paymentGroupReference) {
33
+ PaymentViewService.prototype.getPaymentGroupDetails = function (paymentGroupReference) {
57
34
  this.logger.info('Payment-view-service getPaymentGroupDetails for: ', paymentGroupReference);
58
35
  return this.http.get(this.paymentLibService.API_ROOT + "/payment-groups/" + paymentGroupReference, {
59
36
  withCredentials: true
60
37
  })
61
38
  .pipe(catchError(this.errorHandlerService.handleError));
62
39
  };
63
- /**
64
- * @param {?} paymentReference
65
- * @return {?}
66
- */
67
- PaymentViewService.prototype.getApportionPaymentDetails = /**
68
- * @param {?} paymentReference
69
- * @return {?}
70
- */
71
- function (paymentReference) {
40
+ PaymentViewService.prototype.getApportionPaymentDetails = function (paymentReference) {
72
41
  this.logger.info('Payment-view-service getPaymentGroupDetails for: ', paymentReference);
73
42
  return this.http.get(this.paymentLibService.API_ROOT + "/payment-groups/fee-pay-apportion/" + paymentReference, {
74
43
  withCredentials: true
75
44
  })
76
45
  .pipe(catchError(this.errorHandlerService.handleError));
77
46
  };
78
- /**
79
- * @return {?}
80
- */
81
- PaymentViewService.prototype.getPBAaccountDetails = /**
82
- * @return {?}
83
- */
84
- function () {
85
- /** @type {?} */
47
+ PaymentViewService.prototype.getPBAaccountDetails = function () {
86
48
  var url = this.paymentLibService.API_ROOT + "/pba-accounts";
87
49
  return this.http.get(url, { withCredentials: true }).pipe(catchError(this.errorHandlerService.handleError));
88
50
  };
89
- /**
90
- * @param {?} serviceRef
91
- * @param {?} body
92
- * @return {?}
93
- */
94
- PaymentViewService.prototype.postWays2PayCardPayment = /**
95
- * @param {?} serviceRef
96
- * @param {?} body
97
- * @return {?}
98
- */
99
- function (serviceRef, body) {
100
- /** @type {?} */
51
+ PaymentViewService.prototype.postWays2PayCardPayment = function (serviceRef, body) {
101
52
  var url = this.paymentLibService.API_ROOT + "/service-request/" + serviceRef + "/card-payments";
102
- /** @type {?} */
103
53
  var rurl = this.paymentLibService.CARDPAYMENTRETURNURL.replace('.prod', '');
104
54
  body['return-url'] = rurl + "/payment";
105
55
  return this.https.post(url, body).pipe(catchError(this.errorHandlerService.handleError));
106
56
  };
107
- /**
108
- * @param {?} serviceRef
109
- * @param {?} body
110
- * @return {?}
111
- */
112
- PaymentViewService.prototype.postPBAaccountPayment = /**
113
- * @param {?} serviceRef
114
- * @param {?} body
115
- * @return {?}
116
- */
117
- function (serviceRef, body) {
118
- /** @type {?} */
57
+ PaymentViewService.prototype.postPBAaccountPayment = function (serviceRef, body) {
119
58
  var randomKey = 'idam-key-' + Math.random().toString().split('.').join('-');
120
59
  body['idempotency_key'] = randomKey;
121
- /** @type {?} */
122
60
  var url = this.paymentLibService.API_ROOT + "/service-request/" + serviceRef + "/pba-payments";
123
61
  return this.https.post(url, body);
124
62
  };
125
- /**
126
- * @param {?} body
127
- * @return {?}
128
- */
129
- PaymentViewService.prototype.postBSPayments = /**
130
- * @param {?} body
131
- * @return {?}
132
- */
133
- function (body) {
63
+ PaymentViewService.prototype.postBSPayments = function (body) {
134
64
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-groups/bulk-scan-payments", body).pipe(catchError(this.errorHandlerService.handleError));
135
65
  };
136
- /**
137
- * @param {?} body
138
- * @return {?}
139
- */
140
- PaymentViewService.prototype.postBSUnidentifiedPayments = /**
141
- * @param {?} body
142
- * @return {?}
143
- */
144
- function (body) {
66
+ PaymentViewService.prototype.postBSUnidentifiedPayments = function (body) {
145
67
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-allocations", body).pipe(catchError(this.errorHandlerService.handleError));
146
68
  };
147
- /**
148
- * @param {?} body
149
- * @return {?}
150
- */
151
- PaymentViewService.prototype.postBSUnsolicitedPayments = /**
152
- * @param {?} body
153
- * @return {?}
154
- */
155
- function (body) {
69
+ PaymentViewService.prototype.postBSUnsolicitedPayments = function (body) {
156
70
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-allocations", body).pipe(catchError(this.errorHandlerService.handleError));
157
71
  };
158
- /**
159
- * @param {?} body
160
- * @return {?}
161
- */
162
- PaymentViewService.prototype.postBSAllocationPayments = /**
163
- * @param {?} body
164
- * @return {?}
165
- */
166
- function (body) {
72
+ PaymentViewService.prototype.postBSAllocationPayments = function (body) {
167
73
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-allocations", body).pipe(catchError(this.errorHandlerService.handleError));
168
74
  };
169
- /**
170
- * @param {?} paymentGroupReference
171
- * @param {?} feeId
172
- * @param {?} body
173
- * @return {?}
174
- */
175
- PaymentViewService.prototype.postPaymentGroupWithRemissions = /**
176
- * @param {?} paymentGroupReference
177
- * @param {?} feeId
178
- * @param {?} body
179
- * @return {?}
180
- */
181
- function (paymentGroupReference, feeId, body) {
75
+ PaymentViewService.prototype.postPaymentGroupWithRemissions = function (paymentGroupReference, feeId, body) {
182
76
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-groups/" + paymentGroupReference + "/fees/" + feeId + "/remissions", body).pipe(catchError(this.errorHandlerService.handleError));
183
77
  };
184
- /**
185
- * @param {?} feeId
186
- * @return {?}
187
- */
188
- PaymentViewService.prototype.deleteFeeFromPaymentGroup = /**
189
- * @param {?} feeId
190
- * @return {?}
191
- */
192
- function (feeId) {
78
+ PaymentViewService.prototype.deleteFeeFromPaymentGroup = function (feeId) {
193
79
  this.logger.info('Payment-view-service deleteFeeFromPaymentGroup for: ', feeId);
194
80
  return this.https.delete(this.paymentLibService.API_ROOT + "/fees/" + feeId).pipe(catchError(this.errorHandlerService.handleError));
195
81
  };
196
- /**
197
- * @param {?} body
198
- * @param {?} paymentGroupRef
199
- * @return {?}
200
- */
201
- PaymentViewService.prototype.postPaymentToPayHub = /**
202
- * @param {?} body
203
- * @param {?} paymentGroupRef
204
- * @return {?}
205
- */
206
- function (body, paymentGroupRef) {
82
+ PaymentViewService.prototype.postPaymentToPayHub = function (body, paymentGroupRef) {
207
83
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-groups/" + paymentGroupRef + "/card-payments", body).pipe(catchError(this.errorHandlerService.handleError));
208
84
  };
209
- /**
210
- * @param {?} body
211
- * @param {?} paymentGroupRef
212
- * @return {?}
213
- */
214
- PaymentViewService.prototype.postPaymentAntennaToPayHub = /**
215
- * @param {?} body
216
- * @param {?} paymentGroupRef
217
- * @return {?}
218
- */
219
- function (body, paymentGroupRef) {
85
+ PaymentViewService.prototype.postPaymentAntennaToPayHub = function (body, paymentGroupRef) {
220
86
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-groups/" + paymentGroupRef + "/telephony-card-payments", body).pipe(catchError(this.errorHandlerService.handleError));
221
87
  };
222
- /**
223
- * @param {?} reportName
224
- * @param {?} startDate
225
- * @param {?} endDate
226
- * @return {?}
227
- */
228
- PaymentViewService.prototype.downloadSelectedReport = /**
229
- * @param {?} reportName
230
- * @param {?} startDate
231
- * @param {?} endDate
232
- * @return {?}
233
- */
234
- function (reportName, startDate, endDate) {
235
- /** @type {?} */
88
+ PaymentViewService.prototype.downloadSelectedReport = function (reportName, startDate, endDate) {
236
89
  var url = this.paymentLibService.API_ROOT + "/report/data?date_from=" + startDate + "&date_to=" + endDate + "&report_type=" + reportName;
237
90
  return this.https.get(url, { withCredentials: true }).pipe(catchError(this.errorHandlerService.handleError));
238
91
  };
239
- /**
240
- * @param {?} startDate
241
- * @param {?} endDate
242
- * @return {?}
243
- */
244
- PaymentViewService.prototype.downloadFailureReport = /**
245
- * @param {?} startDate
246
- * @param {?} endDate
247
- * @return {?}
248
- */
249
- function (startDate, endDate) {
250
- /** @type {?} */
92
+ PaymentViewService.prototype.downloadFailureReport = function (startDate, endDate) {
251
93
  var url = this.paymentLibService.API_ROOT + "/payment-failures/failure-report?date_from=" + startDate + "&date_to=" + endDate;
252
94
  return this.https.get(url, { withCredentials: true }).pipe(catchError(this.errorHandlerService.handleError));
253
95
  };
254
- /**
255
- * @return {?}
256
- */
257
- PaymentViewService.prototype.getBSfeature = /**
258
- * @return {?}
259
- */
260
- function () {
96
+ PaymentViewService.prototype.getBSfeature = function () {
261
97
  return this.https.get('api/payment-history/bulk-scan-feature', { withCredentials: true }).pipe(catchError(this.errorHandlerService.handleError));
262
98
  };
263
- /**
264
- * @return {?}
265
- */
266
- PaymentViewService.prototype.getSiteID = /**
267
- * @return {?}
268
- */
269
- function () {
99
+ PaymentViewService.prototype.getSiteID = function () {
270
100
  return this.https.get('api/payment-history/refdata/legacy-sites', { withCredentials: true }).pipe(catchError(this.errorHandlerService.handleError));
271
101
  };
272
- /**
273
- * @param {?} caseNumber
274
- * @return {?}
275
- */
276
- PaymentViewService.prototype.getPartyDetails = /**
277
- * @param {?} caseNumber
278
- * @return {?}
279
- */
280
- function (caseNumber) {
281
- /** @type {?} */
102
+ PaymentViewService.prototype.getPartyDetails = function (caseNumber) {
282
103
  var url = this.paymentLibService.API_ROOT + "/case-payment-orders?case_ids=" + caseNumber;
283
104
  return this.https.get(url, { withCredentials: true }).pipe(catchError(this.errorHandlerService.handleError));
284
105
  };
285
- /**
286
- * @param {?} orderLevelFees
287
- * @return {?}
288
- */
289
- PaymentViewService.prototype.setOrdersList = /**
290
- * @param {?} orderLevelFees
291
- * @return {?}
292
- */
293
- function (orderLevelFees) {
106
+ PaymentViewService.prototype.setOrdersList = function (orderLevelFees) {
294
107
  this.ordersList.next(Object.assign([], orderLevelFees));
295
108
  };
296
- /**
297
- * @return {?}
298
- */
299
- PaymentViewService.prototype.getOrdersList = /**
300
- * @return {?}
301
- */
302
- function () {
109
+ PaymentViewService.prototype.getOrdersList = function () {
303
110
  return this.ordersList;
304
111
  };
305
112
  //issue refund
306
- //issue refund
307
- /**
308
- * @param {?} body
309
- * @return {?}
310
- */
311
- PaymentViewService.prototype.postRefundsReason =
312
- //issue refund
313
- /**
314
- * @param {?} body
315
- * @return {?}
316
- */
317
- function (body) {
113
+ PaymentViewService.prototype.postRefundsReason = function (body) {
318
114
  return this.https.post(this.paymentLibService.API_ROOT + "/refund-for-payment", body).pipe(catchError(this.errorHandlerService.handleError));
319
115
  };
320
116
  // retro remissions
321
- // retro remissions
322
- /**
323
- * @param {?} paymentGroupReference
324
- * @param {?} feeId
325
- * @param {?} body
326
- * @return {?}
327
- */
328
- PaymentViewService.prototype.postPaymentGroupWithRetroRemissions =
329
- // retro remissions
330
- /**
331
- * @param {?} paymentGroupReference
332
- * @param {?} feeId
333
- * @param {?} body
334
- * @return {?}
335
- */
336
- function (paymentGroupReference, feeId, body) {
117
+ PaymentViewService.prototype.postPaymentGroupWithRetroRemissions = function (paymentGroupReference, feeId, body) {
337
118
  return this.https.post(this.paymentLibService.API_ROOT + "/payment-groups/" + paymentGroupReference + "/fees/" + feeId + "/retro-remission", body).pipe(catchError(this.errorHandlerService.handleError));
338
119
  };
339
- /**
340
- * @param {?} body
341
- * @return {?}
342
- */
343
- PaymentViewService.prototype.postRefundRetroRemission = /**
344
- * @param {?} body
345
- * @return {?}
346
- */
347
- function (body) {
120
+ PaymentViewService.prototype.postRefundRetroRemission = function (body) {
348
121
  return this.https.post(this.paymentLibService.API_ROOT + "/refund-retro-remission", body).pipe(catchError(this.errorHandlerService.handleError));
349
122
  };
350
- /**
351
- * @param {?} paymentReference
352
- * @return {?}
353
- */
354
- PaymentViewService.prototype.getPaymentFailure = /**
355
- * @param {?} paymentReference
356
- * @return {?}
357
- */
358
- function (paymentReference) {
123
+ PaymentViewService.prototype.getPaymentFailure = function (paymentReference) {
359
124
  return this.https.get(this.paymentLibService.API_ROOT + "/payment-failures/" + paymentReference, {
360
125
  withCredentials: true
361
126
  }).pipe(catchError(this.errorHandlerService.handleError));
362
127
  };
128
+ PaymentViewService.ctorParameters = function () { return [
129
+ { type: HttpClient },
130
+ { type: WebComponentHttpClient },
131
+ { type: LoggerService },
132
+ { type: ErrorHandlerService },
133
+ { type: PaymentLibService }
134
+ ]; };
135
+ PaymentViewService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PaymentViewService_Factory() { return new PaymentViewService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.WebComponentHttpClient), i0.ɵɵinject(i3.LoggerService), i0.ɵɵinject(i4.ErrorHandlerService), i0.ɵɵinject(i5.PaymentLibService)); }, token: PaymentViewService, providedIn: "root" });
363
136
  PaymentViewService.decorators = [
364
137
  { type: Injectable, args: [{
365
138
  providedIn: 'root'
366
139
  },] }
367
140
  ];
368
- /** @nocollapse */
369
141
  PaymentViewService.ctorParameters = function () { return [
370
142
  { type: HttpClient },
371
143
  { type: WebComponentHttpClient },
@@ -373,45 +145,7 @@ var PaymentViewService = /** @class */ (function () {
373
145
  { type: ErrorHandlerService },
374
146
  { type: PaymentLibService }
375
147
  ]; };
376
- /** @nocollapse */ PaymentViewService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PaymentViewService_Factory() { return new PaymentViewService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.WebComponentHttpClient), i0.ɵɵinject(i3.LoggerService), i0.ɵɵinject(i4.ErrorHandlerService), i0.ɵɵinject(i5.PaymentLibService)); }, token: PaymentViewService, providedIn: "root" });
377
148
  return PaymentViewService;
378
149
  }());
379
150
  export { PaymentViewService };
380
- if (false) {
381
- /**
382
- * @type {?}
383
- * @private
384
- */
385
- PaymentViewService.prototype.ordersList;
386
- /**
387
- * @type {?}
388
- * @private
389
- */
390
- PaymentViewService.prototype.meta;
391
- /**
392
- * @type {?}
393
- * @private
394
- */
395
- PaymentViewService.prototype.http;
396
- /**
397
- * @type {?}
398
- * @private
399
- */
400
- PaymentViewService.prototype.https;
401
- /**
402
- * @type {?}
403
- * @private
404
- */
405
- PaymentViewService.prototype.logger;
406
- /**
407
- * @type {?}
408
- * @private
409
- */
410
- PaymentViewService.prototype.errorHandlerService;
411
- /**
412
- * @type {?}
413
- * @private
414
- */
415
- PaymentViewService.prototype.paymentLibService;
416
- }
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUkvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBV2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFTdkM7SUFRRSw0QkFBb0IsSUFBZ0IsRUFDaEIsS0FBNkIsRUFDN0IsTUFBcUIsRUFDckIsbUJBQXdDLEVBQ3hDLGlCQUFvQztRQUpwQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBUmhELGVBQVUsR0FBSSxtQkFBdUMsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUEsQ0FBQztJQVF6QixDQUFDOzs7Ozs7SUFFN0QsOENBQWlCOzs7OztJQUFqQixVQUFrQixnQkFBd0IsRUFBRSxhQUFxQjtRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFD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aURBQWdEOzs7OztJQUNoRCwrQ0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQge0lQYXltZW50fSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7UGF5bWVudExpYlNlcnZpY2V9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQ29tcG9uZW50SHR0cENsaWVudCB9IGZyb20gJy4uL3NoYXJlZC9odHRwY2xpZW50L3dlYmNvbXBvbmVudC5odHRwLmNsaWVudCc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtJUGF5bWVudEdyb3VwfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50R3JvdXAnO1xuaW1wb3J0IHsgQWRkUmVtaXNzaW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQWRkUmVtaXNzaW9uUmVxdWVzdCc7XG5pbXBvcnQgeyBQYXltZW50VG9QYXlodWJSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9QYXltZW50VG9QYXlodWJSZXF1ZXN0JztcbmltcG9ydCB7IFBheWh1YkFudGVubmFSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9QYXlodWJBbnRlbm5hUmVxdWVzdCc7XG5pbXBvcnQgeyBVbmlkZW50aWZpZWRQYXltZW50c1JlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1VuaWRlbnRpZmllZFBheW1lbnRzUmVxdWVzdCc7XG5pbXBvcnQgeyBVbnNvbGljaXRlZFBheW1lbnRzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvVW5zb2xpY2l0ZWRQYXltZW50c1JlcXVlc3QnO1xuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWxsb2NhdGVQYXltZW50UmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQWxsb2NhdGVQYXltZW50UmVxdWVzdCc7XG5pbXBvcnQgeyBJQWxsb2NhdGlvblBheW1lbnRzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUFsbG9jYXRpb25QYXltZW50c1JlcXVlc3QnO1xuaW1wb3J0IHtJT3JkZXJSZWZlcmVuY2VGZWV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSU9yZGVyUmVmZXJlbmNlRmVlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXNlcnZpY2VSZXF1ZXN0UGJhUGF5bWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSXNlcnZpY2VSZXF1ZXN0UGJhUGF5bWVudCc7XG5pbXBvcnQgeyBJc2VydmljZVJlcXVlc3RDYXJkUGF5bWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSXNlcnZpY2VSZXF1ZXN0Q2FyZFBheW1lbnQnO1xuaW1wb3J0IHsgUmVmdW5kc1JlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1JlZnVuZHNSZXF1ZXN0JztcbmltcG9ydCB7IEFkZFJldHJvUmVtaXNzaW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQWRkUmV0cm9SZW1pc3Npb25SZXF1ZXN0JztcbmltcG9ydCB7IFBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uJztcbmltcG9ydCB7IFBvc3RJc3N1ZVJlZnVuZFJldHJvUmVtaXNzaW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9Qb3N0SXNzdWVSZWZ1bmRSZXRyb1JlbWlzc2lvbic7XG5pbXBvcnQgeyBlcnJvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy91dGlsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGF5bWVudFZpZXdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBvcmRlcnNMaXN0ICA9IDxCZWhhdmlvclN1YmplY3Q8SU9yZGVyUmVmZXJlbmNlRmVlW10+Pm5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIHByaXZhdGUgbWV0YTogTWV0YTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgaHR0cHM6IFdlYkNvbXBvbmVudEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlclNlcnZpY2U6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcGF5bWVudExpYlNlcnZpY2U6IFBheW1lbnRMaWJTZXJ2aWNlKSB7IH1cblxuICBnZXRQYXltZW50RGV0YWlscyhwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcsIHBheW1lbnRNZXRob2Q6IHN0cmluZyk6IE9ic2VydmFibGU8SVBheW1lbnQ+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdQYXltZW50LXZpZXctc2VydmljZSBnZXRQYXltZW50RGV0YWlscyBmb3I6ICcsIHBheW1lbnRSZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVBheW1lbnQ+KHBheW1lbnRNZXRob2QgPT09ICdjYXJkJyB8fCBwYXltZW50TWV0aG9kID09PSAnY2FzaCcgfHwgcGF5bWVudE1ldGhvZCA9PT0gJ2NoZXF1ZScgfHwgcGF5bWVudE1ldGhvZCA9PT0gJ3Bvc3RhbCBvcmRlcicgP1xuICAgICAgICAgIGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L2NhcmQtcGF5bWVudHMvJHtwYXltZW50UmVmZXJlbmNlfWAgOlxuICAgICAgICAgIGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L2NyZWRpdC1hY2NvdW50LXBheW1lbnRzLyR7cGF5bWVudFJlZmVyZW5jZX1gLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxuICBnZXRQYXltZW50R3JvdXBEZXRhaWxzKHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxJUGF5bWVudEdyb3VwPiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbygnUGF5bWVudC12aWV3LXNlcnZpY2UgZ2V0UGF5bWVudEdyb3VwRGV0YWlscyBmb3I6ICcsIHBheW1lbnRHcm91cFJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJUGF5bWVudD4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGF5bWVudC1ncm91cHMvJHtwYXltZW50R3JvdXBSZWZlcmVuY2V9YCwge1xuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cbiAgZ2V0QXBwb3J0aW9uUGF5bWVudERldGFpbHMocGF5bWVudFJlZmVyZW5jZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxJUGF5bWVudEdyb3VwPiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbygnUGF5bWVudC12aWV3LXNlcnZpY2UgZ2V0UGF5bWVudEdyb3VwRGV0YWlscyBmb3I6ICcsIHBheW1lbnRSZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVBheW1lbnQ+KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZ3JvdXBzL2ZlZS1wYXktYXBwb3J0aW9uLyR7cGF5bWVudFJlZmVyZW5jZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuICBnZXRQQkFhY2NvdW50RGV0YWlscygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BiYS1hY2NvdW50c2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxuICBwb3N0V2F5czJQYXlDYXJkUGF5bWVudChzZXJ2aWNlUmVmOiBzdHJpbmcsIGJvZHk6IElzZXJ2aWNlUmVxdWVzdENhcmRQYXltZW50KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9zZXJ2aWNlLXJlcXVlc3QvJHtzZXJ2aWNlUmVmfS9jYXJkLXBheW1lbnRzYDtcbiAgICBjb25zdCBydXJsID0gdGhpcy5wYXltZW50TGliU2VydmljZS5DQVJEUEFZTUVOVFJFVFVSTlVSTC5yZXBsYWNlKCcucHJvZCcsICcnKTtcbiAgICBib2R5WydyZXR1cm4tdXJsJ10gPSBgJHtydXJsfS9wYXltZW50YDtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KHVybCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiAgXG4gIHBvc3RQQkFhY2NvdW50UGF5bWVudChzZXJ2aWNlUmVmOiBzdHJpbmcsIGJvZHk6IElzZXJ2aWNlUmVxdWVzdFBiYVBheW1lbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCByYW5kb21LZXkgPSAnaWRhbS1rZXktJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zcGxpdCgnLicpLmpvaW4oJy0nKTtcbiAgICBib2R5WydpZGVtcG90ZW5jeV9rZXknXSA9IHJhbmRvbUtleTsgXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vc2VydmljZS1yZXF1ZXN0LyR7c2VydmljZVJlZn0vcGJhLXBheW1lbnRzYDtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KHVybCwgYm9keSk7XG4gIH1cblxuICBwb3N0QlNQYXltZW50cyhib2R5OiBBbGxvY2F0ZVBheW1lbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZ3JvdXBzL2J1bGstc2Nhbi1wYXltZW50c2AsIGJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG4gIHBvc3RCU1VuaWRlbnRpZmllZFBheW1lbnRzKGJvZHk6IFVuaWRlbnRpZmllZFBheW1lbnRzUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWFsbG9jYXRpb25zYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiAgcG9zdEJTVW5zb2xpY2l0ZWRQYXltZW50cyhib2R5OiBVbnNvbGljaXRlZFBheW1lbnRzUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWFsbG9jYXRpb25zYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiAgcG9zdEJTQWxsb2NhdGlvblBheW1lbnRzKGJvZHk6IElBbGxvY2F0aW9uUGF5bWVudHNSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtYWxsb2NhdGlvbnNgLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RQYXltZW50R3JvdXBXaXRoUmVtaXNzaW9ucyhwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZywgZmVlSWQ6IG51bWJlciwgYm9keTogQWRkUmVtaXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWdyb3Vwcy8ke3BheW1lbnRHcm91cFJlZmVyZW5jZX0vZmVlcy8ke2ZlZUlkfS9yZW1pc3Npb25zYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cblxuICBkZWxldGVGZWVGcm9tUGF5bWVudEdyb3VwKGZlZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKCdQYXltZW50LXZpZXctc2VydmljZSBkZWxldGVGZWVGcm9tUGF5bWVudEdyb3VwIGZvcjogJywgZmVlSWQpO1xuICAgIHJldHVybiB0aGlzLmh0dHBzLmRlbGV0ZShgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9mZWVzLyR7ZmVlSWR9YCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiAgcG9zdFBheW1lbnRUb1BheUh1Yihib2R5OiBQYXltZW50VG9QYXlodWJSZXF1ZXN0LCBwYXltZW50R3JvdXBSZWY6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWdyb3Vwcy8ke3BheW1lbnRHcm91cFJlZn0vY2FyZC1wYXltZW50c2AsIGJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG5cbiAgcG9zdFBheW1lbnRBbnRlbm5hVG9QYXlIdWIoYm9keTogUGF5aHViQW50ZW5uYVJlcXVlc3QsIHBheW1lbnRHcm91cFJlZjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZ3JvdXBzLyR7cGF5bWVudEdyb3VwUmVmfS90ZWxlcGhvbnktY2FyZC1wYXltZW50c2AsIGJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG4gIGRvd25sb2FkU2VsZWN0ZWRSZXBvcnQocmVwb3J0TmFtZTogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTpzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3JlcG9ydC9kYXRhP2RhdGVfZnJvbT0ke3N0YXJ0RGF0ZX0mZGF0ZV90bz0ke2VuZERhdGV9JnJlcG9ydF90eXBlPSR7cmVwb3J0TmFtZX1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBzLmdldCh1cmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKSk7XG4gIH1cbiAgZG93bmxvYWRGYWlsdXJlUmVwb3J0KHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOnN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGF5bWVudC1mYWlsdXJlcy9mYWlsdXJlLXJlcG9ydD9kYXRlX2Zyb209JHtzdGFydERhdGV9JmRhdGVfdG89JHtlbmREYXRlfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMuZ2V0KHVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZSggY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpKTtcbiAgfVxuICBnZXRCU2ZlYXR1cmUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5nZXQoJ2FwaS9wYXltZW50LWhpc3RvcnkvYnVsay1zY2FuLWZlYXR1cmUnLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKCBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcikpO1xuICB9XG4gIGdldFNpdGVJRCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLmdldCgnYXBpL3BheW1lbnQtaGlzdG9yeS9yZWZkYXRhL2xlZ2FjeS1zaXRlcycsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKSk7XG4gIH1cbiAgZ2V0UGFydHlEZXRhaWxzKGNhc2VOdW1iZXI6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vY2FzZS1wYXltZW50LW9yZGVycz9jYXNlX2lkcz0ke2Nhc2VOdW1iZXJ9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5nZXQodXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKCBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcikpO1xuICB9XG4gIFxuICBzZXRPcmRlcnNMaXN0KG9yZGVyTGV2ZWxGZWVzOiBJT3JkZXJSZWZlcmVuY2VGZWVbXSk6IHZvaWQge1xuICAgIHRoaXMub3JkZXJzTGlzdC5uZXh0KE9iamVjdC5hc3NpZ24oW10sIG9yZGVyTGV2ZWxGZWVzKSk7XG59XG4gIGdldE9yZGVyc0xpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JkZXJzTGlzdDtcbiAgfVxuXG4gIC8vaXNzdWUgcmVmdW5kXG4gIHBvc3RSZWZ1bmRzUmVhc29uKGJvZHk6IFBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9yZWZ1bmQtZm9yLXBheW1lbnRgLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIC8vIHJldHJvIHJlbWlzc2lvbnNcbiAgcG9zdFBheW1lbnRHcm91cFdpdGhSZXRyb1JlbWlzc2lvbnMocGF5bWVudEdyb3VwUmVmZXJlbmNlOiBzdHJpbmcsIGZlZUlkOiBudW1iZXIsIGJvZHk6IEFkZFJldHJvUmVtaXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWdyb3Vwcy8ke3BheW1lbnRHcm91cFJlZmVyZW5jZX0vZmVlcy8ke2ZlZUlkfS9yZXRyby1yZW1pc3Npb25gLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbihib2R5OlBvc3RJc3N1ZVJlZnVuZFJldHJvUmVtaXNzaW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9yZWZ1bmQtcmV0cm8tcmVtaXNzaW9uYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiBnZXRQYXltZW50RmFpbHVyZShwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLmdldChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWZhaWx1cmVzLyR7cGF5bWVudFJlZmVyZW5jZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxufVxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSS9ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFXaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVN2QztJQVFFLDRCQUFvQixJQUFnQixFQUNoQixLQUE2QixFQUM3QixNQUFxQixFQUNyQixtQkFBd0MsRUFDeEMsaUJBQW9DO1FBSnBDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFSaEQsZUFBVSxHQUEyQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQVF6QixDQUFDO0lBRTdELDhDQUFpQixHQUFqQixVQUFrQixnQkFBd0IsRUFBRSxhQUFxQjtRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4Q0FB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RUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzNJLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRUQscURBQXdCLEdBQXhCLFVBQXlCLElBQWtDO1FBQ3pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsNEJBQXlCLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM1RixVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUNGLDhDQUFpQixHQUFqQixVQUFrQixnQkFBd0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSwwQkFBcUIsZ0JBQWtCLEVBQUU7WUFDL0YsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQzs7Z0JBN0p5QixVQUFVO2dCQUNULHNCQUFzQjtnQkFDckIsYUFBYTtnQkFDQSxtQkFBbUI7Z0JBQ3JCLGlCQUFpQjs7OztnQkFaekQsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7O2dCQTlCUSxVQUFVO2dCQUtWLHNCQUFzQjtnQkFHdEIsYUFBYTtnQkFGYixtQkFBbUI7Z0JBRnBCLGlCQUFpQjs7NkJBTHpCO0NBbU1DLEFBdEtELElBc0tDO1NBbktZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7SVBheW1lbnR9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHtQYXltZW50TGliU2VydmljZX0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuc2VydmljZSc7XG5pbXBvcnQgeyBXZWJDb21wb25lbnRIdHRwQ2xpZW50IH0gZnJvbSAnLi4vc2hhcmVkL2h0dHBjbGllbnQvd2ViY29tcG9uZW50Lmh0dHAuY2xpZW50JztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0lQYXltZW50R3JvdXB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnRHcm91cCc7XG5pbXBvcnQgeyBBZGRSZW1pc3Npb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9BZGRSZW1pc3Npb25SZXF1ZXN0JztcbmltcG9ydCB7IFBheW1lbnRUb1BheWh1YlJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1BheW1lbnRUb1BheWh1YlJlcXVlc3QnO1xuaW1wb3J0IHsgUGF5aHViQW50ZW5uYVJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1BheWh1YkFudGVubmFSZXF1ZXN0JztcbmltcG9ydCB7IFVuaWRlbnRpZmllZFBheW1lbnRzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvVW5pZGVudGlmaWVkUGF5bWVudHNSZXF1ZXN0JztcbmltcG9ydCB7IFVuc29saWNpdGVkUGF5bWVudHNSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9VbnNvbGljaXRlZFBheW1lbnRzUmVxdWVzdCc7XG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBbGxvY2F0ZVBheW1lbnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9BbGxvY2F0ZVBheW1lbnRSZXF1ZXN0JztcbmltcG9ydCB7IElBbGxvY2F0aW9uUGF5bWVudHNSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JQWxsb2NhdGlvblBheW1lbnRzUmVxdWVzdCc7XG5pbXBvcnQge0lPcmRlclJlZmVyZW5jZUZlZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JT3JkZXJSZWZlcmVuY2VGZWUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJc2VydmljZVJlcXVlc3RQYmFQYXltZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9Jc2VydmljZVJlcXVlc3RQYmFQYXltZW50JztcbmltcG9ydCB7IElzZXJ2aWNlUmVxdWVzdENhcmRQYXltZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9Jc2VydmljZVJlcXVlc3RDYXJkUGF5bWVudCc7XG5pbXBvcnQgeyBSZWZ1bmRzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUmVmdW5kc1JlcXVlc3QnO1xuaW1wb3J0IHsgQWRkUmV0cm9SZW1pc3Npb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9BZGRSZXRyb1JlbWlzc2lvblJlcXVlc3QnO1xuaW1wb3J0IHsgUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9Qb3N0UmVmdW5kUmV0cm9SZW1pc3Npb24nO1xuaW1wb3J0IHsgUG9zdElzc3VlUmVmdW5kUmV0cm9SZW1pc3Npb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1Bvc3RJc3N1ZVJlZnVuZFJldHJvUmVtaXNzaW9uJztcbmltcG9ydCB7IGVycm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL3V0aWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQYXltZW50Vmlld1NlcnZpY2Uge1xuICBwcml2YXRlIG9yZGVyc0xpc3QgID0gPEJlaGF2aW9yU3ViamVjdDxJT3JkZXJSZWZlcmVuY2VGZWVbXT4+bmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgcHJpdmF0ZSBtZXRhOiBNZXRhO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBodHRwczogV2ViQ29tcG9uZW50SHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyU2VydmljZTogRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwYXltZW50TGliU2VydmljZTogUGF5bWVudExpYlNlcnZpY2UpIHsgfVxuXG4gIGdldFBheW1lbnREZXRhaWxzKHBheW1lbnRSZWZlcmVuY2U6IHN0cmluZywgcGF5bWVudE1ldGhvZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJUGF5bWVudD4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oJ1BheW1lbnQtdmlldy1zZXJ2aWNlIGdldFBheW1lbnREZXRhaWxzIGZvcjogJywgcGF5bWVudFJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJUGF5bWVudD4ocGF5bWVudE1ldGhvZCA9PT0gJ2NhcmQnIHx8IHBheW1lbnRNZXRob2QgPT09ICdjYXNoJyB8fCBwYXltZW50TWV0aG9kID09PSAnY2hlcXVlJyB8fCBwYXltZW50TWV0aG9kID09PSAncG9zdGFsIG9yZGVyJyA/XG4gICAgICAgICAgYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vY2FyZC1wYXltZW50cy8ke3BheW1lbnRSZWZlcmVuY2V9YCA6XG4gICAgICAgICAgYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vY3JlZGl0LWFjY291bnQtcGF5bWVudHMvJHtwYXltZW50UmVmZXJlbmNlfWAsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFBheW1lbnRHcm91cERldGFpbHMocGF5bWVudEdyb3VwUmVmZXJlbmNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElQYXltZW50R3JvdXA+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdQYXltZW50LXZpZXctc2VydmljZSBnZXRQYXltZW50R3JvdXBEZXRhaWxzIGZvcjogJywgcGF5bWVudEdyb3VwUmVmZXJlbmNlKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PElQYXltZW50PihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWdyb3Vwcy8ke3BheW1lbnRHcm91cFJlZmVyZW5jZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuICBnZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyhwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElQYXltZW50R3JvdXA+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdQYXltZW50LXZpZXctc2VydmljZSBnZXRQYXltZW50R3JvdXBEZXRhaWxzIGZvcjogJywgcGF5bWVudFJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJUGF5bWVudD4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGF5bWVudC1ncm91cHMvZmVlLXBheS1hcHBvcnRpb24vJHtwYXltZW50UmVmZXJlbmNlfWAsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgICApO1xuICB9XG4gIGdldFBCQWFjY291bnREZXRhaWxzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGJhLWFjY291bnRzYDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIHBvc3RXYXlzMlBheUNhcmRQYXltZW50KHNlcnZpY2VSZWY6IHN0cmluZywgYm9keTogSXNlcnZpY2VSZXF1ZXN0Q2FyZFBheW1lbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3NlcnZpY2UtcmVxdWVzdC8ke3NlcnZpY2VSZWZ9L2NhcmQtcGF5bWVudHNgO1xuICAgIGNvbnN0IHJ1cmwgPSB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkNBUkRQQVlNRU5UUkVUVVJOVVJMLnJlcGxhY2UoJy5wcm9kJywgJycpO1xuICAgIGJvZHlbJ3JldHVybi11cmwnXSA9IGAke3J1cmx9L3BheW1lbnRgO1xuICAgIHJldHVybiB0aGlzLmh0dHBzLnBvc3QodXJsLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuICBcbiAgcG9zdFBCQWFjY291bnRQYXltZW50KHNlcnZpY2VSZWY6IHN0cmluZywgYm9keTogSXNlcnZpY2VSZXF1ZXN0UGJhUGF5bWVudCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHJhbmRvbUtleSA9ICdpZGFtLWtleS0nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnNwbGl0KCcuJykuam9pbignLScpO1xuICAgIGJvZHlbJ2lkZW1wb3RlbmN5X2tleSddID0gcmFuZG9tS2V5OyBcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9zZXJ2aWNlLXJlcXVlc3QvJHtzZXJ2aWNlUmVmfS9wYmEtcGF5bWVudHNgO1xuICAgIHJldHVybiB0aGlzLmh0dHBzLnBvc3QodXJsLCBib2R5KTtcbiAgfVxuXG4gIHBvc3RCU1BheW1lbnRzKGJvZHk6IEFsbG9jYXRlUGF5bWVudFJlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLnBvc3QoYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGF5bWVudC1ncm91cHMvYnVsay1zY2FuLXBheW1lbnRzYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiAgcG9zdEJTVW5pZGVudGlmaWVkUGF5bWVudHMoYm9keTogVW5pZGVudGlmaWVkUGF5bWVudHNSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtYWxsb2NhdGlvbnNgLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuICBwb3N0QlNVbnNvbGljaXRlZFBheW1lbnRzKGJvZHk6IFVuc29saWNpdGVkUGF5bWVudHNSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtYWxsb2NhdGlvbnNgLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuICBwb3N0QlNBbGxvY2F0aW9uUGF5bWVudHMoYm9keTogSUFsbG9jYXRpb25QYXltZW50c1JlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLnBvc3QoYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGF5bWVudC1hbGxvY2F0aW9uc2AsIGJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG5cbiAgcG9zdFBheW1lbnRHcm91cFdpdGhSZW1pc3Npb25zKHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nLCBmZWVJZDogbnVtYmVyLCBib2R5OiBBZGRSZW1pc3Npb25SZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZ3JvdXBzLyR7cGF5bWVudEdyb3VwUmVmZXJlbmNlfS9mZWVzLyR7ZmVlSWR9L3JlbWlzc2lvbnNgLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZUZlZUZyb21QYXltZW50R3JvdXAoZmVlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ1BheW1lbnQtdmlldy1zZXJ2aWNlIGRlbGV0ZUZlZUZyb21QYXltZW50R3JvdXAgZm9yOiAnLCBmZWVJZCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMuZGVsZXRlKGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L2ZlZXMvJHtmZWVJZH1gKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuICBwb3N0UGF5bWVudFRvUGF5SHViKGJvZHk6IFBheW1lbnRUb1BheWh1YlJlcXVlc3QsIHBheW1lbnRHcm91cFJlZjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZ3JvdXBzLyR7cGF5bWVudEdyb3VwUmVmfS9jYXJkLXBheW1lbnRzYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cblxuICBwb3N0UGF5bWVudEFudGVubmFUb1BheUh1Yihib2R5OiBQYXlodWJBbnRlbm5hUmVxdWVzdCwgcGF5bWVudEdyb3VwUmVmOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLnBvc3QoYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcGF5bWVudC1ncm91cHMvJHtwYXltZW50R3JvdXBSZWZ9L3RlbGVwaG9ueS1jYXJkLXBheW1lbnRzYCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cbiAgZG93bmxvYWRTZWxlY3RlZFJlcG9ydChyZXBvcnROYW1lOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOnN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5BUElfUk9PVH0vcmVwb3J0L2RhdGE/ZGF0ZV9mcm9tPSR7c3RhcnREYXRlfSZkYXRlX3RvPSR7ZW5kRGF0ZX0mcmVwb3J0X3R5cGU9JHtyZXBvcnROYW1lfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMuZ2V0KHVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZSggY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpKTtcbiAgfVxuICBkb3dubG9hZEZhaWx1cmVSZXBvcnQoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9wYXltZW50LWZhaWx1cmVzL2ZhaWx1cmUtcmVwb3J0P2RhdGVfZnJvbT0ke3N0YXJ0RGF0ZX0mZGF0ZV90bz0ke2VuZERhdGV9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5nZXQodXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKCBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcikpO1xuICB9XG4gIGdldEJTZmVhdHVyZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLmdldCgnYXBpL3BheW1lbnQtaGlzdG9yeS9idWxrLXNjYW4tZmVhdHVyZScsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKSk7XG4gIH1cbiAgZ2V0U2l0ZUlEKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMuZ2V0KCdhcGkvcGF5bWVudC1oaXN0b3J5L3JlZmRhdGEvbGVnYWN5LXNpdGVzJywgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZSggY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpKTtcbiAgfVxuICBnZXRQYXJ0eURldGFpbHMoY2FzZU51bWJlcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLkFQSV9ST09UfS9jYXNlLXBheW1lbnQtb3JkZXJzP2Nhc2VfaWRzPSR7Y2FzZU51bWJlcn1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBzLmdldCh1cmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKSk7XG4gIH1cbiAgXG4gIHNldE9yZGVyc0xpc3Qob3JkZXJMZXZlbEZlZXM6IElPcmRlclJlZmVyZW5jZUZlZVtdKTogdm9pZCB7XG4gICAgdGhpcy5vcmRlcnNMaXN0Lm5leHQoT2JqZWN0LmFzc2lnbihbXSwgb3JkZXJMZXZlbEZlZXMpKTtcbn1cbiAgZ2V0T3JkZXJzTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcmRlcnNMaXN0O1xuICB9XG5cbiAgLy9pc3N1ZSByZWZ1bmRcbiAgcG9zdFJlZnVuZHNSZWFzb24oYm9keTogUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3JlZnVuZC1mb3ItcGF5bWVudGAsIGJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG5cbiAgLy8gcmV0cm8gcmVtaXNzaW9uc1xuICBwb3N0UGF5bWVudEdyb3VwV2l0aFJldHJvUmVtaXNzaW9ucyhwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZywgZmVlSWQ6IG51bWJlciwgYm9keTogQWRkUmV0cm9SZW1pc3Npb25SZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZ3JvdXBzLyR7cGF5bWVudEdyb3VwUmVmZXJlbmNlfS9mZWVzLyR7ZmVlSWR9L3JldHJvLXJlbWlzc2lvbmAsIGJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG5cbiAgcG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uKGJvZHk6UG9zdElzc3VlUmVmdW5kUmV0cm9SZW1pc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwcy5wb3N0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3JlZnVuZC1yZXRyby1yZW1pc3Npb25gLCBib2R5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuIGdldFBheW1lbnRGYWlsdXJlKHBheW1lbnRSZWZlcmVuY2U6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cHMuZ2V0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuQVBJX1JPT1R9L3BheW1lbnQtZmFpbHVyZXMvJHtwYXltZW50UmVmZXJlbmNlfWAsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgIH0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xuICB9XG59XG4iXX0=