tango-app-ui-manage-billing 3.3.33 → 3.3.34

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.
@@ -192,19 +192,13 @@ export class InvoicePreviewComponent {
192
192
  const code = this.invoiceData?.currency;
193
193
  return this.currencySymbols[code || ''] || '$';
194
194
  }
195
- // Payment term in days. The invoice doc doesn't store paymentTerm (it lives
196
- // on the billing group), so derive it from dueDate − billingDate, which is
197
- // accurate for every invoice. Falls back to a stored paymentTerm, else 30.
195
+ // Payment term in days. Use the billing group's paymentTerm — the same source
196
+ // the PDF download uses — which getInvoice now returns on invoiceData. This
197
+ // keeps "Term N" identical between preview and download. (Previously this was
198
+ // derived from dueDate − billingDate, which over-counts, e.g. a 30-day term
199
+ // whose due date lands 32 calendar days out.) Falls back to 30.
198
200
  get paymentTermDays() {
199
- const inv = this.invoiceData;
200
- if (inv?.billingDate && inv?.dueDate) {
201
- const start = new Date(inv.billingDate).setHours(0, 0, 0, 0);
202
- const due = new Date(inv.dueDate).setHours(0, 0, 0, 0);
203
- const days = Math.round((due - start) / 86400000);
204
- if (days > 0)
205
- return days;
206
- }
207
- return Number(inv?.paymentTerm) || 30;
201
+ return Number(this.invoiceData?.paymentTerm) || 30;
208
202
  }
209
203
  get totalInWords() {
210
204
  const code = this.invoiceData?.currency;
@@ -276,4 +270,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
276
270
  }], ctorParameters: () => [{ type: i1.NgbActiveModal }, { type: i2.BillingService }, { type: i3.ToastService }], propDecorators: { invoiceData: [{
277
271
  type: Input
278
272
  }] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9pbnZvaWNlLXByZXZpZXcvaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9pbnZvaWNlLXByZXZpZXcvaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUd4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQU92RCxNQUFNLE9BQU8sdUJBQXVCO0lBNEJ6QjtJQUNDO0lBQ0E7SUE3Qk8sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsV0FBVyxDQUFNO0lBRTFCLFNBQVMsR0FBMkIsU0FBUyxDQUFDO0lBRTlDLFlBQVksR0FBaUIsSUFBSSxDQUFDO0lBQ2xDLDBFQUEwRTtJQUMxRSxpREFBaUQ7SUFDakQsYUFBYSxHQUFrQixJQUFJLENBQUM7SUFDcEMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFcEIsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSxXQUFXLEdBQVE7UUFDakIsZUFBZSxFQUFFLDBDQUEwQztRQUMz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LENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLGlCQUFpQixDQUFDLElBQVM7UUFDekIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQWhSVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixtR0NkcEMsazVYQTROTTs7NEZEOU1PLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7MklBT3RCLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBCaWxsaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2JpbGxpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcbmltcG9ydCB7IGFtb3VudEluV29yZHMgfSBmcm9tICcuL2Ftb3VudC1pbi13b3Jkcy51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWludm9pY2UtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnZvaWNlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBJbnZvaWNlUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgaW52b2ljZURhdGE6IGFueTtcblxuICBhY3RpdmVUYWI6ICdpbnZvaWNlJyB8ICdhbm5leHVyZScgPSAnaW52b2ljZSc7XG5cbiAgYW5uZXh1cmVEYXRhOiBhbnlbXSB8IG51bGwgPSBudWxsO1xuICAvLyBHcmFuZCB0b3RhbCBvZiBhbGwgYW5uZXh1cmUgcm93cyAoY29tcHV0ZWQgYnkgdGhlIGJhY2tlbmQgd2l0aCB0aGUgc2FtZVxuICAvLyBwZXItY2FtZXJhIC8gcGVyLXpvbmUgcnVsZXMgdGhlIGludm9pY2UgdXNlcykuXG4gIGFubmV4dXJlVG90YWw6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBhbm5leHVyZUxvYWRpbmcgPSBmYWxzZTtcbiAgYW5uZXh1cmVFcnJvciA9IGZhbHNlO1xuXG4gIGRvd25sb2FkaW5nID0gZmFsc2U7XG5cbiAgLy8gRml4ZWQgYmVuZWZpY2lhcnkgYWNjb3VudCDigJQgaGFyZGNvZGVkIHRvIG1hdGNoIHRoZSBQREYgZXhhY3RseSAoTk9UIGZyb21cbiAgLy8gdGhlIERCKSwgc28gdGhlIHByZXZpZXcgYW5kIHRoZSBkb3dubG9hZGVkIFBERiBhbHdheXMgc2hvdyB0aGUgc2FtZSB0aGluZy5cbiAgYmFua0RldGFpbHM6IGFueSA9IHtcbiAgICBiZW5lZmljaWFyeU5hbWU6ICdUYW5nbyBJVCBTb2x1dGlvbnMgSW5kaWEgUHJpdmF0ZSBMaW1pdGVkJyxcbiAgICBhY2NvdW50TnVtYmVyOiAnNTAyMDAwMjc0NDE0MzMnLFxuICAgIGlmc2M6ICdIREZDMDAwMDM4NicsXG4gICAgc3dpZnQ6ICdIREZDSU5CQkNIRScsXG4gICAgYnJhbmNoOiAnU2FudGhvbWUsIENoZW5uYWknLFxuICAgIHBheW1lbnRUeXBlOiAnT25saW5lJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJhbmsgZGV0YWlscyBhcmUgZml4ZWQgKHNlZSBiYW5rRGV0YWlscyBhYm92ZSkg4oCUIG5vdGhpbmcgdG8gZmV0Y2guXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZWxlY3RUYWIodGFiOiAnaW52b2ljZScgfCAnYW5uZXh1cmUnKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgaWYgKHRhYiA9PT0gJ2FubmV4dXJlJyAmJiB0aGlzLmFubmV4dXJlRGF0YSA9PT0gbnVsbCAmJiAhdGhpcy5hbm5leHVyZUxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZEFubmV4dXJlKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZEFubmV4dXJlKCkge1xuICAgIGlmICghdGhpcy5pbnZvaWNlRGF0YT8uX2lkKSByZXR1cm47XG4gICAgdGhpcy5hbm5leHVyZUxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYW5uZXh1cmVFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZ2V0SW52b2ljZUFubmV4dXJlKHRoaXMuaW52b2ljZURhdGEuX2lkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIEJhY2tlbmQgZW52ZWxvcGUgaXMgeyBjb2RlLCBzdGF0dXMsIGRhdGE6IHsgZGF0YTogWy4uLl0gfSB9IOKAlFxuICAgICAgICAgIC8vIHRoZSBjb250cm9sbGVyIGNhbGxzIHNlbmRTdWNjZXNzKHsgZGF0YTogYW5uZXh1cmVEYXRhIH0pIGFuZCB0aGVcbiAgICAgICAgICAvLyByZXNwb25zZSBtaWRkbGV3YXJlIHdyYXBzIHRoYXQgdW5kZXIgaXRzIG93biBgZGF0YWAga2V5LiBSZWFkXG4gICAgICAgICAgLy8gdGhyb3VnaCBib3RoIGxheWVycyB0byBnZXQgdGhlIHJvdyBhcnJheS5cbiAgICAgICAgICB0aGlzLmFubmV4dXJlRGF0YSA9IHJlcz8uZGF0YT8uZGF0YSB8fCBbXTtcbiAgICAgICAgICB0aGlzLmFubmV4dXJlVG90YWwgPSByZXM/LmRhdGE/LnRvdGFsQW1vdW50ID8/IG51bGw7XG4gICAgICAgICAgdGhpcy5hbm5leHVyZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmFubmV4dXJlRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYW5uZXh1cmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gRXhwb3J0IHRoZSBsb2FkZWQgYW5uZXh1cmUgcm93cyBhcyBhbiAueGxzeCBmaWxlLiBNaXJyb3JzIHRoZSBjb2x1bW5zXG4gIC8vIHNob3duIGluIHRoZSBBbm5leHVyZSB0YWIgc28gdGhlIHNwcmVhZHNoZWV0IG1hdGNoZXMgd2hhdCB0aGUgdXNlclxuICAvLyBzYXcgb24gc2NyZWVuLiBGaWxlbmFtZSBpcyBgJHtpbnZvaWNlTnVtYmVyfS1hbm5leHVyZS54bHN4YC5cbiAgZG93bmxvYWRBbm5leHVyZVhsc3goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFubmV4dXJlRGF0YSB8fCB0aGlzLmFubmV4dXJlRGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbCgpO1xuICAgICAgY29uc3Qgcm93czogYW55W10gPSB0aGlzLmFubmV4dXJlRGF0YS5tYXAoKHJvdzogYW55KSA9PiAoe1xuICAgICAgICAnU3RvcmUgTmFtZSc6IHJvdz8uc3RvcmVOYW1lIHx8ICcnLFxuICAgICAgICAnUHJvZHVjdCc6IHRoaXMuZm9ybWF0UHJvZHVjdE5hbWUocm93Py5wcm9kdWN0TmFtZSksXG4gICAgICAgICdTdG9yZSBJRCc6IHJvdz8uc3RvcmVJZCB8fCAnJyxcbiAgICAgICAgJ0RlcGxveW1lbnQgRGF0ZSc6IHJvdz8uZWRnZWZpcnN0RmlsZURhdGUgfHwgJycsXG4gICAgICAgICdQZXJpb2QnOiByb3c/LnBlcmlvZCA9PT0gJ3Byb3JhdGUnID8gJ1Byby1yYXRlJyA6ICdGdWxsIG1vbnRoJyxcbiAgICAgICAgJ1ByaWNpbmcgTWV0aG9kJzogcm93Py51bml0QmFzaXMgfHwgJ1BlciBTdG9yZScsXG4gICAgICAgICdCaWxsaW5nIERheXMnOiByb3c/LndvcmtpbmdkYXlzID8/IDAsXG4gICAgICAgICdRdHknOiByb3c/LnVuaXRzID8/IDEsXG4gICAgICAgICdVbml0IFByaWNlJzogcm93Py5zdGFuZGFyZFByaWNlICE9IG51bGxcbiAgICAgICAgICA/IGAke3N5bWJvbH0gJHt0aGlzLmZvcm1hdElOUihyb3cuc3RhbmRhcmRQcmljZSl9ICgke3Jvdz8udW5pdEJhc2lzIHx8ICdQZXIgU3RvcmUnfSlgXG4gICAgICAgICAgOiAnJyxcbiAgICAgICAgJ1ByaWNlIFBlciBNb250aCc6IHJvdz8ucnVubmluZ0Nvc3QgIT0gbnVsbFxuICAgICAgICAgID8gYCR7c3ltYm9sfSAke3RoaXMuZm9ybWF0SU5SKHJvdy5ydW5uaW5nQ29zdCl9YFxuICAgICAgICAgIDogJycsXG4gICAgICB9KSk7XG4gICAgICBpZiAodGhpcy5hbm5leHVyZVRvdGFsICE9IG51bGwpIHtcbiAgICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgICAnU3RvcmUgTmFtZSc6ICcnLCAnUHJvZHVjdCc6ICcnLCAnU3RvcmUgSUQnOiAnJywgJ0RlcGxveW1lbnQgRGF0ZSc6ICcnLFxuICAgICAgICAgICdQZXJpb2QnOiAnJywgJ1ByaWNpbmcgTWV0aG9kJzogJycsXG4gICAgICAgICAgJ0JpbGxpbmcgRGF5cyc6ICcnLCAnUXR5JzogJycsICdVbml0IFByaWNlJzogJ1RvdGFsJyxcbiAgICAgICAgICAnUHJpY2UgUGVyIE1vbnRoJzogYCR7c3ltYm9sfSAke3RoaXMuZm9ybWF0SU5SKHRoaXMuYW5uZXh1cmVUb3RhbCl9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQocm93cyk7XG4gICAgICBjb25zdCB3b3JrYm9vayA9IHsgU2hlZXRzOiB7IEFubmV4dXJlOiB3b3Jrc2hlZXQgfSwgU2hlZXROYW1lczogWydBbm5leHVyZSddIH07XG4gICAgICBjb25zdCBidWZmZXI6IEFycmF5QnVmZmVyID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JyxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc2FmZUludm9pY2VObyA9ICh0aGlzLmludm9pY2VEYXRhPy5pbnZvaWNlIHx8ICdpbnZvaWNlJykucmVwbGFjZSgvW1xcXFwvOio/XCI8PnxcXHJcXG5dL2csICcnKTtcbiAgICAgIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgYCR7c2FmZUludm9pY2VOb30tYW5uZXh1cmUueGxzeGApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGV4cG9ydCBhbm5leHVyZScpO1xuICAgIH1cbiAgfVxuXG4gIHJldHJ5QW5uZXh1cmUoKSB7XG4gICAgdGhpcy5hbm5leHVyZURhdGEgPSBudWxsO1xuICAgIHRoaXMubG9hZEFubmV4dXJlKCk7XG4gIH1cblxuICBkb3dubG9hZFBkZigpIHtcbiAgICBpZiAoIXRoaXMuaW52b2ljZURhdGE/Ll9pZCB8fCB0aGlzLmRvd25sb2FkaW5nKSByZXR1cm47XG4gICAgdGhpcy5kb3dubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgcmVxID0geyAuLi50aGlzLmludm9pY2VEYXRhIH07XG4gICAgcmVxLmNsaWVudElkID0gW3RoaXMuaW52b2ljZURhdGEuY2xpZW50SWRdO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuaW52b2ljZURvd25sb2FkKHJlcSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmludm9pY2VEYXRhPy5iaWxsaW5nRGF0ZVxuICAgICAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLmludm9pY2VEYXRhLmJpbGxpbmdEYXRlKS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnbG9uZycgfSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgY29uc3QgYnJhbmROYW1lID0gdGhpcy5pbnZvaWNlRGF0YT8ucmVnaXN0ZXJlZENvbXBhbnlOYW1lIHx8IHRoaXMuaW52b2ljZURhdGE/LmNvbXBhbnlOYW1lIHx8ICcnO1xuICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gYCR7dGhpcy5pbnZvaWNlRGF0YT8uaW52b2ljZSB8fCAnaW52b2ljZSd9LSR7bW9udGh9LSR7YnJhbmROYW1lfS5wZGZgXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcXFwvOio/XCI8PnxcXHJcXG5dL2csICcnKS50cmltKCk7XG4gICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgICB0aGlzLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGRvd25sb2FkIGludm9pY2UnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvLyBNaXJyb3JzIHRoZSBiYWNrZW5kIENVUlJFTkNZX1NZTUJPTFMgbWFwICh1dGlscy9jdXJyZW5jeS5qcykgc28gdGhlXG4gIC8vIHByZXZpZXcgc2hvd3MgdGhlIHNhbWUgc3ltYm9sIHRoZSBQREYgd2lsbCByZW5kZXIuIEZhbGxiYWNrIGlzICckJyBmb3JcbiAgLy8gdW5rbm93biBjb2RlcyB0byBtYXRjaCB0aGUgYmFja2VuZC5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW5jeVN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgaW5yOiAn4oK5JyxcbiAgICBkb2xsYXI6ICckJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsXG4gICAgZXVybzogJ+KCrCcsXG4gICAgYWVkOiAnQUVEJyxcbiAgfTtcblxuICAvLyBXb3JkcyBmb3JtIG9mIGVhY2ggY3VycmVuY3kgZm9yIHRoZSBcIkFtb3VudCBpbiB3b3Jkc1wiIGxpbmUuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVuY3lXb3JkczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBpbnI6ICdJbmRpYW4gUnVwZWUnLFxuICAgIGRvbGxhcjogJ1VTIERvbGxhcicsXG4gICAgc2luZ2Fwb3JlZG9sbGFyOiAnU2luZ2Fwb3JlIERvbGxhcicsXG4gICAgZXVybzogJ0V1cm8nLFxuICB9O1xuXG4gIC8vIEZyYWN0aW9uYWwgKHN1Yi11bml0KSBuYW1lIHBlciBjdXJyZW5jeSBmb3IgdGhlIGNlbnRzIHBvcnRpb24gb2YgdGhlXG4gIC8vIFwiVG90YWwgSW4gV29yZHNcIiBsaW5lLiBJTlIgaXMgd2hvbGUtbnVtYmVyIG9ubHksIHNvIGl0IGhhcyBubyBmcmFjdGlvbi5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW5jeUZyYWN0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGRvbGxhcjogJ0NlbnRzJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdDZW50cycsXG4gICAgZXVybzogJ0NlbnRzJyxcbiAgICBhZWQ6ICdGaWxzJyxcbiAgfTtcblxuICAvLyBMb2NhbGUgdXNlZCBmb3IgZ3JvdXBpbmcgbnVtYmVycy4gZW4tSU4gaXMgbGFraHMvY3JvcmVzOyBldmVyeXRoaW5nIGVsc2VcbiAgLy8gZ2V0cyB3ZXN0ZXJuIHRob3VzYW5kcyBncm91cGluZy5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW5jeUxvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgaW5yOiAnZW4tSU4nLFxuICAgIGRvbGxhcjogJ2VuLVVTJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdlbi1TRycsXG4gICAgZXVybzogJ2VuLUlFJyxcbiAgfTtcblxuICBjdXJyZW5jeVN5bWJvbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSB0aGlzLmludm9pY2VEYXRhPy5jdXJyZW5jeTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVN5bWJvbHNbY29kZSB8fCAnJ10gfHwgJyQnO1xuICB9XG5cbiAgLy8gUGF5bWVudCB0ZXJtIGluIGRheXMuIFRoZSBpbnZvaWNlIGRvYyBkb2Vzbid0IHN0b3JlIHBheW1lbnRUZXJtIChpdCBsaXZlc1xuICAvLyBvbiB0aGUgYmlsbGluZyBncm91cCksIHNvIGRlcml2ZSBpdCBmcm9tIGR1ZURhdGUg4oiSIGJpbGxpbmdEYXRlLCB3aGljaCBpc1xuICAvLyBhY2N1cmF0ZSBmb3IgZXZlcnkgaW52b2ljZS4gRmFsbHMgYmFjayB0byBhIHN0b3JlZCBwYXltZW50VGVybSwgZWxzZSAzMC5cbiAgZ2V0IHBheW1lbnRUZXJtRGF5cygpOiBudW1iZXIge1xuICAgIGNvbnN0IGludiA9IHRoaXMuaW52b2ljZURhdGE7XG4gICAgaWYgKGludj8uYmlsbGluZ0RhdGUgJiYgaW52Py5kdWVEYXRlKSB7XG4gICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGludi5iaWxsaW5nRGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICBjb25zdCBkdWUgPSBuZXcgRGF0ZShpbnYuZHVlRGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICBjb25zdCBkYXlzID0gTWF0aC5yb3VuZCgoZHVlIC0gc3RhcnQpIC8gODY0MDAwMDApO1xuICAgICAgaWYgKGRheXMgPiAwKSByZXR1cm4gZGF5cztcbiAgICB9XG4gICAgcmV0dXJuIE51bWJlcihpbnY/LnBheW1lbnRUZXJtKSB8fCAzMDtcbiAgfVxuXG4gIGdldCB0b3RhbEluV29yZHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5pbnZvaWNlRGF0YT8uY3VycmVuY3k7XG4gICAgY29uc3Qgd29yZHMgPSB0aGlzLmN1cnJlbmN5V29yZHNbY29kZSB8fCAnJ10gfHwgJ1VTIERvbGxhcic7XG4gICAgY29uc3QgdmFsdWUgPSBOdW1iZXIodGhpcy5pbnZvaWNlRGF0YT8udG90YWxBbW91bnQgfHwgMCk7XG4gICAgLy8gSU5SIGlzIHdob2xlLW51bWJlciBvbmx5IOKAlCByZW5kZXIganVzdCB0aGUgcnVwZWUgd29yZHMuIEV2ZXJ5IG90aGVyXG4gICAgLy8gY3VycmVuY3kga2VlcHMgMiBkZWNpbWFscywgc28gc3BlbGwgb3V0IHRoZSBjZW50cyB0b28gd2hlbiBub24temVyby5cbiAgICBpZiAoY29kZSA9PT0gJ2lucicpIHtcbiAgICAgIHJldHVybiBgJHt3b3Jkc30gJHthbW91bnRJbldvcmRzKE1hdGgucm91bmQodmFsdWUpKX0gT25seWA7XG4gICAgfVxuICAgIGNvbnN0IHdob2xlID0gTWF0aC50cnVuYyh2YWx1ZSk7XG4gICAgY29uc3QgY2VudHMgPSBNYXRoLnJvdW5kKCh2YWx1ZSAtIHdob2xlKSAqIDEwMCk7XG4gICAgY29uc3QgZnJhY3Rpb24gPSB0aGlzLmN1cnJlbmN5RnJhY3Rpb25bY29kZSB8fCAnJ10gfHwgJ0NlbnRzJztcbiAgICBpZiAoY2VudHMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7d29yZHN9ICR7YW1vdW50SW5Xb3Jkcyh3aG9sZSl9IGFuZCAke2Ftb3VudEluV29yZHMoY2VudHMpfSAke2ZyYWN0aW9ufSBPbmx5YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3dvcmRzfSAke2Ftb3VudEluV29yZHMod2hvbGUpfSBPbmx5YDtcbiAgfVxuXG4gIGZvcm1hdElOUih2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5pbnZvaWNlRGF0YT8uY3VycmVuY3k7XG4gICAgY29uc3QgaXNJbnIgPSBjb2RlID09PSAnaW5yJztcbiAgICBjb25zdCBuID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIWlzRmluaXRlKG4pKSByZXR1cm4gaXNJbnIgPyAnMCcgOiAnMC4wMCc7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy5jdXJyZW5jeUxvY2FsZXNbY29kZSB8fCAnJ10gfHwgJ2VuLVVTJztcbiAgICAvLyBJTlIgaXMgc2hvd24gYXMgYSB3aG9sZSBudW1iZXIgKHJvdW5kZWQpOyBldmVyeSBvdGhlciBjdXJyZW5jeSBrZWVwc1xuICAgIC8vIGV4YWN0bHkgMiBkZWNpbWFsIHBsYWNlcy5cbiAgICBjb25zdCBmcmFjdGlvbkRpZ2l0cyA9IGlzSW5yID8gMCA6IDI7XG4gICAgcmV0dXJuIG4udG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMgfSk7XG4gIH1cblxuICAvLyBBIHRheCBsaW5lIChJR1NUL0NHU1QvU0dTVCkgaXMgb25seSBzaG93biB3aGVuIGl0IGFjdHVhbGx5IGhhcyBhIG5vbi16ZXJvXG4gIC8vIGFtb3VudCDigJQgemVybyAvIG1pc3NpbmcgdGF4IHJvd3MgYXJlIGhpZGRlbiBpbiB0aGUgcHJldmlldyAoYW5kIFBERikuXG4gIGhhc1RheCh0OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNGaW5pdGUoTnVtYmVyKHQ/LnRheEFtb3VudCkpICYmIE51bWJlcih0Py50YXhBbW91bnQpID4gMDtcbiAgfVxuXG4gIC8vIExpbmUgaXRlbXMgc2hvd24gaW4gdGhlIHByZXZpZXcsIHdpdGggemVyby1xdWFudGl0eSByb3dzIGRyb3BwZWQgc28gdGhlXG4gIC8vIG51bWJlcmluZyAoaSArIDEpIHN0YXlzIHNlcXVlbnRpYWwuIEEgcm93IGlzIGhpZGRlbiB3aGVuIGl0cyBxdWFudGl0eSBpcyBhblxuICAvLyBleHBsaWNpdCAwIHdpdGggYSAwIGFtb3VudCDigJQgdGhpcyBkcm9wcyBhZGRpdGlvbmFsIHByb2R1Y3RzXG4gIC8vIChFeWV0ZXN0L1BsYW5vZ3JhbS9BSSBNYW5hZ2VyL1ZNUywgSFNOIDk5ODMxNCkgdGhhdCByZXNvbHZlZCB0byBubyBzdG9yZXNcbiAgLy8gZm9yIHRoaXMgYmlsbGluZyBncm91cC4gT25seSBza2lwcyByb3dzIHRoYXQgY2FycnkgdGhlaXIgb3duIHN0b3JlQ291bnRcbiAgLy8gKGFkZGl0aW9uYWwgcHJvZHVjdHMgYWx3YXlzIGRvKTsgbm9ybWFsIHN0b3JlLWJhc2VkIHJvd3Mgd2l0aG91dCBhXG4gIC8vIHN0b3JlQ291bnQgZmFsbCBiYWNrIHRvIHRoZSBpbnZvaWNlIHN0b3JlIGNvdW50IGFuZCBhcmUgbGVmdCB1bnRvdWNoZWQuXG4gIHZpc2libGVQcm9kdWN0cygpOiBhbnlbXSB7XG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmludm9pY2VEYXRhPy5wcm9kdWN0cztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvZHVjdHMpKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgcXR5ID0gTnVtYmVyKGl0ZW0/LnN0b3JlQ291bnQgPz8gaXRlbT8ucXVhbnRpdHkpO1xuICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKGl0ZW0/LmFtb3VudCk7XG4gICAgICByZXR1cm4gIShpc0Zpbml0ZShxdHkpICYmIHF0eSA9PT0gMCAmJiAoIWlzRmluaXRlKGFtb3VudCkgfHwgYW1vdW50ID09PSAwKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBNaXJyb3JzIHRoZSBiYWNrZW5kIHRyYW5zZm9ybTogYHRhbmdvVHJhZmZpY2AgLT4gYFRhbmdvIFRyYWZmaWNgLlxuICBmb3JtYXRQcm9kdWN0TmFtZShuYW1lOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHBhcnRzID0gU3RyaW5nKG5hbWUpLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpLnNwbGl0KCcgJyk7XG4gICAgcmV0dXJuIHBhcnRzLm1hcCgodykgPT4gdy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHcuc2xpY2UoMSkpLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59IiwiPGRpdiBjbGFzcz1cImludm9pY2UtcHJldmlldy1tb2RhbFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdi10YWJzIHByZXZpZXctdGFic1wiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gJ2ludm9pY2UnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKCdpbnZvaWNlJylcIiB0eXBlPVwiYnV0dG9uXCI+SW52b2ljZTwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtbGlua1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09PSAnYW5uZXh1cmUnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKCdhbm5leHVyZScpXCIgdHlwZT1cImJ1dHRvblwiPkFubmV4dXJlPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiYWN0aXZlTW9kYWwuZGlzbWlzcygpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMFwiPlxuICAgIDwhLS0gSU5WT0lDRSBUQUIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2ludm9pY2UnXCIgY2xhc3M9XCJpbnZvaWNlLXBhZ2VcIj5cbiAgICAgIDwhLS0gSGVhZGVyIHJvdyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtc3RhcnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5kXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90YW5nb2V5ZS1sb2dvLnN2Z1wiIGFsdD1cIlRhbmdvRXllXCIgY2xhc3M9XCJicmFuZC1sb2dvXCIgb25lcnJvcj1cInRoaXMuc3R5bGUuZGlzcGxheT0nbm9uZSdcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFueS1ibG9jayBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFueS1uYW1lXCI+VEFOR08gSVQgU09MVVRJT05TIElORElBIFBSSVZBVEUgTFREPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PjJuZCBGbG9vciwgQXBlZWpheSBCdXNpbmVzcyBDZW50cmUsIE5vLjEyLzM5LDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5IYWRkb3dzIFJvYWQsIE51bmdhbWJha2thbTwvZGl2PlxuICAgICAgICAgICAgPGRpdj5DaGVubmFpIFRhbWlsIE5hZHUgNjAwMDA2LCBJbmRpYTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTFcIj48c3Ryb25nPkdTVElOIDMzQUFHQ1QzMTI0UjFaMjwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTFcIj5NU01FIC8gVWR5YW0gdHlwZSA6IE1pY3JvPC9kaXY+XG4gICAgICAgICAgICA8ZGl2Pk1TTUUgLyBVZHlhbSBOby4gOiBVRFlBTS1UTi0wMy0wMjEyMzk5PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1lbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGF4LWludm9pY2UtbGFiZWxcIj5UQVggSU5WT0lDRTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZvaWNlLW51bWJlclwiPiMge3sgaW52b2ljZURhdGE/Lmludm9pY2UgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBCaWxsLXRvICsgdG90YWxzIHJvdyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbC10by1sYWJlbFwiPkJJTEwgVE8gOjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGllbnQtbmFtZSBtdC0xXCI+e3sgKGludm9pY2VEYXRhPy5jbGllbnROYW1lIHx8IGludm9pY2VEYXRhPy5jb21wYW55TmFtZSkgfCB1cHBlcmNhc2UgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiICpuZ0lmPVwiaW52b2ljZURhdGE/LmJpbGxpbmdBZGRyZXNzTGluZU9uZSB8fCBpbnZvaWNlRGF0YT8uY29tcGFueUFkZHJlc3NcIj5cbiAgICAgICAgICAgIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nQWRkcmVzc0xpbmVPbmUgfHwgaW52b2ljZURhdGE/LmNvbXBhbnlBZGRyZXNzIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VEYXRhPy5iaWxsaW5nQWRkcmVzc0xpbmVUd29cIj57eyBpbnZvaWNlRGF0YT8uYmlsbGluZ0FkZHJlc3NMaW5lVHdvIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VEYXRhPy5iaWxsaW5nQ2l0eSB8fCBpbnZvaWNlRGF0YT8uYmlsbGluZ1BpbkNvZGUgfHwgaW52b2ljZURhdGE/LmJpbGxpbmdTdGF0ZVwiPlxuICAgICAgICAgICAge3sgaW52b2ljZURhdGE/LmJpbGxpbmdDaXR5IH19PHNwYW4gKm5nSWY9XCJpbnZvaWNlRGF0YT8uYmlsbGluZ1BpbkNvZGVcIj4sIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nUGluQ29kZSB9fTwvc3Bhbj48c3BhbiAqbmdJZj1cImludm9pY2VEYXRhPy5iaWxsaW5nU3RhdGVcIj4sIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nU3RhdGUgfX08L3NwYW4+PHNwYW4gKm5nSWY9XCJpbnZvaWNlRGF0YT8uYmlsbGluZ0NvdW50cnlcIj4sIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nQ291bnRyeSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwiaW52b2ljZURhdGE/LkdTVE51bWJlclwiPjxzdHJvbmc+R1NUSU4ge3sgaW52b2ljZURhdGE/LkdTVE51bWJlciB9fTwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlRGF0YT8uUGxhY2VPZlN1cHBseVwiPlBsYWNlIE9mIFN1cHBseToge3sgaW52b2ljZURhdGE/LlBsYWNlT2ZTdXBwbHkgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZvaWNlLXRvdGFsLWxhYmVsXCI+SW52b2ljZSBUb3RhbCA8c3BhbiBjbGFzcz1cImludm9pY2UtdG90YWwtYW1vdW50XCI+e3sgY3VycmVuY3lTeW1ib2woKSB9fSB7eyBmb3JtYXRJTlIoaW52b2ljZURhdGE/LnRvdGFsQW1vdW50KSB9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJtZXRhLXRhYmxlIG1zLWF1dG8gbXQtM1wiPlxuICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz1cIm1ldGEtbGFiZWxcIj5JbnZvaWNlIGRhdGUgOjwvdGQ+PHRkIGNsYXNzPVwibWV0YS12YWx1ZVwiPnt7IGludm9pY2VEYXRhPy5iaWxsaW5nRGF0ZSB8IGRhdGU6J2RkL01NL3l5eXknIH19PC90ZD48L3RyPlxuICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz1cIm1ldGEtbGFiZWxcIj5UZXJtcyA6PC90ZD48dGQgY2xhc3M9XCJtZXRhLXZhbHVlXCI+VGVybSB7eyBwYXltZW50VGVybURheXMgfX08L3RkPjwvdHI+XG4gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPVwibWV0YS1sYWJlbFwiPkR1ZSBEYXRlIDo8L3RkPjx0ZCBjbGFzcz1cIm1ldGEtdmFsdWVcIj57eyBpbnZvaWNlRGF0YT8uZHVlRGF0ZSB8IGRhdGU6J2RkL01NL3l5eXknIH19PC90ZD48L3RyPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaW52b2ljZURhdGE/LnB1cmNoYXNlT3JkZXJOdW1iZXIgfHwgaW52b2ljZURhdGE/LlBvTnVtIHx8IGludm9pY2VEYXRhPy5wb051bWJlclwiPjx0ZCBjbGFzcz1cIm1ldGEtbGFiZWxcIj5QLk8uIyA6PC90ZD48dGQgY2xhc3M9XCJtZXRhLXZhbHVlXCI+e3sgaW52b2ljZURhdGE/LnB1cmNoYXNlT3JkZXJOdW1iZXIgfHwgaW52b2ljZURhdGE/LlBvTnVtIHx8IGludm9pY2VEYXRhPy5wb051bWJlciB9fTwvdGQ+PC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExpbmUgaXRlbXMgLS0+XG4gICAgICA8dGFibGUgY2xhc3M9XCJpdGVtcy10YWJsZSBtdC00XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtaW5kZXhcIj4jPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNvbC1wcm9kdWN0XCI+UHJvZHVjdCAmYW1wOyBEZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtbW9udGhcIj5Nb250aDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtaHNuXCI+SFNOL1NBQzwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtY291bnQgdGV4dC1jZW50ZXJcIj5RdWFudGl0eTwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtcmF0ZSB0ZXh0LWVuZFwiPlJhdGU8L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY29sLWFtb3VudCB0ZXh0LWVuZFwiPkFtb3VudDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlUHJvZHVjdHMoKTsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICAgICAgICA8dGQ+e3sgaSArIDEgfX08L3RkPlxuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1uYW1lXCI+e3sgZm9ybWF0UHJvZHVjdE5hbWUoaXRlbT8ucHJvZHVjdE5hbWUpIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWRlc2NcIj57eyBpdGVtPy5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwhLS0gTW9udGggaXMgdGhlIHByb2R1Y3QncyBiaWxsaW5nIG1vbnRoIHN0b3JlZCBvbiB0aGUgbGluZSBpdGVtXG4gICAgICAgICAgICAgICAgIChhZHZhbmNlIGludm9pY2VzIGJpbGwgYSBmdXR1cmUgbW9udGggd2hpbGUgYmlsbGluZ0RhdGUgaXMgdGhlXG4gICAgICAgICAgICAgICAgIGNyZWF0aW9uIGRhdGUpLiBGYWxsIGJhY2sgdG8gYmlsbGluZ0RhdGUgZm9yIGxlZ2FjeSByb3dzLiAtLT5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vd3JhcFwiPnt7IGl0ZW0/Lm1vbnRoIHx8IChpbnZvaWNlRGF0YT8uYmlsbGluZ0RhdGUgfCBkYXRlOidNTU0geXl5eScpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyBpdGVtPy5oc24gfHwgaXRlbT8uaHNuQ29kZSB8fCAnOTk4MzE0JyB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzdHJvbmc+e3sgaXRlbT8uc3RvcmVDb3VudCB8fCBpbnZvaWNlRGF0YT8uc3RvcmVzPy5sZW5ndGggfHwgJycgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmQgbm93cmFwXCI+e3sgY3VycmVuY3lTeW1ib2woKSB9fSB7eyBmb3JtYXRJTlIoaXRlbT8ucHJpY2UpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kIG5vd3JhcFwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKGl0ZW0/LmFtb3VudCkgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8IS0tIFRvdGFscyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTdcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidG90YWxzLXRhYmxlIG1zLWF1dG9cIj5cbiAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9XCJ0b3RhbHMtbGFiZWxcIj5TdWIgVG90YWw8L3RkPjx0ZCBjbGFzcz1cInRvdGFscy12YWx1ZVwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKGludm9pY2VEYXRhPy5hbW91bnQpIH19PC90ZD48L3RyPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaW52b2ljZURhdGE/LmRpc2NvdW50QW1vdW50XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy1sYWJlbFwiPkRpc2NvdW50PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidG90YWxzLXZhbHVlXCI+e3sgY3VycmVuY3lTeW1ib2woKSB9fSB7eyBmb3JtYXRJTlIoaW52b2ljZURhdGE/LmRpc2NvdW50QW1vdW50KSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdCBvZiBpbnZvaWNlRGF0YT8udGF4XCI+XG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImhhc1RheCh0KVwiPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy1sYWJlbFwiPnt7IHQ/LnR5cGUgfHwgdD8udGF4TmFtZSB8fCB0Py5uYW1lIH19ICh7eyB0Py52YWx1ZSA/PyB0Py50YXhQZXJjZW50YWdlID8/IHQ/LnBlcmNlbnRhZ2UgfX0lKTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidG90YWxzLXZhbHVlIG5vd3JhcFwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKHQ/LnRheEFtb3VudCkgfX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0b3RhbHMtdG90YWwtcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy1sYWJlbFwiPlRvdGFsIEFtb3VudDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy12YWx1ZVwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKGludm9pY2VEYXRhPy50b3RhbEFtb3VudCkgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRvdGFscy13b3Jkcy1yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidG90YWxzLWxhYmVsXCI+VG90YWwgSW4gV29yZHM8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0b3RhbHMtdmFsdWUgd29yZHNcIj57eyB0b3RhbEluV29yZHMgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBheW1lbnQgZGV0YWlscyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGFua3MgbXQtNFwiPlRoYW5rcyBmb3IgeW91ciBidXNpbmVzcyE8L2Rpdj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInBheW1lbnQtdGFibGUgbXQtMlwiPlxuICAgICAgICA8dHI+PHRkIGNsYXNzPVwicGF5bWVudC1sYWJlbFwiPkJlbmVmaWNpYXJ5IE5hbWU8L3RkPjx0ZCBjbGFzcz1cInBheW1lbnQtdmFsdWVcIj48c3Ryb25nPnt7IGJhbmtEZXRhaWxzPy5iZW5lZmljaWFyeU5hbWUgfX08L3N0cm9uZz48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQgY2xhc3M9XCJwYXltZW50LWxhYmVsXCI+QWNjb3VudCBOdW1iZXI8L3RkPjx0ZCBjbGFzcz1cInBheW1lbnQtdmFsdWVcIj48c3Ryb25nPnt7IGJhbmtEZXRhaWxzPy5hY2NvdW50TnVtYmVyIH19PC9zdHJvbmc+PC90ZD48L3RyPlxuICAgICAgICA8dHI+PHRkIGNsYXNzPVwicGF5bWVudC1sYWJlbFwiPklGU0MgQ29kZTwvdGQ+PHRkIGNsYXNzPVwicGF5bWVudC12YWx1ZVwiPjxzdHJvbmc+e3sgYmFua0RldGFpbHM/Lmlmc2MgfX08L3N0cm9uZz48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQgY2xhc3M9XCJwYXltZW50LWxhYmVsXCI+UGF5bWVudCBUeXBlPC90ZD48dGQgY2xhc3M9XCJwYXltZW50LXZhbHVlXCI+PHN0cm9uZz57eyBiYW5rRGV0YWlscz8ucGF5bWVudFR5cGUgfX08L3N0cm9uZz48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQgY2xhc3M9XCJwYXltZW50LWxhYmVsXCI+U1dJRlQgQ29kZTwvdGQ+PHRkIGNsYXNzPVwicGF5bWVudC12YWx1ZVwiPjxzdHJvbmc+e3sgYmFua0RldGFpbHM/LnN3aWZ0IH19PC9zdHJvbmc+PC90ZD48L3RyPlxuICAgICAgICA8dHI+PHRkIGNsYXNzPVwicGF5bWVudC1sYWJlbFwiPkJyYW5jaDwvdGQ+PHRkIGNsYXNzPVwicGF5bWVudC12YWx1ZVwiPjxzdHJvbmc+e3sgYmFua0RldGFpbHM/LmJyYW5jaCB9fTwvc3Ryb25nPjwvdGQ+PC90cj5cbiAgICAgIDwvdGFibGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzeXN0ZW0tbm90ZSBtdC00XCI+VGhpcyBpcyBhIHN5c3RlbSBnZW5lcmF0ZWQgaW52b2ljZS4gTm8gc2lnbmF0dXJlIHJlcXVpcmVkPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFOTkVYVVJFIFRBQiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnYW5uZXh1cmUnXCIgY2xhc3M9XCJhbm5leHVyZS1wYWdlXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYW5uZXh1cmVMb2FkaW5nXCIgY2xhc3M9XCJsb2FkaW5nLXN0YXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+PHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWFubmV4dXJlTG9hZGluZyAmJiBhbm5leHVyZUVycm9yXCIgY2xhc3M9XCJlcnJvci1zdGF0ZVwiPlxuICAgICAgICA8cD5GYWlsZWQgdG8gbG9hZCBhbm5leHVyZS48L3A+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwicmV0cnlBbm5leHVyZSgpXCI+UmV0cnk8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFhbm5leHVyZUxvYWRpbmcgJiYgIWFubmV4dXJlRXJyb3IgJiYgYW5uZXh1cmVEYXRhICE9PSBudWxsICYmIGFubmV4dXJlRGF0YS5sZW5ndGggPT09IDBcIiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgIE5vIGFubmV4dXJlIGRhdGEgZm9yIHRoaXMgaW52b2ljZS5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFhbm5leHVyZUxvYWRpbmcgJiYgIWFubmV4dXJlRXJyb3IgJiYgYW5uZXh1cmVEYXRhICYmIGFubmV4dXJlRGF0YS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgY2xhc3M9XCJhbm5leHVyZS10b29sYmFyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImRvd25sb2FkQW5uZXh1cmVYbHN4KClcIj5cbiAgICAgICAgICBFeHBvcnQgYXMgWExTWFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFhbm5leHVyZUxvYWRpbmcgJiYgIWFubmV4dXJlRXJyb3IgJiYgYW5uZXh1cmVEYXRhICYmIGFubmV4dXJlRGF0YS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgY2xhc3M9XCJhbm5leHVyZS1zY3JvbGxcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiYW5uZXh1cmUtdGFibGVcIj5cbiAgICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLXN0b3JlXCIgLz5cbiAgICAgICAgICAgIDxjb2wgY2xhc3M9XCJjb2wtcHJvZHVjdFwiIC8+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLWlkXCIgLz5cbiAgICAgICAgICAgIDxjb2wgY2xhc3M9XCJjb2wtZGF0ZVwiIC8+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLWRheXNcIiAvPlxuICAgICAgICAgICAgPGNvbCBjbGFzcz1cImNvbC1xdHlcIiAvPlxuICAgICAgICAgICAgPGNvbCBjbGFzcz1cImNvbC1wcmljZVwiIC8+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLXRvdGFsXCIgLz5cbiAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPlN0b3JlIE5hbWU8L3RoPlxuICAgICAgICAgICAgICA8dGg+UHJvZHVjdHM8L3RoPlxuICAgICAgICAgICAgICA8dGg+U3RvcmUgSUQ8L3RoPlxuICAgICAgICAgICAgICA8dGg+RGVwbG95bWVudCBEYXRlPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5CaWxsaW5nIERheXM8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlF0eTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+VW5pdCBQcmljZTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UHJpY2UgUGVyIE1vbnRoPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBhbm5leHVyZURhdGE7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjZWxsLXN0b3JlXCI+e3sgcm93Py5zdG9yZU5hbWUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93Py5wcm9kdWN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNlbGwtbm93cmFwIGNlbGwtbXV0ZWRcIj57eyByb3c/LnN0b3JlSWQgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjZWxsLW5vd3JhcCBjZWxsLW11dGVkXCI+e3sgcm93Py5lZGdlZmlyc3RGaWxlRGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+PHN0cm9uZz57eyByb3c/LndvcmtpbmdkYXlzIH19PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyByb3c/LnVuaXRzID8/IDEgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBjZWxsLW5vd3JhcCBjZWxsLW51bVwiPlxuICAgICAgICAgICAgICAgIHt7IHJvdz8uY3VycmVuY3lUeXBlIH19IHt7IGZvcm1hdElOUihyb3c/LnN0YW5kYXJkUHJpY2UpIH19XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVuaXQtYmFzaXNcIj57eyByb3c/LnVuaXRCYXNpcyB8fCAnUGVyIFN0b3JlJyB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBjZWxsLW5vd3JhcCBjZWxsLW51bSBjZWxsLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3c/LmN1cnJlbmN5VHlwZSB9fSB7eyBmb3JtYXRJTlIocm93Py5ydW5uaW5nQ29zdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8dGZvb3QgKm5nSWY9XCJhbm5leHVyZVRvdGFsICE9IG51bGxcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+VG90YWw8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBjZWxsLW51bSBjZWxsLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbm5leHVyZURhdGFbMF0/LmN1cnJlbmN5VHlwZSB9fSB7eyBmb3JtYXRJTlIoYW5uZXh1cmVUb3RhbCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlua1wiIChjbGljayk9XCJhY3RpdmVNb2RhbC5kaXNtaXNzKClcIj5DbG9zZTwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJkb3dubG9hZFBkZigpXCIgW2Rpc2FibGVkXT1cImRvd25sb2FkaW5nXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZGluZ1wiPkRvd25sb2FkIFBERjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZG93bmxvYWRpbmdcIj5Eb3dubG9hZGluZy4uLjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9pbnZvaWNlLXByZXZpZXcvaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9pbnZvaWNlLXByZXZpZXcvaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUd4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQU92RCxNQUFNLE9BQU8sdUJBQXVCO0lBNEJ6QjtJQUNDO0lBQ0E7SUE3Qk8sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsV0FBVyxDQUFNO0lBRTFCLFNBQVMsR0FBMkIsU0FBUyxDQUFDO0lBRTlDLFlBQVksR0FBaUIsSUFBSSxDQUFDO0lBQ2xDLDBFQUEwRTtJQUMxRSxpREFBaUQ7SUFDakQsYUFBYSxHQUFrQixJQUFJLENBQUM7SUFDcEMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFcEIsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSxXQUFXLEdBQVE7UUFDakIsZUFBZSxFQUFFLDBDQUEwQztRQUMz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eEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQTNRVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixtR0NkcEMsazVYQTROTTs7NEZEOU1PLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7MklBT3RCLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBCaWxsaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2JpbGxpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcbmltcG9ydCB7IGFtb3VudEluV29yZHMgfSBmcm9tICcuL2Ftb3VudC1pbi13b3Jkcy51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWludm9pY2UtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnZvaWNlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaW52b2ljZS1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBJbnZvaWNlUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgaW52b2ljZURhdGE6IGFueTtcblxuICBhY3RpdmVUYWI6ICdpbnZvaWNlJyB8ICdhbm5leHVyZScgPSAnaW52b2ljZSc7XG5cbiAgYW5uZXh1cmVEYXRhOiBhbnlbXSB8IG51bGwgPSBudWxsO1xuICAvLyBHcmFuZCB0b3RhbCBvZiBhbGwgYW5uZXh1cmUgcm93cyAoY29tcHV0ZWQgYnkgdGhlIGJhY2tlbmQgd2l0aCB0aGUgc2FtZVxuICAvLyBwZXItY2FtZXJhIC8gcGVyLXpvbmUgcnVsZXMgdGhlIGludm9pY2UgdXNlcykuXG4gIGFubmV4dXJlVG90YWw6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBhbm5leHVyZUxvYWRpbmcgPSBmYWxzZTtcbiAgYW5uZXh1cmVFcnJvciA9IGZhbHNlO1xuXG4gIGRvd25sb2FkaW5nID0gZmFsc2U7XG5cbiAgLy8gRml4ZWQgYmVuZWZpY2lhcnkgYWNjb3VudCDigJQgaGFyZGNvZGVkIHRvIG1hdGNoIHRoZSBQREYgZXhhY3RseSAoTk9UIGZyb21cbiAgLy8gdGhlIERCKSwgc28gdGhlIHByZXZpZXcgYW5kIHRoZSBkb3dubG9hZGVkIFBERiBhbHdheXMgc2hvdyB0aGUgc2FtZSB0aGluZy5cbiAgYmFua0RldGFpbHM6IGFueSA9IHtcbiAgICBiZW5lZmljaWFyeU5hbWU6ICdUYW5nbyBJVCBTb2x1dGlvbnMgSW5kaWEgUHJpdmF0ZSBMaW1pdGVkJyxcbiAgICBhY2NvdW50TnVtYmVyOiAnNTAyMDAwMjc0NDE0MzMnLFxuICAgIGlmc2M6ICdIREZDMDAwMDM4NicsXG4gICAgc3dpZnQ6ICdIREZDSU5CQkNIRScsXG4gICAgYnJhbmNoOiAnU2FudGhvbWUsIENoZW5uYWknLFxuICAgIHBheW1lbnRUeXBlOiAnT25saW5lJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJhbmsgZGV0YWlscyBhcmUgZml4ZWQgKHNlZSBiYW5rRGV0YWlscyBhYm92ZSkg4oCUIG5vdGhpbmcgdG8gZmV0Y2guXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZWxlY3RUYWIodGFiOiAnaW52b2ljZScgfCAnYW5uZXh1cmUnKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgaWYgKHRhYiA9PT0gJ2FubmV4dXJlJyAmJiB0aGlzLmFubmV4dXJlRGF0YSA9PT0gbnVsbCAmJiAhdGhpcy5hbm5leHVyZUxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZEFubmV4dXJlKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZEFubmV4dXJlKCkge1xuICAgIGlmICghdGhpcy5pbnZvaWNlRGF0YT8uX2lkKSByZXR1cm47XG4gICAgdGhpcy5hbm5leHVyZUxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYW5uZXh1cmVFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZ2V0SW52b2ljZUFubmV4dXJlKHRoaXMuaW52b2ljZURhdGEuX2lkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIEJhY2tlbmQgZW52ZWxvcGUgaXMgeyBjb2RlLCBzdGF0dXMsIGRhdGE6IHsgZGF0YTogWy4uLl0gfSB9IOKAlFxuICAgICAgICAgIC8vIHRoZSBjb250cm9sbGVyIGNhbGxzIHNlbmRTdWNjZXNzKHsgZGF0YTogYW5uZXh1cmVEYXRhIH0pIGFuZCB0aGVcbiAgICAgICAgICAvLyByZXNwb25zZSBtaWRkbGV3YXJlIHdyYXBzIHRoYXQgdW5kZXIgaXRzIG93biBgZGF0YWAga2V5LiBSZWFkXG4gICAgICAgICAgLy8gdGhyb3VnaCBib3RoIGxheWVycyB0byBnZXQgdGhlIHJvdyBhcnJheS5cbiAgICAgICAgICB0aGlzLmFubmV4dXJlRGF0YSA9IHJlcz8uZGF0YT8uZGF0YSB8fCBbXTtcbiAgICAgICAgICB0aGlzLmFubmV4dXJlVG90YWwgPSByZXM/LmRhdGE/LnRvdGFsQW1vdW50ID8/IG51bGw7XG4gICAgICAgICAgdGhpcy5hbm5leHVyZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmFubmV4dXJlRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYW5uZXh1cmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gRXhwb3J0IHRoZSBsb2FkZWQgYW5uZXh1cmUgcm93cyBhcyBhbiAueGxzeCBmaWxlLiBNaXJyb3JzIHRoZSBjb2x1bW5zXG4gIC8vIHNob3duIGluIHRoZSBBbm5leHVyZSB0YWIgc28gdGhlIHNwcmVhZHNoZWV0IG1hdGNoZXMgd2hhdCB0aGUgdXNlclxuICAvLyBzYXcgb24gc2NyZWVuLiBGaWxlbmFtZSBpcyBgJHtpbnZvaWNlTnVtYmVyfS1hbm5leHVyZS54bHN4YC5cbiAgZG93bmxvYWRBbm5leHVyZVhsc3goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFubmV4dXJlRGF0YSB8fCB0aGlzLmFubmV4dXJlRGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbCgpO1xuICAgICAgY29uc3Qgcm93czogYW55W10gPSB0aGlzLmFubmV4dXJlRGF0YS5tYXAoKHJvdzogYW55KSA9PiAoe1xuICAgICAgICAnU3RvcmUgTmFtZSc6IHJvdz8uc3RvcmVOYW1lIHx8ICcnLFxuICAgICAgICAnUHJvZHVjdCc6IHRoaXMuZm9ybWF0UHJvZHVjdE5hbWUocm93Py5wcm9kdWN0TmFtZSksXG4gICAgICAgICdTdG9yZSBJRCc6IHJvdz8uc3RvcmVJZCB8fCAnJyxcbiAgICAgICAgJ0RlcGxveW1lbnQgRGF0ZSc6IHJvdz8uZWRnZWZpcnN0RmlsZURhdGUgfHwgJycsXG4gICAgICAgICdQZXJpb2QnOiByb3c/LnBlcmlvZCA9PT0gJ3Byb3JhdGUnID8gJ1Byby1yYXRlJyA6ICdGdWxsIG1vbnRoJyxcbiAgICAgICAgJ1ByaWNpbmcgTWV0aG9kJzogcm93Py51bml0QmFzaXMgfHwgJ1BlciBTdG9yZScsXG4gICAgICAgICdCaWxsaW5nIERheXMnOiByb3c/LndvcmtpbmdkYXlzID8/IDAsXG4gICAgICAgICdRdHknOiByb3c/LnVuaXRzID8/IDEsXG4gICAgICAgICdVbml0IFByaWNlJzogcm93Py5zdGFuZGFyZFByaWNlICE9IG51bGxcbiAgICAgICAgICA/IGAke3N5bWJvbH0gJHt0aGlzLmZvcm1hdElOUihyb3cuc3RhbmRhcmRQcmljZSl9ICgke3Jvdz8udW5pdEJhc2lzIHx8ICdQZXIgU3RvcmUnfSlgXG4gICAgICAgICAgOiAnJyxcbiAgICAgICAgJ1ByaWNlIFBlciBNb250aCc6IHJvdz8ucnVubmluZ0Nvc3QgIT0gbnVsbFxuICAgICAgICAgID8gYCR7c3ltYm9sfSAke3RoaXMuZm9ybWF0SU5SKHJvdy5ydW5uaW5nQ29zdCl9YFxuICAgICAgICAgIDogJycsXG4gICAgICB9KSk7XG4gICAgICBpZiAodGhpcy5hbm5leHVyZVRvdGFsICE9IG51bGwpIHtcbiAgICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgICAnU3RvcmUgTmFtZSc6ICcnLCAnUHJvZHVjdCc6ICcnLCAnU3RvcmUgSUQnOiAnJywgJ0RlcGxveW1lbnQgRGF0ZSc6ICcnLFxuICAgICAgICAgICdQZXJpb2QnOiAnJywgJ1ByaWNpbmcgTWV0aG9kJzogJycsXG4gICAgICAgICAgJ0JpbGxpbmcgRGF5cyc6ICcnLCAnUXR5JzogJycsICdVbml0IFByaWNlJzogJ1RvdGFsJyxcbiAgICAgICAgICAnUHJpY2UgUGVyIE1vbnRoJzogYCR7c3ltYm9sfSAke3RoaXMuZm9ybWF0SU5SKHRoaXMuYW5uZXh1cmVUb3RhbCl9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQocm93cyk7XG4gICAgICBjb25zdCB3b3JrYm9vayA9IHsgU2hlZXRzOiB7IEFubmV4dXJlOiB3b3Jrc2hlZXQgfSwgU2hlZXROYW1lczogWydBbm5leHVyZSddIH07XG4gICAgICBjb25zdCBidWZmZXI6IEFycmF5QnVmZmVyID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JyxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc2FmZUludm9pY2VObyA9ICh0aGlzLmludm9pY2VEYXRhPy5pbnZvaWNlIHx8ICdpbnZvaWNlJykucmVwbGFjZSgvW1xcXFwvOio/XCI8PnxcXHJcXG5dL2csICcnKTtcbiAgICAgIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgYCR7c2FmZUludm9pY2VOb30tYW5uZXh1cmUueGxzeGApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGV4cG9ydCBhbm5leHVyZScpO1xuICAgIH1cbiAgfVxuXG4gIHJldHJ5QW5uZXh1cmUoKSB7XG4gICAgdGhpcy5hbm5leHVyZURhdGEgPSBudWxsO1xuICAgIHRoaXMubG9hZEFubmV4dXJlKCk7XG4gIH1cblxuICBkb3dubG9hZFBkZigpIHtcbiAgICBpZiAoIXRoaXMuaW52b2ljZURhdGE/Ll9pZCB8fCB0aGlzLmRvd25sb2FkaW5nKSByZXR1cm47XG4gICAgdGhpcy5kb3dubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgcmVxID0geyAuLi50aGlzLmludm9pY2VEYXRhIH07XG4gICAgcmVxLmNsaWVudElkID0gW3RoaXMuaW52b2ljZURhdGEuY2xpZW50SWRdO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuaW52b2ljZURvd25sb2FkKHJlcSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmludm9pY2VEYXRhPy5iaWxsaW5nRGF0ZVxuICAgICAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLmludm9pY2VEYXRhLmJpbGxpbmdEYXRlKS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnbG9uZycgfSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgY29uc3QgYnJhbmROYW1lID0gdGhpcy5pbnZvaWNlRGF0YT8ucmVnaXN0ZXJlZENvbXBhbnlOYW1lIHx8IHRoaXMuaW52b2ljZURhdGE/LmNvbXBhbnlOYW1lIHx8ICcnO1xuICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gYCR7dGhpcy5pbnZvaWNlRGF0YT8uaW52b2ljZSB8fCAnaW52b2ljZSd9LSR7bW9udGh9LSR7YnJhbmROYW1lfS5wZGZgXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcXFwvOio/XCI8PnxcXHJcXG5dL2csICcnKS50cmltKCk7XG4gICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgICB0aGlzLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGRvd25sb2FkIGludm9pY2UnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvLyBNaXJyb3JzIHRoZSBiYWNrZW5kIENVUlJFTkNZX1NZTUJPTFMgbWFwICh1dGlscy9jdXJyZW5jeS5qcykgc28gdGhlXG4gIC8vIHByZXZpZXcgc2hvd3MgdGhlIHNhbWUgc3ltYm9sIHRoZSBQREYgd2lsbCByZW5kZXIuIEZhbGxiYWNrIGlzICckJyBmb3JcbiAgLy8gdW5rbm93biBjb2RlcyB0byBtYXRjaCB0aGUgYmFja2VuZC5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW5jeVN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgaW5yOiAn4oK5JyxcbiAgICBkb2xsYXI6ICckJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsXG4gICAgZXVybzogJ+KCrCcsXG4gICAgYWVkOiAnQUVEJyxcbiAgfTtcblxuICAvLyBXb3JkcyBmb3JtIG9mIGVhY2ggY3VycmVuY3kgZm9yIHRoZSBcIkFtb3VudCBpbiB3b3Jkc1wiIGxpbmUuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVuY3lXb3JkczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBpbnI6ICdJbmRpYW4gUnVwZWUnLFxuICAgIGRvbGxhcjogJ1VTIERvbGxhcicsXG4gICAgc2luZ2Fwb3JlZG9sbGFyOiAnU2luZ2Fwb3JlIERvbGxhcicsXG4gICAgZXVybzogJ0V1cm8nLFxuICB9O1xuXG4gIC8vIEZyYWN0aW9uYWwgKHN1Yi11bml0KSBuYW1lIHBlciBjdXJyZW5jeSBmb3IgdGhlIGNlbnRzIHBvcnRpb24gb2YgdGhlXG4gIC8vIFwiVG90YWwgSW4gV29yZHNcIiBsaW5lLiBJTlIgaXMgd2hvbGUtbnVtYmVyIG9ubHksIHNvIGl0IGhhcyBubyBmcmFjdGlvbi5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW5jeUZyYWN0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGRvbGxhcjogJ0NlbnRzJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdDZW50cycsXG4gICAgZXVybzogJ0NlbnRzJyxcbiAgICBhZWQ6ICdGaWxzJyxcbiAgfTtcblxuICAvLyBMb2NhbGUgdXNlZCBmb3IgZ3JvdXBpbmcgbnVtYmVycy4gZW4tSU4gaXMgbGFraHMvY3JvcmVzOyBldmVyeXRoaW5nIGVsc2VcbiAgLy8gZ2V0cyB3ZXN0ZXJuIHRob3VzYW5kcyBncm91cGluZy5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW5jeUxvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgaW5yOiAnZW4tSU4nLFxuICAgIGRvbGxhcjogJ2VuLVVTJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdlbi1TRycsXG4gICAgZXVybzogJ2VuLUlFJyxcbiAgfTtcblxuICBjdXJyZW5jeVN5bWJvbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSB0aGlzLmludm9pY2VEYXRhPy5jdXJyZW5jeTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVN5bWJvbHNbY29kZSB8fCAnJ10gfHwgJyQnO1xuICB9XG5cbiAgLy8gUGF5bWVudCB0ZXJtIGluIGRheXMuIFVzZSB0aGUgYmlsbGluZyBncm91cCdzIHBheW1lbnRUZXJtIOKAlCB0aGUgc2FtZSBzb3VyY2VcbiAgLy8gdGhlIFBERiBkb3dubG9hZCB1c2VzIOKAlCB3aGljaCBnZXRJbnZvaWNlIG5vdyByZXR1cm5zIG9uIGludm9pY2VEYXRhLiBUaGlzXG4gIC8vIGtlZXBzIFwiVGVybSBOXCIgaWRlbnRpY2FsIGJldHdlZW4gcHJldmlldyBhbmQgZG93bmxvYWQuIChQcmV2aW91c2x5IHRoaXMgd2FzXG4gIC8vIGRlcml2ZWQgZnJvbSBkdWVEYXRlIOKIkiBiaWxsaW5nRGF0ZSwgd2hpY2ggb3Zlci1jb3VudHMsIGUuZy4gYSAzMC1kYXkgdGVybVxuICAvLyB3aG9zZSBkdWUgZGF0ZSBsYW5kcyAzMiBjYWxlbmRhciBkYXlzIG91dC4pIEZhbGxzIGJhY2sgdG8gMzAuXG4gIGdldCBwYXltZW50VGVybURheXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuaW52b2ljZURhdGE/LnBheW1lbnRUZXJtKSB8fCAzMDtcbiAgfVxuXG4gIGdldCB0b3RhbEluV29yZHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5pbnZvaWNlRGF0YT8uY3VycmVuY3k7XG4gICAgY29uc3Qgd29yZHMgPSB0aGlzLmN1cnJlbmN5V29yZHNbY29kZSB8fCAnJ10gfHwgJ1VTIERvbGxhcic7XG4gICAgY29uc3QgdmFsdWUgPSBOdW1iZXIodGhpcy5pbnZvaWNlRGF0YT8udG90YWxBbW91bnQgfHwgMCk7XG4gICAgLy8gSU5SIGlzIHdob2xlLW51bWJlciBvbmx5IOKAlCByZW5kZXIganVzdCB0aGUgcnVwZWUgd29yZHMuIEV2ZXJ5IG90aGVyXG4gICAgLy8gY3VycmVuY3kga2VlcHMgMiBkZWNpbWFscywgc28gc3BlbGwgb3V0IHRoZSBjZW50cyB0b28gd2hlbiBub24temVyby5cbiAgICBpZiAoY29kZSA9PT0gJ2lucicpIHtcbiAgICAgIHJldHVybiBgJHt3b3Jkc30gJHthbW91bnRJbldvcmRzKE1hdGgucm91bmQodmFsdWUpKX0gT25seWA7XG4gICAgfVxuICAgIGNvbnN0IHdob2xlID0gTWF0aC50cnVuYyh2YWx1ZSk7XG4gICAgY29uc3QgY2VudHMgPSBNYXRoLnJvdW5kKCh2YWx1ZSAtIHdob2xlKSAqIDEwMCk7XG4gICAgY29uc3QgZnJhY3Rpb24gPSB0aGlzLmN1cnJlbmN5RnJhY3Rpb25bY29kZSB8fCAnJ10gfHwgJ0NlbnRzJztcbiAgICBpZiAoY2VudHMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7d29yZHN9ICR7YW1vdW50SW5Xb3Jkcyh3aG9sZSl9IGFuZCAke2Ftb3VudEluV29yZHMoY2VudHMpfSAke2ZyYWN0aW9ufSBPbmx5YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3dvcmRzfSAke2Ftb3VudEluV29yZHMod2hvbGUpfSBPbmx5YDtcbiAgfVxuXG4gIGZvcm1hdElOUih2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5pbnZvaWNlRGF0YT8uY3VycmVuY3k7XG4gICAgY29uc3QgaXNJbnIgPSBjb2RlID09PSAnaW5yJztcbiAgICBjb25zdCBuID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIWlzRmluaXRlKG4pKSByZXR1cm4gaXNJbnIgPyAnMCcgOiAnMC4wMCc7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy5jdXJyZW5jeUxvY2FsZXNbY29kZSB8fCAnJ10gfHwgJ2VuLVVTJztcbiAgICAvLyBJTlIgaXMgc2hvd24gYXMgYSB3aG9sZSBudW1iZXIgKHJvdW5kZWQpOyBldmVyeSBvdGhlciBjdXJyZW5jeSBrZWVwc1xuICAgIC8vIGV4YWN0bHkgMiBkZWNpbWFsIHBsYWNlcy5cbiAgICBjb25zdCBmcmFjdGlvbkRpZ2l0cyA9IGlzSW5yID8gMCA6IDI7XG4gICAgcmV0dXJuIG4udG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMgfSk7XG4gIH1cblxuICAvLyBBIHRheCBsaW5lIChJR1NUL0NHU1QvU0dTVCkgaXMgb25seSBzaG93biB3aGVuIGl0IGFjdHVhbGx5IGhhcyBhIG5vbi16ZXJvXG4gIC8vIGFtb3VudCDigJQgemVybyAvIG1pc3NpbmcgdGF4IHJvd3MgYXJlIGhpZGRlbiBpbiB0aGUgcHJldmlldyAoYW5kIFBERikuXG4gIGhhc1RheCh0OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNGaW5pdGUoTnVtYmVyKHQ/LnRheEFtb3VudCkpICYmIE51bWJlcih0Py50YXhBbW91bnQpID4gMDtcbiAgfVxuXG4gIC8vIExpbmUgaXRlbXMgc2hvd24gaW4gdGhlIHByZXZpZXcsIHdpdGggemVyby1xdWFudGl0eSByb3dzIGRyb3BwZWQgc28gdGhlXG4gIC8vIG51bWJlcmluZyAoaSArIDEpIHN0YXlzIHNlcXVlbnRpYWwuIEEgcm93IGlzIGhpZGRlbiB3aGVuIGl0cyBxdWFudGl0eSBpcyBhblxuICAvLyBleHBsaWNpdCAwIHdpdGggYSAwIGFtb3VudCDigJQgdGhpcyBkcm9wcyBhZGRpdGlvbmFsIHByb2R1Y3RzXG4gIC8vIChFeWV0ZXN0L1BsYW5vZ3JhbS9BSSBNYW5hZ2VyL1ZNUywgSFNOIDk5ODMxNCkgdGhhdCByZXNvbHZlZCB0byBubyBzdG9yZXNcbiAgLy8gZm9yIHRoaXMgYmlsbGluZyBncm91cC4gT25seSBza2lwcyByb3dzIHRoYXQgY2FycnkgdGhlaXIgb3duIHN0b3JlQ291bnRcbiAgLy8gKGFkZGl0aW9uYWwgcHJvZHVjdHMgYWx3YXlzIGRvKTsgbm9ybWFsIHN0b3JlLWJhc2VkIHJvd3Mgd2l0aG91dCBhXG4gIC8vIHN0b3JlQ291bnQgZmFsbCBiYWNrIHRvIHRoZSBpbnZvaWNlIHN0b3JlIGNvdW50IGFuZCBhcmUgbGVmdCB1bnRvdWNoZWQuXG4gIHZpc2libGVQcm9kdWN0cygpOiBhbnlbXSB7XG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmludm9pY2VEYXRhPy5wcm9kdWN0cztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvZHVjdHMpKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgcXR5ID0gTnVtYmVyKGl0ZW0/LnN0b3JlQ291bnQgPz8gaXRlbT8ucXVhbnRpdHkpO1xuICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKGl0ZW0/LmFtb3VudCk7XG4gICAgICByZXR1cm4gIShpc0Zpbml0ZShxdHkpICYmIHF0eSA9PT0gMCAmJiAoIWlzRmluaXRlKGFtb3VudCkgfHwgYW1vdW50ID09PSAwKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBNaXJyb3JzIHRoZSBiYWNrZW5kIHRyYW5zZm9ybTogYHRhbmdvVHJhZmZpY2AgLT4gYFRhbmdvIFRyYWZmaWNgLlxuICBmb3JtYXRQcm9kdWN0TmFtZShuYW1lOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHBhcnRzID0gU3RyaW5nKG5hbWUpLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpLnNwbGl0KCcgJyk7XG4gICAgcmV0dXJuIHBhcnRzLm1hcCgodykgPT4gdy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHcuc2xpY2UoMSkpLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59IiwiPGRpdiBjbGFzcz1cImludm9pY2UtcHJldmlldy1tb2RhbFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdi10YWJzIHByZXZpZXctdGFic1wiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gJ2ludm9pY2UnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKCdpbnZvaWNlJylcIiB0eXBlPVwiYnV0dG9uXCI+SW52b2ljZTwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtbGlua1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09PSAnYW5uZXh1cmUnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKCdhbm5leHVyZScpXCIgdHlwZT1cImJ1dHRvblwiPkFubmV4dXJlPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiYWN0aXZlTW9kYWwuZGlzbWlzcygpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMFwiPlxuICAgIDwhLS0gSU5WT0lDRSBUQUIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2ludm9pY2UnXCIgY2xhc3M9XCJpbnZvaWNlLXBhZ2VcIj5cbiAgICAgIDwhLS0gSGVhZGVyIHJvdyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtc3RhcnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5kXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90YW5nb2V5ZS1sb2dvLnN2Z1wiIGFsdD1cIlRhbmdvRXllXCIgY2xhc3M9XCJicmFuZC1sb2dvXCIgb25lcnJvcj1cInRoaXMuc3R5bGUuZGlzcGxheT0nbm9uZSdcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFueS1ibG9jayBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFueS1uYW1lXCI+VEFOR08gSVQgU09MVVRJT05TIElORElBIFBSSVZBVEUgTFREPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PjJuZCBGbG9vciwgQXBlZWpheSBCdXNpbmVzcyBDZW50cmUsIE5vLjEyLzM5LDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5IYWRkb3dzIFJvYWQsIE51bmdhbWJha2thbTwvZGl2PlxuICAgICAgICAgICAgPGRpdj5DaGVubmFpIFRhbWlsIE5hZHUgNjAwMDA2LCBJbmRpYTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTFcIj48c3Ryb25nPkdTVElOIDMzQUFHQ1QzMTI0UjFaMjwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTFcIj5NU01FIC8gVWR5YW0gdHlwZSA6IE1pY3JvPC9kaXY+XG4gICAgICAgICAgICA8ZGl2Pk1TTUUgLyBVZHlhbSBOby4gOiBVRFlBTS1UTi0wMy0wMjEyMzk5PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1lbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGF4LWludm9pY2UtbGFiZWxcIj5UQVggSU5WT0lDRTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZvaWNlLW51bWJlclwiPiMge3sgaW52b2ljZURhdGE/Lmludm9pY2UgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBCaWxsLXRvICsgdG90YWxzIHJvdyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbC10by1sYWJlbFwiPkJJTEwgVE8gOjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGllbnQtbmFtZSBtdC0xXCI+e3sgKGludm9pY2VEYXRhPy5jbGllbnROYW1lIHx8IGludm9pY2VEYXRhPy5jb21wYW55TmFtZSkgfCB1cHBlcmNhc2UgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiICpuZ0lmPVwiaW52b2ljZURhdGE/LmJpbGxpbmdBZGRyZXNzTGluZU9uZSB8fCBpbnZvaWNlRGF0YT8uY29tcGFueUFkZHJlc3NcIj5cbiAgICAgICAgICAgIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nQWRkcmVzc0xpbmVPbmUgfHwgaW52b2ljZURhdGE/LmNvbXBhbnlBZGRyZXNzIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VEYXRhPy5iaWxsaW5nQWRkcmVzc0xpbmVUd29cIj57eyBpbnZvaWNlRGF0YT8uYmlsbGluZ0FkZHJlc3NMaW5lVHdvIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2VEYXRhPy5iaWxsaW5nQ2l0eSB8fCBpbnZvaWNlRGF0YT8uYmlsbGluZ1BpbkNvZGUgfHwgaW52b2ljZURhdGE/LmJpbGxpbmdTdGF0ZVwiPlxuICAgICAgICAgICAge3sgaW52b2ljZURhdGE/LmJpbGxpbmdDaXR5IH19PHNwYW4gKm5nSWY9XCJpbnZvaWNlRGF0YT8uYmlsbGluZ1BpbkNvZGVcIj4sIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nUGluQ29kZSB9fTwvc3Bhbj48c3BhbiAqbmdJZj1cImludm9pY2VEYXRhPy5iaWxsaW5nU3RhdGVcIj4sIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nU3RhdGUgfX08L3NwYW4+PHNwYW4gKm5nSWY9XCJpbnZvaWNlRGF0YT8uYmlsbGluZ0NvdW50cnlcIj4sIHt7IGludm9pY2VEYXRhPy5iaWxsaW5nQ291bnRyeSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwiaW52b2ljZURhdGE/LkdTVE51bWJlclwiPjxzdHJvbmc+R1NUSU4ge3sgaW52b2ljZURhdGE/LkdTVE51bWJlciB9fTwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlRGF0YT8uUGxhY2VPZlN1cHBseVwiPlBsYWNlIE9mIFN1cHBseToge3sgaW52b2ljZURhdGE/LlBsYWNlT2ZTdXBwbHkgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZvaWNlLXRvdGFsLWxhYmVsXCI+SW52b2ljZSBUb3RhbCA8c3BhbiBjbGFzcz1cImludm9pY2UtdG90YWwtYW1vdW50XCI+e3sgY3VycmVuY3lTeW1ib2woKSB9fSB7eyBmb3JtYXRJTlIoaW52b2ljZURhdGE/LnRvdGFsQW1vdW50KSB9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJtZXRhLXRhYmxlIG1zLWF1dG8gbXQtM1wiPlxuICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz1cIm1ldGEtbGFiZWxcIj5JbnZvaWNlIGRhdGUgOjwvdGQ+PHRkIGNsYXNzPVwibWV0YS12YWx1ZVwiPnt7IGludm9pY2VEYXRhPy5iaWxsaW5nRGF0ZSB8IGRhdGU6J2RkL01NL3l5eXknIH19PC90ZD48L3RyPlxuICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz1cIm1ldGEtbGFiZWxcIj5UZXJtcyA6PC90ZD48dGQgY2xhc3M9XCJtZXRhLXZhbHVlXCI+VGVybSB7eyBwYXltZW50VGVybURheXMgfX08L3RkPjwvdHI+XG4gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPVwibWV0YS1sYWJlbFwiPkR1ZSBEYXRlIDo8L3RkPjx0ZCBjbGFzcz1cIm1ldGEtdmFsdWVcIj57eyBpbnZvaWNlRGF0YT8uZHVlRGF0ZSB8IGRhdGU6J2RkL01NL3l5eXknIH19PC90ZD48L3RyPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaW52b2ljZURhdGE/LnB1cmNoYXNlT3JkZXJOdW1iZXIgfHwgaW52b2ljZURhdGE/LlBvTnVtIHx8IGludm9pY2VEYXRhPy5wb051bWJlclwiPjx0ZCBjbGFzcz1cIm1ldGEtbGFiZWxcIj5QLk8uIyA6PC90ZD48dGQgY2xhc3M9XCJtZXRhLXZhbHVlXCI+e3sgaW52b2ljZURhdGE/LnB1cmNoYXNlT3JkZXJOdW1iZXIgfHwgaW52b2ljZURhdGE/LlBvTnVtIHx8IGludm9pY2VEYXRhPy5wb051bWJlciB9fTwvdGQ+PC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExpbmUgaXRlbXMgLS0+XG4gICAgICA8dGFibGUgY2xhc3M9XCJpdGVtcy10YWJsZSBtdC00XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtaW5kZXhcIj4jPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNvbC1wcm9kdWN0XCI+UHJvZHVjdCAmYW1wOyBEZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtbW9udGhcIj5Nb250aDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtaHNuXCI+SFNOL1NBQzwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtY291bnQgdGV4dC1jZW50ZXJcIj5RdWFudGl0eTwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtcmF0ZSB0ZXh0LWVuZFwiPlJhdGU8L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiY29sLWFtb3VudCB0ZXh0LWVuZFwiPkFtb3VudDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlUHJvZHVjdHMoKTsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICAgICAgICA8dGQ+e3sgaSArIDEgfX08L3RkPlxuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1uYW1lXCI+e3sgZm9ybWF0UHJvZHVjdE5hbWUoaXRlbT8ucHJvZHVjdE5hbWUpIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWRlc2NcIj57eyBpdGVtPy5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwhLS0gTW9udGggaXMgdGhlIHByb2R1Y3QncyBiaWxsaW5nIG1vbnRoIHN0b3JlZCBvbiB0aGUgbGluZSBpdGVtXG4gICAgICAgICAgICAgICAgIChhZHZhbmNlIGludm9pY2VzIGJpbGwgYSBmdXR1cmUgbW9udGggd2hpbGUgYmlsbGluZ0RhdGUgaXMgdGhlXG4gICAgICAgICAgICAgICAgIGNyZWF0aW9uIGRhdGUpLiBGYWxsIGJhY2sgdG8gYmlsbGluZ0RhdGUgZm9yIGxlZ2FjeSByb3dzLiAtLT5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vd3JhcFwiPnt7IGl0ZW0/Lm1vbnRoIHx8IChpbnZvaWNlRGF0YT8uYmlsbGluZ0RhdGUgfCBkYXRlOidNTU0geXl5eScpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyBpdGVtPy5oc24gfHwgaXRlbT8uaHNuQ29kZSB8fCAnOTk4MzE0JyB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzdHJvbmc+e3sgaXRlbT8uc3RvcmVDb3VudCB8fCBpbnZvaWNlRGF0YT8uc3RvcmVzPy5sZW5ndGggfHwgJycgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmQgbm93cmFwXCI+e3sgY3VycmVuY3lTeW1ib2woKSB9fSB7eyBmb3JtYXRJTlIoaXRlbT8ucHJpY2UpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kIG5vd3JhcFwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKGl0ZW0/LmFtb3VudCkgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8IS0tIFRvdGFscyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTdcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidG90YWxzLXRhYmxlIG1zLWF1dG9cIj5cbiAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9XCJ0b3RhbHMtbGFiZWxcIj5TdWIgVG90YWw8L3RkPjx0ZCBjbGFzcz1cInRvdGFscy12YWx1ZVwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKGludm9pY2VEYXRhPy5hbW91bnQpIH19PC90ZD48L3RyPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaW52b2ljZURhdGE/LmRpc2NvdW50QW1vdW50XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy1sYWJlbFwiPkRpc2NvdW50PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidG90YWxzLXZhbHVlXCI+e3sgY3VycmVuY3lTeW1ib2woKSB9fSB7eyBmb3JtYXRJTlIoaW52b2ljZURhdGE/LmRpc2NvdW50QW1vdW50KSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdCBvZiBpbnZvaWNlRGF0YT8udGF4XCI+XG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImhhc1RheCh0KVwiPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy1sYWJlbFwiPnt7IHQ/LnR5cGUgfHwgdD8udGF4TmFtZSB8fCB0Py5uYW1lIH19ICh7eyB0Py52YWx1ZSA/PyB0Py50YXhQZXJjZW50YWdlID8/IHQ/LnBlcmNlbnRhZ2UgfX0lKTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidG90YWxzLXZhbHVlIG5vd3JhcFwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKHQ/LnRheEFtb3VudCkgfX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0b3RhbHMtdG90YWwtcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy1sYWJlbFwiPlRvdGFsIEFtb3VudDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRvdGFscy12YWx1ZVwiPnt7IGN1cnJlbmN5U3ltYm9sKCkgfX0ge3sgZm9ybWF0SU5SKGludm9pY2VEYXRhPy50b3RhbEFtb3VudCkgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRvdGFscy13b3Jkcy1yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidG90YWxzLWxhYmVsXCI+VG90YWwgSW4gV29yZHM8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0b3RhbHMtdmFsdWUgd29yZHNcIj57eyB0b3RhbEluV29yZHMgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBheW1lbnQgZGV0YWlscyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGFua3MgbXQtNFwiPlRoYW5rcyBmb3IgeW91ciBidXNpbmVzcyE8L2Rpdj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInBheW1lbnQtdGFibGUgbXQtMlwiPlxuICAgICAgICA8dHI+PHRkIGNsYXNzPVwicGF5bWVudC1sYWJlbFwiPkJlbmVmaWNpYXJ5IE5hbWU8L3RkPjx0ZCBjbGFzcz1cInBheW1lbnQtdmFsdWVcIj48c3Ryb25nPnt7IGJhbmtEZXRhaWxzPy5iZW5lZmljaWFyeU5hbWUgfX08L3N0cm9uZz48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQgY2xhc3M9XCJwYXltZW50LWxhYmVsXCI+QWNjb3VudCBOdW1iZXI8L3RkPjx0ZCBjbGFzcz1cInBheW1lbnQtdmFsdWVcIj48c3Ryb25nPnt7IGJhbmtEZXRhaWxzPy5hY2NvdW50TnVtYmVyIH19PC9zdHJvbmc+PC90ZD48L3RyPlxuICAgICAgICA8dHI+PHRkIGNsYXNzPVwicGF5bWVudC1sYWJlbFwiPklGU0MgQ29kZTwvdGQ+PHRkIGNsYXNzPVwicGF5bWVudC12YWx1ZVwiPjxzdHJvbmc+e3sgYmFua0RldGFpbHM/Lmlmc2MgfX08L3N0cm9uZz48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQgY2xhc3M9XCJwYXltZW50LWxhYmVsXCI+UGF5bWVudCBUeXBlPC90ZD48dGQgY2xhc3M9XCJwYXltZW50LXZhbHVlXCI+PHN0cm9uZz57eyBiYW5rRGV0YWlscz8ucGF5bWVudFR5cGUgfX08L3N0cm9uZz48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQgY2xhc3M9XCJwYXltZW50LWxhYmVsXCI+U1dJRlQgQ29kZTwvdGQ+PHRkIGNsYXNzPVwicGF5bWVudC12YWx1ZVwiPjxzdHJvbmc+e3sgYmFua0RldGFpbHM/LnN3aWZ0IH19PC9zdHJvbmc+PC90ZD48L3RyPlxuICAgICAgICA8dHI+PHRkIGNsYXNzPVwicGF5bWVudC1sYWJlbFwiPkJyYW5jaDwvdGQ+PHRkIGNsYXNzPVwicGF5bWVudC12YWx1ZVwiPjxzdHJvbmc+e3sgYmFua0RldGFpbHM/LmJyYW5jaCB9fTwvc3Ryb25nPjwvdGQ+PC90cj5cbiAgICAgIDwvdGFibGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzeXN0ZW0tbm90ZSBtdC00XCI+VGhpcyBpcyBhIHN5c3RlbSBnZW5lcmF0ZWQgaW52b2ljZS4gTm8gc2lnbmF0dXJlIHJlcXVpcmVkPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFOTkVYVVJFIFRBQiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnYW5uZXh1cmUnXCIgY2xhc3M9XCJhbm5leHVyZS1wYWdlXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYW5uZXh1cmVMb2FkaW5nXCIgY2xhc3M9XCJsb2FkaW5nLXN0YXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+PHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWFubmV4dXJlTG9hZGluZyAmJiBhbm5leHVyZUVycm9yXCIgY2xhc3M9XCJlcnJvci1zdGF0ZVwiPlxuICAgICAgICA8cD5GYWlsZWQgdG8gbG9hZCBhbm5leHVyZS48L3A+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwicmV0cnlBbm5leHVyZSgpXCI+UmV0cnk8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFhbm5leHVyZUxvYWRpbmcgJiYgIWFubmV4dXJlRXJyb3IgJiYgYW5uZXh1cmVEYXRhICE9PSBudWxsICYmIGFubmV4dXJlRGF0YS5sZW5ndGggPT09IDBcIiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgIE5vIGFubmV4dXJlIGRhdGEgZm9yIHRoaXMgaW52b2ljZS5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFhbm5leHVyZUxvYWRpbmcgJiYgIWFubmV4dXJlRXJyb3IgJiYgYW5uZXh1cmVEYXRhICYmIGFubmV4dXJlRGF0YS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgY2xhc3M9XCJhbm5leHVyZS10b29sYmFyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImRvd25sb2FkQW5uZXh1cmVYbHN4KClcIj5cbiAgICAgICAgICBFeHBvcnQgYXMgWExTWFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFhbm5leHVyZUxvYWRpbmcgJiYgIWFubmV4dXJlRXJyb3IgJiYgYW5uZXh1cmVEYXRhICYmIGFubmV4dXJlRGF0YS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgY2xhc3M9XCJhbm5leHVyZS1zY3JvbGxcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiYW5uZXh1cmUtdGFibGVcIj5cbiAgICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLXN0b3JlXCIgLz5cbiAgICAgICAgICAgIDxjb2wgY2xhc3M9XCJjb2wtcHJvZHVjdFwiIC8+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLWlkXCIgLz5cbiAgICAgICAgICAgIDxjb2wgY2xhc3M9XCJjb2wtZGF0ZVwiIC8+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLWRheXNcIiAvPlxuICAgICAgICAgICAgPGNvbCBjbGFzcz1cImNvbC1xdHlcIiAvPlxuICAgICAgICAgICAgPGNvbCBjbGFzcz1cImNvbC1wcmljZVwiIC8+XG4gICAgICAgICAgICA8Y29sIGNsYXNzPVwiY29sLXRvdGFsXCIgLz5cbiAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPlN0b3JlIE5hbWU8L3RoPlxuICAgICAgICAgICAgICA8dGg+UHJvZHVjdHM8L3RoPlxuICAgICAgICAgICAgICA8dGg+U3RvcmUgSUQ8L3RoPlxuICAgICAgICAgICAgICA8dGg+RGVwbG95bWVudCBEYXRlPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5CaWxsaW5nIERheXM8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlF0eTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+VW5pdCBQcmljZTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UHJpY2UgUGVyIE1vbnRoPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBhbm5leHVyZURhdGE7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjZWxsLXN0b3JlXCI+e3sgcm93Py5zdG9yZU5hbWUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93Py5wcm9kdWN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNlbGwtbm93cmFwIGNlbGwtbXV0ZWRcIj57eyByb3c/LnN0b3JlSWQgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjZWxsLW5vd3JhcCBjZWxsLW11dGVkXCI+e3sgcm93Py5lZGdlZmlyc3RGaWxlRGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+PHN0cm9uZz57eyByb3c/LndvcmtpbmdkYXlzIH19PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyByb3c/LnVuaXRzID8/IDEgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBjZWxsLW5vd3JhcCBjZWxsLW51bVwiPlxuICAgICAgICAgICAgICAgIHt7IHJvdz8uY3VycmVuY3lUeXBlIH19IHt7IGZvcm1hdElOUihyb3c/LnN0YW5kYXJkUHJpY2UpIH19XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVuaXQtYmFzaXNcIj57eyByb3c/LnVuaXRCYXNpcyB8fCAnUGVyIFN0b3JlJyB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBjZWxsLW5vd3JhcCBjZWxsLW51bSBjZWxsLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3c/LmN1cnJlbmN5VHlwZSB9fSB7eyBmb3JtYXRJTlIocm93Py5ydW5uaW5nQ29zdCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8dGZvb3QgKm5nSWY9XCJhbm5leHVyZVRvdGFsICE9IG51bGxcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+VG90YWw8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBjZWxsLW51bSBjZWxsLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbm5leHVyZURhdGFbMF0/LmN1cnJlbmN5VHlwZSB9fSB7eyBmb3JtYXRJTlIoYW5uZXh1cmVUb3RhbCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlua1wiIChjbGljayk9XCJhY3RpdmVNb2RhbC5kaXNtaXNzKClcIj5DbG9zZTwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJkb3dubG9hZFBkZigpXCIgW2Rpc2FibGVkXT1cImRvd25sb2FkaW5nXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZGluZ1wiPkRvd25sb2FkIFBERjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZG93bmxvYWRpbmdcIj5Eb3dubG9hZGluZy4uLjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=