@colijnit/transaction 12.1.72 → 12.1.73

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 (54) hide show
  1. package/bundles/colijnit-transaction.umd.js +396 -176
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/assets/dictionary/text.properties.js +37 -1
  5. package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +17 -4
  6. package/esm2015/lib/component/checkout/checkout.component.js +11 -6
  7. package/esm2015/lib/component/core/base/transaction-filter-content-base.component.js +3 -2
  8. package/esm2015/lib/component/core/base/transaction-line-base.component.js +4 -3
  9. package/esm2015/lib/component/relation/relation-base.component.js +4 -1
  10. package/esm2015/lib/component/relation/relation-general/relation-general.component.js +6 -4
  11. package/esm2015/lib/component/transaction-confirmation-details/transaction-confirmation-details.component.js +4 -23
  12. package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.js +2 -4
  13. package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +10 -3
  14. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +14 -4
  15. package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.js +1 -4
  16. package/esm2015/lib/component/transaction-search/transaction-filter-content/enum/search-placeholder.enum.js +27 -0
  17. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.component.js +7 -3
  18. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.js +6 -3
  19. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.component.js +8 -3
  20. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.component.js +23 -18
  21. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.js +133 -130
  22. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.component.js +44 -38
  23. package/esm2015/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.js +3 -2
  24. package/esm2015/lib/service/error.service.js +17 -1
  25. package/esm2015/lib/service/pending-reason.service.js +17 -11
  26. package/esm2015/lib/service/relation-connector.service.js +31 -1
  27. package/esm2015/lib/service/relation.service.js +40 -2
  28. package/esm2015/lib/service/transaction-connector-adapter.service.js +17 -1
  29. package/esm2015/lib/service/transaction-connector.service.js +6 -1
  30. package/esm2015/lib/service/transaction.service.js +14 -5
  31. package/fesm2015/colijnit-transaction.js +565 -343
  32. package/fesm2015/colijnit-transaction.js.map +1 -1
  33. package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +8 -4
  34. package/lib/component/checkout/checkout.component.d.ts +2 -0
  35. package/lib/component/core/base/transaction-filter-content-base.component.d.ts +2 -1
  36. package/lib/component/relation/relation-base.component.d.ts +3 -1
  37. package/lib/component/relation/relation-general/relation-general.component.d.ts +2 -0
  38. package/lib/component/relation/relation-general/style/_layout.scss +1 -0
  39. package/lib/component/transaction-confirmation-details/style/_layout.scss +0 -16
  40. package/lib/component/transaction-confirmation-details/transaction-confirmation-details.component.d.ts +0 -4
  41. package/lib/component/transaction-confirmation-history/style/_layout.scss +0 -4
  42. package/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.d.ts +1 -0
  43. package/lib/component/transaction-line-fields/transaction-line-supplier-button.component.d.ts +1 -0
  44. package/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.d.ts +0 -1
  45. package/lib/component/transaction-search/transaction-filter-content/enum/search-placeholder.enum.d.ts +25 -0
  46. package/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.d.ts +1 -1
  47. package/lib/service/pending-reason.service.d.ts +8 -7
  48. package/lib/service/relation-connector.service.d.ts +2 -0
  49. package/lib/service/relation.service.d.ts +7 -0
  50. package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
  51. package/lib/service/transaction-connector.service.d.ts +1 -0
  52. package/lib/service/transaction.service.d.ts +1 -0
  53. package/lib/style/transaction-globals.scss +3 -43
  54. package/package.json +3 -3
@@ -58,9 +58,10 @@ TransactionSalesOrderFilterContentLogisticsComponent.decorators = [
58
58
  <!--Levermethode-->
59
59
  <div class="filter-item-wrapper" lazyRender #lazyRenderDeliveryMethod="lazyRender">
60
60
  <co-transaction-filter-item *ngIf="lazyRenderDeliveryMethod.isShowing"
61
- [placeholder]="'DELIVERY_METHOD'"
62
- [collection]="deliveryMethods"
63
- (collectionChange)="filterRequestService.handleCollectionChangeForRange($event, 'rangeDeliveryMethod')"
61
+ [placeholder]="'DELIVERY_METHOD'"
62
+ [collection]="deliveryMethods"
63
+ [searchCollectionPlaceholder]="searchPlaceholder.DeliveryMethod"
64
+ (collectionChange)="filterRequestService.handleCollectionChangeForRange($event, 'rangeDeliveryMethod')"
64
65
  >
65
66
  </co-transaction-filter-item>
66
67
  </div>
@@ -69,8 +70,8 @@ TransactionSalesOrderFilterContentLogisticsComponent.decorators = [
69
70
  <!--Leverdatum definitief-->
70
71
  <div class="filter-item-wrapper" lazyRender #lazyRenderDeliveryDateFinal="lazyRender">
71
72
  <co-transaction-filter-item *ngIf="lazyRenderDeliveryDateFinal.isShowing"
72
- [placeholder]="'DELIVERY_DATE_FINAL'"
73
- [customContent]="true"
73
+ [placeholder]="'DELIVERY_DATE_FINAL'"
74
+ [customContent]="true"
74
75
  >
75
76
  <co-input-checkbox
76
77
  [model]="searchRequest.deliveryDateDefinitive === 'J'"
@@ -93,131 +94,133 @@ TransactionSalesOrderFilterContentLogisticsComponent.decorators = [
93
94
  [label]="'DELIVERED'"
94
95
  (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityDelivered')"
95
96
  ></co-transaction-filter-historic-state>
96
- </div>
97
-
98
- <!--Gefactureerd-->
99
- <div class="filter-item-wrapper" lazyRender #lazyRenderInvoiced="lazyRender">
100
- <co-transaction-filter-historic-state *ngIf="lazyRenderInvoiced.isShowing"
101
- [label]="'INVOICED'"
102
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityInvoiced')"
103
- ></co-transaction-filter-historic-state>
104
- </div>
105
-
106
- <!--Te picken-->
107
- <div class="filter-item-wrapper" lazyRender #lazyRenderToBePicked="lazyRender">
108
- <co-transaction-filter-historic-state *ngIf="lazyRenderToBePicked.isShowing"
109
- [label]="'TO_BE_PICKED'"
110
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityToBePicked')"
111
- ></co-transaction-filter-historic-state>
112
- </div>
113
-
114
- <!--Gepicked-->
115
- <div class="filter-item-wrapper" lazyRender #lazyRenderPicked="lazyRender">
116
- <co-transaction-filter-historic-state *ngIf="lazyRenderPicked.isShowing"
117
- [label]="'PICKED'"
118
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityPicked')"
119
- ></co-transaction-filter-historic-state>
120
- </div>
121
-
122
- <!--Bevestigde leverdatum-->
123
- <div class="filter-item-wrapper" lazyRender #lazyRenderConfirmedDeliveryDate="lazyRender">
124
- <co-transaction-filter-item *ngIf="lazyRenderConfirmedDeliveryDate.isShowing"
125
- [placeholder]="'CONFIRMED_DELIVERY_DATE'"
126
- [customContent]="true">
127
- <co-input-date-range
128
- [startDate]="confirmedDeliveryStartDate"
129
- [endDate]="confirmedDeliveryEndDate"
130
- (dateRangeChange)="onDateRangeChange($event, 'confirmedDeliveryDateRange')"
131
- (cleared)="onClearedDateRangeChange('confirmedDeliveryDateRange')"
132
- [placeholder]="'SELECT_DATE' | localize">
133
- </co-input-date-range>
134
- </co-transaction-filter-item>
135
- </div>
136
-
137
- <!--Aankomstdatum-->
138
- <div class="filter-item-wrapper" lazyRender #lazyRenderArrivalDate="lazyRender">
139
- <co-transaction-filter-item *ngIf="lazyRenderArrivalDate.isShowing"
140
- [placeholder]="'ARRIVAL_DATE'"
141
- [customContent]="true">
142
- <co-input-date-range
143
- [startDate]="arrivalStartDate"
144
- [endDate]="arrivalEndDate"
145
- (dateRangeChange)="onDateRangeChange($event, 'arrivalDateRange')"
146
- (cleared)="onClearedDateRangeChange('arrivalDateRange')"
147
- [placeholder]="'SELECT_DATE' | localize">
148
- </co-input-date-range>
149
- </co-transaction-filter-item>
150
- </div>
151
-
152
- <!--Deellevering-->
153
- <div class="filter-item-wrapper" lazyRender #lazyRenderPartialDelivery="lazyRender">
154
- <co-transaction-filter-item *ngIf="lazyRenderPartialDelivery.isShowing"
155
- [placeholder]="'PART_DELIVERY'"
156
- [customContent]="true">
157
- <co-input-checkbox
158
- [model]="searchRequest.partialDelivery === 'J'"
159
- (modelChange)="filterRequestService.handleCheckboxValueChangeForString($event, 'partialDelivery')"
160
- [label]="'PART_DELIVERY' | localize">
161
- </co-input-checkbox>
162
- </co-transaction-filter-item>
163
- </div>
164
-
165
- <!--Magazijn -->
166
- <div class="filter-item-wrapper" lazyRender #lazyRenderWarehouse="lazyRender">
167
- <co-transaction-filter-item *ngIf="lazyRenderWarehouse.isShowing"
168
- [placeholder]="'WAREHOUSE'"
169
- [singleSelect]="true"
170
- [collection]="warehouses"
171
- (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'warehouse')">
172
- </co-transaction-filter-item>
173
- </div>
174
-
175
- <!--Bron magazijn-->
176
- <div class="filter-item-wrapper" lazyRender #lazyRenderSourceWarehouse="lazyRender">
177
- <co-transaction-filter-item *ngIf="lazyRenderSourceWarehouse.isShowing"
178
- [placeholder]="'SOURCE_WAREHOUSE'"
179
- [singleSelect]="true"
180
- [collection]="sourceWarehouses"
181
- (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'sourceWarehouse')">
182
- </co-transaction-filter-item>
183
- </div>
184
-
185
- <!--Serienummer -->
186
- <div class="filter-item-wrapper" lazyRender #lazyRenderSerialNumber="lazyRender">
187
- <co-transaction-filter-item *ngIf="lazyRenderSerialNumber.isShowing"
188
- [placeholder]="'SERIAL_NUMBER'"
189
- [customContent]="true">
190
- <co-input-text [(model)]="searchRequest.serialNumber"
191
- [placeholder]="searchPlaceholder | localize"></co-input-text>
192
- </co-transaction-filter-item>
193
- </div>
194
-
195
- <!--Batchnummer -->
196
- <div class="filter-item-wrapper" lazyRender #lazyRenderBatchNumber="lazyRender">
197
- <co-transaction-filter-item *ngIf="lazyRenderBatchNumber.isShowing"
198
- [placeholder]="'BATCH_NUMBER'"
199
- [customContent]="true">
200
- <co-input-text [(model)]="searchRequest.batchNumber"
201
- [placeholder]="searchPlaceholder | localize"></co-input-text>
202
- </co-transaction-filter-item>
203
- </div>
204
-
205
- <!--Inclusief retouren-->
206
- <div class="filter-item-wrapper" lazyRender #lazyRenderIncludingReturns="lazyRender">
207
- <co-transaction-filter-item *ngIf="lazyRenderIncludingReturns.isShowing"
208
- [placeholder]="'INCLUDING_RETURNS'"
209
- [customContent]="true">
210
- <co-input-checkbox
211
- [label]="'INCLUDING_RETURNS' | localize"
212
- [model]="searchRequest.includingReturns === 1"
213
- (modelChange)="filterRequestService.handleCheckboxValueChangeForNumber($event, 'includingReturns')"
214
- >
215
- </co-input-checkbox>
216
- </co-transaction-filter-item>
217
- </div>
218
-
219
- <!--Levermethode op (regel/header): todo: nog uitzoeken welke filter dit is-->
220
97
  </div>
98
+
99
+ <!--Gefactureerd-->
100
+ <div class="filter-item-wrapper" lazyRender #lazyRenderInvoiced="lazyRender">
101
+ <co-transaction-filter-historic-state *ngIf="lazyRenderInvoiced.isShowing"
102
+ [label]="'INVOICED'"
103
+ (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityInvoiced')"
104
+ ></co-transaction-filter-historic-state>
105
+ </div>
106
+
107
+ <!--Te picken-->
108
+ <div class="filter-item-wrapper" lazyRender #lazyRenderToBePicked="lazyRender">
109
+ <co-transaction-filter-historic-state *ngIf="lazyRenderToBePicked.isShowing"
110
+ [label]="'TO_BE_PICKED'"
111
+ (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityToBePicked')"
112
+ ></co-transaction-filter-historic-state>
113
+ </div>
114
+
115
+ <!--Gepicked-->
116
+ <div class="filter-item-wrapper" lazyRender #lazyRenderPicked="lazyRender">
117
+ <co-transaction-filter-historic-state *ngIf="lazyRenderPicked.isShowing"
118
+ [label]="'PICKED'"
119
+ (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityPicked')"
120
+ ></co-transaction-filter-historic-state>
121
+ </div>
122
+
123
+ <!--Bevestigde leverdatum-->
124
+ <div class="filter-item-wrapper" lazyRender #lazyRenderConfirmedDeliveryDate="lazyRender">
125
+ <co-transaction-filter-item *ngIf="lazyRenderConfirmedDeliveryDate.isShowing"
126
+ [placeholder]="'CONFIRMED_DELIVERY_DATE'"
127
+ [customContent]="true">
128
+ <co-input-date-range
129
+ [startDate]="confirmedDeliveryStartDate"
130
+ [endDate]="confirmedDeliveryEndDate"
131
+ (dateRangeChange)="onDateRangeChange($event, 'confirmedDeliveryDateRange')"
132
+ (cleared)="onClearedDateRangeChange('confirmedDeliveryDateRange')"
133
+ [placeholder]="'SELECT_DATE' | localize">
134
+ </co-input-date-range>
135
+ </co-transaction-filter-item>
136
+ </div>
137
+
138
+ <!--Aankomstdatum-->
139
+ <div class="filter-item-wrapper" lazyRender #lazyRenderArrivalDate="lazyRender">
140
+ <co-transaction-filter-item *ngIf="lazyRenderArrivalDate.isShowing"
141
+ [placeholder]="'ARRIVAL_DATE'"
142
+ [customContent]="true">
143
+ <co-input-date-range
144
+ [startDate]="arrivalStartDate"
145
+ [endDate]="arrivalEndDate"
146
+ (dateRangeChange)="onDateRangeChange($event, 'arrivalDateRange')"
147
+ (cleared)="onClearedDateRangeChange('arrivalDateRange')"
148
+ [placeholder]="'SELECT_DATE' | localize">
149
+ </co-input-date-range>
150
+ </co-transaction-filter-item>
151
+ </div>
152
+
153
+ <!--Deellevering-->
154
+ <div class="filter-item-wrapper" lazyRender #lazyRenderPartialDelivery="lazyRender">
155
+ <co-transaction-filter-item *ngIf="lazyRenderPartialDelivery.isShowing"
156
+ [placeholder]="'PART_DELIVERY'"
157
+ [customContent]="true">
158
+ <co-input-checkbox
159
+ [model]="searchRequest.partialDelivery === 'J'"
160
+ (modelChange)="filterRequestService.handleCheckboxValueChangeForString($event, 'partialDelivery')"
161
+ [label]="'PART_DELIVERY' | localize">
162
+ </co-input-checkbox>
163
+ </co-transaction-filter-item>
164
+ </div>
165
+
166
+ <!--Magazijn -->
167
+ <div class="filter-item-wrapper" lazyRender #lazyRenderWarehouse="lazyRender">
168
+ <co-transaction-filter-item *ngIf="lazyRenderWarehouse.isShowing"
169
+ [placeholder]="'WAREHOUSE'"
170
+ [singleSelect]="true"
171
+ [collection]="warehouses"
172
+ [searchCollectionPlaceholder]="searchPlaceholder.Warehouse"
173
+ (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'warehouse')">
174
+ </co-transaction-filter-item>
175
+ </div>
176
+
177
+ <!--Bron magazijn-->
178
+ <div class="filter-item-wrapper" lazyRender #lazyRenderSourceWarehouse="lazyRender">
179
+ <co-transaction-filter-item *ngIf="lazyRenderSourceWarehouse.isShowing"
180
+ [placeholder]="'SOURCE_WAREHOUSE'"
181
+ [singleSelect]="true"
182
+ [collection]="sourceWarehouses"
183
+ [searchCollectionPlaceholder]="searchPlaceholder.SourceWarehouse"
184
+ (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'sourceWarehouse')">
185
+ </co-transaction-filter-item>
186
+ </div>
187
+
188
+ <!--Serienummer -->
189
+ <div class="filter-item-wrapper" lazyRender #lazyRenderSerialNumber="lazyRender">
190
+ <co-transaction-filter-item *ngIf="lazyRenderSerialNumber.isShowing"
191
+ [placeholder]="'SERIAL_NUMBER'"
192
+ [customContent]="true">
193
+ <co-input-text [(model)]="searchRequest.serialNumber"
194
+ [placeholder]="searchPlaceholder.SerialNumber | localize"></co-input-text>
195
+ </co-transaction-filter-item>
196
+ </div>
197
+
198
+ <!--Batchnummer -->
199
+ <div class="filter-item-wrapper" lazyRender #lazyRenderBatchNumber="lazyRender">
200
+ <co-transaction-filter-item *ngIf="lazyRenderBatchNumber.isShowing"
201
+ [placeholder]="'BATCH_NUMBER'"
202
+ [customContent]="true">
203
+ <co-input-text [(model)]="searchRequest.batchNumber"
204
+ [placeholder]="searchPlaceholder.BatchNumber | localize"></co-input-text>
205
+ </co-transaction-filter-item>
206
+ </div>
207
+
208
+ <!--Inclusief retouren-->
209
+ <div class="filter-item-wrapper" lazyRender #lazyRenderIncludingReturns="lazyRender">
210
+ <co-transaction-filter-item *ngIf="lazyRenderIncludingReturns.isShowing"
211
+ [placeholder]="'INCLUDING_RETURNS'"
212
+ [customContent]="true">
213
+ <co-input-checkbox
214
+ [label]="'INCLUDING_RETURNS' | localize"
215
+ [model]="searchRequest.includingReturns === 1"
216
+ (modelChange)="filterRequestService.handleCheckboxValueChangeForNumber($event, 'includingReturns')"
217
+ >
218
+ </co-input-checkbox>
219
+ </co-transaction-filter-item>
220
+ </div>
221
+
222
+ <!--Levermethode op (regel/header): todo: nog uitzoeken welke filter dit is-->
223
+ </div>
221
224
  `
222
225
  },] }
223
226
  ];
@@ -229,4 +232,4 @@ TransactionSalesOrderFilterContentLogisticsComponent.ctorParameters = () => [
229
232
  TransactionSalesOrderFilterContentLogisticsComponent.propDecorators = {
230
233
  showClass: [{ type: HostBinding, args: ["class.co-transaction-search-filter-content",] }]
231
234
  };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC9zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC90cmFuc2FjdGlvbi1zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC1sb2dpc3RpY3MvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUE0S3ZGLE1BQU0sT0FBTyxvREFBcUQsU0FBUSxxQ0FBcUM7SUFzQjdHLFlBQ1MsYUFBdUMsRUFDdkMsb0JBQTBDLEVBQzFDLGtCQUFzQztRQUU3QyxLQUFLLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLENBQUE7UUFKdkQsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWxCeEMsb0JBQWUs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Ozs7d0JBaUx4QixXQUFXLFNBQUMsNENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERlbGl2ZXJ5TWV0aG9kIH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm9cIjtcclxuaW1wb3J0IHsgV2FyZWhvdXNlIH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm9cIjtcclxuaW1wb3J0IHsgRmlsdGVySXRlbVZpZXdtb2RlbCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9tb2RlbC9maWx0ZXItaXRlbS52aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgRmlsdGVyVmlld21vZGVsIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL21vZGVsL2ZpbHRlci12aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkZpbHRlckNvbnRlbnRCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJSZXF1ZXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2ZpbHRlci1yZXF1ZXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VhcmNoLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LWxvZ2lzdGljcy13cmFwcGVyIHRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LXdyYXBwZXJcIiBsYXp5UmVuZGVyTWFzdGVyPlxyXG5cclxuICAgICAgPCEtLUxldmVybWV0aG9kZS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJEZWxpdmVyeU1ldGhvZD1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gKm5nSWY9XCJsYXp5UmVuZGVyRGVsaXZlcnlNZXRob2QuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9NRVRIT0QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGVsaXZlcnlNZXRob2RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclJhbmdlKCRldmVudCwgJ3JhbmdlRGVsaXZlcnlNZXRob2QnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDwhLS1MZXZlcmRhdHVtIGRlZmluaXRpZWYtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyRGVsaXZlcnlEYXRlRmluYWw9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtICpuZ0lmPVwibGF6eVJlbmRlckRlbGl2ZXJ5RGF0ZUZpbmFsLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInREVMSVZFUllfREFURV9GSU5BTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgW21vZGVsXT1cInNlYXJjaFJlcXVlc3QuZGVsaXZlcnlEYXRlRGVmaW5pdGl2ZSA9PT0gJ0onXCJcclxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JTdHJpbmcoJGV2ZW50LCAnZGVsaXZlcnlEYXRlRGVmaW5pdGl2ZScpXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidERUxJVkVSWV9EQVRFX0ZJTkFMJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1Ub2VnZXdlemVuLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckFsbG9jYXRlZD1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlICpuZ0lmPVwibGF6eVJlbmRlckFsbG9jYXRlZC5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBTExPQ0FURUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JBcnJheSgkZXZlbnQsICdxdWFudGl0eUFsbG9jYXRlZCcpXCJcclxuICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUdlbGV2ZXJkLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckRlbGl2ZXJlZD1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlICpuZ0lmPVwibGF6eVJlbmRlckRlbGl2ZXJlZC5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidERUxJVkVSRUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JBcnJheSgkZXZlbnQsICdxdWFudGl0eURlbGl2ZXJlZCcpXCJcclxuICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS1HZWZhY3R1cmVlcmQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJJbnZvaWNlZD1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGUgKm5nSWY9XCJsYXp5UmVuZGVySW52b2ljZWQuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidJTlZPSUNFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yQXJyYXkoJGV2ZW50LCAncXVhbnRpdHlJbnZvaWNlZCcpXCJcclxuICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLVRlIHBpY2tlbi0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlclRvQmVQaWNrZWQ9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlICpuZ0lmPVwibGF6eVJlbmRlclRvQmVQaWNrZWQuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidUT19CRV9QSUNLRUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5VG9CZVBpY2tlZCcpXCJcclxuICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUdlcGlja2VkLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyUGlja2VkPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZSAqbmdJZj1cImxhenlSZW5kZXJQaWNrZWQuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidQSUNLRUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5UGlja2VkJylcIlxyXG4gICAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tQmV2ZXN0aWdkZSBsZXZlcmRhdHVtLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyQ29uZmlybWVkRGVsaXZlcnlEYXRlPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtICpuZ0lmPVwibGF6eVJlbmRlckNvbmZpcm1lZERlbGl2ZXJ5RGF0ZS5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09ORklSTUVEX0RFTElWRVJZX0RBVEUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlXHJcbiAgICAgICAgICAgICAgW3N0YXJ0RGF0ZV09XCJjb25maXJtZWREZWxpdmVyeVN0YXJ0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2VuZERhdGVdPVwiY29uZmlybWVkRGVsaXZlcnlFbmREYXRlXCJcclxuICAgICAgICAgICAgICAoZGF0ZVJhbmdlQ2hhbmdlKT1cIm9uRGF0ZVJhbmdlQ2hhbmdlKCRldmVudCwgJ2NvbmZpcm1lZERlbGl2ZXJ5RGF0ZVJhbmdlJylcIlxyXG4gICAgICAgICAgICAgIChjbGVhcmVkKT1cIm9uQ2xlYXJlZERhdGVSYW5nZUNoYW5nZSgnY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUxFQ1RfREFURScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICA8L2NvLWlucHV0LWRhdGUtcmFuZ2U+XHJcbiAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tQWFua29tc3RkYXR1bS0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckFycml2YWxEYXRlPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtICpuZ0lmPVwibGF6eVJlbmRlckFycml2YWxEYXRlLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBUlJJVkFMX0RBVEUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlXHJcbiAgICAgICAgICAgICAgW3N0YXJ0RGF0ZV09XCJhcnJpdmFsU3RhcnREYXRlXCJcclxuICAgICAgICAgICAgICBbZW5kRGF0ZV09XCJhcnJpdmFsRW5kRGF0ZVwiXHJcbiAgICAgICAgICAgICAgKGRhdGVSYW5nZUNoYW5nZSk9XCJvbkRhdGVSYW5nZUNoYW5nZSgkZXZlbnQsICdhcnJpdmFsRGF0ZVJhbmdlJylcIlxyXG4gICAgICAgICAgICAgIChjbGVhcmVkKT1cIm9uQ2xlYXJlZERhdGVSYW5nZUNoYW5nZSgnYXJyaXZhbERhdGVSYW5nZScpXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFTEVDVF9EQVRFJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgIDwvY28taW5wdXQtZGF0ZS1yYW5nZT5cclxuICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS1EZWVsbGV2ZXJpbmctLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJQYXJ0aWFsRGVsaXZlcnk9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gKm5nSWY9XCJsYXp5UmVuZGVyUGFydGlhbERlbGl2ZXJ5LmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQQVJUX0RFTElWRVJZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICBbbW9kZWxdPVwic2VhcmNoUmVxdWVzdC5wYXJ0aWFsRGVsaXZlcnkgPT09ICdKJ1wiXHJcbiAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JTdHJpbmcoJGV2ZW50LCAncGFydGlhbERlbGl2ZXJ5JylcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUEFSVF9ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICA8L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLU1hZ2F6aWpuIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlcldhcmVob3VzZT1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJXYXJlaG91c2UuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1dBUkVIT1VTRSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW5nbGVTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwid2FyZWhvdXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclNpbmdsZVNlbGVjdCgkZXZlbnQsICd3YXJlaG91c2UnKVwiPlxyXG4gICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUJyb24gbWFnYXppam4tLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJTb3VyY2VXYXJlaG91c2U9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gKm5nSWY9XCJsYXp5UmVuZGVyU291cmNlV2FyZWhvdXNlLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTT1VSQ0VfV0FSRUhPVVNFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJzb3VyY2VXYXJlaG91c2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yU2luZ2xlU2VsZWN0KCRldmVudCwgJ3NvdXJjZVdhcmVob3VzZScpXCI+XHJcbiAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tU2VyaWVudW1tZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyU2VyaWFsTnVtYmVyPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtICpuZ0lmPVwibGF6eVJlbmRlclNlcmlhbE51bWJlci5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VSSUFMX05VTUJFUidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwic2VhcmNoUmVxdWVzdC5zZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS1CYXRjaG51bW1lciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJCYXRjaE51bWJlcj1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJCYXRjaE51bWJlci5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQkFUQ0hfTlVNQkVSJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJzZWFyY2hSZXF1ZXN0LmJhdGNoTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tSW5jbHVzaWVmIHJldG91cmVuLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVySW5jbHVkaW5nUmV0dXJucz1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJJbmNsdWRpbmdSZXR1cm5zLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJTkNMVURJTkdfUkVUVVJOUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidJTkNMVURJTkdfUkVUVVJOUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cInNlYXJjaFJlcXVlc3QuaW5jbHVkaW5nUmV0dXJucyA9PT0gMVwiXHJcbiAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JOdW1iZXIoJGV2ZW50LCAnaW5jbHVkaW5nUmV0dXJucycpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUxldmVybWV0aG9kZSBvcCAocmVnZWwvaGVhZGVyKTogdG9kbzogbm9nIHVpdHpvZWtlbiB3ZWxrZSBmaWx0ZXIgZGl0IGlzLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2FsZXNPcmRlckZpbHRlckNvbnRlbnRMb2dpc3RpY3NDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkZpbHRlckNvbnRlbnRCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tc2VhcmNoLWZpbHRlci1jb250ZW50XCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kcyA9IFtdO1xyXG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZEZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcclxuXHJcbiAgcHVibGljIHdhcmVob3VzZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgd2FyZWhvdXNlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ3YXJlaG91c2VOb1wifTtcclxuXHJcbiAgcHVibGljIHNvdXJjZVdhcmVob3VzZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgc291cmNlV2FyZWhvdXNlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ3YXJlaG91c2VOb1wifTtcclxuXHJcbiAgcHVibGljIGNvbmZpcm1lZERlbGl2ZXJ5U3RhcnREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBjb25maXJtZWREZWxpdmVyeUVuZERhdGU6IERhdGU7XHJcblxyXG4gIHB1YmxpYyBhcnJpdmFsU3RhcnREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBhcnJpdmFsRW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZpbHRlclJlcXVlc3RTZXJ2aWNlOiBGaWx0ZXJSZXF1ZXN0U2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKHNlYXJjaFNlcnZpY2UsIGZpbHRlclJlcXVlc3RTZXJ2aWNlLCB0cmFuc2FjdGlvblNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRSYW5nZURhdGVzKCk7XHJcbiAgICB0aGlzLl9zZXREZWxpdmVyeU1ldGhvZHMoKTtcclxuICAgIHRoaXMuX3NldFdhcmVob3VzZXMoKTtcclxuICAgIHRoaXMuX3NldFNvdXJjZVdhcmVob3VzZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFJhbmdlRGF0ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1lZERlbGl2ZXJ5U3RhcnREYXRlID0gdGhpcy5maWx0ZXJSZXF1ZXN0U2VydmljZS5nZXREYXRlRnJvbUZpbHRlclJlcXVlc3RSYW5nZSh0aGlzLnNlYXJjaFJlcXVlc3QuY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UsIDApO1xyXG4gICAgdGhpcy5jb25maXJtZWREZWxpdmVyeUVuZERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5jb25maXJtZWREZWxpdmVyeURhdGVSYW5nZSwgMSk7XHJcbiAgICB0aGlzLmFycml2YWxTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5hcnJpdmFsRGF0ZVJhbmdlLCAwKTtcclxuICAgIHRoaXMuYXJyaXZhbEVuZERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5hcnJpdmFsRGF0ZVJhbmdlLCAxKTtcclxuICB9XHJcblxyXG4gIC8vRGVsaXZlcnkgTWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldERlbGl2ZXJ5TWV0aG9kcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcygpLnRoZW4oKGRlbGl2ZXJ5TWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSkgPT4ge1xyXG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG5ldyBGaWx0ZXJWaWV3bW9kZWwoZGVsaXZlcnlNZXRob2RzLCB0aGlzLmRlbGl2ZXJ5TWV0aG9kRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9XYXJlaG91c2VzXHJcbiAgcHJpdmF0ZSBfc2V0V2FyZWhvdXNlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFdhcmVob3VzZXMoKS50aGVuKCh3YXJlaG91c2VzOiBXYXJlaG91c2VbXSkgPT4ge1xyXG4gICAgICB0aGlzLndhcmVob3VzZXMgPSBuZXcgRmlsdGVyVmlld21vZGVsKHdhcmVob3VzZXMsIHRoaXMud2FyZWhvdXNlRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3VyY2UgV2FyZWhvdXNlc1xyXG4gIHByaXZhdGUgX3NldFNvdXJjZVdhcmVob3VzZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRXYXJlaG91c2VzKCkudGhlbigod2FyZWhvdXNlczogV2FyZWhvdXNlW10pID0+IHtcclxuICAgICAgdGhpcy5zb3VyY2VXYXJlaG91c2VzID0gbmV3IEZpbHRlclZpZXdtb2RlbCh3YXJlaG91c2VzLCB0aGlzLnNvdXJjZVdhcmVob3VzZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC9zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC90cmFuc2FjdGlvbi1zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC1sb2dpc3RpY3MvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUErS3ZGLE1BQU0sT0FBTyxvREFBcUQsU0FBUSxxQ0FBcUM7SUFzQjdHLFlBQ1MsYUFBdUMsRUFDdkMsb0JBQTBDLEVBQzFDLGtCQUFzQztRQUU3QyxLQUFLLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLENBQUE7UUFKdkQsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWxCeEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIseUJBQW9CLEdBQW9CLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUM7UUFHN0Usb0JBQWUsR0FBb0IsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUMsQ0FBQztRQUcvRSwwQkFBcUIsR0FBb0IsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUMsQ0FBQztJQWM1RixDQUFDO0lBekJNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUF5Qk0sUUFBUTtRQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVJLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1YsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWlDLEVBQUUsRUFBRTtZQUN0RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNKLGNBQWM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQXVCLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtJQUNYLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBdUIsRUFBRSxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ2xHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBNU9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscURBQXFEO2dCQUMvRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5S1Q7YUFDRjs7O1lBOUtRLHdCQUF3QjtZQUR4QixvQkFBb0I7WUFGcEIsa0JBQWtCOzs7d0JBb0x4QixXQUFXLFNBQUMsNENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERlbGl2ZXJ5TWV0aG9kIH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm9cIjtcclxuaW1wb3J0IHsgV2FyZWhvdXNlIH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm9cIjtcclxuaW1wb3J0IHsgRmlsdGVySXRlbVZpZXdtb2RlbCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9tb2RlbC9maWx0ZXItaXRlbS52aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgRmlsdGVyVmlld21vZGVsIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL21vZGVsL2ZpbHRlci12aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkZpbHRlckNvbnRlbnRCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJSZXF1ZXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2ZpbHRlci1yZXF1ZXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VhcmNoLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LWxvZ2lzdGljcy13cmFwcGVyIHRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LXdyYXBwZXJcIiBsYXp5UmVuZGVyTWFzdGVyPlxyXG5cclxuICAgICAgPCEtLUxldmVybWV0aG9kZS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJEZWxpdmVyeU1ldGhvZD1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gKm5nSWY9XCJsYXp5UmVuZGVyRGVsaXZlcnlNZXRob2QuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9NRVRIT0QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGVsaXZlcnlNZXRob2RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaENvbGxlY3Rpb25QbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlci5EZWxpdmVyeU1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JSYW5nZSgkZXZlbnQsICdyYW5nZURlbGl2ZXJ5TWV0aG9kJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8IS0tTGV2ZXJkYXR1bSBkZWZpbml0aWVmLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckRlbGl2ZXJ5RGF0ZUZpbmFsPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJEZWxpdmVyeURhdGVGaW5hbC5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0RFTElWRVJZX0RBVEVfRklOQUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgIFttb2RlbF09XCJzZWFyY2hSZXF1ZXN0LmRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUgPT09ICdKJ1wiXHJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDaGVja2JveFZhbHVlQ2hhbmdlRm9yU3RyaW5nKCRldmVudCwgJ2RlbGl2ZXJ5RGF0ZURlZmluaXRpdmUnKVwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInREVMSVZFUllfREFURV9GSU5BTCcgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tVG9lZ2V3ZXplbi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJBbGxvY2F0ZWQ9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZSAqbmdJZj1cImxhenlSZW5kZXJBbGxvY2F0ZWQuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQUxMT0NBVEVEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yQXJyYXkoJGV2ZW50LCAncXVhbnRpdHlBbGxvY2F0ZWQnKVwiXHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1HZWxldmVyZC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiIGxhenlSZW5kZXIgI2xhenlSZW5kZXJEZWxpdmVyZWQ9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZSAqbmdJZj1cImxhenlSZW5kZXJEZWxpdmVyZWQuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInREVMSVZFUkVEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yQXJyYXkoJGV2ZW50LCAncXVhbnRpdHlEZWxpdmVyZWQnKVwiXHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1HZWZhY3R1cmVlcmQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVySW52b2ljZWQ9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZSAqbmdJZj1cImxhenlSZW5kZXJJbnZvaWNlZC5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidJTlZPSUNFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5SW52b2ljZWQnKVwiXHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1UZSBwaWNrZW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyVG9CZVBpY2tlZD1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlICpuZ0lmPVwibGF6eVJlbmRlclRvQmVQaWNrZWQuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVE9fQkVfUElDS0VEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yQXJyYXkoJGV2ZW50LCAncXVhbnRpdHlUb0JlUGlja2VkJylcIlxyXG4gICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tR2VwaWNrZWQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyUGlja2VkPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGUgKm5nSWY9XCJsYXp5UmVuZGVyUGlja2VkLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1BJQ0tFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5UGlja2VkJylcIlxyXG4gICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tQmV2ZXN0aWdkZSBsZXZlcmRhdHVtLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckNvbmZpcm1lZERlbGl2ZXJ5RGF0ZT1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gKm5nSWY9XCJsYXp5UmVuZGVyQ29uZmlybWVkRGVsaXZlcnlEYXRlLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09ORklSTUVEX0RFTElWRVJZX0RBVEUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWRhdGUtcmFuZ2VcclxuICAgICAgICAgICAgW3N0YXJ0RGF0ZV09XCJjb25maXJtZWREZWxpdmVyeVN0YXJ0RGF0ZVwiXHJcbiAgICAgICAgICAgIFtlbmREYXRlXT1cImNvbmZpcm1lZERlbGl2ZXJ5RW5kRGF0ZVwiXHJcbiAgICAgICAgICAgIChkYXRlUmFuZ2VDaGFuZ2UpPVwib25EYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIChjbGVhcmVkKT1cIm9uQ2xlYXJlZERhdGVSYW5nZUNoYW5nZSgnY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VMRUNUX0RBVEUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvY28taW5wdXQtZGF0ZS1yYW5nZT5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1BYW5rb21zdGRhdHVtLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckFycml2YWxEYXRlPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJBcnJpdmFsRGF0ZS5pc1Nob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FSUklWQUxfREFURSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtZGF0ZS1yYW5nZVxyXG4gICAgICAgICAgICBbc3RhcnREYXRlXT1cImFycml2YWxTdGFydERhdGVcIlxyXG4gICAgICAgICAgICBbZW5kRGF0ZV09XCJhcnJpdmFsRW5kRGF0ZVwiXHJcbiAgICAgICAgICAgIChkYXRlUmFuZ2VDaGFuZ2UpPVwib25EYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnYXJyaXZhbERhdGVSYW5nZScpXCJcclxuICAgICAgICAgICAgKGNsZWFyZWQpPVwib25DbGVhcmVkRGF0ZVJhbmdlQ2hhbmdlKCdhcnJpdmFsRGF0ZVJhbmdlJylcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFTEVDVF9EQVRFJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICA8L2NvLWlucHV0LWRhdGUtcmFuZ2U+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tRGVlbGxldmVyaW5nLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlclBhcnRpYWxEZWxpdmVyeT1cImxhenlSZW5kZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gKm5nSWY9XCJsYXp5UmVuZGVyUGFydGlhbERlbGl2ZXJ5LmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUEFSVF9ERUxJVkVSWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgW21vZGVsXT1cInNlYXJjaFJlcXVlc3QucGFydGlhbERlbGl2ZXJ5ID09PSAnSidcIlxyXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ2hlY2tib3hWYWx1ZUNoYW5nZUZvclN0cmluZygkZXZlbnQsICdwYXJ0aWFsRGVsaXZlcnknKVwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInUEFSVF9ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1NYWdhemlqbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyV2FyZWhvdXNlPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJXYXJlaG91c2UuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidXQVJFSE9VU0UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwid2FyZWhvdXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hDb2xsZWN0aW9uUGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIuV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclNpbmdsZVNlbGVjdCgkZXZlbnQsICd3YXJlaG91c2UnKVwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUJyb24gbWFnYXppam4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyU291cmNlV2FyZWhvdXNlPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJTb3VyY2VXYXJlaG91c2UuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTT1VSQ0VfV0FSRUhPVVNFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW5nbGVTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInNvdXJjZVdhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoQ29sbGVjdGlvblBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLlNvdXJjZVdhcmVob3VzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JTaW5nbGVTZWxlY3QoJGV2ZW50LCAnc291cmNlV2FyZWhvdXNlJylcIj5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1TZXJpZW51bW1lciAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyU2VyaWFsTnVtYmVyPVwibGF6eVJlbmRlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSAqbmdJZj1cImxhenlSZW5kZXJTZXJpYWxOdW1iZXIuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVJJQUxfTlVNQkVSJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInNlYXJjaFJlcXVlc3Quc2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlci5TZXJpYWxOdW1iZXIgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1CYXRjaG51bW1lciAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIiBsYXp5UmVuZGVyICNsYXp5UmVuZGVyQmF0Y2hOdW1iZXI9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtICpuZ0lmPVwibGF6eVJlbmRlckJhdGNoTnVtYmVyLmlzU2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQkFUQ0hfTlVNQkVSJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInNlYXJjaFJlcXVlc3QuYmF0Y2hOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLkJhdGNoTnVtYmVyIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tSW5jbHVzaWVmIHJldG91cmVuLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCIgbGF6eVJlbmRlciAjbGF6eVJlbmRlckluY2x1ZGluZ1JldHVybnM9XCJsYXp5UmVuZGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtICpuZ0lmPVwibGF6eVJlbmRlckluY2x1ZGluZ1JldHVybnMuaXNTaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJTkNMVURJTkdfUkVUVVJOUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidJTkNMVURJTkdfUkVUVVJOUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFttb2RlbF09XCJzZWFyY2hSZXF1ZXN0LmluY2x1ZGluZ1JldHVybnMgPT09IDFcIlxyXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ2hlY2tib3hWYWx1ZUNoYW5nZUZvck51bWJlcigkZXZlbnQsICdpbmNsdWRpbmdSZXR1cm5zJylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1MZXZlcm1ldGhvZGUgb3AgKHJlZ2VsL2hlYWRlcik6IHRvZG86IG5vZyB1aXR6b2VrZW4gd2Vsa2UgZmlsdGVyIGRpdCBpcy0tPlxyXG4gICAgPC9kaXY+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TYWxlc09yZGVyRmlsdGVyQ29udGVudExvZ2lzdGljc0NvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uRmlsdGVyQ29udGVudEJhc2VDb21wb25lbnQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1zZWFyY2gtZmlsdGVyLWNvbnRlbnRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsaXZlcnlNZXRob2RzID0gW107XHJcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJjb2RlXCJ9O1xyXG5cclxuICBwdWJsaWMgd2FyZWhvdXNlczogRmlsdGVySXRlbVZpZXdtb2RlbFtdO1xyXG4gIHB1YmxpYyB3YXJlaG91c2VGaWVsZHM6IHsgdGV4dCwgdmFsdWUgfSA9IHt0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcIndhcmVob3VzZU5vXCJ9O1xyXG5cclxuICBwdWJsaWMgc291cmNlV2FyZWhvdXNlczogRmlsdGVySXRlbVZpZXdtb2RlbFtdO1xyXG4gIHB1YmxpYyBzb3VyY2VXYXJlaG91c2VGaWVsZHM6IHsgdGV4dCwgdmFsdWUgfSA9IHt0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcIndhcmVob3VzZU5vXCJ9O1xyXG5cclxuICBwdWJsaWMgY29uZmlybWVkRGVsaXZlcnlTdGFydERhdGU6IERhdGU7XHJcbiAgcHVibGljIGNvbmZpcm1lZERlbGl2ZXJ5RW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgcHVibGljIGFycml2YWxTdGFydERhdGU6IERhdGU7XHJcbiAgcHVibGljIGFycml2YWxFbmREYXRlOiBEYXRlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZWFyY2hTZXJ2aWNlOiBUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZmlsdGVyUmVxdWVzdFNlcnZpY2U6IEZpbHRlclJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoc2VhcmNoU2VydmljZSwgZmlsdGVyUmVxdWVzdFNlcnZpY2UsIHRyYW5zYWN0aW9uU2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldFJhbmdlRGF0ZXMoKTtcclxuICAgIHRoaXMuX3NldERlbGl2ZXJ5TWV0aG9kcygpO1xyXG4gICAgdGhpcy5fc2V0V2FyZWhvdXNlcygpO1xyXG4gICAgdGhpcy5fc2V0U291cmNlV2FyZWhvdXNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UmFuZ2VEYXRlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlybWVkRGVsaXZlcnlTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5jb25maXJtZWREZWxpdmVyeURhdGVSYW5nZSwgMCk7XHJcbiAgICB0aGlzLmNvbmZpcm1lZERlbGl2ZXJ5RW5kRGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LmNvbmZpcm1lZERlbGl2ZXJ5RGF0ZVJhbmdlLCAxKTtcclxuICAgIHRoaXMuYXJyaXZhbFN0YXJ0RGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LmFycml2YWxEYXRlUmFuZ2UsIDApO1xyXG4gICAgdGhpcy5hcnJpdmFsRW5kRGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LmFycml2YWxEYXRlUmFuZ2UsIDEpO1xyXG4gIH1cclxuXHJcbiAgLy9EZWxpdmVyeSBNZXRob2RzXHJcbiAgcHJpdmF0ZSBfc2V0RGVsaXZlcnlNZXRob2RzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlNZXRob2RzKCkudGhlbigoZGVsaXZlcnlNZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVsaXZlcnlNZXRob2RzID0gbmV3IEZpbHRlclZpZXdtb2RlbChkZWxpdmVyeU1ldGhvZHMsIHRoaXMuZGVsaXZlcnlNZXRob2RGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL1dhcmVob3VzZXNcclxuICBwcml2YXRlIF9zZXRXYXJlaG91c2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0V2FyZWhvdXNlcygpLnRoZW4oKHdhcmVob3VzZXM6IFdhcmVob3VzZVtdKSA9PiB7XHJcbiAgICAgIHRoaXMud2FyZWhvdXNlcyA9IG5ldyBGaWx0ZXJWaWV3bW9kZWwod2FyZWhvdXNlcywgdGhpcy53YXJlaG91c2VGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL1NvdXJjZSBXYXJlaG91c2VzXHJcbiAgcHJpdmF0ZSBfc2V0U291cmNlV2FyZWhvdXNlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFdhcmVob3VzZXMoKS50aGVuKCh3YXJlaG91c2VzOiBXYXJlaG91c2VbXSkgPT4ge1xyXG4gICAgICB0aGlzLnNvdXJjZVdhcmVob3VzZXMgPSBuZXcgRmlsdGVyVmlld21vZGVsKHdhcmVob3VzZXMsIHRoaXMuc291cmNlV2FyZWhvdXNlRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=