@colijnit/transaction 12.1.12 → 12.1.13

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 (25) hide show
  1. package/bundles/colijnit-transaction.umd.js +41 -145
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +20 -32
  5. package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +21 -22
  6. package/esm2015/lib/component/checkout/checkout.component.js +4 -4
  7. package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.component.js +10 -12
  8. package/esm2015/lib/component/order-confirmation-grid/order-confirmation-grid.component.js +1 -1
  9. package/esm2015/lib/component/order-grid/order-grid.component.js +1 -1
  10. package/esm2015/lib/component/transaction/transaction.component.js +1 -1
  11. package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.js +1 -1
  12. package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.component.js +2 -1
  13. package/esm2015/lib/service/ione-connector-adapter.service.js +1 -1
  14. package/esm2015/lib/service/pending-reason.service.js +1 -21
  15. package/esm2015/lib/service/transaction.service.js +1 -64
  16. package/fesm2015/colijnit-transaction.js +51 -151
  17. package/fesm2015/colijnit-transaction.js.map +1 -1
  18. package/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.d.ts +1 -5
  19. package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +0 -2
  20. package/lib/component/delivery-type-tile/delivery-type-tile.component.d.ts +3 -5
  21. package/lib/service/pending-reason.service.d.ts +0 -3
  22. package/lib/service/transaction.service.d.ts +0 -1
  23. package/package.json +2 -2
  24. package/esm2015/lib/model/delivery-type.js +0 -3
  25. package/lib/model/delivery-type.d.ts +0 -7
@@ -17,11 +17,11 @@ export class CheckoutOverviewDeliveryEditComponent {
17
17
  this.icons = Icon;
18
18
  this.validSubmit = new EventEmitter();
19
19
  this.invalidSubmit = new EventEmitter();
20
- this.deliveryTypes = [
21
- { code: '1', description: 'Bezorgen', icon: this.icons.DeliveryTruck, price: 89 },
22
- { code: '2', description: 'Bezorgen & monteren', icon: this.icons.CalendarDay, price: 119 },
23
- { code: '3', description: 'Meenemen', icon: this.icons.Truck },
24
- ];
20
+ // public deliveryTypes: DeliveryType[] = [
21
+ // {code: '1', description: 'Bezorgen', icon: this.icons.DeliveryTruck, price: 89},
22
+ // {code: '2', description: 'Bezorgen & monteren', icon: this.icons.CalendarDay, price: 119},
23
+ // {code: '3', description: 'Meenemen', icon: this.icons.Truck},
24
+ // ];
25
25
  this.deliveryOptionList = [];
26
26
  this.deliveryOptions = [];
27
27
  this.deliveryOptionFields = { text: "description", value: "code" };
@@ -69,7 +69,7 @@ export class CheckoutOverviewDeliveryEditComponent {
69
69
  this.deliveryCosts = this.calculateDeliveryCosts();
70
70
  this.assemblyCosts = this.calculateAssemblyCosts();
71
71
  this.service.getDeliveryMethods().then((methods) => {
72
- this.deliveryMethods = methods;
72
+ this.deliveryMethods = methods.filter(m => m.webshop);
73
73
  });
74
74
  this.service.getDeliveryOptions().then((options) => {
75
75
  this.deliveryOptionList = options;
@@ -82,13 +82,13 @@ export class CheckoutOverviewDeliveryEditComponent {
82
82
  submit() {
83
83
  return this._formMasterService.submitSlaves();
84
84
  }
85
- handleDeliveryMethodChange(deliveryMethodId) {
85
+ handleDeliveryMethodChange(deliveryMethod) {
86
86
  return __awaiter(this, void 0, void 0, function* () {
87
- const deliveryMethod = this.selectDeliveryMethodById(deliveryMethodId);
88
- this.deliveryOptionsRequest.deliveryMethod = deliveryMethodId;
87
+ this.transaction.transactionLines.forEach((tl) => {
88
+ tl.deliveryMethodCode = deliveryMethod.code;
89
+ });
89
90
  if (deliveryMethod) {
90
91
  this.deliveryOptions = this.selectDeliveryOptionsByDeliveryMethod(deliveryMethod);
91
- this.deliveryOptionsRequest.deliveryOptions = [];
92
92
  }
93
93
  });
94
94
  }
@@ -139,37 +139,27 @@ CheckoutOverviewDeliveryEditComponent.decorators = [
139
139
  [tileHeight]="100"
140
140
  [selectedIndex]="deliveryTypeIdx"
141
141
  (indexSelected)="setIndexDeliveryType($event)">
142
- <co-delivery-type-tile #carouselItem *ngFor="let type of deliveryTypes; let index = index"
143
- [type]="type"
142
+ <co-delivery-type-tile #carouselItem *ngFor="let method of deliveryMethods; let index = index"
143
+ [method]="method"
144
144
  [selected]="deliveryTypeIdx === index"
145
+ (selectedChange)="handleDeliveryMethodChange($event)"
145
146
  ></co-delivery-type-tile>
146
147
  </co-carousel-3d>
147
148
  </div>
148
149
  <div class="checkout-data-row">
149
- <co-input-date [(model)]="deliveryOptionsRequest.deliveryDate" [placeholder]="'DELIVERY_DATE' | localize" [required]="true"></co-input-date>
150
+ <co-input-date [placeholder]="'DELIVERY_DATE' | localize" [required]="true"></co-input-date>
150
151
  </div>
151
152
  <div class="checkout-data-row">
152
- <co-input-date [(model)]="deliveryOptionsRequest.preferredDeliveryDate" [placeholder]="'PREFERRED_DATE' | localize"></co-input-date>
153
+ <co-input-date [placeholder]="'PREFERRED_DATE' | localize"></co-input-date>
153
154
  </div>
154
155
  <div class="checkout-data-row">
155
- <co-input-checkbox [(model)]="deliveryOptionsRequest.allowPartialDelivery" [label]="'PART_DELIVERIES' | localize"></co-input-checkbox>
156
+ <co-input-checkbox [label]="'PART_DELIVERIES' | localize"></co-input-checkbox>
156
157
  </div>
157
158
  <div class="checkout-data-row">
158
159
  <co-collapsible [headerTitle]="'ADD_DELIVERY_OPTION' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
159
- <div class="checkout-data-row">
160
- <co-drop-down-list
161
- [collection]="deliveryMethods"
162
- [fields]="deliveryMethodFields"
163
- [required]="true"
164
- [model]="deliveryOptionsRequest.deliveryMethod"
165
- (modelChange)="handleDeliveryMethodChange($event)"
166
- [placeholder]="'DELIVERY_METHOD' | localize"></co-drop-down-list>
167
- <co-input-text [placeholder]="'TOTAL_ASSEMBLY_TIME' | localize"></co-input-text>
168
- </div>
169
160
  <div class="checkout-data-row">
170
161
  <co-input-listbox
171
162
  [placeholder]="'DELIVERY_OPTIONS' | localize"
172
- [(model)]="deliveryOptionsRequest.deliveryOptions"
173
163
  [collection]="deliveryOptions"
174
164
  [fields]="deliveryOptionFields"
175
165
  [showCheckbox]="true"
@@ -180,17 +170,17 @@ CheckoutOverviewDeliveryEditComponent.decorators = [
180
170
  <div class="checkout-data-row">
181
171
  <co-collapsible [headerTitle]="'ADD_REMARK' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
182
172
  <div class="checkout-data-row">
183
- <co-input-textarea [(model)]="deliveryOptionsRequest.remark" [placeholder]="'REMARKS' | localize"></co-input-textarea>
173
+ <co-input-textarea [placeholder]="'REMARKS' | localize"></co-input-textarea>
184
174
  </div>
185
175
  </co-collapsible>
186
176
  </div>
187
177
  <div class="checkout-data-row">
188
178
  <co-collapsible [headerTitle]="'ADD_REFERENCE' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
189
179
  <div class="checkout-data-row">
190
- <co-input-text [(model)]="deliveryOptionsRequest.ownReference" [placeholder]="'REFERENCE' | localize"></co-input-text>
180
+ <co-input-text [placeholder]="'REFERENCE' | localize"></co-input-text>
191
181
  </div>
192
182
  <div class="checkout-data-row">
193
- <co-input-text [(model)]="deliveryOptionsRequest.relationReference" [placeholder]="'REFERENCE_RELATION' | localize"></co-input-text>
183
+ <co-input-text [placeholder]="'REFERENCE_RELATION' | localize"></co-input-text>
194
184
  </div>
195
185
  </co-collapsible>
196
186
  </div>
@@ -231,7 +221,6 @@ CheckoutOverviewDeliveryEditComponent.decorators = [
231
221
  <co-drop-down-list
232
222
  [collection]="marketing"
233
223
  [fields]="marketingFields"
234
- [(model)]="deliveryOptionsRequest.marketingCode"
235
224
  [placeholder]="'MARKETING' | localize"></co-drop-down-list>
236
225
  </div>
237
226
  <div class="checkout-data-row">
@@ -266,10 +255,9 @@ CheckoutOverviewDeliveryEditComponent.ctorParameters = () => [
266
255
  { type: IconCacheService }
267
256
  ];
268
257
  CheckoutOverviewDeliveryEditComponent.propDecorators = {
269
- deliveryOptionsRequest: [{ type: Input }],
270
258
  transaction: [{ type: Input }],
271
259
  validSubmit: [{ type: Output }],
272
260
  invalidSubmit: [{ type: Output }],
273
261
  showClass: [{ type: HostBinding, args: ["class.co-checkout-overview-delivery-edit",] }]
274
262
  };
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU0vRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUd0RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUUvRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQXlJckUsTUFBTSxPQUFPLHFDQUFxQztJQTRFaEQsWUFDVSxrQkFBcUMsRUFDckMsa0JBQXFDLEVBQ3JDLFVBQWlDLEVBQ2xDLE9BQTJCLEVBQzNCLFdBQTZCO1FBSjVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNsQyxZ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QUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOzs7WUExUkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1SFQ7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGlCQUFpQjtpQkFDbEI7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRTt3QkFDaEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM3QyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQzVDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBQ3JELFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQ25ELENBQUM7aUJBQ0g7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQS9JTyxpQkFBaUI7WUFSakIsaUJBQWlCO1lBYWpCLHFCQUFxQjtZQVByQixrQkFBa0I7WUFTbEIsZ0JBQWdCOzs7cUNBNElyQixLQUFLOzBCQUdMLEtBQUs7MEJBR0wsTUFBTTs0QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Rm9ybU1hc3RlclNlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHtHZW5kZXJUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZ2VuZGVyLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvXCI7XG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ib1wiO1xuaW1wb3J0IHtEZWxpdmVyeU9wdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcHRpb24uYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge1RleHRWYWx1ZUNvbnRhaW5lcn0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL3RleHQtdmFsdWUtY29udGFpbmVyXCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ib1wiO1xuaW1wb3J0IHtTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2V0LXRyYW5zYWN0aW9uLWRlbGl2ZXJ5LW9wdGlvbnMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gXCIuLi8uLi8uLi9mYWN0b3J5L2J1c2luZXNzLW9iamVjdC1mYWN0b3J5XCI7XG5pbXBvcnQge0RlbGl2ZXJ5VHlwZX0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL2RlbGl2ZXJ5LXR5cGVcIjtcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjby1jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWVkaXQtY29udGVudFwiPlxuICAgICAgPGNvLWZvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1mb3JtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtc2VjdGlvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjAxPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidERUxJVkVSWV9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWNhcm91c2VsLTNkIFt0aWxlV2lkdGhdPVwiMjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVIZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwiZGVsaXZlcnlUeXBlSWR4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGV4U2VsZWN0ZWQpPVwic2V0SW5kZXhEZWxpdmVyeVR5cGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXR5cGUtdGlsZSAjY2Fyb3VzZWxJdGVtICpuZ0Zvcj1cImxldCB0eXBlIG9mIGRlbGl2ZXJ5VHlwZXM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJkZWxpdmVyeVR5cGVJZHggPT09IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgID48L2NvLWRlbGl2ZXJ5LXR5cGUtdGlsZT5cbiAgICAgICAgICAgICAgICA8L2NvLWNhcm91c2VsLTNkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgWyhtb2RlbCldPVwiZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5kZWxpdmVyeURhdGVcIiBbcGxhY2Vob2xkZXJdPVwiJ0RFTElWRVJZX0RBVEUnIHwgbG9jYWxpemVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtZGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlIFsobW9kZWwpXT1cImRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QucHJlZmVycmVkRGVsaXZlcnlEYXRlXCIgW3BsYWNlaG9sZGVyXT1cIidQUkVGRVJSRURfREFURScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtZGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbKG1vZGVsKV09XCJkZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LmFsbG93UGFydGlhbERlbGl2ZXJ5XCIgW2xhYmVsXT1cIidQQVJUX0RFTElWRVJJRVMnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlIFtoZWFkZXJUaXRsZV09XCInQUREX0RFTElWRVJZX09QVElPTicgfCBsb2NhbGl6ZVwiIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLlRyaWFuZ2xlRG93bilcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y28tZHJvcC1kb3duLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJkZWxpdmVyeU1ldGhvZHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiZGVsaXZlcnlNZXRob2RGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5kZWxpdmVyeU1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZURlbGl2ZXJ5TWV0aG9kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInREVMSVZFUllfTUVUSE9EJyB8IGxvY2FsaXplXCI+PC9jby1kcm9wLWRvd24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW3BsYWNlaG9sZGVyXT1cIidUT1RBTF9BU1NFTUJMWV9USU1FJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWxpc3Rib3hcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0RFTElWRVJZX09QVElPTlMnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QuZGVsaXZlcnlPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJkZWxpdmVyeU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiZGVsaXZlcnlPcHRpb25GaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2hlY2tib3hdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWxpc3Rib3g+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlIFtoZWFkZXJUaXRsZV09XCInQUREX1JFTUFSSycgfCBsb2NhbGl6ZVwiIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLlRyaWFuZ2xlRG93bilcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dGFyZWEgWyhtb2RlbCldPVwiZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5yZW1hcmtcIiBbcGxhY2Vob2xkZXJdPVwiJ1JFTUFSS1MnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1jb2xsYXBzaWJsZSBbaGVhZGVyVGl0bGVdPVwiJ0FERF9SRUZFUkVOQ0UnIHwgbG9jYWxpemVcIiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5UcmlhbmdsZURvd24pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwiZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5vd25SZWZlcmVuY2VcIiBbcGxhY2Vob2xkZXJdPVwiJ1JFRkVSRU5DRScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cImRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QucmVsYXRpb25SZWZlcmVuY2VcIiBbcGxhY2Vob2xkZXJdPVwiJ1JFRkVSRU5DRV9SRUxBVElPTicgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvY28tY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtZGF0ZSBbbW9kZWxdPVwiJ05PR19OSUVUX0dFSU1QTEVNRU5URUVSRCdcIiBbcGxhY2Vob2xkZXJdPVwiJ0FTU0VNQkxZX0RBVEUnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LXNlY3Rpb24td3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInRE9XTlBBWU1FTlQnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbbW9kZWxdPVwiJ05PR19OSUVUX0dFSU1QTEVNRU5URUVSRCdcIiBbcGxhY2Vob2xkZXJdPVwiJ0RPV05QQVlNRU5UX1BFUkNFTlRBR0UnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidET1dOUEFZTUVOVF9BTU9VTlQnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbbW9kZWxdPVwiJ05PR19OSUVUX0dFSU1QTEVNRU5URUVSRCdcIiBbcGxhY2Vob2xkZXJdPVwiJ0RPV05QQVlNRU5UX0JZX0JSJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidET1dOUEFZTUVOVF9PTl9ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtc2VjdGlvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjAzPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidPUkRFUl9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidCUkFOQ0gnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidBRE1JTklTVFJBVElWRV9NQU5BR0VSJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWRyb3AtZG93bi1saXN0XG4gICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJtYXJrZXRpbmdcIlxuICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJtYXJrZXRpbmdGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5tYXJrZXRpbmdDb2RlXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInTUFSS0VUSU5HJyB8IGxvY2FsaXplXCI+PC9jby1kcm9wLWRvd24tbGlzdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jby1mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlSW52b2ljZUFkZHJlc3NcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe2hlaWdodDogXCIqXCIsIG9wYWNpdHk6IDF9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA9PiAqXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiKiA9PiB2b2lkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdEZWxpdmVyeUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVsaXZlcnlPcHRpb25zUmVxdWVzdDogU2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaW52YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXRcIilcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxpdmVyeVR5cGVzOiBEZWxpdmVyeVR5cGVbXSA9IFtcbiAgICB7Y29kZTogJzEnLCBkZXNjcmlwdGlvbjogJ0Jlem9yZ2VuJywgaWNvbjogdGhpcy5pY29ucy5EZWxpdmVyeVRydWNrLCBwcmljZTogODl9LFxuICAgIHtjb2RlOiAnMicsIGRlc2NyaXB0aW9uOiAnQmV6b3JnZW4gJiBtb250ZXJlbicsIGljb246IHRoaXMuaWNvbnMuQ2FsZW5kYXJEYXksIHByaWNlOiAxMTl9LFxuICAgIHtjb2RlOiAnMycsIGRlc2NyaXB0aW9uOiAnTWVlbmVtZW4nLCBpY29uOiB0aGlzLmljb25zLlRydWNrfSxcbiAgXTtcbiAgcHVibGljIGRlbGl2ZXJ5T3B0aW9uTGlzdDogRGVsaXZlcnlPcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgZGVsaXZlcnlPcHRpb25zOiBEZWxpdmVyeU9wdGlvbltdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbkZpZWxkczogVGV4dFZhbHVlQ29udGFpbmVyID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSA9IFtdO1xuICBwdWJsaWMgZGVsaXZlcnlNZXRob2RGaWVsZHM6IFRleHRWYWx1ZUNvbnRhaW5lciA9IHt0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcImNvZGVcIn07XG4gIHB1YmxpYyBkZWxpdmVyeVR5cGVJZHg6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIGNoYW5nZUxvY2F0aW9uUG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIG5ld0FkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlT3B0aW9uczogVGV4dFZhbHVlQ29udGFpbmVyW10gPSBbXG4gICAge3RleHQ6IFwiTk9UX0FGVEVSXCIsIHZhbHVlOiBcIj5cIn0sXG4gICAge3RleHQ6IFwiTk9UX0JFRk9SRVwiLCB2YWx1ZTogXCI8XCJ9LFxuICAgIHt0ZXh0OiBcIk9OX0RBVEVcIiwgdmFsdWU6IFwiPVwifSxcbiAgXTtcbiAgcHVibGljIGFkZHJlc3NUb0VkaXQ6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIGdlbmRlcjogR2VuZGVyVHlwZTtcbiAgcHVibGljIG1hcmtldGluZzogTWFya2V0aW5nW10gPSBbXTtcbiAgcHVibGljIG1hcmtldGluZ0ZpZWxkczogT2JqZWN0ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIG1hcmtldGluZ0NvZGU6IHN0cmluZztcbiAgcHVibGljIGFzc2VtYmx5Q29zdHM6IG51bWJlcjtcbiAgcHVibGljIGRlbGl2ZXJ5Q29zdHM6IG51bWJlcjtcblxuICAvLyBUT0RPOiBEZXplIHZlbGRlbiBub2cgb3BuZW1lbiBpbiBUcmFuc2FjdGlvbiEhXG4gIHB1YmxpYyBkZWxpdmVyeURhdGVGaW5hbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgYXNzZW1ibHlEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIHRvdGFsQXNzZW1ibHlUaW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgZHJvcHNoaXBtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBkZWxpdmVyeURhdGUoKTogRGF0ZSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uZGVsaXZlcnlEYXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkZWxpdmVyeURhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlclNlcnZpY2U6IEZvcm1NYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGVsaXZlcnlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlRGVsaXZlcnlDb3N0cygpO1xuICAgIHRoaXMuYXNzZW1ibHlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlQXNzZW1ibHlDb3N0cygpO1xuICAgIHRoaXMuc2VydmljZS5nZXREZWxpdmVyeU1ldGhvZHMoKS50aGVuKChtZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdKSA9PiB7XG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLmdldERlbGl2ZXJ5T3B0aW9ucygpLnRoZW4oKG9wdGlvbnM6IERlbGl2ZXJ5T3B0aW9uW10pID0+IHtcbiAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25MaXN0ID0gb3B0aW9ucztcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TWFya2V0aW5nQ29kZXMoKS50aGVuKChtYXJrZXRpbmdDb2RlczogTWFya2V0aW5nW10pID0+IHtcbiAgICAgIHRoaXMubWFya2V0aW5nID0gbWFya2V0aW5nQ29kZXM7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JtTWFzdGVyU2VydmljZS5zdWJtaXRTbGF2ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVEZWxpdmVyeU1ldGhvZENoYW5nZShkZWxpdmVyeU1ldGhvZElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZWxpdmVyeU1ldGhvZDogRGVsaXZlcnlNZXRob2QgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5TWV0aG9kQnlJZChkZWxpdmVyeU1ldGhvZElkKTtcbiAgICB0aGlzLmRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QuZGVsaXZlcnlNZXRob2QgPSBkZWxpdmVyeU1ldGhvZElkO1xuICAgIGlmIChkZWxpdmVyeU1ldGhvZCkge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5T3B0aW9uc0J5RGVsaXZlcnlNZXRob2QoZGVsaXZlcnlNZXRob2QpO1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LmRlbGl2ZXJ5T3B0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleERlbGl2ZXJ5VHlwZShpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZGVsaXZlcnlUeXBlSWR4ID0gaWR4O1xuICAgIC8vIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU9wdGlvbnNCeURlbGl2ZXJ5TWV0aG9kKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IERlbGl2ZXJ5T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5T3B0aW9uTGlzdC5maWx0ZXIoZGVsaXZlcnlPcHRpb24gPT4gZGVsaXZlcnlNZXRob2QuZGVsaXZlcnlPcHRpb25zLmluZGV4T2YoZGVsaXZlcnlPcHRpb24uY29kZSkgIT09IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU1ldGhvZEJ5SWQoZGVsaXZlcnlNZXRob2RJZDogc3RyaW5nKTogRGVsaXZlcnlNZXRob2Qge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKGRlbGl2ZXJ5ID0+IGRlbGl2ZXJ5LmNvZGUgPT09IGRlbGl2ZXJ5TWV0aG9kSWQpO1xuICB9XG5cbiAgcHVibGljIGlzRGVsaXZlcnlPcHRpb25DaGVja2VkKGRlbGl2ZXJ5T3B0aW9uSXRlbTogRGVsaXZlcnlPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5T3B0aW9ucy5pbmRleE9mKGRlbGl2ZXJ5T3B0aW9uSXRlbS5jb2RlLCAwKSA9PT0gMCk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUHJlZmVycmVkRGVsaXZlcnlEYXRlMihwcmVmZXJyZWREYXRlT3B0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUyID0gcHJlZmVycmVkRGF0ZU9wdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcmtldGluZ0NvZGVDaGFuZ2UobWFya2V0aW5nQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ubWFya2V0aW5nQ29kZSA9IG1hcmtldGluZ0NvZGU7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTG9jYXRpb25Qb3B1cCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEZWxpdmVyeUNvc3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUFzc2VtYmx5Q29zdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU0vRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQStIckUsTUFBTSxPQUFPLHFDQUFxQztJQTRFaEQsWUFDVSxrQkFBcUMsRUFDckMsa0JBQXFDLEVBQ3JDLFVBQWlDLEVBQ2xDLE9BQTJCLEVBQzNCLFdBQTZCO1FBSjVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNsQyxZ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Q2xCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsd0JBQXdCLEVBQUU7d0JBQ2hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDN0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM1QyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFuSU8saUJBQWlCO1lBUmpCLGlCQUFpQjtZQVlqQixxQkFBcUI7WUFOckIsa0JBQWtCO1lBT2xCLGdCQUFnQjs7OzBCQXFJckIsS0FBSzswQkFHTCxNQUFNOzRCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7QWRkcmVzc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvXCI7XG5pbXBvcnQge0dlbmRlclR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9nZW5kZXItdHlwZS5lbnVtXCI7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvXCI7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9wdGlvbi5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7VGV4dFZhbHVlQ29udGFpbmVyfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWwvdGV4dC12YWx1ZS1jb250YWluZXJcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIi4uLy4uLy4uL2ZhY3RvcnkvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjby1jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWVkaXQtY29udGVudFwiPlxuICAgICAgPGNvLWZvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1mb3JtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtc2VjdGlvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjAxPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidERUxJVkVSWV9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWNhcm91c2VsLTNkIFt0aWxlV2lkdGhdPVwiMjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVIZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwiZGVsaXZlcnlUeXBlSWR4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGV4U2VsZWN0ZWQpPVwic2V0SW5kZXhEZWxpdmVyeVR5cGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPGNvLWRlbGl2ZXJ5LXR5cGUtdGlsZSAjY2Fyb3VzZWxJdGVtICpuZ0Zvcj1cImxldCBtZXRob2Qgb2YgZGVsaXZlcnlNZXRob2RzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttZXRob2RdPVwibWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImRlbGl2ZXJ5VHlwZUlkeCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlRGVsaXZlcnlNZXRob2RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9jby1kZWxpdmVyeS10eXBlLXRpbGU+XG4gICAgICAgICAgICAgICAgPC9jby1jYXJvdXNlbC0zZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlIFtwbGFjZWhvbGRlcl09XCInREVMSVZFUllfREFURScgfCBsb2NhbGl6ZVwiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9jby1pbnB1dC1kYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgW3BsYWNlaG9sZGVyXT1cIidQUkVGRVJSRURfREFURScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtZGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbbGFiZWxdPVwiJ1BBUlRfREVMSVZFUklFUycgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2hlYWRlclRpdGxlXT1cIidBRERfREVMSVZFUllfT1BUSU9OJyB8IGxvY2FsaXplXCIgW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuVHJpYW5nbGVEb3duKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1saXN0Ym94XG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9PUFRJT05TJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJkZWxpdmVyeU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiZGVsaXZlcnlPcHRpb25GaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2hlY2tib3hdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWxpc3Rib3g+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlIFtoZWFkZXJUaXRsZV09XCInQUREX1JFTUFSSycgfCBsb2NhbGl6ZVwiIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLlRyaWFuZ2xlRG93bilcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dGFyZWEgW3BsYWNlaG9sZGVyXT1cIidSRU1BUktTJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvY28tY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2hlYWRlclRpdGxlXT1cIidBRERfUkVGRVJFTkNFJyB8IGxvY2FsaXplXCIgW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuVHJpYW5nbGVEb3duKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFtwbGFjZWhvbGRlcl09XCInUkVGRVJFTkNFJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW3BsYWNlaG9sZGVyXT1cIidSRUZFUkVOQ0VfUkVMQVRJT04nIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidBU1NFTUJMWV9EQVRFJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1kYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1zZWN0aW9uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPHNwYW4+MDI8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0RPV05QQVlNRU5UJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidET1dOUEFZTUVOVF9QRVJDRU5UQUdFJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCInTk9HX05JRVRfR0VJTVBMRU1FTlRFRVJEJ1wiIFtwbGFjZWhvbGRlcl09XCInRE9XTlBBWU1FTlRfQU1PVU5UJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidET1dOUEFZTUVOVF9CWV9CUicgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCInTk9HX05JRVRfR0VJTVBMRU1FTlRFRVJEJ1wiIFtwbGFjZWhvbGRlcl09XCInRE9XTlBBWU1FTlRfT05fREVMSVZFUlknIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LXNlY3Rpb24td3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInT1JERVJfREFUQScgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCInTk9HX05JRVRfR0VJTVBMRU1FTlRFRVJEJ1wiIFtwbGFjZWhvbGRlcl09XCInQlJBTkNIJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCInTk9HX05JRVRfR0VJTVBMRU1FTlRFRVJEJ1wiIFtwbGFjZWhvbGRlcl09XCInQURNSU5JU1RSQVRJVkVfTUFOQUdFUicgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1kcm9wLWRvd24tbGlzdFxuICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwibWFya2V0aW5nXCJcbiAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwibWFya2V0aW5nRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInTUFSS0VUSU5HJyB8IGxvY2FsaXplXCI+PC9jby1kcm9wLWRvd24tbGlzdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jby1mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlSW52b2ljZUFkZHJlc3NcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe2hlaWdodDogXCIqXCIsIG9wYWNpdHk6IDF9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA9PiAqXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiKiA9PiB2b2lkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdEZWxpdmVyeUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcblxuICAvLyBASW5wdXQoKVxuICAvLyBwdWJsaWMgZGVsaXZlcnlPcHRpb25zUmVxdWVzdDogU2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaW52YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXRcIilcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBkZWxpdmVyeVR5cGVzOiBEZWxpdmVyeVR5cGVbXSA9IFtcbiAgLy8gICB7Y29kZTogJzEnLCBkZXNjcmlwdGlvbjogJ0Jlem9yZ2VuJywgaWNvbjogdGhpcy5pY29ucy5EZWxpdmVyeVRydWNrLCBwcmljZTogODl9LFxuICAvLyAgIHtjb2RlOiAnMicsIGRlc2NyaXB0aW9uOiAnQmV6b3JnZW4gJiBtb250ZXJlbicsIGljb246IHRoaXMuaWNvbnMuQ2FsZW5kYXJEYXksIHByaWNlOiAxMTl9LFxuICAvLyAgIHtjb2RlOiAnMycsIGRlc2NyaXB0aW9uOiAnTWVlbmVtZW4nLCBpY29uOiB0aGlzLmljb25zLlRydWNrfSxcbiAgLy8gXTtcbiAgcHVibGljIGRlbGl2ZXJ5T3B0aW9uTGlzdDogRGVsaXZlcnlPcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgZGVsaXZlcnlPcHRpb25zOiBEZWxpdmVyeU9wdGlvbltdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbkZpZWxkczogVGV4dFZhbHVlQ29udGFpbmVyID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSA9IFtdO1xuICBwdWJsaWMgZGVsaXZlcnlNZXRob2RGaWVsZHM6IFRleHRWYWx1ZUNvbnRhaW5lciA9IHt0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcImNvZGVcIn07XG4gIHB1YmxpYyBkZWxpdmVyeVR5cGVJZHg6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIGNoYW5nZUxvY2F0aW9uUG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIG5ld0FkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlT3B0aW9uczogVGV4dFZhbHVlQ29udGFpbmVyW10gPSBbXG4gICAge3RleHQ6IFwiTk9UX0FGVEVSXCIsIHZhbHVlOiBcIj5cIn0sXG4gICAge3RleHQ6IFwiTk9UX0JFRk9SRVwiLCB2YWx1ZTogXCI8XCJ9LFxuICAgIHt0ZXh0OiBcIk9OX0RBVEVcIiwgdmFsdWU6IFwiPVwifSxcbiAgXTtcbiAgcHVibGljIGFkZHJlc3NUb0VkaXQ6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIGdlbmRlcjogR2VuZGVyVHlwZTtcbiAgcHVibGljIG1hcmtldGluZzogTWFya2V0aW5nW10gPSBbXTtcbiAgcHVibGljIG1hcmtldGluZ0ZpZWxkczogT2JqZWN0ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIG1hcmtldGluZ0NvZGU6IHN0cmluZztcbiAgcHVibGljIGFzc2VtYmx5Q29zdHM6IG51bWJlcjtcbiAgcHVibGljIGRlbGl2ZXJ5Q29zdHM6IG51bWJlcjtcblxuICAvLyBUT0RPOiBEZXplIHZlbGRlbiBub2cgb3BuZW1lbiBpbiBUcmFuc2FjdGlvbiEhXG4gIHB1YmxpYyBkZWxpdmVyeURhdGVGaW5hbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgYXNzZW1ibHlEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIHRvdGFsQXNzZW1ibHlUaW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgZHJvcHNoaXBtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBkZWxpdmVyeURhdGUoKTogRGF0ZSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uZGVsaXZlcnlEYXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkZWxpdmVyeURhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlclNlcnZpY2U6IEZvcm1NYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGVsaXZlcnlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlRGVsaXZlcnlDb3N0cygpO1xuICAgIHRoaXMuYXNzZW1ibHlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlQXNzZW1ibHlDb3N0cygpO1xuICAgIHRoaXMuc2VydmljZS5nZXREZWxpdmVyeU1ldGhvZHMoKS50aGVuKChtZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdKSA9PiB7XG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG1ldGhvZHMuZmlsdGVyKG0gPT4gbS53ZWJzaG9wKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0RGVsaXZlcnlPcHRpb25zKCkudGhlbigob3B0aW9uczogRGVsaXZlcnlPcHRpb25bXSkgPT4ge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbkxpc3QgPSBvcHRpb25zO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpLnRoZW4oKG1hcmtldGluZ0NvZGVzOiBNYXJrZXRpbmdbXSkgPT4ge1xuICAgICAgdGhpcy5tYXJrZXRpbmcgPSBtYXJrZXRpbmdDb2RlcztcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1NYXN0ZXJTZXJ2aWNlLnN1Ym1pdFNsYXZlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZURlbGl2ZXJ5TWV0aG9kQ2hhbmdlKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5mb3JFYWNoKCh0bDogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4ge1xuICAgICAgdGwuZGVsaXZlcnlNZXRob2RDb2RlID0gZGVsaXZlcnlNZXRob2QuY29kZTtcbiAgICB9KVxuICAgIGlmIChkZWxpdmVyeU1ldGhvZCkge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5T3B0aW9uc0J5RGVsaXZlcnlNZXRob2QoZGVsaXZlcnlNZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleERlbGl2ZXJ5VHlwZShpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZGVsaXZlcnlUeXBlSWR4ID0gaWR4O1xuICAgIC8vIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU9wdGlvbnNCeURlbGl2ZXJ5TWV0aG9kKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IERlbGl2ZXJ5T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5T3B0aW9uTGlzdC5maWx0ZXIoZGVsaXZlcnlPcHRpb24gPT4gZGVsaXZlcnlNZXRob2QuZGVsaXZlcnlPcHRpb25zLmluZGV4T2YoZGVsaXZlcnlPcHRpb24uY29kZSkgIT09IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU1ldGhvZEJ5SWQoZGVsaXZlcnlNZXRob2RJZDogc3RyaW5nKTogRGVsaXZlcnlNZXRob2Qge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKGRlbGl2ZXJ5ID0+IGRlbGl2ZXJ5LmNvZGUgPT09IGRlbGl2ZXJ5TWV0aG9kSWQpO1xuICB9XG5cbiAgcHVibGljIGlzRGVsaXZlcnlPcHRpb25DaGVja2VkKGRlbGl2ZXJ5T3B0aW9uSXRlbTogRGVsaXZlcnlPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5T3B0aW9ucy5pbmRleE9mKGRlbGl2ZXJ5T3B0aW9uSXRlbS5jb2RlLCAwKSA9PT0gMCk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUHJlZmVycmVkRGVsaXZlcnlEYXRlMihwcmVmZXJyZWREYXRlT3B0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUyID0gcHJlZmVycmVkRGF0ZU9wdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcmtldGluZ0NvZGVDaGFuZ2UobWFya2V0aW5nQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ubWFya2V0aW5nQ29kZSA9IG1hcmtldGluZ0NvZGU7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTG9jYXRpb25Qb3B1cCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEZWxpdmVyeUNvc3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUFzc2VtYmx5Q29zdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIl19
@@ -134,26 +134,26 @@ export class CheckoutOverviewRelationEditComponent {
134
134
  this.showSelectAddressDialog = false;
135
135
  }
136
136
  selectAddress(address) {
137
- if (!this.deliveryOptionsRequest) {
138
- return;
139
- }
140
- if (!address) {
141
- address = this._service.getFirstAddress(this.relation);
142
- }
143
- if (!address) {
144
- return;
145
- }
146
- this._setCountryNameToAddress(address);
147
- if (this.editAddressType === AddressType.DeliveryAddress) {
148
- this.deliveryOptionsRequest.transactionAddress = address.nawNr;
149
- this.deliveryAddress = address;
150
- this.deliveryAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === this.deliveryAddress.nawNr);
151
- }
152
- if (this.invoiceAddressSameAsDeliveryAddress || this.editAddressType !== AddressType.DeliveryAddress) {
153
- this.deliveryOptionsRequest.invoiceAddress = address.nawNr;
154
- this.invoiceAddress = address;
155
- this.invoiceAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === this.invoiceAddress.nawNr);
156
- }
137
+ // if (!this.deliveryOptionsRequest) {
138
+ // return;
139
+ // }
140
+ // if (!address) {
141
+ // address = this._service.getFirstAddress(this.relation);
142
+ // }
143
+ // if (!address) {
144
+ // return;
145
+ // }
146
+ // this._setCountryNameToAddress(address);
147
+ // if (this.editAddressType === AddressType.DeliveryAddress) {
148
+ // this.deliveryOptionsRequest.transactionAddress = address.nawNr;
149
+ // this.deliveryAddress = address;
150
+ // this.deliveryAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === this.deliveryAddress.nawNr);
151
+ // }
152
+ // if (this.invoiceAddressSameAsDeliveryAddress || this.editAddressType !== AddressType.DeliveryAddress) {
153
+ // this.deliveryOptionsRequest.invoiceAddress = address.nawNr;
154
+ // this.invoiceAddress = address;
155
+ // this.invoiceAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === this.invoiceAddress.nawNr);
156
+ // }
157
157
  this.showSelectAddressDialog = false;
158
158
  }
159
159
  preparePrimaryEmail() {
@@ -529,10 +529,9 @@ CheckoutOverviewRelationEditComponent.ctorParameters = () => [
529
529
  CheckoutOverviewRelationEditComponent.propDecorators = {
530
530
  relationForm: [{ type: ViewChild, args: [FormComponent, { static: true },] }],
531
531
  relation: [{ type: Input }],
532
- deliveryOptionsRequest: [{ type: Input }],
533
532
  validSubmit: [{ type: Output }],
534
533
  invalidSubmit: [{ type: Output }],
535
534
  relationChange: [{ type: Output }],
536
535
  showClass: [{ type: HostBinding, args: ["class.co-checkout-overview-relation-edit",] }]
537
536
  };
538
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFFOUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkRBQTZELENBQUM7QUFDOUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN0RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFFbEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1EQUFt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Q0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQ25ELENBQUM7aUJBQ0g7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXhQTyxrQkFBa0I7WUFFSCxpQkFBaUI7WUFRaEMscUJBQXFCOzs7MkJBa1AxQixTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt1QkFHdkMsS0FBSztxQ0FRTCxLQUFLOzBCQUdMLE1BQU07NEJBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGVcIjtcbmltcG9ydCB7TlVMTF9SRUxBVElPTl9PQkpFQ1R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbnVsLXJlbGF0aW9uLW9iamVjdFwiO1xuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZnVsbC1vYmplY3QuYm9cIjtcbmltcG9ydCB7Q29tbXVuaWNhdGlvblR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9jb21tdW5pY2F0aW9uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtDb250YWN0T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvbnRhY3Qtb3B0aW9uLmJvXCI7XG5pbXBvcnQge2lzTmlsbH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9mdW5jdGlvbi9pcy1uaWxsLmZ1bmN0aW9uXCI7XG5pbXBvcnQge1JlbGF0aW9uTmFtZUtpbmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1uYW1lLWtpbmQuZW51bVwiO1xuaW1wb3J0IHtBZGRyZXNzVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcHJpdmFjeS1zZXR0aW5nLmJvXCI7XG5pbXBvcnQge0dlbmRlclR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9nZW5kZXItdHlwZS5lbnVtXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdFV0aWxzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL3V0aWxzL2J1c2luZXNzLW9iamVjdC11dGlsc1wiO1xuaW1wb3J0IHtGb3JtQ29tcG9uZW50LCBGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7RnVuY3Rpb25VdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9mdW5jdGlvbi11dGlsc1wiO1xuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9vYmplY3QtdXRpbHNcIjtcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1yZXF1ZXN0XCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIi4uLy4uLy4uL2ZhY3RvcnkvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcbmltcG9ydCB7Q291bnRyeX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvXCI7XG5pbXBvcnQge1NldFRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zZXQtdHJhbnNhY3Rpb24tZGVsaXZlcnktb3B0aW9ucy1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdFwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1lZGl0LWNvbnRlbnRcIj5cbiAgICAgIDxjby1mb3JtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZm9ybS13cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDE8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQRVJTT05BTF9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIndHlwZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInUFJJVkFURV9QRVJTT04nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWxUeXBlLlByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLnR5cGUgPT09IHJlbFR5cGUuUHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZVJlbGF0aW9uVHlwZShyZWxUeXBlLlByaXZhdGUpXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3R5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NPTVBBTlknIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWxUeXBlLkNvbXBhbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJlbGF0aW9uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLnR5cGUgPT09IHJlbFR5cGUuQ29tcGFueVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZVJlbGF0aW9uVHlwZShyZWxUeXBlLkNvbXBhbnkpXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPHJlbGF0aW9uLWN1c3RvbWVyLWdyb3VwcyBbKG1vZGVsKV09XCJyZWxhdGlvbi5jdXN0b21lckdyb3VwXCIgcmVxdWlyZWQ+PC9yZWxhdGlvbi1jdXN0b21lci1ncm91cHM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGlvbi50eXBlID09PSByZWxUeXBlLlByaXZhdGVcIiBjbGFzcz1cImNvbGxhcHNlYWJsZVwiIEBzaG93SGlkZVByaXZhdGVSZWxhdGlvbkZpZWxkcz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtZmlyc3QtbmFtZVwiXG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyZWxhdGlvbi5maXJzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidGSVJTVF9OQU1FJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmaXJzdE5hbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja1Zpc2liaWxpdHlTdWdnZXN0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LXByZWZpeC1uYW1lIGRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicmVsYXRpb24ucHJlZml4XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUFJFRklYJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LWxhc3QtbmFtZVwiXG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyZWxhdGlvbi5mYW1pbHlOYW1lXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInTEFTVF9OQU1FJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmYW1pbHlOYW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tWaXNpYmlsaXR5U3VnZ2VzdGlvbnMoKVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidnZW5kZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTUFMRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2VuZGVyVHlwZS5NYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5NYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VHZW5kZXJUeXBlKGdlbmRlclR5cGUuTWFsZSlcIlxuICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInZ2VuZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0ZFTUFMRScgfCBsb2NhbGl6ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdlbmRlclR5cGUuRmVtYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5GZW1hbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZUdlbmRlclR5cGUoZ2VuZGVyVHlwZS5GZW1hbGUpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ2dlbmRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVTktOT1dOJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZW5kZXJUeXBlLlVuc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbGF0aW9uLmdlbmRlciA9PT0gZ2VuZGVyVHlwZS5VbnNwZWNpZmllZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlR2VuZGVyVHlwZShnZW5kZXJUeXBlLlVuc3BlY2lmaWVkKVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgW3BsYWNlaG9sZGVyXT1cIidEQVRFX09GX0JJUlRIJyB8IGxvY2FsaXplIFwiIFsobW9kZWwpXT1cImRhdGVPZkJpcnRoXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRpb24/LnR5cGUgPT09IHJlbFR5cGUuQ29tcGFueVwiIGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3cgY29sbGFwc2VhYmxlXCIgQHNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJyZWxhdGlvbi5mYW1pbHlOYW1lXCIgW3BsYWNlaG9sZGVyXT1cIidDT01QQU5ZX05BTUUnIHwgbG9jYWxpemVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3MgW2FkZHJlc3NdPVwiZWRpdEZpcnN0QWRkcmVzc1wiIFtzaG93QnV0dG9uc109XCJmYWxzZVwiPjwvY28tcmVsYXRpb24tYWRkcmVzcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tY2Fyb3VzZWwtM2QgKm5nSWY9XCJyZWxhdGlvbi5hZGRyZXNzZXMgJiYgcmVsYXRpb24uYWRkcmVzc2VzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVXaWR0aF09XCIyMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVIZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cImRlbGl2ZXJ5QWRkcmVzc0lkeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZXhTZWxlY3RlZCk9XCJzZXRJbmRleERlbGl2ZXJ5QWRkcmVzcygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZSAjY2Fyb3VzZWxJdGVtICpuZ0Zvcj1cImxldCBhZGRyZXNzIG9mIHJlbGF0aW9uLmFkZHJlc3NlczsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiZGVsaXZlcnlBZGRyZXNzSWR4ID09PSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdEFkZHJlc3NDbGlja2VkKT1cImVkaXRBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZT5cbiAgICAgICAgICAgICAgPC9jby1jYXJvdXNlbC0zZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1hZGRyZXNzLW5ld1wiPlxuICAgICAgICAgICAgICAgIDxpY29uIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1pY29uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludFJpZ2h0XCI+PC9pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cIidBRERSRVNTX0FERCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJzaG93TmV3QWRkcmVzc0RpYWxvZygpXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0VfQUREUkVTUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggWyhtb2RlbCldPVwiaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeUFkZHJlc3NcIiAobW9kZWxDaGFuZ2UpPVwiY2hlY2tTYW1lQWRkcmVzcygkZXZlbnQpXCIgW2xhYmVsXT1cIidTQU1FX0FTX0RFTElWRVJZJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3LWRlbGl2ZXJ5LWludm9pY2UtYWRkcmVzc1wiICpuZ0lmPVwiIWludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzXCIgQHNob3dIaWRlSW52b2ljZUFkZHJlc3M+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1jYXJvdXNlbC0zZCAqbmdJZj1cInJlbGF0aW9uLmFkZHJlc3NlcyAmJiByZWxhdGlvbi5hZGRyZXNzZXMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlV2lkdGhdPVwiMjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbGVIZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwiaW52b2ljZUFkZHJlc3NJZHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZXhTZWxlY3RlZCk9XCJzZXRJbmRleEludm9pY2VBZGRyZXNzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzLXRpbGUgI2Nhcm91c2VsSXRlbSAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiByZWxhdGlvbi5hZGRyZXNzZXM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpbnZvaWNlQWRkcmVzc0lkeCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdEFkZHJlc3NDbGlja2VkKT1cImVkaXRBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tYWRkcmVzcy10aWxlPlxuICAgICAgICAgICAgICAgIDwvY28tY2Fyb3VzZWwtM2Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1uZXdcIj5cbiAgICAgICAgICAgICAgICAgIDxpY29uIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1pY29uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludFJpZ2h0XCI+PC9pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwiJ0FERFJFU1NfQUREJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cInNob3dOZXdBZGRyZXNzRGlhbG9nKClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0NPTlRBQ1RfREVUQUlMUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJwaG9uZU51bWJlci52YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInUEhPTkVfTk8nIHwgbG9jYWxpemUgXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJlbWFpbEFkZHJlc3MudmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0VNQUlMX0FERFJFU1MnIHwgbG9jYWxpemUgXCIgW3R5cGVdPVwiJ2VtYWlsJ1wiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG48IS0tXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQQVNTV09SRCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ0FDQ09VTlRfRVhQTEFOQVRJT04nIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4tLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggW2xhYmVsXT1cIidJTlZJVEVfVE9fQUNDT1VOVCcgfCBsb2NhbGl6ZVwiIFsobW9kZWwpXT1cImludml0ZVRvQWNjb3VudFwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wNDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ1BSSVZBQ1lfUFJFRkVSRU5DRVMnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLWNvbHVtbi1ncmlkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByaXZhY3lTZXR0aW5nIG9mIHByaXZhY3lTZXR0aW5nc1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBjbGFzcz1cImZpcnN0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwcml2YWN5U2V0dGluZy5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJpc1NoYXJlZChwcml2YWN5U2V0dGluZylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlUHJpdmFjeVNldHRpbmcocHJpdmFjeVNldHRpbmcsICRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kLWNvbHVtblwiIFt0ZXh0Q29udGVudF09XCJwcml2YWN5U2V0dGluZy5leHBsYW5hdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvLWZvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb25zLXNpZGViYXJcIiAqbmdJZj1cInNob3dSZWxhdGlvblNpZGViYXJcIiBAc2hvd0hpZGVTaWRlYmFyPlxuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aW9uLXNpZGViYXItaGVhZGVyXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWgzXCIgW3RleHRDb250ZW50XT1cIidTVUdHRVNUSU9OUycgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjby1jaGVja291dC1yZWxhdGlvbi1zdWdnZXN0aW9ucy1saXN0XG4gICAgICAgIFtzdWdnZXN0aW9uc109XCJyZWxhdGlvblN1Z2dlc3Rpb25zXCJcbiAgICAgICAgKHN1Z2dlc3Rpb25TZWxlY3RlZCk9XCJvblJlbGF0aW9uU3VnZ2VzdGlvbkNsaWNrKCRldmVudClcIlxuICAgICAgPjwvY28tY2hlY2tvdXQtcmVsYXRpb24tc3VnZ2VzdGlvbnMtbGlzdD5cbiAgICA8L2Rpdj5cbiAgICA8Y28tZGlhbG9nICpuZ0lmPVwic2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2dcIj5cbiAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzXG4gICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZU5ld0FkZHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIChjYW5jZWxDbGljayk9XCJzaG93Q3JlYXRlQWRkcmVzc0RpYWxvZyA9IGZhbHNlXCJcbiAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3M+XG4gICAgPC9jby1kaWFsb2c+XG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cInNob3dTZWxlY3RBZGRyZXNzRGlhbG9nICYmIGFkZHJlc3NUb0VkaXRcIj5cbiAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzXG4gICAgICAgIFthZGRyZXNzXT1cImFkZHJlc3NUb0VkaXRcIlxuICAgICAgICAoc2F2ZUNsaWNrKT1cInNhdmVBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAoY2FuY2VsQ2xpY2spPVwic2hvd1NlbGVjdEFkZHJlc3NEaWFsb2cgPSBmYWxzZVwiXG4gICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzPlxuICAgIDwvY28tZGlhbG9nPlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlUHJpdmF0ZVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlU2lkZWJhclwiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCJ9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA8PT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlSW52b2ljZUFkZHJlc3NcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe2hlaWdodDogXCIqXCIsIG9wYWNpdHk6IDF9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA9PiAqXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiKiA9PiB2b2lkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdSZWxhdGlvbkVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcblxuICBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgcmVsYXRpb25Gb3JtOiBGb3JtQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IFJlbGF0aW9uQW55VHlwZSkge1xuICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XG5cbiAgICB0aGlzLnByZXBhcmVQcmltYXJ5RW1haWwoKTtcbiAgICB0aGlzLnByZXBhcmVQcmltYXJ5UGhvbmUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3Q7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaW52YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVsYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdFwiKVxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGZvcm1SZWxhdGlvbjogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBkYXRlT2ZCaXJ0aDogRGF0ZTtcbiAgcHVibGljIGFjY291bnRQYXNzd29yZDogc3RyaW5nID0gXCJcIjtcbiAgcHVibGljIGhpZGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgZ2VuZGVyOiBHZW5kZXJUeXBlID0gR2VuZGVyVHlwZS5VbnNwZWNpZmllZDtcbiAgcHVibGljIGVtYWlsQWRkcmVzczogQ29udGFjdE9wdGlvbiA9IG5ldyBDb250YWN0T3B0aW9uKCk7XG4gIHB1YmxpYyBwaG9uZU51bWJlcjogQ29udGFjdE9wdGlvbiA9IG5ldyBDb250YWN0T3B0aW9uKCk7XG4gIHB1YmxpYyBwcml2YWN5U2V0dGluZ3M6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXTtcbiAgcHVibGljIHJlbGF0aW9uU3VnZ2VzdGlvbnM6IFJlbGF0aW9uTGlzdE9iamVjdFtdID0gW107XG4gIHB1YmxpYyBzaG93UmVsYXRpb25TaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpbnZpdGVUb0FjY291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgYWRkcmVzc2VzOiBBZGRyZXNzW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkQWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGludm9pY2VBZGRyZXNzOiBBZGRyZXNzO1xuICBwdWJsaWMgZGVsaXZlcnlBZGRyZXNzSWR4OiBudW1iZXIgPSAwO1xuICBwdWJsaWMgaW52b2ljZUFkZHJlc3NJZHg6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5QWRkcmVzczogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBlZGl0QWRkcmVzc1R5cGU6IEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICBwdWJsaWMgYWRkcmVzc1RvRWRpdDogQWRkcmVzcztcbiAgcHVibGljIHNob3dTZWxlY3RBZGRyZXNzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q3JlYXRlQWRkcmVzc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSByZWxUeXBlOiB0eXBlb2YgUmVsYXRpb25OYW1lS2luZCA9IFJlbGF0aW9uTmFtZUtpbmQ7XG4gIHB1YmxpYyByZWFkb25seSBnZW5kZXJUeXBlOiB0eXBlb2YgR2VuZGVyVHlwZSA9IEdlbmRlclR5cGU7XG5cbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVsYXRpb25Bc0N1c3RvbWVyKCk6IEN1c3RvbWVyRnVsbE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uICYmIHRoaXMuX3JlbGF0aW9uIGFzIEN1c3RvbWVyRnVsbE9iamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWRpdEZpcnN0QWRkcmVzcygpOiBBZGRyZXNzIHtcbiAgICBjb25zdCBmaXJzdEFkZHJlc3M6IEFkZHJlc3MgPSB0aGlzLl9zZXJ2aWNlLmdldEZpcnN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uKTtcbiAgICBpZiAoZmlyc3RBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gZmlyc3RBZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpO1xuICAgICAgYWRkcmVzcy5hZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIGFkZHJlc3Muc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIGFkZHJlc3Muc2VxdWVuY2UgPSB0aGlzLl9yZWxhdGlvbi5nZXROZXh0QWRkcmVzc1NlcXVlbmNlKCk7XG4gICAgICB0aGlzLl9yZWxhdGlvbi5hZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb25Vc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlLmFwcGxpY2F0aW9uVXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBOVUxMX1JFTEFUSU9OX09CSkVDVDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlcjogRm9ybU1hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfYm9GYWN0b3J5OiBCdXNpbmVzc09iamVjdEZhY3RvcnlcbiAgKSB7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9pbml0Rm9ybSgpO1xuICAgIHRoaXMuX3JlbGF0aW9uLnR5cGUgPSB0aGlzLnJlbFR5cGUuUHJpdmF0ZTtcbiAgICB0aGlzLl9yZWxhdGlvbi5nZW5kZXIgPSB0aGlzLmdlbmRlcjtcbiAgICBhd2FpdCB0aGlzLmxvYWRQcml2YWN5U2V0dGluZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgLy8gcmV0dXJuIHRoaXMucmVsYXRpb25Gb3JtLnN1Ym1pdCgpO1xuICAgIHJldHVybiB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xuICB9XG5cbiAgcHVibGljIHNob3dOZXdBZGRyZXNzRGlhbG9nKGRlbGl2ZXJ5QWRkcmVzczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IGRlbGl2ZXJ5QWRkcmVzcyA/IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcyA6IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuICAgIHRoaXMuc2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNob3dFZGl0QWRkcmVzc0RpYWxvZyhkZWxpdmVyeUFkZHJlc3M6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBkZWxpdmVyeUFkZHJlc3MgPyBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MgOiBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcztcbiAgICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleERlbGl2ZXJ5QWRkcmVzcyhpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzSWR4ID0gaWR4O1xuICAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleEludm9pY2VBZGRyZXNzKGlkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pbnZvaWNlQWRkcmVzc0lkeCA9IGlkeDtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0QWRkcmVzcyhhZGRyOiBBZGRyZXNzKTogdm9pZCB7XG4gICAgdGhpcy5hZGRyZXNzVG9FZGl0ID0gPEFkZHJlc3M+PHVua25vd24+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQWRkcmVzcywgYWRkcik7XG4gICAgdGhpcy5zaG93RWRpdEFkZHJlc3NEaWFsb2coKVxuICB9XG5cbiAgcHVibGljIGNoZWNrU2FtZUFkZHJlc3MoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLmRlbGl2ZXJ5QWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVOZXdBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICBhZGRyZXNzLmFkZHJlc3NUeXBlID0gdGhpcy5lZGl0QWRkcmVzc1R5cGU7XG4gICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgICB0aGlzLnNlbGVjdEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgdGhpcy5zaG93Q3JlYXRlQWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNhdmVBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IGFkZHJlc3MubmF3TnIpO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXNbaWR4XSA9IDxBZGRyZXNzPjx1bmtub3duPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFkZHJlc3MsIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWRkcmVzcyhhZGRyZXNzPzogQWRkcmVzcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghYWRkcmVzcykge1xuICAgICAgYWRkcmVzcyA9IHRoaXMuX3NlcnZpY2UuZ2V0Rmlyc3RBZGRyZXNzKHRoaXMucmVsYXRpb24pO1xuICAgIH1cbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzcyk7XG4gICAgaWYgKHRoaXMuZWRpdEFkZHJlc3NUeXBlID09PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdC50cmFuc2FjdGlvbkFkZHJlc3MgPSBhZGRyZXNzLm5hd05yO1xuICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3MgPSBhZGRyZXNzO1xuICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB0aGlzLmRlbGl2ZXJ5QWRkcmVzcy5uYXdOcik7XG4gICAgfVxuICAgIGlmICh0aGlzLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzIHx8IHRoaXMuZWRpdEFkZHJlc3NUeXBlICE9PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5pbnZvaWNlQWRkcmVzcyA9IGFkZHJlc3MubmF3TnI7XG4gICAgICB0aGlzLmludm9pY2VBZGRyZXNzID0gYWRkcmVzcztcbiAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB0aGlzLmludm9pY2VBZGRyZXNzLm5hd05yKTtcbiAgICB9XG4gICAgdGhpcy5zaG93U2VsZWN0QWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVQcmltYXJ5RW1haWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IHRoaXMuX3JlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLkVtYWlsKTtcbiAgICAgIGlmIChpc05pbGwodGhpcy5lbWFpbEFkZHJlc3MpKSB7XG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MudHlwZSA9IENvbW11bmljYXRpb25UeXBlLkVtYWlsO1xuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcy5zZXF1ZW5jZSA9IDA7XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uLmFkZENvbnRhY3RPcHRpb24odGhpcy5lbWFpbEFkZHJlc3MpO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5lbWFpbEFkZHJlc3MpIHtcbiAgICAgIC8vICAgdGhpcy5lbWFpbEFkZHJlc3MudmFsdWUgPSB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuZW1haWxBZGRyZXNzO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcmVwYXJlUHJpbWFyeVBob25lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHRoaXMuX3JlbGF0aW9uLmdldExvd2VzdFNlcXVlbmNlT2ZDb250YWN0T3B0aW9uc1dpdGhUeXBlKENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSk7XG4gICAgICBpZiAoaXNOaWxsKHRoaXMucGhvbmVOdW1iZXIpKSB7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSBuZXcgQ29udGFjdE9wdGlvbigpO1xuICAgICAgICB0aGlzLnBob25lTnVtYmVyLnR5cGUgPSBDb21tdW5pY2F0aW9uVHlwZS5UZWxlcGhvbmU7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIuc2VxdWVuY2UgPSAwO1xuICAgICAgICB0aGlzLl9yZWxhdGlvbi5hZGRDb250YWN0T3B0aW9uKHRoaXMucGhvbmVOdW1iZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHJpdmFjeVNldHRpbmdzID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRNYXJrZXRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGlzU2hhcmVkKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gICAgaWYgKG93blNldHRpbmcpIHtcbiAgICAgIHJldHVybiBvd25TZXR0aW5nLmFsbG93VG9TaGFyZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVJlbGF0aW9uVHlwZSh2YWx1ZTogUmVsYXRpb25OYW1lS2luZCk6IHZvaWQge1xuICAgIHRoaXMucmVsYXRpb24udHlwZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUdlbmRlclR5cGUodmFsdWU6IEdlbmRlclR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnJlbGF0aW9uLmdlbmRlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGZpcnN0TmFtZUNoYW5nZShmaXJzdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5fcmVsYXRpb24uZmlyc3ROYW1lID0gZmlyc3ROYW1lO1xuICAgIH1cbiAgICB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyLmNhbGwodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZmFtaWx5TmFtZUNoYW5nZShmYW1pbHlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUgPSBmYW1pbHlOYW1lO1xuICAgIH1cbiAgICB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyLmNhbGwodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWaXNpYmlsaXR5U3VnZ2VzdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uLmZpcnN0TmFtZSAmJiB0aGlzLl9yZWxhdGlvbi5mYW1pbHlOYW1lKSB7XG4gICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG9uUmVsYXRpb25TdWdnZXN0aW9uQ2xpY2socmVsYXRpb25TdWdnZXN0ZWQ6IFJlbGF0aW9uTGlzdE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChyZWxhdGlvblN1Z2dlc3RlZCkge1xuICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgLy8gYXdhaXQgdGhpcy5fc2VydmljZS5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24ocmVsYXRpb25TdWdnZXN0ZWQucmVsYXRpb25JZCk7XG4gICAgICB0aGlzLnJlbGF0aW9uID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRDdXN0b21lckZ1bGxPYmplY3RCeVJlbGF0aW9uSWQocmVsYXRpb25TdWdnZXN0ZWQucmVsYXRpb25JZCk7XG4gICAgICB0aGlzLnJlbGF0aW9uQ2hhbmdlLm5leHQodGhpcy5yZWxhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoYW5nZVByaXZhY3lTZXR0aW5nKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgb3duU2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZyA9IEJ1c2luZXNzT2JqZWN0VXRpbHMuRmluZEl0ZW1CeUlkKHRoaXMucmVsYXRpb25Bc0N1c3RvbWVyLnJlbGF0aW9uUHJpdmFjeVNldHRpbmdzLCByZWxhdGlvblByaXZhY3lTZXR0aW5nLmdldElkKCkpO1xuICAgIGlmIChvd25TZXR0aW5nKSB7XG4gICAgICBvd25TZXR0aW5nLmFsbG93VG9TaGFyZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbGF0aW9uQXNDdXN0b21lci5yZWxhdGlvblByaXZhY3lTZXR0aW5ncy5wdXNoKHJlbGF0aW9uUHJpdmFjeVNldHRpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG93U2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dSZWxhdGlvblNpZGViYXIgPSB0cnVlO1xuICB9XG5cbiAgLy8gSGlkZSBzaWRlYmFyIHdpdGggYSBsaXR0bGUgdGltZW91dCB0byBwcmV2ZW50IG1pc3NpbmcgdGhlIGNsaWNrXG4gIHB1YmxpYyBoaWRlU2lkZWJhcigpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1JlbGF0aW9uU2lkZWJhciA9IGZhbHNlO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Rm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWxhdGlvbkZvcm0pIHtcbiAgICAgIHRoaXMuZm9ybVJlbGF0aW9uID0gdGhpcy5yZWxhdGlvbkZvcm0uZm9ybUdyb3VwO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZldGNoZXMgcmVsYXRpb24gc3VnZ2VzdGlvbnNcbiAgcHJpdmF0ZSBfcmVsYXRpb25OYW1lQ2hhbmdlSGFuZGxlcjogRnVuY3Rpb24gPSBGdW5jdGlvblV0aWxzLlRocm90dGxlKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb25OYW1lQ2hhbmdlZEhhbmRsZXJGbigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIH0sIDYwMCk7XG5cbiAgLy8gbG9hZCBzdWdnZXN0aW9uc1xuICBwcml2YXRlIGFzeW5jIF9yZWxhdGlvbk5hbWVDaGFuZ2VkSGFuZGxlckZuKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZmlyc3ROYW1lOiBzdHJpbmcgPSBPYmplY3RVdGlscy5WYWx1ZU9yRGVmYXVsdCh0aGlzLl9yZWxhdGlvbi5maXJzdE5hbWUpO1xuICAgIGNvbnN0IHNlY29uZE5hbWU6IHN0cmluZyA9IE9iamVjdFV0aWxzLlZhbHVlT3JEZWZhdWx0KHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUpO1xuXG4gICAgaWYgKCFmaXJzdE5hbWUgJiYgIXNlY29uZE5hbWUpIHtcbiAgICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0ge307XG4gICAgcmVsYXRpb25SZXF1ZXN0LnJlbGF0aW9uVHlwZSA9IHRoaXMuX3JlbGF0aW9uLnJlbGF0aW9uVHlwZTtcbiAgICBpZiAoZmlyc3ROYW1lKSB7XG4gICAgICByZWxhdGlvblJlcXVlc3QuZmlyc3ROYW1lID0gZmlyc3ROYW1lO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmROYW1lKSB7XG4gICAgICByZWxhdGlvblJlcXVlc3QuZmFtaWx5TmFtZSA9IHNlY29uZE5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U2lkZWJhcigpO1xuICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IGF3YWl0IHRoaXMuX3NlcnZpY2UuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhZGRyZXNzLmNvdW50cnlJZCAmJiAhYWRkcmVzcy5jb3VudHJ5TmFtZSkge1xuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IGF3YWl0IHRoaXMuX3NlcnZpY2UuZ2V0Q291bnRyeShhZGRyZXNzLmNvdW50cnlJZCk7XG4gICAgICBhZGRyZXNzLmNvdW50cnlOYW1lID0gY291bnRyeS5kZXNjcmlwdGlvbjtcbiAgICB9XG4gIH1cblxufVxuIl19
537
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFFOUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkRBQTZELENBQUM7QUFDOUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN0RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFFbEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1EQUFt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O3FCQUN2RCxDQUFDO29CQUNGLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRTt3QkFDaEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM3QyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQzVDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBQ3JELFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQ25ELENBQUM7aUJBQ0g7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXZQTyxrQkFBa0I7WUFFSCxpQkFBaUI7WUFRaEMscUJBQXFCOzs7MkJBaVAxQixTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt1QkFHdkMsS0FBSzswQkFRTCxNQUFNOzRCQUdOLE1BQU07NkJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWFueS10eXBlXCI7XG5pbXBvcnQge05VTExfUkVMQVRJT05fT0JKRUNUfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL251bC1yZWxhdGlvbi1vYmplY3RcIjtcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XG5pbXBvcnQge0NvbW11bmljYXRpb25UeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vY29tbXVuaWNhdGlvbi10eXBlLmVudW1cIjtcbmltcG9ydCB7Q29udGFjdE9wdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb250YWN0LW9wdGlvbi5ib1wiO1xuaW1wb3J0IHtpc05pbGx9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvblwiO1xuaW1wb3J0IHtSZWxhdGlvbk5hbWVLaW5kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24tbmFtZS1raW5kLmVudW1cIjtcbmltcG9ydCB7QWRkcmVzc1R5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9hZGRyZXNzLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtSZWxhdGlvblByaXZhY3lTZXR0aW5nfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXByaXZhY3ktc2V0dGluZy5ib1wiO1xuaW1wb3J0IHtHZW5kZXJUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZ2VuZGVyLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7QnVzaW5lc3NPYmplY3RVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9idXNpbmVzcy1vYmplY3QtdXRpbHNcIjtcbmltcG9ydCB7Rm9ybUNvbXBvbmVudCwgRm9ybU1hc3RlclNlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5pbXBvcnQge0Z1bmN0aW9uVXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvZnVuY3Rpb24tdXRpbHNcIjtcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvb2JqZWN0LXV0aWxzXCI7XG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FkZHJlc3MuYm9cIjtcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gXCIuLi8uLi8uLi9mYWN0b3J5L2J1c2luZXNzLW9iamVjdC1mYWN0b3J5XCI7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY291bnRyeS5ib1wiO1xuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvLWNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXRcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tZWRpdC1jb250ZW50XCI+XG4gICAgICA8Y28tZm9ybT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWZvcm0td3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxzcGFuPjAxPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInUEVSU09OQUxfREFUQScgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3R5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1BSSVZBVEVfUEVSU09OJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVsVHlwZS5Qcml2YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi50eXBlID09PSByZWxUeXBlLlByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VSZWxhdGlvblR5cGUocmVsVHlwZS5Qcml2YXRlKVwiXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIid0eXBlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDT01QQU5ZJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVsVHlwZS5Db21wYW55XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyZWxhdGlvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi50eXBlID09PSByZWxUeXBlLkNvbXBhbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VSZWxhdGlvblR5cGUocmVsVHlwZS5Db21wYW55KVwiXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxyZWxhdGlvbi1jdXN0b21lci1ncm91cHMgWyhtb2RlbCldPVwicmVsYXRpb24uY3VzdG9tZXJHcm91cFwiIHJlcXVpcmVkPjwvcmVsYXRpb24tY3VzdG9tZXItZ3JvdXBzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRpb24udHlwZSA9PT0gcmVsVHlwZS5Qcml2YXRlXCIgY2xhc3M9XCJjb2xsYXBzZWFibGVcIiBAc2hvd0hpZGVQcml2YXRlUmVsYXRpb25GaWVsZHM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LWZpcnN0LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicmVsYXRpb24uZmlyc3ROYW1lXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRklSU1RfTkFNRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZmlyc3ROYW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tWaXNpYmlsaXR5U3VnZ2VzdGlvbnMoKVwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja291dC1wcmVmaXgtbmFtZSBkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJlbGF0aW9uLnByZWZpeFwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BSRUZJWCcgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja291dC1sYXN0LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicmVsYXRpb24uZmFtaWx5TmFtZVwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0xBU1RfTkFNRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZmFtaWx5TmFtZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cImNoZWNrVmlzaWJpbGl0eVN1Z2dlc3Rpb25zKClcIlxuICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInZ2VuZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ01BTEUnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdlbmRlclR5cGUuTWFsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi5nZW5kZXIgPT09IGdlbmRlclR5cGUuTWFsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlR2VuZGVyVHlwZShnZW5kZXJUeXBlLk1hbGUpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ2dlbmRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidGRU1BTEUnIHwgbG9jYWxpemUgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZW5kZXJUeXBlLkZlbWFsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi5nZW5kZXIgPT09IGdlbmRlclR5cGUuRmVtYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VHZW5kZXJUeXBlKGdlbmRlclR5cGUuRmVtYWxlKVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidnZW5kZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVU5LTk9XTicgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2VuZGVyVHlwZS5VbnNwZWNpZmllZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZWxhdGlvbi5nZW5kZXIgPT09IGdlbmRlclR5cGUuVW5zcGVjaWZpZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZUdlbmRlclR5cGUoZ2VuZGVyVHlwZS5VbnNwZWNpZmllZClcIlxuICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlIFtwbGFjZWhvbGRlcl09XCInREFURV9PRl9CSVJUSCcgfCBsb2NhbGl6ZSBcIiBbKG1vZGVsKV09XCJkYXRlT2ZCaXJ0aFwiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9jby1pbnB1dC1kYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlbGF0aW9uPy50eXBlID09PSByZWxUeXBlLkNvbXBhbnlcIiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93IGNvbGxhcHNlYWJsZVwiIEBzaG93SGlkZUNvbXBhbnlSZWxhdGlvbkZpZWxkcz5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwicmVsYXRpb24uZmFtaWx5TmFtZVwiIFtwbGFjZWhvbGRlcl09XCInQ09NUEFOWV9OQU1FJyB8IGxvY2FsaXplXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzIFthZGRyZXNzXT1cImVkaXRGaXJzdEFkZHJlc3NcIiBbc2hvd0J1dHRvbnNdPVwiZmFsc2VcIj48L2NvLXJlbGF0aW9uLWFkZHJlc3M+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWNhcm91c2VsLTNkICpuZ0lmPVwicmVsYXRpb24uYWRkcmVzc2VzICYmIHJlbGF0aW9uLmFkZHJlc3Nlcy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlV2lkdGhdPVwiMjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlSGVpZ2h0XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJkZWxpdmVyeUFkZHJlc3NJZHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGV4U2VsZWN0ZWQpPVwic2V0SW5kZXhEZWxpdmVyeUFkZHJlc3MoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzLXRpbGUgI2Nhcm91c2VsSXRlbSAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiByZWxhdGlvbi5hZGRyZXNzZXM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzXT1cImFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImRlbGl2ZXJ5QWRkcmVzc0lkeCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRBZGRyZXNzQ2xpY2tlZCk9XCJlZGl0QWRkcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzLXRpbGU+XG4gICAgICAgICAgICAgIDwvY28tY2Fyb3VzZWwtM2Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1uZXdcIj5cbiAgICAgICAgICAgICAgICA8aWNvbiBjbGFzcz1cInJlbGF0aW9uLWFkZHJlc3MtaWNvblwiIFtpY29uXT1cImljb25zLkFycm93UG9pbnRSaWdodFwiPjwvaWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IFt0ZXh0Q29udGVudF09XCInQUREUkVTU19BREQnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwic2hvd05ld0FkZHJlc3NEaWFsb2coKVwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDI8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidJTlZPSUNFX0FERFJFU1MnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFsobW9kZWwpXT1cImludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzXCIgKG1vZGVsQ2hhbmdlKT1cImNoZWNrU2FtZUFkZHJlc3MoJGV2ZW50KVwiIFtsYWJlbF09XCInU0FNRV9BU19ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVydmlldy1kZWxpdmVyeS1pbnZvaWNlLWFkZHJlc3NcIiAqbmdJZj1cIiFpbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5QWRkcmVzc1wiIEBzaG93SGlkZUludm9pY2VBZGRyZXNzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28tY2Fyb3VzZWwtM2QgKm5nSWY9XCJyZWxhdGlvbi5hZGRyZXNzZXMgJiYgcmVsYXRpb24uYWRkcmVzc2VzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGlsZVdpZHRoXT1cIjIwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlSGVpZ2h0XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cImludm9pY2VBZGRyZXNzSWR4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGV4U2VsZWN0ZWQpPVwic2V0SW5kZXhJbnZvaWNlQWRkcmVzcygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tYWRkcmVzcy10aWxlICNjYXJvdXNlbEl0ZW0gKm5nRm9yPVwibGV0IGFkZHJlc3Mgb2YgcmVsYXRpb24uYWRkcmVzc2VzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzXT1cImFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaW52b2ljZUFkZHJlc3NJZHggPT09IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRBZGRyZXNzQ2xpY2tlZCk9XCJlZGl0QWRkcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZT5cbiAgICAgICAgICAgICAgICA8L2NvLWNhcm91c2VsLTNkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aW9uLWFkZHJlc3MtbmV3XCI+XG4gICAgICAgICAgICAgICAgICA8aWNvbiBjbGFzcz1cInJlbGF0aW9uLWFkZHJlc3MtaWNvblwiIFtpY29uXT1cImljb25zLkFycm93UG9pbnRSaWdodFwiPjwvaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cIidBRERSRVNTX0FERCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJzaG93TmV3QWRkcmVzc0RpYWxvZygpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDM8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidDT05UQUNUX0RFVEFJTFMnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwicGhvbmVOdW1iZXIudmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwiJ1BIT05FX05PJyB8IGxvY2FsaXplIFwiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwiZW1haWxBZGRyZXNzLnZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cIidFTUFJTF9BRERSRVNTJyB8IGxvY2FsaXplIFwiIFt0eXBlXT1cIidlbWFpbCdcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuPCEtLVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxzcGFuPjA0PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInUEFTU1dPUkQnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidBQ0NPVU5UX0VYUExBTkFUSU9OJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFtsYWJlbF09XCInSU5WSVRFX1RPX0FDQ09VTlQnIHwgbG9jYWxpemVcIiBbKG1vZGVsKV09XCJpbnZpdGVUb0FjY291bnRcIj48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQUklWQUNZX1BSRUZFUkVOQ0VTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by1jb2x1bW4tZ3JpZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcml2YWN5U2V0dGluZyBvZiBwcml2YWN5U2V0dGluZ3NcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggY2xhc3M9XCJmaXJzdC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwicHJpdmFjeVNldHRpbmcuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiaXNTaGFyZWQocHJpdmFjeVNldHRpbmcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZVByaXZhY3lTZXR0aW5nKHByaXZhY3lTZXR0aW5nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZC1jb2x1bW5cIiBbdGV4dENvbnRlbnRdPVwicHJpdmFjeVNldHRpbmcuZXhwbGFuYXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jby1mb3JtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9ucy1zaWRlYmFyXCIgKm5nSWY9XCJzaG93UmVsYXRpb25TaWRlYmFyXCIgQHNob3dIaWRlU2lkZWJhcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1zaWRlYmFyLWhlYWRlclwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja291dC1sYWJlbC1oM1wiIFt0ZXh0Q29udGVudF09XCInU1VHR0VTVElPTlMnIHwgbG9jYWxpemVcIj48L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8Y28tY2hlY2tvdXQtcmVsYXRpb24tc3VnZ2VzdGlvbnMtbGlzdFxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwicmVsYXRpb25TdWdnZXN0aW9uc1wiXG4gICAgICAgIChzdWdnZXN0aW9uU2VsZWN0ZWQpPVwib25SZWxhdGlvblN1Z2dlc3Rpb25DbGljaygkZXZlbnQpXCJcbiAgICAgID48L2NvLWNoZWNrb3V0LXJlbGF0aW9uLXN1Z2dlc3Rpb25zLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cInNob3dDcmVhdGVBZGRyZXNzRGlhbG9nXCI+XG4gICAgICA8Y28tcmVsYXRpb24tYWRkcmVzc1xuICAgICAgICAoc2F2ZUNsaWNrKT1cInNhdmVOZXdBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAoY2FuY2VsQ2xpY2spPVwic2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2cgPSBmYWxzZVwiXG4gICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzPlxuICAgIDwvY28tZGlhbG9nPlxuICAgIDxjby1kaWFsb2cgKm5nSWY9XCJzaG93U2VsZWN0QWRkcmVzc0RpYWxvZyAmJiBhZGRyZXNzVG9FZGl0XCI+XG4gICAgICA8Y28tcmVsYXRpb24tYWRkcmVzc1xuICAgICAgICBbYWRkcmVzc109XCJhZGRyZXNzVG9FZGl0XCJcbiAgICAgICAgKHNhdmVDbGljayk9XCJzYXZlQWRkcmVzcygkZXZlbnQpXCJcbiAgICAgICAgKGNhbmNlbENsaWNrKT1cInNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gZmFsc2VcIlxuICAgICAgPjwvY28tcmVsYXRpb24tYWRkcmVzcz5cbiAgICA8L2NvLWRpYWxvZz5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRm9ybU1hc3RlclNlcnZpY2VcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoXCJzaG93SGlkZVByaXZhdGVSZWxhdGlvbkZpZWxkc1wiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe2hlaWdodDogMH0pKSxcbiAgICAgIHN0YXRlKFwiKlwiLCBzdHlsZSh7aGVpZ2h0OiBcIipcIn0pKSxcbiAgICAgIHRyYW5zaXRpb24oXCJ2b2lkID0+ICpcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKSxcbiAgICAgIHRyYW5zaXRpb24oXCIqID0+IHZvaWRcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIpKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoXCJzaG93SGlkZUNvbXBhbnlSZWxhdGlvbkZpZWxkc1wiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe2hlaWdodDogMH0pKSxcbiAgICAgIHN0YXRlKFwiKlwiLCBzdHlsZSh7aGVpZ2h0OiBcIipcIn0pKSxcbiAgICAgIHRyYW5zaXRpb24oXCJ2b2lkID0+ICpcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKSxcbiAgICAgIHRyYW5zaXRpb24oXCIqID0+IHZvaWRcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIpKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoXCJzaG93SGlkZVNpZGViYXJcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgxMDAlKVwifSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPD0+ICpcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoXCJzaG93SGlkZUludm9pY2VBZGRyZXNzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwLCBvcGFjaXR5OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwiLCBvcGFjaXR5OiAxfSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSlcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dE92ZXJ2aWV3UmVsYXRpb25FZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XG5cbiAgQFZpZXdDaGlsZChGb3JtQ29tcG9uZW50LCB7c3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHJlbGF0aW9uRm9ybTogRm9ybUNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlbGF0aW9uKHZhbHVlOiBSZWxhdGlvbkFueVR5cGUpIHtcbiAgICB0aGlzLl9yZWxhdGlvbiA9IHZhbHVlO1xuXG4gICAgdGhpcy5wcmVwYXJlUHJpbWFyeUVtYWlsKCk7XG4gICAgdGhpcy5wcmVwYXJlUHJpbWFyeVBob25lKCk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWxhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4oKTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0XCIpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZm9ybVJlbGF0aW9uOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGRhdGVPZkJpcnRoOiBEYXRlO1xuICBwdWJsaWMgYWNjb3VudFBhc3N3b3JkOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgaGlkZTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBnZW5kZXI6IEdlbmRlclR5cGUgPSBHZW5kZXJUeXBlLlVuc3BlY2lmaWVkO1xuICBwdWJsaWMgZW1haWxBZGRyZXNzOiBDb250YWN0T3B0aW9uID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgcHVibGljIHBob25lTnVtYmVyOiBDb250YWN0T3B0aW9uID0gbmV3IENvbnRhY3RPcHRpb24oKTtcbiAgcHVibGljIHByaXZhY3lTZXR0aW5nczogUmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdO1xuICBwdWJsaWMgcmVsYXRpb25TdWdnZXN0aW9uczogUmVsYXRpb25MaXN0T2JqZWN0W10gPSBbXTtcbiAgcHVibGljIHNob3dSZWxhdGlvblNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGludml0ZVRvQWNjb3VudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhZGRyZXNzZXM6IEFkZHJlc3NbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRBZGRyZXNzOiBBZGRyZXNzO1xuICBwdWJsaWMgZGVsaXZlcnlBZGRyZXNzOiBBZGRyZXNzO1xuICBwdWJsaWMgaW52b2ljZUFkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBkZWxpdmVyeUFkZHJlc3NJZHg6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzc0lkeDogbnVtYmVyID0gMDtcbiAgcHVibGljIGludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGVkaXRBZGRyZXNzVHlwZTogQWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3M7XG4gIHB1YmxpYyBhZGRyZXNzVG9FZGl0OiBBZGRyZXNzO1xuICBwdWJsaWMgc2hvd1NlbGVjdEFkZHJlc3NEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dDcmVhdGVBZGRyZXNzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlbFR5cGU6IHR5cGVvZiBSZWxhdGlvbk5hbWVLaW5kID0gUmVsYXRpb25OYW1lS2luZDtcbiAgcHVibGljIHJlYWRvbmx5IGdlbmRlclR5cGU6IHR5cGVvZiBHZW5kZXJUeXBlID0gR2VuZGVyVHlwZTtcblxuICBwdWJsaWMgZ2V0IHJlbGF0aW9uKCk6IFJlbGF0aW9uQW55VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCByZWxhdGlvbkFzQ3VzdG9tZXIoKTogQ3VzdG9tZXJGdWxsT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb24gJiYgdGhpcy5fcmVsYXRpb24gYXMgQ3VzdG9tZXJGdWxsT2JqZWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBlZGl0Rmlyc3RBZGRyZXNzKCk6IEFkZHJlc3Mge1xuICAgIGNvbnN0IGZpcnN0QWRkcmVzczogQWRkcmVzcyA9IHRoaXMuX3NlcnZpY2UuZ2V0Rmlyc3RBZGRyZXNzKHRoaXMucmVsYXRpb24pO1xuICAgIGlmIChmaXJzdEFkZHJlc3MpIHtcbiAgICAgIHJldHVybiBmaXJzdEFkZHJlc3M7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgY29uc3QgYWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKCk7XG4gICAgICBhZGRyZXNzLmFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICAgICAgYWRkcmVzcy5zdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgYWRkcmVzcy5zZXF1ZW5jZSA9IHRoaXMuX3JlbGF0aW9uLmdldE5leHRBZGRyZXNzU2VxdWVuY2UoKTtcbiAgICAgIHRoaXMuX3JlbGF0aW9uLmFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICAgICAgcmV0dXJuIGFkZHJlc3M7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhcHBsaWNhdGlvblVzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2UuYXBwbGljYXRpb25Vc2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSA9IE5VTExfUkVMQVRJT05fT0JKRUNUO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3NlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeVxuICApIHtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2luaXRGb3JtKCk7XG4gICAgdGhpcy5fcmVsYXRpb24udHlwZSA9IHRoaXMucmVsVHlwZS5Qcml2YXRlO1xuICAgIHRoaXMuX3JlbGF0aW9uLmdlbmRlciA9IHRoaXMuZ2VuZGVyO1xuICAgIGF3YWl0IHRoaXMubG9hZFByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiBib29sZWFuIHtcbiAgICAvLyByZXR1cm4gdGhpcy5yZWxhdGlvbkZvcm0uc3VibWl0KCk7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1NYXN0ZXIuc3VibWl0U2xhdmVzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd05ld0FkZHJlc3NEaWFsb2coZGVsaXZlcnlBZGRyZXNzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gZGVsaXZlcnlBZGRyZXNzID8gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzIDogQWRkcmVzc1R5cGUuQmlsbGluZ0FkZHJlc3M7XG4gICAgdGhpcy5zaG93Q3JlYXRlQWRkcmVzc0RpYWxvZyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgc2hvd0VkaXRBZGRyZXNzRGlhbG9nKGRlbGl2ZXJ5QWRkcmVzczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IGRlbGl2ZXJ5QWRkcmVzcyA/IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcyA6IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuICAgIHRoaXMuc2hvd1NlbGVjdEFkZHJlc3NEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNldEluZGV4RGVsaXZlcnlBZGRyZXNzKGlkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NJZHggPSBpZHg7XG4gICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3M7XG4gICAgdGhpcy5zZWxlY3RBZGRyZXNzKHRoaXMucmVsYXRpb24uYWRkcmVzc2VzW2lkeF0pO1xuICB9XG5cbiAgcHVibGljIHNldEluZGV4SW52b2ljZUFkZHJlc3MoaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmludm9pY2VBZGRyZXNzSWR4ID0gaWR4O1xuICAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuQmlsbGluZ0FkZHJlc3M7XG4gICAgdGhpcy5zZWxlY3RBZGRyZXNzKHRoaXMucmVsYXRpb24uYWRkcmVzc2VzW2lkeF0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRBZGRyZXNzKGFkZHI6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICB0aGlzLmFkZHJlc3NUb0VkaXQgPSA8QWRkcmVzcz48dW5rbm93bj50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShBZGRyZXNzLCBhZGRyKTtcbiAgICB0aGlzLnNob3dFZGl0QWRkcmVzc0RpYWxvZygpXG4gIH1cblxuICBwdWJsaWMgY2hlY2tTYW1lQWRkcmVzcyhjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICAgICAgdGhpcy5zZWxlY3RBZGRyZXNzKHRoaXMuZGVsaXZlcnlBZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZU5ld0FkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IHZvaWQge1xuICAgIGFkZHJlc3MuYWRkcmVzc1R5cGUgPSB0aGlzLmVkaXRBZGRyZXNzVHlwZTtcbiAgICB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyhhZGRyZXNzKTtcbiAgICB0aGlzLnNob3dDcmVhdGVBZGRyZXNzRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IHZvaWQge1xuICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXMuZmluZEluZGV4KGEgPT4gYS5uYXdOciA9PT0gYWRkcmVzcy5uYXdOcik7XG4gICAgaWYgKGlkeCA+IC0xKSB7XG4gICAgICB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdID0gPEFkZHJlc3M+PHVua25vd24+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQWRkcmVzcywgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuc2hvd1NlbGVjdEFkZHJlc3NEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBZGRyZXNzKGFkZHJlc3M/OiBBZGRyZXNzKTogdm9pZCB7XG4gICAgLy8gaWYgKCF0aGlzLmRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QpIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG4gICAgLy8gaWYgKCFhZGRyZXNzKSB7XG4gICAgLy8gICBhZGRyZXNzID0gdGhpcy5fc2VydmljZS5nZXRGaXJzdEFkZHJlc3ModGhpcy5yZWxhdGlvbik7XG4gICAgLy8gfVxuICAgIC8vIGlmICghYWRkcmVzcykge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLl9zZXRDb3VudHJ5TmFtZVRvQWRkcmVzcyhhZGRyZXNzKTtcbiAgICAvLyBpZiAodGhpcy5lZGl0QWRkcmVzc1R5cGUgPT09IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcykge1xuICAgIC8vICAgdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LnRyYW5zYWN0aW9uQWRkcmVzcyA9IGFkZHJlc3MubmF3TnI7XG4gICAgLy8gICB0aGlzLmRlbGl2ZXJ5QWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgLy8gICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0lkeCA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IHRoaXMuZGVsaXZlcnlBZGRyZXNzLm5hd05yKTtcbiAgICAvLyB9XG4gICAgLy8gaWYgKHRoaXMuaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeUFkZHJlc3MgfHwgdGhpcy5lZGl0QWRkcmVzc1R5cGUgIT09IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcykge1xuICAgIC8vICAgdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0Lmludm9pY2VBZGRyZXNzID0gYWRkcmVzcy5uYXdOcjtcbiAgICAvLyAgIHRoaXMuaW52b2ljZUFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIC8vICAgdGhpcy5pbnZvaWNlQWRkcmVzc0lkeCA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IHRoaXMuaW52b2ljZUFkZHJlc3MubmF3TnIpO1xuICAgIC8vIH1cbiAgICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgcHJlcGFyZVByaW1hcnlFbWFpbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gdGhpcy5fcmVsYXRpb24uZ2V0TG93ZXN0U2VxdWVuY2VPZkNvbnRhY3RPcHRpb25zV2l0aFR5cGUoQ29tbXVuaWNhdGlvblR5cGUuRW1haWwpO1xuICAgICAgaWYgKGlzTmlsbCh0aGlzLmVtYWlsQWRkcmVzcykpIHtcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSBuZXcgQ29udGFjdE9wdGlvbigpO1xuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcy50eXBlID0gQ29tbXVuaWNhdGlvblR5cGUuRW1haWw7XG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzLnNlcXVlbmNlID0gMDtcbiAgICAgICAgdGhpcy5fcmVsYXRpb24uYWRkQ29udGFjdE9wdGlvbih0aGlzLmVtYWlsQWRkcmVzcyk7XG4gICAgICB9XG4gICAgICAvLyBpZiAodGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLmVtYWlsQWRkcmVzcykge1xuICAgICAgLy8gICB0aGlzLmVtYWlsQWRkcmVzcy52YWx1ZSA9IHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5lbWFpbEFkZHJlc3M7XG4gICAgICAvLyB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByZXBhcmVQcmltYXJ5UGhvbmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gdGhpcy5fcmVsYXRpb24uZ2V0TG93ZXN0U2VxdWVuY2VPZkNvbnRhY3RPcHRpb25zV2l0aFR5cGUoQ29tbXVuaWNhdGlvblR5cGUuVGVsZXBob25lKTtcbiAgICAgIGlmIChpc05pbGwodGhpcy5waG9uZU51bWJlcikpIHtcbiAgICAgICAgdGhpcy5waG9uZU51bWJlciA9IG5ldyBDb250YWN0T3B0aW9uKCk7XG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIudHlwZSA9IENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZTtcbiAgICAgICAgdGhpcy5waG9uZU51bWJlci5zZXF1ZW5jZSA9IDA7XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uLmFkZENvbnRhY3RPcHRpb24odGhpcy5waG9uZU51bWJlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRQcml2YWN5U2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wcml2YWN5U2V0dGluZ3MgPSBhd2FpdCB0aGlzLl9zZXJ2aWNlLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZE1hcmtldGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9zZXJ2aWNlLmdldE1hcmtldGluZ0NvZGVzKCk7XG4gIH1cblxuICBwdWJsaWMgaXNTaGFyZWQocmVsYXRpb25Qcml2YWN5U2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG93blNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcgPSBCdXNpbmVzc09iamVjdFV0aWxzLkZpbmRJdGVtQnlJZCh0aGlzLnJlbGF0aW9uQXNDdXN0b21lci5yZWxhdGlvblByaXZhY3lTZXR0aW5ncywgcmVsYXRpb25Qcml2YWN5U2V0dGluZy5nZXRJZCgpKTtcbiAgICBpZiAob3duU2V0dGluZykge1xuICAgICAgcmV0dXJuIG93blNldHRpbmcuYWxsb3dUb1NoYXJlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUmVsYXRpb25UeXBlKHZhbHVlOiBSZWxhdGlvbk5hbWVLaW5kKTogdm9pZCB7XG4gICAgdGhpcy5yZWxhdGlvbi50eXBlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlR2VuZGVyVHlwZSh2YWx1ZTogR2VuZGVyVHlwZSk6IHZvaWQge1xuICAgIHRoaXMucmVsYXRpb24uZ2VuZGVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZmlyc3ROYW1lQ2hhbmdlKGZpcnN0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLl9yZWxhdGlvbi5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgfVxuICAgIHRoaXMuX3JlbGF0aW9uTmFtZUNoYW5nZUhhbmRsZXIuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBmYW1pbHlOYW1lQ2hhbmdlKGZhbWlseU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgdGhpcy5fcmVsYXRpb24uZmFtaWx5TmFtZSA9IGZhbWlseU5hbWU7XG4gICAgfVxuICAgIHRoaXMuX3JlbGF0aW9uTmFtZUNoYW5nZUhhbmRsZXIuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Zpc2liaWxpdHlTdWdnZXN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVsYXRpb24uZmlyc3ROYW1lICYmIHRoaXMuX3JlbGF0aW9uLmZhbWlseU5hbWUpIHtcbiAgICAgIHRoaXMuaGlkZVNpZGViYXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25SZWxhdGlvblN1Z2dlc3Rpb25DbGljayhyZWxhdGlvblN1Z2dlc3RlZDogUmVsYXRpb25MaXN0T2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHJlbGF0aW9uU3VnZ2VzdGVkKSB7XG4gICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICAvLyBhd2FpdCB0aGlzLl9zZXJ2aWNlLmFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbihyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvbklkKTtcbiAgICAgIHRoaXMucmVsYXRpb24gPSBhd2FpdCB0aGlzLl9zZXJ2aWNlLmdldEN1c3RvbWVyRnVsbE9iamVjdEJ5UmVsYXRpb25JZChyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvbklkKTtcbiAgICAgIHRoaXMucmVsYXRpb25DaGFuZ2UubmV4dCh0aGlzLnJlbGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUHJpdmFjeVNldHRpbmcocmVsYXRpb25Qcml2YWN5U2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gICAgaWYgKG93blNldHRpbmcpIHtcbiAgICAgIG93blNldHRpbmcuYWxsb3dUb1NoYXJlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVsYXRpb25Bc0N1c3RvbWVyLnJlbGF0aW9uUHJpdmFjeVNldHRpbmdzLnB1c2gocmVsYXRpb25Qcml2YWN5U2V0dGluZyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNob3dTaWRlYmFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1JlbGF0aW9uU2lkZWJhciA9IHRydWU7XG4gIH1cblxuICAvLyBIaWRlIHNpZGViYXIgd2l0aCBhIGxpdHRsZSB0aW1lb3V0IHRvIHByZXZlbnQgbWlzc2luZyB0aGUgY2xpY2tcbiAgcHVibGljIGhpZGVTaWRlYmFyKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93UmVsYXRpb25TaWRlYmFyID0gZmFsc2U7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlbGF0aW9uRm9ybSkge1xuICAgICAgdGhpcy5mb3JtUmVsYXRpb24gPSB0aGlzLnJlbGF0aW9uRm9ybS5mb3JtR3JvdXA7XG4gICAgfVxuICB9XG5cbiAgLy8gZmV0Y2hlcyByZWxhdGlvbiBzdWdnZXN0aW9uc1xuICBwcml2YXRlIF9yZWxhdGlvbk5hbWVDaGFuZ2VIYW5kbGVyOiBGdW5jdGlvbiA9IEZ1bmN0aW9uVXRpbHMuVGhyb3R0bGUoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbk5hbWVDaGFuZ2VkSGFuZGxlckZuKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgfSwgNjAwKTtcblxuICAvLyBsb2FkIHN1Z2dlc3Rpb25zXG4gIHByaXZhdGUgYXN5bmMgX3JlbGF0aW9uTmFtZUNoYW5nZWRIYW5kbGVyRm4oKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBmaXJzdE5hbWU6IHN0cmluZyA9IE9iamVjdFV0aWxzLlZhbHVlT3JEZWZhdWx0KHRoaXMuX3JlbGF0aW9uLmZpcnN0TmFtZSk7XG4gICAgY29uc3Qgc2Vjb25kTmFtZTogc3RyaW5nID0gT2JqZWN0VXRpbHMuVmFsdWVPckRlZmF1bHQodGhpcy5fcmVsYXRpb24uZmFtaWx5TmFtZSk7XG5cbiAgICBpZiAoIWZpcnN0TmFtZSAmJiAhc2Vjb25kTmFtZSkge1xuICAgICAgdGhpcy5yZWxhdGlvblN1Z2dlc3Rpb25zID0gW107XG4gICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpb25SZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QgPSB7fTtcbiAgICByZWxhdGlvblJlcXVlc3QucmVsYXRpb25UeXBlID0gdGhpcy5fcmVsYXRpb24ucmVsYXRpb25UeXBlO1xuICAgIGlmIChmaXJzdE5hbWUpIHtcbiAgICAgIHJlbGF0aW9uUmVxdWVzdC5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZE5hbWUpIHtcbiAgICAgIHJlbGF0aW9uUmVxdWVzdC5mYW1pbHlOYW1lID0gc2Vjb25kTmFtZTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dTaWRlYmFyKCk7XG4gICAgdGhpcy5yZWxhdGlvblN1Z2dlc3Rpb25zID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zZXRDb3VudHJ5TmFtZVRvQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGFkZHJlc3MuY291bnRyeUlkICYmICFhZGRyZXNzLmNvdW50cnlOYW1lKSB7XG4gICAgICBjb25zdCBjb3VudHJ5OiBDb3VudHJ5ID0gYXdhaXQgdGhpcy5fc2VydmljZS5nZXRDb3VudHJ5KGFkZHJlc3MuY291bnRyeUlkKTtcbiAgICAgIGFkZHJlc3MuY291bnRyeU5hbWUgPSBjb3VudHJ5LmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=