@colijnit/transaction 256.1.67 → 256.1.69

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 (22) hide show
  1. package/bundles/colijnit-transaction.umd.js +156 -59
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.js +69 -38
  5. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.module.js +4 -2
  6. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.js +11 -2
  7. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.js +1 -13
  8. package/esm2015/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.js +125 -105
  9. package/esm2015/lib/service/transaction-connector-adapter.service.js +13 -1
  10. package/esm2015/lib/service/transaction-connector.service.js +6 -1
  11. package/esm2015/lib/service/transaction.service.js +6 -1
  12. package/esm2015/lib/transaction-version.js +3 -3
  13. package/fesm2015/colijnit-transaction.js +225 -155
  14. package/fesm2015/colijnit-transaction.js.map +1 -1
  15. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.d.ts +6 -0
  16. package/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.d.ts +1 -0
  17. package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +0 -2
  18. package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.d.ts +12 -10
  19. package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
  20. package/lib/service/transaction-connector.service.d.ts +1 -0
  21. package/lib/service/transaction.service.d.ts +1 -0
  22. package/package.json +2 -2
@@ -1,13 +1,15 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, EventEmitter, Output, ViewEncapsulation, Input, HostBinding } from "@angular/core";
2
+ import { Component, EventEmitter, Output, ViewEncapsulation, Input, HostBinding, ChangeDetectorRef } from '@angular/core';
3
3
  import { IconCacheService } from '../../../service/icon-cache.service';
4
- import { TransactionService } from "../../../service/transaction.service";
5
- import { Icon } from "../../../enum/icon.enum";
6
- import { BatchTransactionSendingRequest } from "@colijnit/transactionapi/build/model/batch-transaction-sending-request";
4
+ import { TransactionService } from '../../../service/transaction.service';
5
+ import { Icon } from '../../../enum/icon.enum';
6
+ import { BatchTransactionSendingRequest } from '@colijnit/transactionapi/build/model/batch-transaction-sending-request';
7
+ import { TransactionInfoResponse } from '@colijnit/transactionapi/build/model/transaction-info-response.bo';
7
8
  export class ShippingMethodDialogComponent {
8
- constructor(iconService, transactionService) {
9
+ constructor(iconService, transactionService, changeDetector) {
9
10
  this.iconService = iconService;
10
11
  this.transactionService = transactionService;
12
+ this.changeDetector = changeDetector;
11
13
  this.saveClicked = new EventEmitter();
12
14
  this.cancelClicked = new EventEmitter();
13
15
  this.icons = Icon;
@@ -18,9 +20,9 @@ export class ShippingMethodDialogComponent {
18
20
  this.printerList = [];
19
21
  this.batchTransactionSendingRequest = new BatchTransactionSendingRequest();
20
22
  this.overruleOptions = [
21
- { code: 1, description: "Print" },
22
- { code: 2, description: "E-mail" },
23
- { code: 3, description: "EDI" }
23
+ { code: 1, description: 'Print' },
24
+ { code: 2, description: 'E-mail' },
25
+ { code: 3, description: 'EDI' }
24
26
  ];
25
27
  }
26
28
  showClass() {
@@ -37,9 +39,11 @@ export class ShippingMethodDialogComponent {
37
39
  this.batchTransactionSendingRequest.useRelationSpecificReports = this.useDefaultLayout;
38
40
  this.batchTransactionSendingRequest.useRelationSpecificSendMethods = this.useDefaultShippingMethods;
39
41
  this.batchTransactionSendingRequest.transIds = [];
40
- this.selectedTransactions.forEach(transaction => {
41
- this.batchTransactionSendingRequest.transIds.push(transaction.transId);
42
- });
42
+ if (!(this.selectedTransactions instanceof TransactionInfoResponse)) {
43
+ this.selectedTransactions.forEach(transaction => {
44
+ this.batchTransactionSendingRequest.transIds.push(transaction.transId);
45
+ });
46
+ }
43
47
  if (!this.useDefaultShippingMethods) {
44
48
  this.batchTransactionSendingRequest.overruleSendMethodForEmail = (_a = this.overruledEmail) === null || _a === void 0 ? void 0 : _a.code;
45
49
  this.batchTransactionSendingRequest.overruleSendMethodForPrinting = (_b = this.overruledPrint) === null || _b === void 0 ? void 0 : _b.code;
@@ -56,6 +60,9 @@ export class ShippingMethodDialogComponent {
56
60
  if (this.category === 'overview' || this.category === 'overzicht') {
57
61
  reportLayoutResult = yield this.transactionService.getOrderConfirmationPrintLayouts('');
58
62
  }
63
+ else if (this.category === 'purchase' || this.category === 'inkoop') {
64
+ reportLayoutResult = yield this.transactionService.getPurchaseOrderPrintLayouts('');
65
+ }
59
66
  else if (this.category === 'delivery order' || this.category === 'afleverbon') {
60
67
  reportLayoutResult = yield this.transactionService.getDeliveryNotePrintLayouts('');
61
68
  }
@@ -73,6 +80,7 @@ export class ShippingMethodDialogComponent {
73
80
  }
74
81
  }
75
82
  }
83
+ this.changeDetector.detectChanges();
76
84
  return reportLayoutResult;
77
85
  });
78
86
  }
@@ -82,6 +90,9 @@ export class ShippingMethodDialogComponent {
82
90
  if (this.category === 'overview' || this.category === 'overzicht') {
83
91
  reportLayoutResult = yield this.transactionService.getOrderConfirmationEmailLayouts('');
84
92
  }
93
+ else if (this.category === 'purchase' || this.category === 'inkoop') {
94
+ reportLayoutResult = yield this.transactionService.getPurchaseOrderEmailLayouts('');
95
+ }
85
96
  else if (this.category === 'delivery order' || this.category === 'afleverbon') {
86
97
  reportLayoutResult = yield this.transactionService.getDeliveryNoteEmailLayouts('');
87
98
  }
@@ -99,6 +110,7 @@ export class ShippingMethodDialogComponent {
99
110
  }
100
111
  }
101
112
  }
113
+ this.changeDetector.detectChanges();
102
114
  return reportLayoutResult;
103
115
  });
104
116
  }
@@ -115,16 +127,22 @@ export class ShippingMethodDialogComponent {
115
127
  }
116
128
  }
117
129
  }
130
+ this.changeDetector.detectChanges();
118
131
  return success;
119
132
  });
120
133
  }
121
134
  _getDefaultSendMethod() {
122
135
  return __awaiter(this, void 0, void 0, function* () {
123
- const relationId = this.selectedTransactions[0].relationNr;
136
+ const relationId = (this.category === 'purchase' || this.category === 'inkoop') ?
137
+ this.selectedTransactions[0].transactionInfo.relation.relationNr :
138
+ this.selectedTransactions[0].relationNr;
124
139
  let sendMethod;
125
140
  if (this.category === 'overview' || this.category === 'overzicht') {
126
141
  sendMethod = yield this.transactionService.getOrderConfirmationDefaultSendMethod(relationId);
127
142
  }
143
+ else if (this.category === 'purchase' || this.category === 'inkoop') {
144
+ sendMethod = yield this.transactionService.getPurchaseOrderDefaultSendMethod(relationId);
145
+ }
128
146
  else if (this.category === 'delivery order' || this.category === 'afleverbon') {
129
147
  sendMethod = yield this.transactionService.getDeliveryNoteDefaultSendMethod(relationId);
130
148
  }
@@ -134,122 +152,124 @@ export class ShippingMethodDialogComponent {
134
152
  if (sendMethod) {
135
153
  this.useDefaultShippingMethods = true;
136
154
  }
155
+ this.changeDetector.detectChanges();
137
156
  return sendMethod;
138
157
  });
139
158
  }
140
159
  }
141
160
  ShippingMethodDialogComponent.decorators = [
142
161
  { type: Component, args: [{
143
- selector: "co-shipping-method-dialog",
162
+ selector: 'co-shipping-method-dialog',
144
163
  template: `
145
- <co-dialog
146
- [headerTemplate]="headerTemplate"
147
- [footerTemplate]="footerTemplate"
148
- (closeClick)="cancelButtonClicked()"
149
- id="shipping-method-dialog">
150
- <ng-template #headerTemplate>
151
- <h2 class="header" [textContent]="'SENDMETHODS' | localize"></h2>
152
- </ng-template>
164
+ <co-dialog
165
+ [headerTemplate]="headerTemplate"
166
+ [footerTemplate]="footerTemplate"
167
+ (closeClick)="cancelButtonClicked()"
168
+ id="shipping-method-dialog">
169
+ <ng-template #headerTemplate>
170
+ <h2 class="header" [textContent]="'SENDMETHODS' | localize"></h2>
171
+ </ng-template>
153
172
 
154
- <div class="save-dialog-contents">
155
- <section>
156
- <h3 [textContent]="'LAYOUT_SETTINGS' | localize"></h3>
157
- <co-input-checkbox
158
- [(model)]="useDefaultLayout"
159
- [label]="'RELATION_LAYOUTS' | localize">
160
- </co-input-checkbox>
161
- <div class="info" [textContent]="'RELATION_LAYOUTS_MESSAGE' | localize"></div>
173
+ <div class="save-dialog-contents">
174
+ <section>
175
+ <h3 [textContent]="'LAYOUT_SETTINGS' | localize"></h3>
176
+ <co-input-checkbox
177
+ [(model)]="useDefaultLayout"
178
+ [label]="'RELATION_LAYOUTS' | localize">
179
+ </co-input-checkbox>
180
+ <div class="info" [textContent]="'RELATION_LAYOUTS_MESSAGE' | localize"></div>
162
181
 
163
- <div class="layout-selection">
164
- <co-list-of-values
165
- [displayField]="'description'"
166
- [(model)]="selectedPrintLayout"
167
- [label]="'PRINTER_LAYOUT'| localize"
168
- [collection]="printLayouts"
169
- [disabled]="useDefaultLayout"
170
- [readonly]="useDefaultLayout"
171
- [required]="!useDefaultLayout">
172
- </co-list-of-values>
173
- <co-list-of-values
174
- [displayField]="'description'"
175
- [(model)]="selectedEmailLayout"
176
- [label]="'EMAIL_LAYOUT'| localize"
177
- [collection]="emailLayouts"
178
- [disabled]="useDefaultLayout"
179
- [readonly]="useDefaultLayout"
180
- [required]="!useDefaultLayout">
181
- </co-list-of-values>
182
- <co-list-of-values
183
- class="printers-list"
184
- [displayField]="'name'"
185
- [(model)]="selectedPrinter"
186
- [label]="'PRINTER'| localize"
187
- [collection]="printerList"
188
- [disabled]="useDefaultLayout"
189
- [readonly]="useDefaultLayout"
190
- [required]="!useDefaultLayout">
191
- </co-list-of-values>
192
- </div>
193
- </section>
182
+ <div class="layout-selection">
183
+ <co-list-of-values
184
+ [displayField]="'description'"
185
+ [(model)]="selectedPrintLayout"
186
+ [label]="'PRINTER_LAYOUT'| localize"
187
+ [collection]="printLayouts"
188
+ [disabled]="useDefaultLayout"
189
+ [readonly]="useDefaultLayout"
190
+ [required]="!useDefaultLayout">
191
+ </co-list-of-values>
192
+ <co-list-of-values
193
+ [displayField]="'description'"
194
+ [(model)]="selectedEmailLayout"
195
+ [label]="'EMAIL_LAYOUT'| localize"
196
+ [collection]="emailLayouts"
197
+ [disabled]="useDefaultLayout"
198
+ [readonly]="useDefaultLayout"
199
+ [required]="!useDefaultLayout">
200
+ </co-list-of-values>
201
+ <co-list-of-values
202
+ class="printers-list"
203
+ [displayField]="'name'"
204
+ [(model)]="selectedPrinter"
205
+ [label]="'PRINTER'| localize"
206
+ [collection]="printerList"
207
+ [disabled]="useDefaultLayout"
208
+ [readonly]="useDefaultLayout"
209
+ [required]="!useDefaultLayout">
210
+ </co-list-of-values>
211
+ </div>
212
+ </section>
194
213
 
195
- <section>
196
- <h3 [textContent]="'SHIPPING_METHOD_SETTINGS' | localize"></h3>
197
- <co-input-checkbox
198
- [(model)]="useDefaultShippingMethods"
199
- [label]="'SHIPPING_METHOD_STANDARD_SETTINGS' | localize">
200
- </co-input-checkbox>
214
+ <section>
215
+ <h3 [textContent]="'SHIPPING_METHOD_SETTINGS' | localize"></h3>
216
+ <co-input-checkbox
217
+ [(model)]="useDefaultShippingMethods"
218
+ [label]="'SHIPPING_METHOD_STANDARD_SETTINGS' | localize">
219
+ </co-input-checkbox>
201
220
 
202
- <div class="shipping-methods" *ngIf="!useDefaultShippingMethods">
203
- <co-list-of-values
204
- [displayField]="'description'"
205
- [(model)]="overruledEmail"
206
- [label]="'OVERRULE_VIA_EMAIL'| localize"
207
- [collection]="overruleOptions">
208
- </co-list-of-values>
209
- <co-list-of-values
210
- [displayField]="'description'"
211
- [(model)]="overruledEdi"
212
- [label]="'OVERRULE_VIA_EDI'| localize"
213
- [collection]="overruleOptions">
214
- </co-list-of-values>
215
- <co-list-of-values
216
- [displayField]="'description'"
217
- [(model)]="overruledPrint"
218
- [label]="'OVERRULE_VIA_PRINT'| localize"
219
- [collection]="overruleOptions">
220
- </co-list-of-values>
221
+ <div class="shipping-methods" *ngIf="!useDefaultShippingMethods">
222
+ <co-list-of-values
223
+ [displayField]="'description'"
224
+ [(model)]="overruledEmail"
225
+ [label]="'OVERRULE_VIA_EMAIL'| localize"
226
+ [collection]="overruleOptions">
227
+ </co-list-of-values>
228
+ <co-list-of-values
229
+ [displayField]="'description'"
230
+ [(model)]="overruledEdi"
231
+ [label]="'OVERRULE_VIA_EDI'| localize"
232
+ [collection]="overruleOptions">
233
+ </co-list-of-values>
234
+ <co-list-of-values
235
+ [displayField]="'description'"
236
+ [(model)]="overruledPrint"
237
+ [label]="'OVERRULE_VIA_PRINT'| localize"
238
+ [collection]="overruleOptions">
239
+ </co-list-of-values>
240
+ </div>
241
+ </section>
221
242
  </div>
222
- </section>
223
- </div>
224
243
 
225
- <ng-template #footerTemplate>
226
- <div class="co-dialog-footer-button-wrapper">
227
- <co-button
228
- class="save-button"
229
- [iconData]="iconService.getIcon(icons.CheckDuotone)"
230
- (click)="saveButtonClicked()">
231
- </co-button>
232
- <co-button
233
- class="close-button"
234
- [iconData]="iconService.getIcon(icons.Crossskinny)"
235
- (click)="cancelButtonClicked()">
236
- </co-button>
237
- </div>
238
- </ng-template>
239
- </co-dialog>
244
+ <ng-template #footerTemplate>
245
+ <div class="co-dialog-footer-button-wrapper">
246
+ <co-button
247
+ class="save-button"
248
+ [iconData]="iconService.getIcon(icons.CheckDuotone)"
249
+ (click)="saveButtonClicked()">
250
+ </co-button>
251
+ <co-button
252
+ class="close-button"
253
+ [iconData]="iconService.getIcon(icons.Crossskinny)"
254
+ (click)="cancelButtonClicked()">
255
+ </co-button>
256
+ </div>
257
+ </ng-template>
258
+ </co-dialog>
240
259
  `,
241
260
  encapsulation: ViewEncapsulation.None
242
261
  },] }
243
262
  ];
244
263
  ShippingMethodDialogComponent.ctorParameters = () => [
245
264
  { type: IconCacheService },
246
- { type: TransactionService }
265
+ { type: TransactionService },
266
+ { type: ChangeDetectorRef }
247
267
  ];
248
268
  ShippingMethodDialogComponent.propDecorators = {
249
269
  category: [{ type: Input }],
250
270
  selectedTransactions: [{ type: Input }],
251
271
  saveClicked: [{ type: Output }],
252
272
  cancelClicked: [{ type: Output }],
253
- showClass: [{ type: HostBinding, args: ["class.co-shipping-method-dialog",] }]
273
+ showClass: [{ type: HostBinding, args: ['class.co-shipping-method-dialog',] }]
254
274
  };
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy90cmFuc2FjdGlvbi1zaGlwcGluZy1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBSTdDLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBNEd0SCxNQUFNLE9BQU8sNkJBQTZCO0lBc0N4QyxZQUNTLFdBQTZCLEVBQzdCLGtCQUFzQztRQUR0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQS9CeEMsZ0JBQVcsR0FBaUQsSUFBSSxZQUFZLEVBQWtDLENBQUM7UUFHL0csa0JBQWEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU9wRCxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFDM0MsaUJBQVksR0FBaUMsRUFBRSxDQUFDO1FBQ2hELGlCQUFZLEdBQWlDLEVBQUUsQ0FBQztRQUdoRCxnQkFBVyxH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QVUsQ0FBQyxDQUFDO2FBQ3pGO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JFLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNwRjtZQUVELElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7YUFDdkM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO0tBQUE7OztZQTVQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQWxITyxnQkFBZ0I7WUFFaEIsa0JBQWtCOzs7dUJBbUh2QixLQUFLO21DQUdMLEtBQUs7MEJBR0wsTUFBTTs0QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQyxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQsIElucHV0LCBIb3N0QmluZGluZ30gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tZW1haWwuYm9cIjtcclxuaW1wb3J0IHtQcmludGVyfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy5ib1wiO1xyXG5pbXBvcnQge0JhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC10cmFuc2FjdGlvbi1zZW5kaW5nLXJlcXVlc3RcIjtcclxuXHJcbmludGVyZmFjZSBPdmVycnVsZU9wdGlvbnMge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1zaGlwcGluZy1tZXRob2QtZGlhbG9nXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kaWFsb2dcclxuICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgKGNsb3NlQ2xpY2spPVwiY2FuY2VsQnV0dG9uQ2xpY2tlZCgpXCJcclxuICAgICAgaWQ9XCJzaGlwcGluZy1tZXRob2QtZGlhbG9nXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGVyXCIgW3RleHRDb250ZW50XT1cIidTRU5ETUVUSE9EUycgfCBsb2NhbGl6ZVwiPjwvaDI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1kaWFsb2ctY29udGVudHNcIj5cclxuICAgICAgICA8c2VjdGlvbj5cclxuICAgICAgICAgIDxoMyBbdGV4dENvbnRlbnRdPVwiJ0xBWU9VVF9TRVRUSU5HUycgfCBsb2NhbGl6ZVwiPjwvaDM+XHJcbiAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgWyhtb2RlbCldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInUkVMQVRJT05fTEFZT1VUUycgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCIgW3RleHRDb250ZW50XT1cIidSRUxBVElPTl9MQVlPVVRTX01FU1NBR0UnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cInNlbGVjdGVkUHJpbnRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUFJJTlRFUl9MQVlPVVQnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhdXNlRGVmYXVsdExheW91dFwiPlxyXG4gICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cInNlbGVjdGVkRW1haWxMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInRU1BSUxfTEFZT1VUJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIXVzZURlZmF1bHRMYXlvdXRcIj5cclxuICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwcmludGVycy1saXN0XCJcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIiduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VsZWN0ZWRQcmludGVyXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1BSSU5URVInfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRlckxpc3RcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiF1c2VEZWZhdWx0TGF5b3V0XCI+XHJcbiAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uPlxyXG4gICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInU0hJUFBJTkdfTUVUSE9EX1NFVFRJTkdTJyB8IGxvY2FsaXplXCI+PC9oMz5cclxuICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJ1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidTSElQUElOR19NRVRIT0RfU1RBTkRBUkRfU0VUVElOR1MnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvY28taW5wdXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoaXBwaW5nLW1ldGhvZHNcIiAqbmdJZj1cIiF1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzXCI+XHJcbiAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwib3ZlcnJ1bGVkRW1haWxcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInT1ZFUlJVTEVfVklBX0VNQUlMJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cIm92ZXJydWxlZEVkaVwiXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidPVkVSUlVMRV9WSUFfRURJJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cIm92ZXJydWxlZFByaW50XCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09WRVJSVUxFX1ZJQV9QUklOVCd8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJvdmVycnVsZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxyXG4gICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVCdXR0b25DbGlja2VkKClcIj5cclxuICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxCdXR0b25DbGlja2VkKClcIj5cclxuICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jby1kaWFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGlwcGluZ01ldGhvZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhdGVnb3J5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblNlYXJjaFZpZXdbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVDbGlja2VkOiBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2FuY2VsQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1zaGlwcGluZy1tZXRob2QtZGlhbG9nXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zID0gSWNvbjtcclxuICBwdWJsaWMgdXNlRGVmYXVsdExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHByaW50TGF5b3V0czogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXSA9IFtdO1xyXG4gIHB1YmxpYyBlbWFpbExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRQcmludExheW91dDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnQ7XHJcbiAgcHVibGljIHNlbGVjdGVkRW1haWxMYXlvdXQ6IFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsO1xyXG4gIHB1YmxpYyBwcmludGVyTGlzdDogUHJpbnRlcltdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkUHJpbnRlcjogUHJpbnRlcjtcclxuICBwdWJsaWMgb3ZlcnJ1bGVkRW1haWw6IE92ZXJydWxlT3B0aW9ucztcclxuICBwdWJsaWMgb3ZlcnJ1bGVkRWRpOiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIG92ZXJydWxlZFByaW50OiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIGJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdDogQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0ID0gbmV3IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCgpO1xyXG4gIHB1YmxpYyBvdmVycnVsZU9wdGlvbnM6IE92ZXJydWxlT3B0aW9uc1tdID0gW1xyXG4gICAge2NvZGU6IDEsIGRlc2NyaXB0aW9uOiBcIlByaW50XCJ9LFxyXG4gICAge2NvZGU6IDIsIGRlc2NyaXB0aW9uOiBcIkUtbWFpbFwifSxcclxuICAgIHtjb2RlOiAzLCBkZXNjcmlwdGlvbjogXCJFRElcIn1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9nZXRQcmludExheW91dHMoKTtcclxuICAgIHRoaXMuX2dldEVtYWlsTGF5b3V0cygpO1xyXG4gICAgdGhpcy5fZ2V0UHJpbnRlcnMoKTtcclxuICAgIHRoaXMuX2dldERlZmF1bHRTZW5kTWV0aG9kKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC51c2VSZWxhdGlvblNwZWNpZmljUmVwb3J0cyA9IHRoaXMudXNlRGVmYXVsdExheW91dDtcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNTZW5kTWV0aG9kcyA9IHRoaXMudXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kcztcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnRyYW5zSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLmZvckVhY2godHJhbnNhY3Rpb24gPT4ge1xyXG4gICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC50cmFuc0lkcy5wdXNoKHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMudXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kcykge1xyXG4gICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFbWFpbCA9IHRoaXMub3ZlcnJ1bGVkRW1haWw/LmNvZGU7XHJcbiAgICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvclByaW50aW5nID0gdGhpcy5vdmVycnVsZWRQcmludD8uY29kZTtcclxuICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yRURJID0gdGhpcy5vdmVycnVsZWRFZGk/LmNvZGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYXZlQ2xpY2tlZC5lbWl0KHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxCdXR0b25DbGlja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5jZWxDbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldFByaW50TGF5b3V0cygpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcclxuICAgIGxldCByZXBvcnRMYXlvdXRSZXN1bHQ6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W107XHJcbiAgICBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnppY2h0Jykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cygnJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdkZWxpdmVyeSBvcmRlcicgfHwgdGhpcy5jYXRlZ29yeSA9PT0gJ2FmbGV2ZXJib24nKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cygnJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdpbnZvaWNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0SW52b2ljZVByaW50TGF5b3V0cygnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcG9ydExheW91dFJlc3VsdCkge1xyXG4gICAgICB0aGlzLnByaW50TGF5b3V0cyA9IHJlcG9ydExheW91dFJlc3VsdDtcclxuICAgICAgZm9yIChjb25zdCBsYXlvdXQgb2YgdGhpcy5wcmludExheW91dHMpIHtcclxuICAgICAgICBpZiAobGF5b3V0LmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgdGhpcy51c2VEZWZhdWx0TGF5b3V0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcmludExheW91dCA9IGxheW91dDtcclxuICAgICAgICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnJlcG9ydElkRm9yUHJpbnRpbmcgPSBsYXlvdXQucmVwb3J0SWQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXBvcnRMYXlvdXRSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRFbWFpbExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XHJcbiAgICBsZXQgcmVwb3J0TGF5b3V0UmVzdWx0OiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdO1xyXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVydmlldycgfHwgdGhpcy5jYXRlZ29yeSA9PT0gJ292ZXJ6aWNodCcpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHMoJycpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnZGVsaXZlcnkgb3JkZXInIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHMoJycpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnaW52b2ljZScgfHwgdGhpcy5jYXRlZ29yeSA9PT0gJ2ZhY3R1dXInKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludm9pY2VFbWFpbExheW91dHMoJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXBvcnRMYXlvdXRSZXN1bHQpIHtcclxuICAgICAgdGhpcy5lbWFpbExheW91dHMgPSByZXBvcnRMYXlvdXRSZXN1bHQ7XHJcbiAgICAgIGZvciAoY29uc3QgbGF5b3V0IG9mIHRoaXMuZW1haWxMYXlvdXRzKSB7XHJcbiAgICAgICAgaWYgKGxheW91dC5pc0RlZmF1bHQpIHtcclxuICAgICAgICAgIHRoaXMudXNlRGVmYXVsdExheW91dCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRW1haWxMYXlvdXQgPSBsYXlvdXQ7XHJcbiAgICAgICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC5yZXBvcnRJZEZvckVtYWlsID0gbGF5b3V0LnJlcG9ydElkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQcmludGVycygpO1xyXG4gICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5wcmludGVyTGlzdCA9IHN1Y2Nlc3M7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHByaW50ZXIgb2YgdGhpcy5wcmludGVyTGlzdCkge1xyXG4gICAgICAgIGlmIChwcmludGVyLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByaW50ZXIgPSBwcmludGVyO1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucHJpbnRlck5hbWUgPSBwcmludGVyLm5hbWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHJlbGF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zWzBdLnJlbGF0aW9uTnI7XHJcbiAgICBsZXQgc2VuZE1ldGhvZDogbnVtYmVyO1xyXG5cclxuICAgIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHNlbmRNZXRob2QgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnZGVsaXZlcnkgb3JkZXInIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdpbnZvaWNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgc2VuZE1ldGhvZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICB0aGlzLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlbmRNZXRob2Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy90cmFuc2FjdGlvbi1zaGlwcGluZy1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBSTdDLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3RILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBNEcxRyxNQUFNLE9BQU8sNkJBQTZCO0lBc0N4QyxZQUNTLFdBQTZCLEVBQzdCLGtCQUFzQyxFQUN0QyxjQUFpQztRQUZqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFoQ25DLGdCQUFXLEdBQWlELElBQUksWUFBWSxFQUFrQyxDQUFDO1FBRy9HLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFPcEQsVUFBSyxHQUFHLElBQUksQ0FBQztRQUN0QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7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QUMsQ0FBQzthQUN6RjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNyRSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDcEY7WUFFRCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO0tBQUE7OztZQTVRRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQW5ITyxnQkFBZ0I7WUFFaEIsa0JBQWtCO1lBSDhELGlCQUFpQjs7O3VCQXVIdEcsS0FBSzttQ0FHTCxLQUFLOzBCQUdMLE1BQU07NEJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBJbnB1dCwgSG9zdEJpbmRpbmcsIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XHJcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXcuYm8nO1xyXG5pbXBvcnQge0JhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2JhdGNoLXRyYW5zYWN0aW9uLXNlbmRpbmctcmVxdWVzdCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcclxuXHJcbmludGVyZmFjZSBPdmVycnVsZU9wdGlvbnMge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXNoaXBwaW5nLW1ldGhvZC1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxjby1kaWFsb2dcclxuICAgICAgICAgICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2FuY2VsQnV0dG9uQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICAgICBpZD1cInNoaXBwaW5nLW1ldGhvZC1kaWFsb2dcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGVyXCIgW3RleHRDb250ZW50XT1cIidTRU5ETUVUSE9EUycgfCBsb2NhbGl6ZVwiPjwvaDI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYXZlLWRpYWxvZy1jb250ZW50c1wiPlxyXG4gICAgICAgICAgICAgIDxzZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgW3RleHRDb250ZW50XT1cIidMQVlPVVRfU0VUVElOR1MnIHwgbG9jYWxpemVcIj48L2gzPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1JFTEFUSU9OX0xBWU9VVFMnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIiBbdGV4dENvbnRlbnRdPVwiJ1JFTEFUSU9OX0xBWU9VVFNfTUVTU0FHRScgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1zZWxlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZFByaW50TGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidQUklOVEVSX0xBWU9VVCd8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhdXNlRGVmYXVsdExheW91dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZEVtYWlsTGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidFTUFJTF9MQVlPVVQnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIXVzZURlZmF1bHRMYXlvdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcmludGVycy1saXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGaWVsZF09XCInbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZFByaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1BSSU5URVInfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInByaW50ZXJMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhdXNlRGVmYXVsdExheW91dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICA8c2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInU0hJUFBJTkdfTUVUSE9EX1NFVFRJTkdTJyB8IGxvY2FsaXplXCI+PC9oMz5cclxuICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwidXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTSElQUElOR19NRVRIT0RfU1RBTkRBUkRfU0VUVElOR1MnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGlwcGluZy1tZXRob2RzXCIgKm5nSWY9XCIhdXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm92ZXJydWxlZEVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPVkVSUlVMRV9WSUFfRU1BSUwnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJvdmVycnVsZWRFZGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09WRVJSVUxFX1ZJQV9FREknfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJvdmVycnVsZWRQcmludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1ZFUlJVTEVfVklBX1BSSU5UJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJvdmVycnVsZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy1mb290ZXItYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrRHVvdG9uZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQnV0dG9uQ2xpY2tlZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEJ1dHRvbkNsaWNrZWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hpcHBpbmdNZXRob2REaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYXRlZ29yeTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RlZFRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25TZWFyY2hWaWV3W10gfCBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVDbGlja2VkOiBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2FuY2VsQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXNoaXBwaW5nLW1ldGhvZC1kaWFsb2cnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpY29ucyA9IEljb247XHJcbiAgcHVibGljIHVzZURlZmF1bHRMYXlvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwcmludExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10gPSBbXTtcclxuICBwdWJsaWMgZW1haWxMYXlvdXRzOiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkUHJpbnRMYXlvdXQ6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50O1xyXG4gIHB1YmxpYyBzZWxlY3RlZEVtYWlsTGF5b3V0OiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbDtcclxuICBwdWJsaWMgcHJpbnRlckxpc3Q6IFByaW50ZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFByaW50ZXI6IFByaW50ZXI7XHJcbiAgcHVibGljIG92ZXJydWxlZEVtYWlsOiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIG92ZXJydWxlZEVkaTogT3ZlcnJ1bGVPcHRpb25zO1xyXG4gIHB1YmxpYyBvdmVycnVsZWRQcmludDogT3ZlcnJ1bGVPcHRpb25zO1xyXG4gIHB1YmxpYyBiYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCA9IG5ldyBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QoKTtcclxuICBwdWJsaWMgb3ZlcnJ1bGVPcHRpb25zOiBPdmVycnVsZU9wdGlvbnNbXSA9IFtcclxuICAgIHtjb2RlOiAxLCBkZXNjcmlwdGlvbjogJ1ByaW50J30sXHJcbiAgICB7Y29kZTogMiwgZGVzY3JpcHRpb246ICdFLW1haWwnfSxcclxuICAgIHtjb2RlOiAzLCBkZXNjcmlwdGlvbjogJ0VESSd9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvblNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2dldFByaW50TGF5b3V0cygpO1xyXG4gICAgdGhpcy5fZ2V0RW1haWxMYXlvdXRzKCk7XHJcbiAgICB0aGlzLl9nZXRQcmludGVycygpO1xyXG4gICAgdGhpcy5fZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNSZXBvcnRzID0gdGhpcy51c2VEZWZhdWx0TGF5b3V0O1xyXG4gICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QudXNlUmVsYXRpb25TcGVjaWZpY1NlbmRNZXRob2RzID0gdGhpcy51c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzO1xyXG4gICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QudHJhbnNJZHMgPSBbXTtcclxuICAgIGlmICghKHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMgaW5zdGFuY2VvZiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5mb3JFYWNoKHRyYW5zYWN0aW9uID0+IHtcclxuICAgICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC50cmFuc0lkcy5wdXNoKHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy51c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzKSB7XHJcbiAgICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvckVtYWlsID0gdGhpcy5vdmVycnVsZWRFbWFpbD8uY29kZTtcclxuICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yUHJpbnRpbmcgPSB0aGlzLm92ZXJydWxlZFByaW50Py5jb2RlO1xyXG4gICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFREkgPSB0aGlzLm92ZXJydWxlZEVkaT8uY29kZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNhdmVDbGlja2VkLmVtaXQodGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbENsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UHJpbnRMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xyXG4gICAgbGV0IHJlcG9ydExheW91dFJlc3VsdDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXTtcclxuICAgIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ3B1cmNoYXNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2RlbGl2ZXJ5IG9yZGVyJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnYWZsZXZlcmJvbicpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2ludm9pY2UnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdmYWN0dXVyJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRJbnZvaWNlUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwb3J0TGF5b3V0UmVzdWx0KSB7XHJcbiAgICAgIHRoaXMucHJpbnRMYXlvdXRzID0gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gICAgICBmb3IgKGNvbnN0IGxheW91dCBvZiB0aGlzLnByaW50TGF5b3V0cykge1xyXG4gICAgICAgIGlmIChsYXlvdXQuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVzZURlZmF1bHRMYXlvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByaW50TGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucmVwb3J0SWRGb3JQcmludGluZyA9IGxheW91dC5yZXBvcnRJZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RW1haWxMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xyXG4gICAgbGV0IHJlcG9ydExheW91dFJlc3VsdDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXTtcclxuICAgIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ3B1cmNoYXNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2RlbGl2ZXJ5IG9yZGVyJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnYWZsZXZlcmJvbicpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2ludm9pY2UnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdmYWN0dXVyJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRJbnZvaWNlRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwb3J0TGF5b3V0UmVzdWx0KSB7XHJcbiAgICAgIHRoaXMuZW1haWxMYXlvdXRzID0gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gICAgICBmb3IgKGNvbnN0IGxheW91dCBvZiB0aGlzLmVtYWlsTGF5b3V0cykge1xyXG4gICAgICAgIGlmIChsYXlvdXQuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVzZURlZmF1bHRMYXlvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVtYWlsTGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucmVwb3J0SWRGb3JFbWFpbCA9IGxheW91dC5yZXBvcnRJZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQcmludGVycygpO1xyXG4gICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5wcmludGVyTGlzdCA9IHN1Y2Nlc3M7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHByaW50ZXIgb2YgdGhpcy5wcmludGVyTGlzdCkge1xyXG4gICAgICAgIGlmIChwcmludGVyLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByaW50ZXIgPSBwcmludGVyO1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucHJpbnRlck5hbWUgPSBwcmludGVyLm5hbWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXREZWZhdWx0U2VuZE1ldGhvZCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgY29uc3QgcmVsYXRpb25JZCA9XHJcbiAgICAgICh0aGlzLmNhdGVnb3J5ID09PSAncHVyY2hhc2UnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdpbmtvb3AnKSA/XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9uc1swXS50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24ucmVsYXRpb25OciA6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9uc1swXS5yZWxhdGlvbk5yO1xyXG4gICAgbGV0IHNlbmRNZXRob2Q6IG51bWJlcjtcclxuXHJcbiAgICBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnppY2h0Jykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ3B1cmNoYXNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnZGVsaXZlcnkgb3JkZXInIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdpbnZvaWNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgc2VuZE1ldGhvZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICB0aGlzLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gc2VuZE1ldGhvZDtcclxuICB9XHJcbn1cclxuIl19