tango-app-ui-manage-billing 3.3.35 → 3.3.37
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.
|
@@ -91,11 +91,19 @@ export class DailyPricingComponent {
|
|
|
91
91
|
// export endpoint understands. Add more as their queries are wired up.
|
|
92
92
|
exportableProducts = {
|
|
93
93
|
'eyetest': 'eyetest',
|
|
94
|
+
'eyetest (additional storage)': 'eyetestadditionalstorage',
|
|
94
95
|
'planogram': 'planogram',
|
|
95
96
|
'ai manager': 'aimanager',
|
|
96
97
|
'vms': 'vms',
|
|
98
|
+
// 'Run AI' is displayed as 'AI in checklist'; both map to the same export
|
|
99
|
+
// key so the download works whichever label the API returns.
|
|
97
100
|
'run ai': 'runai',
|
|
101
|
+
'ai in checklist': 'runai',
|
|
98
102
|
'remote optum': 'remoteoptum',
|
|
103
|
+
// Factory QC (FactoryQC_billing Lambda). Day-scoped: the Lambda takes only
|
|
104
|
+
// report_date, so this export covers the snapshot date shown on the card
|
|
105
|
+
// rather than month-to-date like Remote Optum.
|
|
106
|
+
'factory': 'factory',
|
|
99
107
|
};
|
|
100
108
|
canExportAdditionalProduct(productName) {
|
|
101
109
|
return !!this.exportableProducts[(productName || '').toLowerCase()];
|
|
@@ -510,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
510
518
|
}], ctorParameters: () => [{ type: i1.BillingService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3.NgbModal }], propDecorators: { clientId: [{
|
|
511
519
|
type: Input
|
|
512
520
|
}] } });
|
|
513
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpbHktcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtYmlsbGluZy9zcmMvbGliL2NvbXBvbmVudHMvZGFpbHktcHJpY2luZy9kYWlseS1wcmljaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9kYWlseS1wcmljaW5nL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQU94RixNQUFNLE9BQU8scUJBQXFCO0lBaUV0QjtJQUNBO0lBQ0E7SUFDQTtJQW5FTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEdBQUcsQ0FBTTtJQUNULGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsV0FBVztJQUNYLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5RUFBeUU7SUFDekUsY0FBYyxHQUFRLEVBQUUsQ0FBQztJQUN6Qix3RkFBd0Y7SUFDeEYsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUV2QixjQUFjO0lBQ2QsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qix3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELFlBQVksR0FBYSxFQUFFLENBQUM7SUFDNUIsOEVBQThFO0lBQzlFLGFBQWEsR0FB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b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBCaWxsaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2JpbGxpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcbmltcG9ydCB7IEdlbmVyYXRlSW52b2ljZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9nZW5lcmF0ZS1pbnZvaWNlLW1vZGFsL2dlbmVyYXRlLWludm9pY2UtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE5ld1N0b3Jlc01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctc3RvcmVzLW1vZGFsL25ldy1zdG9yZXMtbW9kYWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRhaWx5LXByaWNpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFpbHktcHJpY2luZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYWlseS1wcmljaW5nLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBEYWlseVByaWNpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xuXG4gIGxlbjogYW55O1xuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIE1ldGFkYXRhXG4gIGRhaWx5UHJpY2luZ0luZm86IGFueSA9IHt9O1xuXG4gIC8vIEVkaXQgdHJhY2tpbmc6IGtleSA9ICdzdG9yZUlkX3Byb2R1Y3ROYW1lJywgdmFsdWUgPSBlZGl0ZWQgd29ya2luZ2RheXNcbiAgZWRpdGluZ1Byb2R1Y3Q6IGFueSA9IHt9O1xuICAvLyBFZGl0IHRyYWNraW5nIGZvciBzdG9yZS1sZXZlbCBmaWVsZHMgKHRyYWZmaWNDYW1lcmFDb3VudCwgem9uZUNhbWVyYUNvdW50LCB6b25lQ291bnQpXG4gIGVkaXRpbmdGaWVsZDogYW55ID0ge307XG5cbiAgLy8gRGF0ZSBmaWx0ZXJcbiAgZGF0ZUZpbHRlcjogc3RyaW5nID0gJyc7XG5cbiAgLy8gRmlsdGVyIOKAlCBtdWx0aS1zZWxlY3Qgc3RhdHVzLiBObyBkZWZhdWx0OiB0aGUgdGFibGUgb3BlbnMgc2hvd2luZyBBTExcbiAgLy8gc3RvcmVzIChhY3RpdmUgKyBkZWFjdGl2ZSk7IG5laXRoZXIgb3B0aW9uIGlzIHByZS1jaGVja2VkLlxuICBzdGF0dXNGaWx0ZXI6IHN0cmluZ1tdID0gW107XG4gIC8vIE11bHRpLXNlbGVjdCBjb3VudHJ5IGZpbHRlciAob3B0aW9ucyBwb3B1bGF0ZWQgZnJvbSB0aGUgQVBJJ3MgYGNvdW50cmllc2ApLlxuICBjb3VudHJ5RmlsdGVyOiBzdHJpbmdbXSA9IFtdO1xuICBzdG9yZUZpbHRlck9iamVjdDogYW55W10gPSBbXG4gICAgeyBEZXNjcmlwdGlvbjogJ1N0YXR1cycsIHR5cGU6ICdtdWx0aScsIElzc3VlczogW3sgaWQ6ICdhY3RpdmUnLCB0ZXh0OiAnQWN0aXZlJyB9LCB7IGlkOiAnZGVhY3RpdmUnLCB0ZXh0OiAnRGVhY3RpdmUnIH1dIH0sXG4gIF07XG4gIC8vIGxpYi1maWx0ZXJzIHNuYXBzaG90cyBkYXRhT2JqZWN0IGluIGl0cyBuZ09uSW5pdCwgc28gdGhlIENvdW50cnkgZ3JvdXAgbXVzdFxuICAvLyBiZSBwcmVzZW50IEJFRk9SRSBpdCBtb3VudHMuIFdlIGdhdGUgdGhlIDxsaWItZmlsdGVycz4gcmVuZGVyIG9uIHRoaXMgZmxhZyxcbiAgLy8gZmxpcHBpbmcgaXQgdHJ1ZSBvbmx5IG9uY2UgdGhlIGNvdW50cnkgb3B0aW9ucyBoYXZlIGJlZW4gYnVpbHQgZnJvbSB0aGUgQVBJLlxuICBmaWx0ZXJzUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBNb250aGx5IEJpbGxpbmcgU3VtbWFyeSDigJQgZGVyaXZlZCBmcm9tIGludm9pY2UgaGlzdG9yeSBmb3IgdGhlIGJyYW5kLlxuICAvLyBOZXdlc3QgZmlyc3Q7IGVhY2ggcm93IGNhcnJpZXMgcHJpb3ItbW9udGggZGVsdGFzIGZvciB0aGUgdHJlbmQgaW5kaWNhdG9yLlxuICBtb250aGx5QmlsbGluZ1N1bW1hcnk6IGFueVtdID0gW107XG4gIG1vbnRobHlTdW1tYXJ5RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBUYWJsZVxuICBzdG9yZUxpc3Q6IGFueSA9IFtdO1xuICBzdG9yZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBzdG9yZU5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciA9IDEwO1xuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XG4gIC8vIERlZmF1bHQgc29ydDogd29ya2luZyBkYXlzIChkYXlzRGlmZmVyZW5jZSksIGhpZ2hlc3QgZmlyc3QuXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9ICdkYXlzRGlmZmVyZW5jZSc7XG4gIHNvcnRCeTogbnVtYmVyID0gLTE7XG4gIGdlbmVyYXRpbmdJbnZvaWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQWRkaXRpb25hbCAobm9uLXN0YW5kYXJkKSBwcm9kdWN0cyBhdmFpbGFibGUgb25seSBmb3Igc3BlY2lmaWMgY2xpZW50c1xuICAvLyAoY3VycmVudGx5IGNsaWVudElkIDExKS4gRW1wdHkgZm9yIGV2ZXJ5b25lIGVsc2UgLT4gdGhlIHRhYmxlIGlzIGhpZGRlbi5cbiAgYWRkaXRpb25hbFByb2R1Y3RzOiBhbnlbXSA9IFtdO1xuICBhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeTogc3RyaW5nID0gJ2lucic7XG4gIC8vIERhdGUgKFlZWVktTU0tREQpIG9mIHRoZSBiaWxsaW5nX2RldGFpbHMgc25hcHNob3QgYmVoaW5kIHRoZSBhZGRpdGlvbmFsXG4gIC8vIHByb2R1Y3QgY291bnRzOyBwYXNzZWQgdG8gdGhlIGV4cG9ydCBzbyBleHBvcnRzIG1hdGNoIHRoZSBkaXNwbGF5ZWQgY2FyZHMuXG4gIGFkZGl0aW9uYWxQcm9kdWN0c0RhdGU6IHN0cmluZyA9ICcnO1xuXG4gIC8vIENvdW50ICsgbGlzdCBvZiBzdG9yZXMgb25ib2FyZGVkIHRoaXMgbW9udGggKGZpcnN0IGZpbGUgZGF0ZSBpbiB0aGUgY3VycmVudFxuICAvLyBtb250aCkuIFRoZSBsaXN0IGZlZWRzIHRoZSBcIlZpZXcgU3RvcmVzXCIgcG9wdXAuXG4gIG5ld2x5T25ib2FyZGVkU3RvcmVzOiBudW1iZXIgPSAwO1xuICBuZXdseU9uYm9hcmRlZFN0b3JlTGlzdDogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJpbGxpbmdTZXJ2aWNlOiBCaWxsaW5nU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGllbnRJZCkge1xuICAgICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gICAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NsaWVudElkJ10gJiYgIWNoYW5nZXNbJ2NsaWVudElkJ10uZmlyc3RDaGFuZ2UgJiYgdGhpcy5jbGllbnRJZCkge1xuICAgICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gICAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgICB9XG4gIH1cblxuICAvLyBHcmFuZCB0b3RhbCBhY3Jvc3MgYWxsIGFkZGl0aW9uYWwtcHJvZHVjdCByb3dzLlxuICBnZXQgYWRkaXRpb25hbFByb2R1Y3RzVG90YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzIHx8IFtdKS5yZWR1Y2UoKGEsIHApID0+IGEgKyAoTnVtYmVyKHAudG90YWwpIHx8IDApLCAwKTtcbiAgfVxuXG4gIC8vIFByb2R1Y3RzIHRoYXQgaGF2ZSBhIGJhY2tlbmQgZGV0YWlsZWQgZXhwb3J0LiBLZXllZCBieSB0aGUgcHJvZHVjdCBrZXkgdGhlXG4gIC8vIGV4cG9ydCBlbmRwb2ludCB1bmRlcnN0YW5kcy4gQWRkIG1vcmUgYXMgdGhlaXIgcXVlcmllcyBhcmUgd2lyZWQgdXAuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwb3J0YWJsZVByb2R1Y3RzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdleWV0ZXN0JzogJ2V5ZXRlc3QnLFxuICAgICdwbGFub2dyYW0nOiAncGxhbm9ncmFtJyxcbiAgICAnYWkgbWFuYWdlcic6ICdhaW1hbmFnZXInLFxuICAgICd2bXMnOiAndm1zJyxcbiAgICAncnVuIGFpJzogJ3J1bmFpJyxcbiAgICAncmVtb3RlIG9wdHVtJzogJ3JlbW90ZW9wdHVtJyxcbiAgfTtcblxuICBjYW5FeHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwcm9kdWN0TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5leHBvcnRhYmxlUHJvZHVjdHNbKHByb2R1Y3ROYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpXTtcbiAgfVxuXG4gIGV4cG9ydEFkZGl0aW9uYWxQcm9kdWN0KHByb2R1Y3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmV4cG9ydGFibGVQcm9kdWN0c1socHJvZHVjdE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCldO1xuICAgIGlmICgha2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFBhc3MgdGhlIGJpbGxpbmdfZGV0YWlscyBzbmFwc2hvdCBkYXRlIChZWVlZLU1NLUREKSBiZWhpbmQgdGhlIGNhcmQgY291bnRzXG4gICAgLy8gc28gZGF5LXNjb3BlZCBleHBvcnRzIChWTVMgLyBSdW4gQUkgdmlhIExhbWJkYSB0b19kYXRlLCBSZW1vdGUgT3B0dW0pIG1hdGNoXG4gICAgLy8gd2hhdCdzIHNob3duLiBGYWxsIGJhY2sgdG8gdG9kYXkgaWYgdGhlIGJhY2tlbmQgZGlkbid0IHJldHVybiBhIGRhdGUuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHRvZGF5U3RyID0gYCR7dG9kYXkuZ2V0RnVsbFllYXIoKX0tJHtTdHJpbmcodG9kYXkuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyl9LSR7U3RyaW5nKHRvZGF5LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgIGNvbnN0IGV4cG9ydERhdGUgPSB0aGlzLmFkZGl0aW9uYWxQcm9kdWN0c0RhdGUgfHwgdG9kYXlTdHI7XG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5hZGRpdGlvbmFsUHJvZHVjdEV4cG9ydCh0aGlzLmNsaWVudElkLCBrZXksIGV4cG9ydERhdGUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogQXJyYXlCdWZmZXIpID0+IHtcbiAgICAgICAgICAvLyBBIHJlYWwgLnhsc3ggaXMgYSB6aXAg4oCUIGl0cyBmaXJzdCB0d28gYnl0ZXMgYXJlICdQSycgKDB4NTAgMHg0QikuXG4gICAgICAgICAgLy8gQSAyMDQvZW1wdHkgb3IgSlNPTiBlcnJvciBib2R5IGlzIE5PVCwgYW5kIHNhdmluZyBpdCBwcm9kdWNlcyBhXG4gICAgICAgICAgLy8gXCJjb3JydXB0ZWRcIiBmaWxlLiBHdWFyZCBzbyB3ZSBvbmx5IHNhdmUgYSBnZW51aW5lIHdvcmtib29rLlxuICAgICAgICAgIGNvbnN0IGJ5dGVzID0gcmVzID8gbmV3IFVpbnQ4QXJyYXkocmVzKSA6IG5ldyBVaW50OEFycmF5KCk7XG4gICAgICAgICAgY29uc3QgaXNYbHN4ID0gYnl0ZXMubGVuZ3RoID4gMSAmJiBieXRlc1swXSA9PT0gMHg1MCAmJiBieXRlc1sxXSA9PT0gMHg0YjtcbiAgICAgICAgICBpZiAoIWlzWGxzeCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdObyBkYXRhIHRvIGV4cG9ydCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIGAke3Byb2R1Y3ROYW1lfS0ke3RoaXMuY2xpZW50SWR9YCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdFeHBvcnQgZmFpbGVkJyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIEZldGNoIHRoZSBhZGRpdGlvbmFsLXByb2R1Y3RzIHRhYmxlIGZvciB0aGlzIGNsaWVudC4gQmFja2VuZCByZXR1cm5zIGFuXG4gIC8vIGVtcHR5IGxpc3QgZm9yIGFueSBjbGllbnQgdGhhdCBoYXMgbm9uZSAoc28gdGhlIHRhYmxlIGp1c3Qgd29uJ3QgcmVuZGVyKS5cbiAgbG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpIHtcbiAgICAvLyBTZW5kIHRoZSBwYWdlJ3Mgc2VsZWN0ZWQgZGF0ZSAoaWYgYW55KSBzbyB0aGUgc2VjdGlvbiByZWZsZWN0cyBpdC5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmFkZGl0aW9uYWxQcm9kdWN0cyh0aGlzLmNsaWVudElkLCB0aGlzLmRhdGVGaWx0ZXIgfHwgdW5kZWZpbmVkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHMgPSByZXM/LmRhdGE/LnByb2R1Y3RzIHx8IFtdO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5ID0gcmVzPy5kYXRhPy5jdXJyZW5jeSB8fCAnaW5yJztcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNEYXRlID0gcmVzPy5kYXRhPy5iaWxsaW5nRGF0ZSB8fCAnJztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHMgPSBbXTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGxvYWREYWlseVByaWNpbmcoKSB7XG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlTm9EYXRhID0gZmFsc2U7XG5cbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5sZW4sXG4gICAgICBzb3J0Q29sdW1OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydEJ5LFxuICAgICAgc3RhdHVzRmlsdGVyOiB0aGlzLnN0YXR1c0ZpbHRlcixcbiAgICAgIGNvdW50cnlGaWx0ZXI6IHRoaXMuY291bnRyeUZpbHRlcixcbiAgICAgIGRhdGVGaWx0ZXI6IHRoaXMuZGF0ZUZpbHRlciB8fCAnJyxcbiAgICAgIGV4cG9ydDogZmFsc2VcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5sYXRlc3REYWlseVByaWNpbmcoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZSkgPT4ge1xuICAgICAgICAvLyBUaGUgTW9udGhseSBCaWxsaW5nIFN1bW1hcnkgY29tZXMgZnJvbSBpbnZvaWNlIGhpc3RvcnksIG5vdCB0aGUgc3RvcmVcbiAgICAgICAgLy8gcm93cyDigJQgYXBwbHkgaXQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBzdG9yZSBsaXN0IGlzIGVtcHR5LCBzbyBpdFxuICAgICAgICAvLyBzdGlsbCBzaG93cyB3aGVuIHRoZSBmaWx0ZXJlZCBzdG9yZSB0YWJsZSBoYXMgbm8gcm93cy5cbiAgICAgICAgdGhpcy5tb250aGx5QmlsbGluZ1N1bW1hcnkgPSB0aGlzLmRlY29yYXRlTW9udGhseVN1bW1hcnkoZT8uZGF0YT8ubW9udGhseUJpbGxpbmdTdW1tYXJ5IHx8IFtdKTtcbiAgICAgICAgLy8gTmV3bHkgb25ib2FyZGVkIGNvdW50L2xpc3QgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN0b3JlIHRhYmxlJ3NcbiAgICAgICAgLy8gZmlsdGVycywgc28gY2FwdHVyZSBpdCB3aGV0aGVyIG9yIG5vdCB0aGUgZmlsdGVyZWQgc3RvcmUgbGlzdCBoYXMgcm93cy5cbiAgICAgICAgdGhpcy5uZXdseU9uYm9hcmRlZFN0b3JlcyA9IGU/LmRhdGE/Lm5ld2x5T25ib2FyZGVkU3RvcmVzIHx8IDA7XG4gICAgICAgIHRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QgPSBlPy5kYXRhPy5uZXdseU9uYm9hcmRlZFN0b3JlTGlzdCB8fCBbXTtcblxuICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgQ291bnRyeSBmaWx0ZXIgb3B0aW9ucyBmcm9tIHRoZSBBUEkncyBjb3VudHJ5IGxpc3QgKGFsbFxuICAgICAgICAvLyBjbGllbnQgc3RvcmVzKS4gSW5kZXBlbmRlbnQgb2YgdGhlIGZpbHRlcmVkIHN0b3JlIGNvdW50LCBzbyBidWlsZCBpdFxuICAgICAgICAvLyBldmVuIHdoZW4gdGhlIGZpbHRlcmVkIHRhYmxlIGlzIGVtcHR5LlxuICAgICAgICB0aGlzLmJ1aWxkQ291bnRyeUZpbHRlck9wdGlvbnMoZT8uZGF0YT8uY291bnRyaWVzIHx8IFtdKTtcblxuICAgICAgICBpZiAoZT8uZGF0YT8uY291bnQpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IGUuZGF0YT8uZGF0YTtcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSBlLmRhdGE/LmNvdW50O1xuXG4gICAgICAgICAgdGhpcy5kYWlseVByaWNpbmdJbmZvID0ge1xuICAgICAgICAgICAgYnJhbmROYW1lOiBlLmRhdGE/LmJyYW5kTmFtZSB8fCAnJyxcbiAgICAgICAgICAgIGRhdGVTdHJpbmc6IGUuZGF0YT8uZGF0ZVN0cmluZyB8fCAnJyxcbiAgICAgICAgICAgIGRhdGVJU086IGUuZGF0YT8uZGF0ZUlTTyB8fCAnJyxcbiAgICAgICAgICAgIGFjdGl2ZVN0b3JlczogZS5kYXRhPy5hY3RpdmVTdG9yZXMgfHwgMCxcbiAgICAgICAgICAgIGFjY291bnRUeXBlOiBlLmRhdGE/LmFjY291bnRUeXBlIHx8ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiBlLmRhdGE/LnN0YXR1cyB8fCAnJyxcbiAgICAgICAgICAgIHByb1JhdGU6IGUuZGF0YT8ucHJvUmF0ZSB8fCAnJyxcbiAgICAgICAgICAgIGNsaWVudElkOiBlLmRhdGE/LmNsaWVudElkIHx8ICcnXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zdG9yZU5vRGF0YSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKHRoaXMubGVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9yZU5vRGF0YSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XG4gICAgICAgIHRoaXMubW9udGhseUJpbGxpbmdTdW1tYXJ5ID0gW107XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25EYXRlRmlsdGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVGaWx0ZXIgPSBldmVudD8udGFyZ2V0Py52YWx1ZSB8fCAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAvLyBBZGRpdGlvbmFsIFByb2R1Y3RzIHJlZmxlY3QgdGhlIHNlbGVjdGVkIGRhdGUgdG9vLlxuICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICB9XG5cbiAgY2xlYXJEYXRlRmlsdGVyKCkge1xuICAgIHRoaXMuZGF0ZUZpbHRlciA9ICcnO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICB9XG5cbiAgc2VhcmNoRmllbGQoKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICAvLyBBZGQvcmVmcmVzaCB0aGUgQ291bnRyeSBncm91cCBpbiB0aGUgZmlsdGVyIGRyb3Bkb3duIGZyb20gdGhlIEFQSSdzIGNvdW50cnlcbiAgLy8gbGlzdCwgcHJlc2VydmluZyB0aGUgY3VycmVudCBzZWxlY3Rpb24gKGNoZWNrZWQpLiBsaWItZmlsdGVycyBzbmFwc2hvdHNcbiAgLy8gZGF0YU9iamVjdCBvbmx5IGluIG5nT25Jbml0LCBzbyB3ZSBidWlsZCB0aGUgZnVsbCBzdG9yZUZpbHRlck9iamVjdCBoZXJlIGFuZFxuICAvLyB0aGVuIGZsaXAgZmlsdGVyc1JlYWR5IHRvIG1vdW50IDxsaWItZmlsdGVycz4gb25jZSDigJQgYWZ0ZXIgd2hpY2ggaXQgc2VlcyBib3RoXG4gIC8vIFN0YXR1cyBhbmQgQ291bnRyeSBncm91cHMuXG4gIHByaXZhdGUgYnVpbGRDb3VudHJ5RmlsdGVyT3B0aW9ucyhjb3VudHJpZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkoY291bnRyaWVzKSA/IGNvdW50cmllcy5maWx0ZXIoQm9vbGVhbikgOiBbXTtcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gbmV3IFNldCh0aGlzLmNvdW50cnlGaWx0ZXIpO1xuICAgICAgY29uc3QgaXNzdWVzID0gbGlzdC5tYXAoKGMpID0+ICh7IGlkOiBjLCB0ZXh0OiBjLCBjaGVja2VkOiBzZWxlY3RlZC5oYXMoYykgfSkpO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnN0b3JlRmlsdGVyT2JqZWN0LmZpbmQoKGcpID0+IGcuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5Jyk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgZXhpc3RpbmcuSXNzdWVzID0gaXNzdWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yZUZpbHRlck9iamVjdCA9IFsuLi50aGlzLnN0b3JlRmlsdGVyT2JqZWN0LCB7IERlc2NyaXB0aW9uOiAnQ291bnRyeScsIHR5cGU6ICdtdWx0aScsIElzc3VlczogaXNzdWVzIH1dO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBNb3VudCBsaWItZmlsdGVycyBvbmNlIHRoZSBmaXJzdCByZXNwb25zZSBpcyBpbiAoU3RhdHVzIGFsb25lIGlmIHRoZXJlIGFyZVxuICAgIC8vIG5vIGNvdW50cmllcyksIHNvIGl0IHNuYXBzaG90cyB0aGUgZnVsbCBkYXRhT2JqZWN0IG9uIGluaXQuXG4gICAgaWYgKCF0aGlzLmZpbHRlcnNSZWFkeSkge1xuICAgICAgdGhpcy5maWx0ZXJzUmVhZHkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U3RvcmVGaWx0ZXJzKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBNdWx0aS1zZWxlY3QgU3RhdHVzIC8gQ291bnRyeSDigJQgbGliLWZpbHRlcnMgZW1pdHMgZWFjaCBncm91cCdzIHNlbGVjdGVkXG4gICAgLy8gb3B0aW9ucyBhcyBhbiBBUlJBWSB1bmRlciBJc3N1ZXMgKEFwcGx5IHNldHMgSXNzdWVzID0gc2VsZWN0ZWRWYWx1ZXNBcnJheVxuICAgIC8vIFtpbmRleF0pLiBDb2xsZWN0IGV2ZXJ5IHNlbGVjdGVkIGlkLCB0b2xlcmF0aW5nIGFycmF5IGFuZCBzaW5nbGUtb2JqZWN0XG4gICAgLy8gc2hhcGVzLlxuICAgIGNvbnN0IHN0YXR1c2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNvdW50cmllczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzc3VlcyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudC5Jc3N1ZXMpID8gZWxlbWVudC5Jc3N1ZXMgOiAoZWxlbWVudC5Jc3N1ZXMgPyBbZWxlbWVudC5Jc3N1ZXNdIDogW10pO1xuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gJ1N0YXR1cycpIHtcbiAgICAgICAgICBpc3N1ZXMuZm9yRWFjaCgoaTogYW55KSA9PiB7IGlmIChpPy5pZCkgc3RhdHVzZXMucHVzaChpLmlkKTsgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gJ0NvdW50cnknKSB7XG4gICAgICAgICAgaXNzdWVzLmZvckVhY2goKGk6IGFueSkgPT4geyBpZiAoaT8uaWQpIGNvdW50cmllcy5wdXNoKGkuaWQpOyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc3RhdHVzRmlsdGVyID0gWy4uLm5ldyBTZXQoc3RhdHVzZXMpXTtcbiAgICB0aGlzLmNvdW50cnlGaWx0ZXIgPSBbLi4ubmV3IFNldChjb3VudHJpZXMpXTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIHNvcnREYXRhKGNvbHVtbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zb3J0Q29sdW1OYW1lID0gY29sdW1uO1xuICAgIHRoaXMuc29ydEJ5ICo9IC0xO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYXJzZUludChwYWdlT2Zmc2V0KTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChwYWdlU2l6ZSk7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBvbkV4cG9ydCgpIHtcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMubGVuLFxuICAgICAgc29ydENvbHVtTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHN0YXR1c0ZpbHRlcjogdGhpcy5zdGF0dXNGaWx0ZXIsXG4gICAgICBkYXRlRmlsdGVyOiB0aGlzLmRhdGVGaWx0ZXIgfHwgJycsXG4gICAgICBleHBvcnQ6IHRydWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5sYXRlc3REYWlseVByaWNpbmdFeHBvcnQoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2RhaWx5LXByaWNpbmcnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEVkaXRLZXkoc3RvcmVJZDogc3RyaW5nLCBwcm9kdWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c3RvcmVJZH1fJHtwcm9kdWN0TmFtZX1gO1xuICB9XG5cbiAgaXNFZGl0aW5nKHN0b3JlSWQ6IHN0cmluZywgcHJvZHVjdE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdQcm9kdWN0W3RoaXMuZ2V0RWRpdEtleShzdG9yZUlkLCBwcm9kdWN0TmFtZSldICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGFydEVkaXQoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIC8vIENvZXJjZSB0byBhIG51bWJlciBzbyBhIDAgLyBtaXNzaW5nIHZhbHVlIHN0aWxsIGVudGVycyBlZGl0IG1vZGUgd2l0aCBhXG4gICAgLy8gZGVmaW5lZCB2YWx1ZSAodW5kZWZpbmVkIHdvdWxkIG1ha2UgaXNFZGl0aW5nKCkgdGhpbmsgd2UncmUgbm90IGVkaXRpbmcpLlxuICAgIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XSA9IE51bWJlcihwcm9kdWN0LndvcmtpbmdkYXlzKSB8fCAwO1xuICB9XG5cbiAgY2FuY2VsRWRpdChzdG9yZTogYW55LCBwcm9kdWN0OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgcHJvZHVjdC5wcm9kdWN0TmFtZSk7XG4gICAgZGVsZXRlIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XTtcbiAgfVxuXG4gIHNhdmVXb3JraW5nRGF5cyhzdG9yZTogYW55LCBwcm9kdWN0OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgcHJvZHVjdC5wcm9kdWN0TmFtZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBOdW1iZXIodGhpcy5lZGl0aW5nUHJvZHVjdFtrZXldKSB8fCAwO1xuXG4gICAgLy8gVW5jaGFuZ2VkIOKGkiBqdXN0IGNsb3NlIHRoZSBlZGl0b3IgKGNvbXBhcmUgYXMgbnVtYmVycyBzbyAwIHZzIFwiMFwiIGV0Yy5cbiAgICAvLyBkb24ndCBzbGlwIHRocm91Z2gpLlxuICAgIGlmIChuZXdWYWx1ZSA9PT0gKE51bWJlcihwcm9kdWN0LndvcmtpbmdkYXlzKSB8fCAwKSkge1xuICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmRhaWx5UHJpY2luZ0luZm8uZGF0ZVN0cmluZyxcbiAgICAgIHN0b3JlSWQ6IHN0b3JlLnN0b3JlSWQsXG4gICAgICBwcm9kdWN0TmFtZTogcHJvZHVjdC5wcm9kdWN0TmFtZSxcbiAgICAgIHdvcmtpbmdkYXlzOiBuZXdWYWx1ZVxuICAgIH07XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnVwZGF0ZURhaWx5UHJpY2luZ1dvcmtpbmdEYXlzKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBwcm9kdWN0LndvcmtpbmdkYXlzID0gTnVtYmVyKG5ld1ZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ1dvcmtpbmcgZGF5cyB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byB1cGRhdGUgd29ya2luZyBkYXlzJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRGaWVsZEVkaXRLZXkoc3RvcmVJZDogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3N0b3JlSWR9XyR7ZmllbGROYW1lfWA7XG4gIH1cblxuICBpc0VkaXRpbmdGaWVsZChzdG9yZUlkOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ0ZpZWxkW3RoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlSWQsIGZpZWxkTmFtZSldICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGFydEZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgdGhpcy5lZGl0aW5nRmllbGRba2V5XSA9IHN0b3JlW2ZpZWxkTmFtZV0gfHwgMDtcbiAgfVxuXG4gIGNhbmNlbEZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgZGVsZXRlIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG4gIH1cblxuICBzYXZlRmllbGRFZGl0KHN0b3JlOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRGaWVsZEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgZmllbGROYW1lKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHN0b3JlW2ZpZWxkTmFtZV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZGFpbHlQcmljaW5nSW5mby5kYXRlU3RyaW5nLFxuICAgICAgc3RvcmVJZDogc3RvcmUuc3RvcmVJZCxcbiAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lLFxuICAgICAgdmFsdWU6IE51bWJlcihuZXdWYWx1ZSlcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS51cGRhdGVEYWlseVByaWNpbmdTdG9yZUZpZWxkKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBzdG9yZVtmaWVsZE5hbWVdID0gTnVtYmVyKG5ld1ZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyB0cmFmZmljQ2FtZXJhQ291bnQ6ICdUcmFmZmljIGNhbWVyYSBjb3VudCcsIHpvbmVDYW1lcmFDb3VudDogJ1pvbmUgY2FtZXJhIGNvdW50Jywgem9uZUNvdW50OiAnWm9uZSBjb3VudCcgfTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoYCR7ZmllbGRMYWJlbHNbZmllbGROYW1lXSB8fCBmaWVsZE5hbWV9IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5YCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyB0cmFmZmljQ2FtZXJhQ291bnQ6ICd0cmFmZmljIGNhbWVyYSBjb3VudCcsIHpvbmVDYW1lcmFDb3VudDogJ3pvbmUgY2FtZXJhIGNvdW50Jywgem9uZUNvdW50OiAnem9uZSBjb3VudCcgfTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBGYWlsZWQgdG8gdXBkYXRlICR7ZXJyb3JMYWJlbHNbZmllbGROYW1lXSB8fCBmaWVsZE5hbWV9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZW5lcmF0ZUludm9pY2UoKSB7XG4gICAgaWYgKCF0aGlzLmNsaWVudElkKSByZXR1cm47XG4gICAgLy8gT3BlbiB0aGUgcGlja2VyIGZpcnN0IOKAlCB0aGUgdXNlciBjaG9vc2VzIHdoaWNoIGJpbGxpbmcgZ3JvdXBzIHRvXG4gICAgLy8gZ2VuZXJhdGUgZm9yLiBNb2RhbCBjbG9zZXMgd2l0aCB7IGdyb3VwSWRzLCBvdXRzdGFuZGluZ0dyb3VwSWRzIH1cbiAgICAvLyAob3IgaXMgZGlzbWlzc2VkID0gbm8tb3ApLlxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihHZW5lcmF0ZUludm9pY2VNb2RhbENvbXBvbmVudCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIHNjcm9sbGFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQ6IHsgZ3JvdXBJZHM6IHN0cmluZ1tdOyBvdXRzdGFuZGluZ0dyb3VwSWRzOiBzdHJpbmdbXSB9KSA9PiB7XG4gICAgICBpZiAoIXJlc3VsdCB8fCAhQXJyYXkuaXNBcnJheShyZXN1bHQuZ3JvdXBJZHMpIHx8IHJlc3VsdC5ncm91cElkcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHRoaXMucnVuSW52b2ljZUdlbmVyYXRpb24ocmVzdWx0Lmdyb3VwSWRzLCByZXN1bHQub3V0c3RhbmRpbmdHcm91cElkcyB8fCBbXSk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgLy8gT3BlbiBhIHBvcHVwIGxpc3RpbmcgdGhlIG5ld2x5IG9uYm9hcmRlZCBzdG9yZXMgKHdpdGggZmlyc3QgZmlsZSBkYXRlKS5cbiAgLy8gVGhlIGxpc3QgaXMgYWxyZWFkeSBsb2FkZWQgd2l0aCB0aGUgcGFnZSwgc28gbm8gZXh0cmEgQVBJIGNhbGwgaXMgbmVlZGVkLlxuICB2aWV3TmV3U3RvcmVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5uZXdseU9uYm9hcmRlZFN0b3JlTGlzdC5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTmV3U3RvcmVzTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnLCBzY3JvbGxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlcyA9IHRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3Q7XG4gIH1cblxuICBwcml2YXRlIHJ1bkludm9pY2VHZW5lcmF0aW9uKGdyb3VwSWRzOiBzdHJpbmdbXSwgb3V0c3RhbmRpbmdHcm91cElkczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJhdGluZ0ludm9pY2UgPSB0cnVlO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGFsbENsaWVudDogdHJ1ZSxcbiAgICAgIGNsaWVudExpc3Q6IFt0aGlzLmNsaWVudElkXSxcbiAgICAgIGdyb3VwSWRzLFxuICAgICAgb3V0c3RhbmRpbmdHcm91cElkcyxcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5jcmVhdGVJbnZvaWNlKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KGBJbnZvaWNlIGdlbmVyYXRlZCBmb3IgJHtncm91cElkcy5sZW5ndGh9IGJpbGxpbmcgZ3JvdXAocylgKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5nZW5lcmF0aW5nSW52b2ljZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBpbnZvaWNlJyk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0UHJvZHVjdE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnJztcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgICAgLnJlcGxhY2UoL14uLywgKHN0cikgPT4gc3RyLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgLy8gVGFrZSB0aGUgcmF3IGFnZ3JlZ2F0aW9uIHJvd3MgKGFscmVhZHkgc29ydGVkIG5ld2VzdC1maXJzdCBieSB0aGUgQVBJKSBhbmRcbiAgLy8gYXR0YWNoIChhKSBhIGh1bWFuLXJlYWRhYmxlIG1vbnRoTGFiZWwsIChiKSB0YWcgZm9yIHRoZSBsYXRlc3QgdHdvIHJvd3NcbiAgLy8gKFwiQ3VycmVudFwiIC8gXCJMYXN0IGdlbmVyYXRlZFwiKSBhbmQgKGMpIGRlbHRhcyB2cyB0aGUgaW1tZWRpYXRlbHkgb2xkZXJcbiAgLy8gQ3VycmVuY3kgc3ltYm9sIGZvciBhIHN0b3JlJ3MgaW52b2ljZSBhbW91bnQgKG1hdGNoZXMgdGhlIGJhY2tlbmQnc1xuICAvLyBiYXNlcHJpY2luZyBjdXJyZW5jeTsgQUVEIHJlbmRlcmVkIGFzIHRleHQpLlxuICBzdG9yZUN1cnJlbmN5U3ltYm9sKHN0b3JlOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IGlucjogJ+KCuScsIGRvbGxhcjogJyQnLCBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsIGV1cm86ICfigqwnLCBhZWQ6ICdBRUQgJyB9O1xuICAgIHJldHVybiBzeW1ib2xzWyhzdG9yZT8uaW52b2ljZUN1cnJlbmN5IHx8ICdpbnInKS50b0xvd2VyQ2FzZSgpXSB8fCAn4oK5JztcbiAgfVxuXG4gIC8vIG1vbnRoIHNvIHRoZSB0ZW1wbGF0ZSBjYW4gcmVuZGVyIHRoZSDilrIv4pa8L+KWrCB0cmVuZCBpbmRpY2F0b3JzLlxuICBwcml2YXRlIGRlY29yYXRlTW9udGhseVN1bW1hcnkocm93czogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJvd3MpIHx8IHJvd3MubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFsnSmFuJywnRmViJywnTWFyJywnQXByJywnTWF5JywnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJ107XG4gICAgY29uc3Qgc3ltYm9sczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgaW5yOiAn4oK5JywgZG9sbGFyOiAnJCcsIHNpbmdhcG9yZWRvbGxhcjogJ1MkJywgZXVybzogJ+KCrCcgfTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGlzQ3VycmVudCA9IChyOiBhbnkpID0+IHIueWVhciA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiYgci5tb250aCA9PT0gKG5vdy5nZXRNb250aCgpICsgMSk7XG4gICAgcmV0dXJuIHJvd3MubWFwKChyLCBpKSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gcm93c1tpICsgMV07XG4gICAgICBjb25zdCBzdG9yZXNEZWx0YSA9IG5leHQgPyAoci5zdG9yZXNCaWxsZWQgfHwgMCkgLSAobmV4dC5zdG9yZXNCaWxsZWQgfHwgMCkgOiBudWxsO1xuICAgICAgY29uc3QgYW1vdW50RGVsdGEgPSBuZXh0ID8gKHIuaW52b2ljZUFtb3VudCB8fCAwKSAtIChuZXh0Lmludm9pY2VBbW91bnQgfHwgMCkgOiBudWxsO1xuICAgICAgbGV0IHRhZyA9ICcnO1xuICAgICAgaWYgKGlzQ3VycmVudChyKSkgdGFnID0gJ0N1cnJlbnQnO1xuICAgICAgZWxzZSBpZiAoaSA9PT0gMCkgdGFnID0gJ0xhc3QgZ2VuZXJhdGVkJztcbiAgICAgIGVsc2UgaWYgKGkgPT09IDEgJiYgaXNDdXJyZW50KHJvd3NbMF0pKSB0YWcgPSAnTGFzdCBnZW5lcmF0ZWQnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucixcbiAgICAgICAgbW9udGhMYWJlbDogYCR7bW9udGhOYW1lc1soci5tb250aCB8fCAxKSAtIDFdfSAke3IueWVhcn1gLFxuICAgICAgICB0YWcsXG4gICAgICAgIHN0b3Jlc0RlbHRhLFxuICAgICAgICBhbW91bnREZWx0YSxcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6IHN5bWJvbHNbKHIuY3VycmVuY3kgfHwgJ2lucicpLnRvTG93ZXJDYXNlKCldIHx8ICcnLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZU1vbnRobHlTdW1tYXJ5SGlzdG9yeSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vbnRobHlTdW1tYXJ5RXhwYW5kZWQgPSAhdGhpcy5tb250aGx5U3VtbWFyeUV4cGFuZGVkO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cImludm9pY2VzLXNlY3Rpb25cIj5cbiAgICA8IS0tIEhlYWRlciBSb3cgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjY2NjY3IDEwSDEzLjMzMzNNNi42NjY2NyA2LjY2NjY3SDEzLjMzMzNNNi42NjY2NyAxMy4zMzMzSDEwTTUgMTcuNUgxNUMxNS45MjA1IDE3LjUgMTYuNjY2NyAxNi43NTM4IDE2LjY2NjcgMTUuODMzM1Y0LjE2NjY3QzE2LjY2NjcgMy4yNDYxOSAxNS45MjA1IDIuNSAxNSAyLjVINUM0LjA3OTUzIDIuNSAzLjMzMzMzIDMuMjQ2MTkgMy4zMzMzMyA0LjE2NjY3VjE1LjgzMzNDMy4zMzMzMyAxNi43NTM4IDQuMDc5NTMgMTcuNSA1IDE3LjVaXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaWxsaW5naGVhZGVyXCI+QmlsbGluZyBCcmVha2Rvd248L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LWRhcmsgbXMtMVwiPnt7IHRvdGFsSXRlbXMgfX0gc3RvcmVzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCIgKm5nSWY9XCJkYWlseVByaWNpbmdJbmZvPy5kYXRlU3RyaW5nXCI+XG4gICAgICAgICAgICAgICAgRGF0ZTogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5kYXRlU3RyaW5nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+fDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBBY3RpdmUgU3RvcmVzOiA8c3Ryb25nPnt7IGRhaWx5UHJpY2luZ0luZm8/LmFjdGl2ZVN0b3JlcyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPnw8L3NwYW4+XG4gICAgICAgICAgICAgICAgQWNjb3VudCBUeXBlOiA8c3Ryb25nPnt7IGRhaWx5UHJpY2luZ0luZm8/LmFjY291bnRUeXBlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBkYXRlLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5IGRhdGVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0ZUZpbHRlclwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRGF0ZUZpbHRlcigpXCIgdGl0bGU9XCJDbGVhciBkYXRlIGZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNSAzLjVMMy41IDEwLjVNMy41IDMuNUwxMC41IDEwLjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdlbmVyYXRlSW52b2ljZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0b3JlTGlzdC5sZW5ndGggfHwgZ2VuZXJhdGluZ0ludm9pY2VcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjY2NjY3IDEwSDEzLjMzMzNNNi42NjY2NyA2LjY2NjY3SDEzLjMzMzNNNi42NjY2NyAxMy4zMzMzSDEwTTUgMTcuNUgxNUMxNS45MjA1IDE3LjUgMTYuNjY2NyAxNi43NTM4IDE2LjY2NjcgMTUuODMzM1Y0LjE2NjY3QzE2LjY2NjcgMy4yNDYxOSAxNS45MjA1IDIuNSAxNSAyLjVINUM0LjA3OTUzIDIuNSAzLjMzMzMzIDMuMjQ2MTkgMy4zMzMzMyA0LjE2NjY3VjE1LjgzMzNDMy4zMzMzMyAxNi43NTM4IDQuMDc5NTMgMTcuNSA1IDE3LjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNmZmZcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIj57eyBnZW5lcmF0aW5nSW52b2ljZSA/ICdHZW5lcmF0aW5nLi4uJyA6ICdHZW5lcmF0ZSBJbnZvaWNlJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBpbnZoZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RvcmVMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIj5FeHBvcnQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5ld2x5IE9uYm9hcmRlZCBTdG9yZXMg4oCUIHN0b3JlcyB3aG9zZSBmaXJzdCBmaWxlIGRhdGUgaXMgaW4gdGhlIGN1cnJlbnQgbW9udGggLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZXdseS1vbmJvYXJkZWQtY2FyZFwiXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRTRFN0VDO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMThweDtiYWNrZ3JvdW5kOiNmZmY7bWluLXdpZHRoOjI0MHB4O1wiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojRUFGOEZGO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDIxVjhsOS01IDkgNXYxM00zIDIxaDE4TTMgMjFIMW0yMCAwaDJNOSAyMXYtNmg2djZNMTIgNy41aC4wMVwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTAxODI4O2xpbmUtaGVpZ2h0OjEuMTtcIj57eyBuZXdseU9uYm9hcmRlZFN0b3JlcyB8IG51bWJlcjonMS4wLTAnOidlbi1JTicgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjEzcHg7Y29sb3I6IzY2NzA4NTtcIj5OZXdseSBPbmJvYXJkZWQgU3RvcmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxMXB4O2NvbG9yOiM5OEEyQjM7XCI+Rmlyc3QgZmlsZSBpbiBjdXJyZW50IG1vbnRoPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IG1zLTNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhbmV3bHlPbmJvYXJkZWRTdG9yZXNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3TmV3U3RvcmVzKClcIj5WaWV3IFN0b3JlczwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTW9udGhseSBCaWxsaW5nIFN1bW1hcnkg4oCUIGludm9pY2UgdHJlbmQgKG5ld2VzdCBmaXJzdCwgd2l0aCBkZWx0YXMgdnMgcHJpb3IgbW9udGgpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb250aGx5LWJpbGxpbmctc3VtbWFyeVwiICpuZ0lmPVwibW9udGhseUJpbGxpbmdTdW1tYXJ5Py5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zdW0taGVhZGVyXCI+TW9udGhseSBCaWxsaW5nIFN1bW1hcnk8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5NT05USDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TlVNQkVSIE9GIFNUT1JFUyBCSUxMRUQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPklOVk9JQ0UgQU1PVU5UPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIG1vbnRobHlCaWxsaW5nU3VtbWFyeTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiaSA8IDIgfHwgbW9udGhseVN1bW1hcnlFeHBhbmRlZFwiIFtjbGFzcy5jdXJyXT1cInJvdy50YWcgPT09ICdDdXJyZW50J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cubW9udGhMYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy50YWcgPT09ICdDdXJyZW50J1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtcy0yXCI+Q3VycmVudDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cudGFnID09PSAnTGFzdCBnZW5lcmF0ZWQnXCIgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LWRhcmsgbXMtMlwiPkxhc3QgZ2VuZXJhdGVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdy5zdG9yZXNCaWxsZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cuc3RvcmVzRGVsdGEgIT09IG51bGxcIiBjbGFzcz1cImluZCBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51cF09XCJyb3cuc3RvcmVzRGVsdGEgPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb3duXT1cInJvdy5zdG9yZXNEZWx0YSA8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsYXRdPVwicm93LnN0b3Jlc0RlbHRhID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LnN0b3Jlc0RlbHRhID4gMFwiPuKWsiB7eyByb3cuc3RvcmVzRGVsdGEgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuc3RvcmVzRGVsdGEgPCAwXCI+4pa8IHt7IC1yb3cuc3RvcmVzRGVsdGEgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+4pasIDA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm93LmN1cnJlbmN5U3ltYm9sIH19e3sgcm93Lmludm9pY2VBbW91bnQgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LmFtb3VudERlbHRhICE9PSBudWxsXCIgY2xhc3M9XCJpbmQgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXBdPVwicm93LmFtb3VudERlbHRhID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG93bl09XCJyb3cuYW1vdW50RGVsdGEgPCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGF0XT1cInJvdy5hbW91bnREZWx0YSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5hbW91bnREZWx0YSA+IDBcIj7ilrIge3sgcm93LmN1cnJlbmN5U3ltYm9sIH19e3sgcm93LmFtb3VudERlbHRhIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5hbW91bnREZWx0YSA8IDBcIj7ilrwge3sgcm93LmN1cnJlbmN5U3ltYm9sIH19e3sgLXJvdy5hbW91bnREZWx0YSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+4pasIDA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vbnRobHlCaWxsaW5nU3VtbWFyeS5sZW5ndGggPiAyXCIgY2xhc3M9XCJtc3VtLXRvZ2dsZVwiIChjbGljayk9XCJ0b2dnbGVNb250aGx5U3VtbWFyeUhpc3RvcnkoKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb250aGx5U3VtbWFyeUV4cGFuZGVkXCI+4pa+IFNob3cgb2xkZXIgbW9udGhzICh7eyBtb250aGx5QmlsbGluZ1N1bW1hcnkubGVuZ3RoIC0gMiB9fSk8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb250aGx5U3VtbWFyeUV4cGFuZGVkXCI+4pa0IEhpZGUgb2xkZXIgbW9udGhzPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBZGRpdGlvbmFsIFByb2R1Y3RzIOKAlCBub24tc3RhbmRhcmQgcHJvZHVjdHMgYmlsbGVkIGZvciB0aGlzIGNsaWVudCBvbmx5XG4gICAgICAgICAoZS5nLiBjbGllbnRJZCAxMTogRXlldGVzdCwgUGxhbm9ncmFtKS4gSGlkZGVuIHdoZW4gdGhlIGNsaWVudCBoYXMgbm9uZS4gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vbnRobHktYmlsbGluZy1zdW1tYXJ5XCIgKm5nSWY9XCJhZGRpdGlvbmFsUHJvZHVjdHM/Lmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXN1bS1oZWFkZXJcIj5BZGRpdGlvbmFsIFByb2R1Y3RzPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdCBOYW1lPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UXVhbnRpdHk8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5QcmljZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlRvdGFsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+QWN0aW9uPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwIG9mIGFkZGl0aW9uYWxQcm9kdWN0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHAucHJvZHVjdE5hbWUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBwLnF1YW50aXR5IHwgbnVtYmVyOicxLjAtMCc6J2VuLUlOJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBwLnByaWNlIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+e3sgKGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5ID09PSAnZG9sbGFyJyA/ICckJyA6ICfigrknKSB9fXt7IHAudG90YWwgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkV4cG9ydEFkZGl0aW9uYWxQcm9kdWN0KHAucHJvZHVjdE5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cG9ydEFkZGl0aW9uYWxQcm9kdWN0KHAucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjNcIiBjbGFzcz1cInRleHQtZW5kXCI+PHN0cm9uZz5HcmFuZCBUb3RhbDwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+e3sgKGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5ID09PSAnZG9sbGFyJyA/ICckJyA6ICfigrknKSB9fXt7IGFkZGl0aW9uYWxQcm9kdWN0c1RvdGFsIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlYXJjaCArIEZpbHRlciBSb3cgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHBheW1lbnRoaXN0b3J5IGJvcmRlci0wIHB4LTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBpbnZvaWNlc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXQtNiBtcy0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJsZW5cIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IGludm9pY2VzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTdG9yZSBuYW1lIG9yIElELi4uXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZWFyY2hGaWVsZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cImZpbHRlcnNSZWFkeVwiIFtkYXRhT2JqZWN0XT1cInN0b3JlRmlsdGVyT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5U3RvcmVGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBMb2FkaW5nIFNoaW1tZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlTG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gTm8gRGF0YSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RvcmVOb0RhdGFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gU3RvcmVzIFRhYmxlIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhc3RvcmVMb2FkaW5nICYmICFzdG9yZU5vRGF0YVwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhY2NvcmRpb24gdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3N0b3JlTmFtZScpXCI+U1RPUkUgTkFNRVxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+U1RPUkUgSUQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+Q09VTlRSWTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5QUk9EVUNUUzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlRSQUZGSUMgQ0FNRVJBU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAndHJhZmZpY0NhbWVyYUNvdW50JyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3RyYWZmaWNDYW1lcmFDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnem9uZUNhbWVyYUNvdW50JylcIj5aT05FIENBTUVSQVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVDYW1lcmFDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ2FtZXJhQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3pvbmVDb3VudCcpXCI+Wk9ORVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPkZJUlNUIEZJTEUgREFURTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdkYXlzRGlmZmVyZW5jZScpXCI+V09SS0lORyBEQVlTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXlzRGlmZmVyZW5jZScgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXlzRGlmZmVyZW5jZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+U1RBVFVTPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5JTlZPSUNFIEFNT1VOVDwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIHRhYmxlLXRpdGxlLXByaW1hcnlcIj57eyBzdG9yZT8uc3RvcmVOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlPy5zdG9yZUlkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlPy5jb3VudHJ5IHx8ICfigJQnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHN0b3JlPy5wcm9kdWN0c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtZS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2R1Y3Q/LnByb2R1Y3ROYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmU/LnRyYWZmaWNDYW1lcmFDb3VudCB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdGaWVsZFtnZXRGaWVsZEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsICd0cmFmZmljQ2FtZXJhQ291bnQnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlPy56b25lQ2FtZXJhQ291bnQgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nRmllbGRbZ2V0RmllbGRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCAnem9uZUNhbWVyYUNvdW50JyldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZT8uem9uZUNvdW50IHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ0ZpZWxkW2dldEZpZWxkRWRpdEtleShzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDb3VudCcpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uZWRnZWZpcnN0RmlsZURhdGUgPyAoc3RvcmU/LmVkZ2VmaXJzdEZpbGVEYXRlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5JykgOiAn4oCUJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBzdG9yZT8ucHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZFwiPnt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2R1Y3Q/LnByb2R1Y3ROYW1lKSB9fTo8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWaWV3IG1vZGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nKHN0b3JlPy5zdG9yZUlkLCBwcm9kdWN0Py5wcm9kdWN0TmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcHJvZHVjdD8ud29ya2luZ2RheXMgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRFZGl0KHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRWRpdCBtb2RlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHN0b3JlPy5zdG9yZUlkLCBwcm9kdWN0Py5wcm9kdWN0TmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ1Byb2R1Y3RbZ2V0RWRpdEtleShzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZVdvcmtpbmdEYXlzKHN0b3JlLCBwcm9kdWN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEVkaXQoc3RvcmUsIHByb2R1Y3QpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlV29ya2luZ0RheXMoc3RvcmUsIHByb2R1Y3QpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxFZGl0KHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgW25nQ2xhc3NdPVwic3RvcmU/LnN0YXR1cyA9PT0gJ2FjdGl2ZScgPyAnYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcycgOiAnYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3JlPy5zdGF0dXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXItcHJvZHVjdCBicmVha2Rvd24gKFRyYWZmaWM6IOKCuXgsIFpvbmU6IOKCuXkg4oCmKSArIHRvdGFsLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGIgb2Ygc3RvcmU/Lmludm9pY2VCcmVha2Rvd25cIiBjbGFzcz1cImludi1icmVha2Rvd24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnYtYnJlYWtkb3duLWxhYmVsXCI+e3sgYi5sYWJlbCB9fTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZSkgfX17eyAoYi5hbW91bnQgfHwgMCkgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBpbnYtYnJlYWtkb3duLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZUN1cnJlbmN5U3ltYm9sKHN0b3JlKSB9fXt7IChzdG9yZT8uaW52b2ljZUFtb3VudCB8fCAwKSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXN0b3JlTG9hZGluZyAmJiAhc3RvcmVOb0RhdGFcIj5cbiAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBjbGFzcz1cInRleHQtc3RhcnRcIiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpbHktcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtYmlsbGluZy9zcmMvbGliL2NvbXBvbmVudHMvZGFpbHktcHJpY2luZy9kYWlseS1wcmljaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9kYWlseS1wcmljaW5nL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQU94RixNQUFNLE9BQU8scUJBQXFCO0lBaUV0QjtJQUNBO0lBQ0E7SUFDQTtJQW5FTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEdBQUcsQ0FBTTtJQUNULGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsV0FBVztJQUNYLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5RUFBeUU7SUFDekUsY0FBYyxHQUFRLEVBQUUsQ0FBQztJQUN6Qix3RkFBd0Y7SUFDeEYsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUV2QixjQUFjO0lBQ2QsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qix3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELFlBQVksR0FBYSxFQUFFLENBQUM7SUFDNUIsOEVBQThFO0lBQzlFLGFBQWEsR0FB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RkFBckIscUJBQXFCLGdIQ2JsQyxvNmlDQW9iTTs7NEZEdmFPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7cUtBT3BCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IHsgR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYXRlLWludm9pY2UtbW9kYWwvZ2VuZXJhdGUtaW52b2ljZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3U3RvcmVzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL25ldy1zdG9yZXMtbW9kYWwvbmV3LXN0b3Jlcy1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGFpbHktcHJpY2luZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYWlseS1wcmljaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhaWx5LXByaWNpbmcuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIERhaWx5UHJpY2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nID0gJyc7XG5cbiAgbGVuOiBhbnk7XG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gTWV0YWRhdGFcbiAgZGFpbHlQcmljaW5nSW5mbzogYW55ID0ge307XG5cbiAgLy8gRWRpdCB0cmFja2luZzoga2V5ID0gJ3N0b3JlSWRfcHJvZHVjdE5hbWUnLCB2YWx1ZSA9IGVkaXRlZCB3b3JraW5nZGF5c1xuICBlZGl0aW5nUHJvZHVjdDogYW55ID0ge307XG4gIC8vIEVkaXQgdHJhY2tpbmcgZm9yIHN0b3JlLWxldmVsIGZpZWxkcyAodHJhZmZpY0NhbWVyYUNvdW50LCB6b25lQ2FtZXJhQ291bnQsIHpvbmVDb3VudClcbiAgZWRpdGluZ0ZpZWxkOiBhbnkgPSB7fTtcblxuICAvLyBEYXRlIGZpbHRlclxuICBkYXRlRmlsdGVyOiBzdHJpbmcgPSAnJztcblxuICAvLyBGaWx0ZXIg4oCUIG11bHRpLXNlbGVjdCBzdGF0dXMuIE5vIGRlZmF1bHQ6IHRoZSB0YWJsZSBvcGVucyBzaG93aW5nIEFMTFxuICAvLyBzdG9yZXMgKGFjdGl2ZSArIGRlYWN0aXZlKTsgbmVpdGhlciBvcHRpb24gaXMgcHJlLWNoZWNrZWQuXG4gIHN0YXR1c0ZpbHRlcjogc3RyaW5nW10gPSBbXTtcbiAgLy8gTXVsdGktc2VsZWN0IGNvdW50cnkgZmlsdGVyIChvcHRpb25zIHBvcHVsYXRlZCBmcm9tIHRoZSBBUEkncyBgY291bnRyaWVzYCkuXG4gIGNvdW50cnlGaWx0ZXI6IHN0cmluZ1tdID0gW107XG4gIHN0b3JlRmlsdGVyT2JqZWN0OiBhbnlbXSA9IFtcbiAgICB7IERlc2NyaXB0aW9uOiAnU3RhdHVzJywgdHlwZTogJ211bHRpJywgSXNzdWVzOiBbeyBpZDogJ2FjdGl2ZScsIHRleHQ6ICdBY3RpdmUnIH0sIHsgaWQ6ICdkZWFjdGl2ZScsIHRleHQ6ICdEZWFjdGl2ZScgfV0gfSxcbiAgXTtcbiAgLy8gbGliLWZpbHRlcnMgc25hcHNob3RzIGRhdGFPYmplY3QgaW4gaXRzIG5nT25Jbml0LCBzbyB0aGUgQ291bnRyeSBncm91cCBtdXN0XG4gIC8vIGJlIHByZXNlbnQgQkVGT1JFIGl0IG1vdW50cy4gV2UgZ2F0ZSB0aGUgPGxpYi1maWx0ZXJzPiByZW5kZXIgb24gdGhpcyBmbGFnLFxuICAvLyBmbGlwcGluZyBpdCB0cnVlIG9ubHkgb25jZSB0aGUgY291bnRyeSBvcHRpb25zIGhhdmUgYmVlbiBidWlsdCBmcm9tIHRoZSBBUEkuXG4gIGZpbHRlcnNSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBkZXJpdmVkIGZyb20gaW52b2ljZSBoaXN0b3J5IGZvciB0aGUgYnJhbmQuXG4gIC8vIE5ld2VzdCBmaXJzdDsgZWFjaCByb3cgY2FycmllcyBwcmlvci1tb250aCBkZWx0YXMgZm9yIHRoZSB0cmVuZCBpbmRpY2F0b3IuXG4gIG1vbnRobHlCaWxsaW5nU3VtbWFyeTogYW55W10gPSBbXTtcbiAgbW9udGhseVN1bW1hcnlFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRhYmxlXG4gIHN0b3JlTGlzdDogYW55ID0gW107XG4gIHN0b3JlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHN0b3JlTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgLy8gRGVmYXVsdCBzb3J0OiB3b3JraW5nIGRheXMgKGRheXNEaWZmZXJlbmNlKSwgaGlnaGVzdCBmaXJzdC5cbiAgc29ydENvbHVtTmFtZTogc3RyaW5nID0gJ2RheXNEaWZmZXJlbmNlJztcbiAgc29ydEJ5OiBudW1iZXIgPSAtMTtcbiAgZ2VuZXJhdGluZ0ludm9pY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBBZGRpdGlvbmFsIChub24tc3RhbmRhcmQpIHByb2R1Y3RzIGF2YWlsYWJsZSBvbmx5IGZvciBzcGVjaWZpYyBjbGllbnRzXG4gIC8vIChjdXJyZW50bHkgY2xpZW50SWQgMTEpLiBFbXB0eSBmb3IgZXZlcnlvbmUgZWxzZSAtPiB0aGUgdGFibGUgaXMgaGlkZGVuLlxuICBhZGRpdGlvbmFsUHJvZHVjdHM6IGFueVtdID0gW107XG4gIGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5OiBzdHJpbmcgPSAnaW5yJztcbiAgLy8gRGF0ZSAoWVlZWS1NTS1ERCkgb2YgdGhlIGJpbGxpbmdfZGV0YWlscyBzbmFwc2hvdCBiZWhpbmQgdGhlIGFkZGl0aW9uYWxcbiAgLy8gcHJvZHVjdCBjb3VudHM7IHBhc3NlZCB0byB0aGUgZXhwb3J0IHNvIGV4cG9ydHMgbWF0Y2ggdGhlIGRpc3BsYXllZCBjYXJkcy5cbiAgYWRkaXRpb25hbFByb2R1Y3RzRGF0ZTogc3RyaW5nID0gJyc7XG5cbiAgLy8gQ291bnQgKyBsaXN0IG9mIHN0b3JlcyBvbmJvYXJkZWQgdGhpcyBtb250aCAoZmlyc3QgZmlsZSBkYXRlIGluIHRoZSBjdXJyZW50XG4gIC8vIG1vbnRoKS4gVGhlIGxpc3QgZmVlZHMgdGhlIFwiVmlldyBTdG9yZXNcIiBwb3B1cC5cbiAgbmV3bHlPbmJvYXJkZWRTdG9yZXM6IG51bWJlciA9IDA7XG4gIG5ld2x5T25ib2FyZGVkU3RvcmVMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY2xpZW50SWQnXSAmJiAhY2hhbmdlc1snY2xpZW50SWQnXS5maXJzdENoYW5nZSAmJiB0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdyYW5kIHRvdGFsIGFjcm9zcyBhbGwgYWRkaXRpb25hbC1wcm9kdWN0IHJvd3MuXG4gIGdldCBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5hZGRpdGlvbmFsUHJvZHVjdHMgfHwgW10pLnJlZHVjZSgoYSwgcCkgPT4gYSArIChOdW1iZXIocC50b3RhbCkgfHwgMCksIDApO1xuICB9XG5cbiAgLy8gUHJvZHVjdHMgdGhhdCBoYXZlIGEgYmFja2VuZCBkZXRhaWxlZCBleHBvcnQuIEtleWVkIGJ5IHRoZSBwcm9kdWN0IGtleSB0aGVcbiAgLy8gZXhwb3J0IGVuZHBvaW50IHVuZGVyc3RhbmRzLiBBZGQgbW9yZSBhcyB0aGVpciBxdWVyaWVzIGFyZSB3aXJlZCB1cC5cbiAgcHJpdmF0ZSByZWFkb25seSBleHBvcnRhYmxlUHJvZHVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ2V5ZXRlc3QnOiAnZXlldGVzdCcsXG4gICAgJ2V5ZXRlc3QgKGFkZGl0aW9uYWwgc3RvcmFnZSknOiAnZXlldGVzdGFkZGl0aW9uYWxzdG9yYWdlJyxcbiAgICAncGxhbm9ncmFtJzogJ3BsYW5vZ3JhbScsXG4gICAgJ2FpIG1hbmFnZXInOiAnYWltYW5hZ2VyJyxcbiAgICAndm1zJzogJ3ZtcycsXG4gICAgLy8gJ1J1biBBSScgaXMgZGlzcGxheWVkIGFzICdBSSBpbiBjaGVja2xpc3QnOyBib3RoIG1hcCB0byB0aGUgc2FtZSBleHBvcnRcbiAgICAvLyBrZXkgc28gdGhlIGRvd25sb2FkIHdvcmtzIHdoaWNoZXZlciBsYWJlbCB0aGUgQVBJIHJldHVybnMuXG4gICAgJ3J1biBhaSc6ICdydW5haScsXG4gICAgJ2FpIGluIGNoZWNrbGlzdCc6ICdydW5haScsXG4gICAgJ3JlbW90ZSBvcHR1bSc6ICdyZW1vdGVvcHR1bScsXG4gICAgLy8gRmFjdG9yeSBRQyAoRmFjdG9yeVFDX2JpbGxpbmcgTGFtYmRhKS4gRGF5LXNjb3BlZDogdGhlIExhbWJkYSB0YWtlcyBvbmx5XG4gICAgLy8gcmVwb3J0X2RhdGUsIHNvIHRoaXMgZXhwb3J0IGNvdmVycyB0aGUgc25hcHNob3QgZGF0ZSBzaG93biBvbiB0aGUgY2FyZFxuICAgIC8vIHJhdGhlciB0aGFuIG1vbnRoLXRvLWRhdGUgbGlrZSBSZW1vdGUgT3B0dW0uXG4gICAgJ2ZhY3RvcnknOiAnZmFjdG9yeScsXG4gIH07XG5cbiAgY2FuRXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocHJvZHVjdE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZXhwb3J0YWJsZVByb2R1Y3RzWyhwcm9kdWN0TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICBleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwcm9kdWN0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5leHBvcnRhYmxlUHJvZHVjdHNbKHByb2R1Y3ROYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpXTtcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBQYXNzIHRoZSBiaWxsaW5nX2RldGFpbHMgc25hcHNob3QgZGF0ZSAoWVlZWS1NTS1ERCkgYmVoaW5kIHRoZSBjYXJkIGNvdW50c1xuICAgIC8vIHNvIGRheS1zY29wZWQgZXhwb3J0cyAoVk1TIC8gUnVuIEFJIHZpYSBMYW1iZGEgdG9fZGF0ZSwgUmVtb3RlIE9wdHVtKSBtYXRjaFxuICAgIC8vIHdoYXQncyBzaG93bi4gRmFsbCBiYWNrIHRvIHRvZGF5IGlmIHRoZSBiYWNrZW5kIGRpZG4ndCByZXR1cm4gYSBkYXRlLlxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB0b2RheVN0ciA9IGAke3RvZGF5LmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKHRvZGF5LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyh0b2RheS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICBjb25zdCBleHBvcnREYXRlID0gdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNEYXRlIHx8IHRvZGF5U3RyO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYWRkaXRpb25hbFByb2R1Y3RFeHBvcnQodGhpcy5jbGllbnRJZCwga2V5LCBleHBvcnREYXRlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IEFycmF5QnVmZmVyKSA9PiB7XG4gICAgICAgICAgLy8gQSByZWFsIC54bHN4IGlzIGEgemlwIOKAlCBpdHMgZmlyc3QgdHdvIGJ5dGVzIGFyZSAnUEsnICgweDUwIDB4NEIpLlxuICAgICAgICAgIC8vIEEgMjA0L2VtcHR5IG9yIEpTT04gZXJyb3IgYm9keSBpcyBOT1QsIGFuZCBzYXZpbmcgaXQgcHJvZHVjZXMgYVxuICAgICAgICAgIC8vIFwiY29ycnVwdGVkXCIgZmlsZS4gR3VhcmQgc28gd2Ugb25seSBzYXZlIGEgZ2VudWluZSB3b3JrYm9vay5cbiAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcyA/IG5ldyBVaW50OEFycmF5KHJlcykgOiBuZXcgVWludDhBcnJheSgpO1xuICAgICAgICAgIGNvbnN0IGlzWGxzeCA9IGJ5dGVzLmxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0gPT09IDB4NTAgJiYgYnl0ZXNbMV0gPT09IDB4NGI7XG4gICAgICAgICAgaWYgKCFpc1hsc3gpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnTm8gZGF0YSB0byBleHBvcnQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBgJHtwcm9kdWN0TmFtZX0tJHt0aGlzLmNsaWVudElkfWApO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRXhwb3J0IGZhaWxlZCcpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBGZXRjaCB0aGUgYWRkaXRpb25hbC1wcm9kdWN0cyB0YWJsZSBmb3IgdGhpcyBjbGllbnQuIEJhY2tlbmQgcmV0dXJucyBhblxuICAvLyBlbXB0eSBsaXN0IGZvciBhbnkgY2xpZW50IHRoYXQgaGFzIG5vbmUgKHNvIHRoZSB0YWJsZSBqdXN0IHdvbid0IHJlbmRlcikuXG4gIGxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKSB7XG4gICAgLy8gU2VuZCB0aGUgcGFnZSdzIHNlbGVjdGVkIGRhdGUgKGlmIGFueSkgc28gdGhlIHNlY3Rpb24gcmVmbGVjdHMgaXQuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5hZGRpdGlvbmFsUHJvZHVjdHModGhpcy5jbGllbnRJZCwgdGhpcy5kYXRlRmlsdGVyIHx8IHVuZGVmaW5lZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gcmVzPy5kYXRhPy5wcm9kdWN0cyB8fCBbXTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9IHJlcz8uZGF0YT8uY3VycmVuY3kgfHwgJ2lucic7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzRGF0ZSA9IHJlcz8uZGF0YT8uYmlsbGluZ0RhdGUgfHwgJyc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gW107XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBsb2FkRGFpbHlQcmljaW5nKCkge1xuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3JlTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdG9yZU5vRGF0YSA9IGZhbHNlO1xuXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMubGVuLFxuICAgICAgc29ydENvbHVtTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHN0YXR1c0ZpbHRlcjogdGhpcy5zdGF0dXNGaWx0ZXIsXG4gICAgICBjb3VudHJ5RmlsdGVyOiB0aGlzLmNvdW50cnlGaWx0ZXIsXG4gICAgICBkYXRlRmlsdGVyOiB0aGlzLmRhdGVGaWx0ZXIgfHwgJycsXG4gICAgICBleHBvcnQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nKGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGUpID0+IHtcbiAgICAgICAgLy8gVGhlIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IGNvbWVzIGZyb20gaW52b2ljZSBoaXN0b3J5LCBub3QgdGhlIHN0b3JlXG4gICAgICAgIC8vIHJvd3Mg4oCUIGFwcGx5IGl0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgc3RvcmUgbGlzdCBpcyBlbXB0eSwgc28gaXRcbiAgICAgICAgLy8gc3RpbGwgc2hvd3Mgd2hlbiB0aGUgZmlsdGVyZWQgc3RvcmUgdGFibGUgaGFzIG5vIHJvd3MuXG4gICAgICAgIHRoaXMubW9udGhseUJpbGxpbmdTdW1tYXJ5ID0gdGhpcy5kZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KGU/LmRhdGE/Lm1vbnRobHlCaWxsaW5nU3VtbWFyeSB8fCBbXSk7XG4gICAgICAgIC8vIE5ld2x5IG9uYm9hcmRlZCBjb3VudC9saXN0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBzdG9yZSB0YWJsZSdzXG4gICAgICAgIC8vIGZpbHRlcnMsIHNvIGNhcHR1cmUgaXQgd2hldGhlciBvciBub3QgdGhlIGZpbHRlcmVkIHN0b3JlIGxpc3QgaGFzIHJvd3MuXG4gICAgICAgIHRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZXMgPSBlPy5kYXRhPy5uZXdseU9uYm9hcmRlZFN0b3JlcyB8fCAwO1xuICAgICAgICB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0ID0gZT8uZGF0YT8ubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QgfHwgW107XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgdGhlIENvdW50cnkgZmlsdGVyIG9wdGlvbnMgZnJvbSB0aGUgQVBJJ3MgY291bnRyeSBsaXN0IChhbGxcbiAgICAgICAgLy8gY2xpZW50IHN0b3JlcykuIEluZGVwZW5kZW50IG9mIHRoZSBmaWx0ZXJlZCBzdG9yZSBjb3VudCwgc28gYnVpbGQgaXRcbiAgICAgICAgLy8gZXZlbiB3aGVuIHRoZSBmaWx0ZXJlZCB0YWJsZSBpcyBlbXB0eS5cbiAgICAgICAgdGhpcy5idWlsZENvdW50cnlGaWx0ZXJPcHRpb25zKGU/LmRhdGE/LmNvdW50cmllcyB8fCBbXSk7XG5cbiAgICAgICAgaWYgKGU/LmRhdGE/LmNvdW50KSB7XG4gICAgICAgICAgdGhpcy5zdG9yZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3JlTm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBlLmRhdGE/LmRhdGE7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudDtcblxuICAgICAgICAgIHRoaXMuZGFpbHlQcmljaW5nSW5mbyA9IHtcbiAgICAgICAgICAgIGJyYW5kTmFtZTogZS5kYXRhPy5icmFuZE5hbWUgfHwgJycsXG4gICAgICAgICAgICBkYXRlU3RyaW5nOiBlLmRhdGE/LmRhdGVTdHJpbmcgfHwgJycsXG4gICAgICAgICAgICBkYXRlSVNPOiBlLmRhdGE/LmRhdGVJU08gfHwgJycsXG4gICAgICAgICAgICBhY3RpdmVTdG9yZXM6IGUuZGF0YT8uYWN0aXZlU3RvcmVzIHx8IDAsXG4gICAgICAgICAgICBhY2NvdW50VHlwZTogZS5kYXRhPy5hY2NvdW50VHlwZSB8fCAnJyxcbiAgICAgICAgICAgIHN0YXR1czogZS5kYXRhPy5zdGF0dXMgfHwgJycsXG4gICAgICAgICAgICBwcm9SYXRlOiBlLmRhdGE/LnByb1JhdGUgfHwgJycsXG4gICAgICAgICAgICBjbGllbnRJZDogZS5kYXRhPy5jbGllbnRJZCB8fCAnJ1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0b3JlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aGlzLmxlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICB0aGlzLm1vbnRobHlCaWxsaW5nU3VtbWFyeSA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0ZUZpbHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5kYXRlRmlsdGVyID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gICAgLy8gQWRkaXRpb25hbCBQcm9kdWN0cyByZWZsZWN0IHRoZSBzZWxlY3RlZCBkYXRlIHRvby5cbiAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgfVxuXG4gIGNsZWFyRGF0ZUZpbHRlcigpIHtcbiAgICB0aGlzLmRhdGVGaWx0ZXIgPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgfVxuXG4gIHNlYXJjaEZpZWxkKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgLy8gQWRkL3JlZnJlc2ggdGhlIENvdW50cnkgZ3JvdXAgaW4gdGhlIGZpbHRlciBkcm9wZG93biBmcm9tIHRoZSBBUEkncyBjb3VudHJ5XG4gIC8vIGxpc3QsIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIChjaGVja2VkKS4gbGliLWZpbHRlcnMgc25hcHNob3RzXG4gIC8vIGRhdGFPYmplY3Qgb25seSBpbiBuZ09uSW5pdCwgc28gd2UgYnVpbGQgdGhlIGZ1bGwgc3RvcmVGaWx0ZXJPYmplY3QgaGVyZSBhbmRcbiAgLy8gdGhlbiBmbGlwIGZpbHRlcnNSZWFkeSB0byBtb3VudCA8bGliLWZpbHRlcnM+IG9uY2Ug4oCUIGFmdGVyIHdoaWNoIGl0IHNlZXMgYm90aFxuICAvLyBTdGF0dXMgYW5kIENvdW50cnkgZ3JvdXBzLlxuICBwcml2YXRlIGJ1aWxkQ291bnRyeUZpbHRlck9wdGlvbnMoY291bnRyaWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KGNvdW50cmllcykgPyBjb3VudHJpZXMuZmlsdGVyKEJvb2xlYW4pIDogW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5jb3VudHJ5RmlsdGVyKTtcbiAgICAgIGNvbnN0IGlzc3VlcyA9IGxpc3QubWFwKChjKSA9PiAoeyBpZDogYywgdGV4dDogYywgY2hlY2tlZDogc2VsZWN0ZWQuaGFzKGMpIH0pKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5zdG9yZUZpbHRlck9iamVjdC5maW5kKChnKSA9PiBnLkRlc2NyaXB0aW9uID09PSAnQ291bnRyeScpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLklzc3VlcyA9IGlzc3VlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmVGaWx0ZXJPYmplY3QgPSBbLi4udGhpcy5zdG9yZUZpbHRlck9iamVjdCwgeyBEZXNjcmlwdGlvbjogJ0NvdW50cnknLCB0eXBlOiAnbXVsdGknLCBJc3N1ZXM6IGlzc3VlcyB9XTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTW91bnQgbGliLWZpbHRlcnMgb25jZSB0aGUgZmlyc3QgcmVzcG9uc2UgaXMgaW4gKFN0YXR1cyBhbG9uZSBpZiB0aGVyZSBhcmVcbiAgICAvLyBubyBjb3VudHJpZXMpLCBzbyBpdCBzbmFwc2hvdHMgdGhlIGZ1bGwgZGF0YU9iamVjdCBvbiBpbml0LlxuICAgIGlmICghdGhpcy5maWx0ZXJzUmVhZHkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1JlYWR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhcHBseVN0b3JlRmlsdGVycyhldmVudDogYW55KSB7XG4gICAgLy8gTXVsdGktc2VsZWN0IFN0YXR1cyAvIENvdW50cnkg4oCUIGxpYi1maWx0ZXJzIGVtaXRzIGVhY2ggZ3JvdXAncyBzZWxlY3RlZFxuICAgIC8vIG9wdGlvbnMgYXMgYW4gQVJSQVkgdW5kZXIgSXNzdWVzIChBcHBseSBzZXRzIElzc3VlcyA9IHNlbGVjdGVkVmFsdWVzQXJyYXlcbiAgICAvLyBbaW5kZXhdKS4gQ29sbGVjdCBldmVyeSBzZWxlY3RlZCBpZCwgdG9sZXJhdGluZyBhcnJheSBhbmQgc2luZ2xlLW9iamVjdFxuICAgIC8vIHNoYXBlcy5cbiAgICBjb25zdCBzdGF0dXNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc3N1ZXMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnQuSXNzdWVzKSA/IGVsZW1lbnQuSXNzdWVzIDogKGVsZW1lbnQuSXNzdWVzID8gW2VsZW1lbnQuSXNzdWVzXSA6IFtdKTtcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdTdGF0dXMnKSB7XG4gICAgICAgICAgaXNzdWVzLmZvckVhY2goKGk6IGFueSkgPT4geyBpZiAoaT8uaWQpIHN0YXR1c2VzLnB1c2goaS5pZCk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5Jykge1xuICAgICAgICAgIGlzc3Vlcy5mb3JFYWNoKChpOiBhbnkpID0+IHsgaWYgKGk/LmlkKSBjb3VudHJpZXMucHVzaChpLmlkKTsgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnN0YXR1c0ZpbHRlciA9IFsuLi5uZXcgU2V0KHN0YXR1c2VzKV07XG4gICAgdGhpcy5jb3VudHJ5RmlsdGVyID0gWy4uLm5ldyBTZXQoY291bnRyaWVzKV07XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcbiAgICB0aGlzLnNvcnRCeSAqPSAtMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFyc2VJbnQocGFnZU9mZnNldCk7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgb25FeHBvcnQoKSB7XG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBzdGF0dXNGaWx0ZXI6IHRoaXMuc3RhdHVzRmlsdGVyLFxuICAgICAgZGF0ZUZpbHRlcjogdGhpcy5kYXRlRmlsdGVyIHx8ICcnLFxuICAgICAgZXhwb3J0OiB0cnVlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nRXhwb3J0KGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsICdkYWlseS1wcmljaW5nJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0S2V5KHN0b3JlSWQ6IHN0cmluZywgcHJvZHVjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3N0b3JlSWR9XyR7cHJvZHVjdE5hbWV9YDtcbiAgfVxuXG4gIGlzRWRpdGluZyhzdG9yZUlkOiBzdHJpbmcsIHByb2R1Y3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nUHJvZHVjdFt0aGlzLmdldEVkaXRLZXkoc3RvcmVJZCwgcHJvZHVjdE5hbWUpXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhcnRFZGl0KHN0b3JlOiBhbnksIHByb2R1Y3Q6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RWRpdEtleShzdG9yZS5zdG9yZUlkLCBwcm9kdWN0LnByb2R1Y3ROYW1lKTtcbiAgICAvLyBDb2VyY2UgdG8gYSBudW1iZXIgc28gYSAwIC8gbWlzc2luZyB2YWx1ZSBzdGlsbCBlbnRlcnMgZWRpdCBtb2RlIHdpdGggYVxuICAgIC8vIGRlZmluZWQgdmFsdWUgKHVuZGVmaW5lZCB3b3VsZCBtYWtlIGlzRWRpdGluZygpIHRoaW5rIHdlJ3JlIG5vdCBlZGl0aW5nKS5cbiAgICB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV0gPSBOdW1iZXIocHJvZHVjdC53b3JraW5nZGF5cykgfHwgMDtcbiAgfVxuXG4gIGNhbmNlbEVkaXQoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gIH1cblxuICBzYXZlV29ya2luZ0RheXMoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gTnVtYmVyKHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XSkgfHwgMDtcblxuICAgIC8vIFVuY2hhbmdlZCDihpIganVzdCBjbG9zZSB0aGUgZWRpdG9yIChjb21wYXJlIGFzIG51bWJlcnMgc28gMCB2cyBcIjBcIiBldGMuXG4gICAgLy8gZG9uJ3Qgc2xpcCB0aHJvdWdoKS5cbiAgICBpZiAobmV3VmFsdWUgPT09IChOdW1iZXIocHJvZHVjdC53b3JraW5nZGF5cykgfHwgMCkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5kYWlseVByaWNpbmdJbmZvLmRhdGVTdHJpbmcsXG4gICAgICBzdG9yZUlkOiBzdG9yZS5zdG9yZUlkLFxuICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QucHJvZHVjdE5hbWUsXG4gICAgICB3b3JraW5nZGF5czogbmV3VmFsdWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS51cGRhdGVEYWlseVByaWNpbmdXb3JraW5nRGF5cyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgcHJvZHVjdC53b3JraW5nZGF5cyA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdXb3JraW5nIGRheXMgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gdXBkYXRlIHdvcmtpbmcgZGF5cycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmllbGRFZGl0S2V5KHN0b3JlSWQ6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtzdG9yZUlkfV8ke2ZpZWxkTmFtZX1gO1xuICB9XG5cbiAgaXNFZGl0aW5nRmllbGQoc3RvcmVJZDogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdGaWVsZFt0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZUlkLCBmaWVsZE5hbWUpXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhcnRGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV0gPSBzdG9yZVtmaWVsZE5hbWVdIHx8IDA7XG4gIH1cblxuICBjYW5jZWxGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICB9XG5cbiAgc2F2ZUZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSBzdG9yZVtmaWVsZE5hbWVdKSB7XG4gICAgICBkZWxldGUgdGhpcy5lZGl0aW5nRmllbGRba2V5XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmRhaWx5UHJpY2luZ0luZm8uZGF0ZVN0cmluZyxcbiAgICAgIHN0b3JlSWQ6IHN0b3JlLnN0b3JlSWQsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiBOdW1iZXIobmV3VmFsdWUpXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlRGFpbHlQcmljaW5nU3RvcmVGaWVsZChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgc3RvcmVbZmllbGROYW1lXSA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICAgICAgICBjb25zdCBmaWVsZExhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgdHJhZmZpY0NhbWVyYUNvdW50OiAnVHJhZmZpYyBjYW1lcmEgY291bnQnLCB6b25lQ2FtZXJhQ291bnQ6ICdab25lIGNhbWVyYSBjb3VudCcsIHpvbmVDb3VudDogJ1pvbmUgY291bnQnIH07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KGAke2ZpZWxkTGFiZWxzW2ZpZWxkTmFtZV0gfHwgZmllbGROYW1lfSB1cGRhdGVkIHN1Y2Nlc3NmdWxseWApO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvckxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgdHJhZmZpY0NhbWVyYUNvdW50OiAndHJhZmZpYyBjYW1lcmEgY291bnQnLCB6b25lQ2FtZXJhQ291bnQ6ICd6b25lIGNhbWVyYSBjb3VudCcsIHpvbmVDb3VudDogJ3pvbmUgY291bnQnIH07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgRmFpbGVkIHRvIHVwZGF0ZSAke2Vycm9yTGFiZWxzW2ZpZWxkTmFtZV0gfHwgZmllbGROYW1lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2VuZXJhdGVJbnZvaWNlKCkge1xuICAgIGlmICghdGhpcy5jbGllbnRJZCkgcmV0dXJuO1xuICAgIC8vIE9wZW4gdGhlIHBpY2tlciBmaXJzdCDigJQgdGhlIHVzZXIgY2hvb3NlcyB3aGljaCBiaWxsaW5nIGdyb3VwcyB0b1xuICAgIC8vIGdlbmVyYXRlIGZvci4gTW9kYWwgY2xvc2VzIHdpdGggeyBncm91cElkcywgb3V0c3RhbmRpbmdHcm91cElkcyB9XG4gICAgLy8gKG9yIGlzIGRpc21pc3NlZCA9IG5vLW9wKS5cbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiB7IGdyb3VwSWRzOiBzdHJpbmdbXTsgb3V0c3RhbmRpbmdHcm91cElkczogc3RyaW5nW10gfSkgPT4ge1xuICAgICAgaWYgKCFyZXN1bHQgfHwgIUFycmF5LmlzQXJyYXkocmVzdWx0Lmdyb3VwSWRzKSB8fCByZXN1bHQuZ3JvdXBJZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0aGlzLnJ1bkludm9pY2VHZW5lcmF0aW9uKHJlc3VsdC5ncm91cElkcywgcmVzdWx0Lm91dHN0YW5kaW5nR3JvdXBJZHMgfHwgW10pO1xuICAgIH0pLmNhdGNoKCgpID0+IHt9KTtcbiAgfVxuXG4gIC8vIE9wZW4gYSBwb3B1cCBsaXN0aW5nIHRoZSBuZXdseSBvbmJvYXJkZWQgc3RvcmVzICh3aXRoIGZpcnN0IGZpbGUgZGF0ZSkuXG4gIC8vIFRoZSBsaXN0IGlzIGFscmVhZHkgbG9hZGVkIHdpdGggdGhlIHBhZ2UsIHNvIG5vIGV4dHJhIEFQSSBjYWxsIGlzIG5lZWRlZC5cbiAgdmlld05ld1N0b3JlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5ld1N0b3Jlc01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZXMgPSB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBydW5JbnZvaWNlR2VuZXJhdGlvbihncm91cElkczogc3RyaW5nW10sIG91dHN0YW5kaW5nR3JvdXBJZHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhbGxDbGllbnQ6IHRydWUsXG4gICAgICBjbGllbnRMaXN0OiBbdGhpcy5jbGllbnRJZF0sXG4gICAgICBncm91cElkcyxcbiAgICAgIG91dHN0YW5kaW5nR3JvdXBJZHMsXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuY3JlYXRlSW52b2ljZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5nZW5lcmF0aW5nSW52b2ljZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChgSW52b2ljZSBnZW5lcmF0ZWQgZm9yICR7Z3JvdXBJZHMubGVuZ3RofSBiaWxsaW5nIGdyb3VwKHMpYCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGluZ0ludm9pY2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gZ2VuZXJhdGUgaW52b2ljZScpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1hdFByb2R1Y3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8vIFRha2UgdGhlIHJhdyBhZ2dyZWdhdGlvbiByb3dzIChhbHJlYWR5IHNvcnRlZCBuZXdlc3QtZmlyc3QgYnkgdGhlIEFQSSkgYW5kXG4gIC8vIGF0dGFjaCAoYSkgYSBodW1hbi1yZWFkYWJsZSBtb250aExhYmVsLCAoYikgdGFnIGZvciB0aGUgbGF0ZXN0IHR3byByb3dzXG4gIC8vIChcIkN1cnJlbnRcIiAvIFwiTGFzdCBnZW5lcmF0ZWRcIikgYW5kIChjKSBkZWx0YXMgdnMgdGhlIGltbWVkaWF0ZWx5IG9sZGVyXG4gIC8vIEN1cnJlbmN5IHN5bWJvbCBmb3IgYSBzdG9yZSdzIGludm9pY2UgYW1vdW50IChtYXRjaGVzIHRoZSBiYWNrZW5kJ3NcbiAgLy8gYmFzZXByaWNpbmcgY3VycmVuY3k7IEFFRCByZW5kZXJlZCBhcyB0ZXh0KS5cbiAgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBzeW1ib2xzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBpbnI6ICfigrknLCBkb2xsYXI6ICckJywgc2luZ2Fwb3JlZG9sbGFyOiAnUyQnLCBldXJvOiAn4oKsJywgYWVkOiAnQUVEICcgfTtcbiAgICByZXR1cm4gc3ltYm9sc1soc3RvcmU/Lmludm9pY2VDdXJyZW5jeSB8fCAnaW5yJykudG9Mb3dlckNhc2UoKV0gfHwgJ+KCuSc7XG4gIH1cblxuICAvLyBtb250aCBzbyB0aGUgdGVtcGxhdGUgY2FuIHJlbmRlciB0aGUg4payL+KWvC/ilqwgdHJlbmQgaW5kaWNhdG9ycy5cbiAgcHJpdmF0ZSBkZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KHJvd3M6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShyb3dzKSB8fCByb3dzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbJ0phbicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddO1xuICAgIGNvbnN0IHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IGlucjogJ+KCuScsIGRvbGxhcjogJyQnLCBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsIGV1cm86ICfigqwnIH07XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBpc0N1cnJlbnQgPSAocjogYW55KSA9PiByLnllYXIgPT09IG5vdy5nZXRGdWxsWWVhcigpICYmIHIubW9udGggPT09IChub3cuZ2V0TW9udGgoKSArIDEpO1xuICAgIHJldHVybiByb3dzLm1hcCgociwgaSkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHJvd3NbaSArIDFdO1xuICAgICAgY29uc3Qgc3RvcmVzRGVsdGEgPSBuZXh0ID8gKHIuc3RvcmVzQmlsbGVkIHx8IDApIC0gKG5leHQuc3RvcmVzQmlsbGVkIHx8IDApIDogbnVsbDtcbiAgICAgIGNvbnN0IGFtb3VudERlbHRhID0gbmV4dCA/IChyLmludm9pY2VBbW91bnQgfHwgMCkgLSAobmV4dC5pbnZvaWNlQW1vdW50IHx8IDApIDogbnVsbDtcbiAgICAgIGxldCB0YWcgPSAnJztcbiAgICAgIGlmIChpc0N1cnJlbnQocikpIHRhZyA9ICdDdXJyZW50JztcbiAgICAgIGVsc2UgaWYgKGkgPT09IDApIHRhZyA9ICdMYXN0IGdlbmVyYXRlZCc7XG4gICAgICBlbHNlIGlmIChpID09PSAxICYmIGlzQ3VycmVudChyb3dzWzBdKSkgdGFnID0gJ0xhc3QgZ2VuZXJhdGVkJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnIsXG4gICAgICAgIG1vbnRoTGFiZWw6IGAke21vbnRoTmFtZXNbKHIubW9udGggfHwgMSkgLSAxXX0gJHtyLnllYXJ9YCxcbiAgICAgICAgdGFnLFxuICAgICAgICBzdG9yZXNEZWx0YSxcbiAgICAgICAgYW1vdW50RGVsdGEsXG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiBzeW1ib2xzWyhyLmN1cnJlbmN5IHx8ICdpbnInKS50b0xvd2VyQ2FzZSgpXSB8fCAnJyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVNb250aGx5U3VtbWFyeUhpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5tb250aGx5U3VtbWFyeUV4cGFuZGVkID0gIXRoaXMubW9udGhseVN1bW1hcnlFeHBhbmRlZDtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJpbnZvaWNlcy1zZWN0aW9uXCI+XG4gICAgPCEtLSBIZWFkZXIgUm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjY2NyAxMEgxMy4zMzMzTTYuNjY2NjcgNi42NjY2N0gxMy4zMzMzTTYuNjY2NjcgMTMuMzMzM0gxME01IDE3LjVIMTVDMTUuOTIwNSAxNy41IDE2LjY2NjcgMTYuNzUzOCAxNi42NjY3IDE1LjgzMzNWNC4xNjY2N0MxNi42NjY3IDMuMjQ2MTkgMTUuOTIwNSAyLjUgMTUgMi41SDVDNC4wNzk1MyAyLjUgMy4zMzMzMyAzLjI0NjE5IDMuMzMzMzMgNC4xNjY2N1YxNS44MzMzQzMuMzMzMzMgMTYuNzUzOCA0LjA3OTUzIDE3LjUgNSAxNy41WlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmlsbGluZ2hlYWRlclwiPkJpbGxpbmcgQnJlYWtkb3duPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrIG1zLTFcIj57eyB0b3RhbEl0ZW1zIH19IHN0b3Jlczwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiICpuZ0lmPVwiZGFpbHlQcmljaW5nSW5mbz8uZGF0ZVN0cmluZ1wiPlxuICAgICAgICAgICAgICAgIERhdGU6IDxzdHJvbmc+e3sgZGFpbHlQcmljaW5nSW5mbz8uZGF0ZVN0cmluZyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPnw8L3NwYW4+XG4gICAgICAgICAgICAgICAgQWN0aXZlIFN0b3JlczogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5hY3RpdmVTdG9yZXMgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj58PC9zcGFuPlxuICAgICAgICAgICAgICAgIEFjY291bnQgVHlwZTogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5hY2NvdW50VHlwZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZGF0ZS1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0ZUZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25EYXRlRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieSBkYXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGVGaWx0ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckRhdGVGaWx0ZXIoKVwiIHRpdGxlPVwiQ2xlYXIgZGF0ZSBmaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjUgMy41TDMuNSAxMC41TTMuNSAzLjVMMTAuNSAxMC41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZW5lcmF0ZUludm9pY2UoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYWxpZ24taXRlbXMtZW5kIHRleHQtbm93cmFwIGludmhlYWRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdG9yZUxpc3QubGVuZ3RoIHx8IGdlbmVyYXRpbmdJbnZvaWNlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjY2NyAxMEgxMy4zMzMzTTYuNjY2NjcgNi42NjY2N0gxMy4zMzMzTTYuNjY2NjcgMTMuMzMzM0gxME01IDE3LjVIMTVDMTUuOTIwNSAxNy41IDE2LjY2NjcgMTYuNzUzOCAxNi42NjY3IDE1LjgzMzNWNC4xNjY2N0MxNi42NjY3IDMuMjQ2MTkgMTUuOTIwNSAyLjUgMTUgMi41SDVDNC4wNzk1MyAyLjUgMy4zMzMzMyAzLjI0NjE5IDMuMzMzMzMgNC4xNjY2N1YxNS44MzMzQzMuMzMzMzMgMTYuNzUzOCA0LjA3OTUzIDE3LjUgNSAxNy41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+e3sgZ2VuZXJhdGluZ0ludm9pY2UgPyAnR2VuZXJhdGluZy4uLicgOiAnR2VuZXJhdGUgSW52b2ljZScgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkV4cG9ydCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0b3JlTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+RXhwb3J0PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXdseSBPbmJvYXJkZWQgU3RvcmVzIOKAlCBzdG9yZXMgd2hvc2UgZmlyc3QgZmlsZSBkYXRlIGlzIGluIHRoZSBjdXJyZW50IG1vbnRoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3bHktb25ib2FyZGVkLWNhcmRcIlxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNHB4O2JvcmRlcjoxcHggc29saWQgI0U0RTdFQztib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDE4cHg7YmFja2dyb3VuZDojZmZmO21pbi13aWR0aDoyNDBweDtcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I0VBRjhGRjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAyMVY4bDktNSA5IDV2MTNNMyAyMWgxOE0zIDIxSDFtMjAgMGgyTTkgMjF2LTZoNnY2TTEyIDcuNWguMDFcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MjRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzEwMTgyODtsaW5lLWhlaWdodDoxLjE7XCI+e3sgbmV3bHlPbmJvYXJkZWRTdG9yZXMgfCBudW1iZXI6JzEuMC0wJzonZW4tSU4nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjcwODU7XCI+TmV3bHkgT25ib2FyZGVkIFN0b3JlczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MTFweDtjb2xvcjojOThBMkIzO1wiPkZpcnN0IGZpbGUgaW4gY3VycmVudCBtb250aDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBtcy0zXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIW5ld2x5T25ib2FyZGVkU3RvcmVzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld05ld1N0b3JlcygpXCI+VmlldyBTdG9yZXM8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBpbnZvaWNlIHRyZW5kIChuZXdlc3QgZmlyc3QsIHdpdGggZGVsdGFzIHZzIHByaW9yIG1vbnRoKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhseS1iaWxsaW5nLXN1bW1hcnlcIiAqbmdJZj1cIm1vbnRobHlCaWxsaW5nU3VtbWFyeT8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtc3VtLWhlYWRlclwiPk1vbnRobHkgQmlsbGluZyBTdW1tYXJ5PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TU9OVEg8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5VTUJFUiBPRiBTVE9SRVMgQklMTEVEPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JTlZPSUNFIEFNT1VOVDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBtb250aGx5QmlsbGluZ1N1bW1hcnk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImkgPCAyIHx8IG1vbnRobHlTdW1tYXJ5RXhwYW5kZWRcIiBbY2xhc3MuY3Vycl09XCJyb3cudGFnID09PSAnQ3VycmVudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm93Lm1vbnRoTGFiZWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cudGFnID09PSAnQ3VycmVudCdcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXMtMlwiPkN1cnJlbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnRhZyA9PT0gJ0xhc3QgZ2VuZXJhdGVkJ1wiIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrIG1zLTJcIj5MYXN0IGdlbmVyYXRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cuc3RvcmVzQmlsbGVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnN0b3Jlc0RlbHRhICE9PSBudWxsXCIgY2xhc3M9XCJpbmQgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXBdPVwicm93LnN0b3Jlc0RlbHRhID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG93bl09XCJyb3cuc3RvcmVzRGVsdGEgPCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGF0XT1cInJvdy5zdG9yZXNEZWx0YSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5zdG9yZXNEZWx0YSA+IDBcIj7ilrIge3sgcm93LnN0b3Jlc0RlbHRhIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LnN0b3Jlc0RlbHRhIDwgMFwiPuKWvCB7eyAtcm93LnN0b3Jlc0RlbHRhIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PuKWrCAwPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IHJvdy5pbnZvaWNlQW1vdW50IHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5hbW91bnREZWx0YSAhPT0gbnVsbFwiIGNsYXNzPVwiaW5kIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnVwXT1cInJvdy5hbW91bnREZWx0YSA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvd25dPVwicm93LmFtb3VudERlbHRhIDwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxhdF09XCJyb3cuYW1vdW50RGVsdGEgPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuYW1vdW50RGVsdGEgPiAwXCI+4payIHt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IHJvdy5hbW91bnREZWx0YSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuYW1vdW50RGVsdGEgPCAwXCI+4pa8IHt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IC1yb3cuYW1vdW50RGVsdGEgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PuKWrCAwPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb250aGx5QmlsbGluZ1N1bW1hcnkubGVuZ3RoID4gMlwiIGNsYXNzPVwibXN1bS10b2dnbGVcIiAoY2xpY2spPVwidG9nZ2xlTW9udGhseVN1bW1hcnlIaXN0b3J5KClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9udGhseVN1bW1hcnlFeHBhbmRlZFwiPuKWviBTaG93IG9sZGVyIG1vbnRocyAoe3sgbW9udGhseUJpbGxpbmdTdW1tYXJ5Lmxlbmd0aCAtIDIgfX0pPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVN1bW1hcnlFeHBhbmRlZFwiPuKWtCBIaWRlIG9sZGVyIG1vbnRoczwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQWRkaXRpb25hbCBQcm9kdWN0cyDigJQgbm9uLXN0YW5kYXJkIHByb2R1Y3RzIGJpbGxlZCBmb3IgdGhpcyBjbGllbnQgb25seVxuICAgICAgICAgKGUuZy4gY2xpZW50SWQgMTE6IEV5ZXRlc3QsIFBsYW5vZ3JhbSkuIEhpZGRlbiB3aGVuIHRoZSBjbGllbnQgaGFzIG5vbmUuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb250aGx5LWJpbGxpbmctc3VtbWFyeVwiICpuZ0lmPVwiYWRkaXRpb25hbFByb2R1Y3RzPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zdW0taGVhZGVyXCI+QWRkaXRpb25hbCBQcm9kdWN0czwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWItMFwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3QgTmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlF1YW50aXR5PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UHJpY2U8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5Ub3RhbDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPkFjdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBhZGRpdGlvbmFsUHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBwLnByb2R1Y3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcC5xdWFudGl0eSB8IG51bWJlcjonMS4wLTAnOidlbi1JTicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyAoYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3kgPT09ICdkb2xsYXInID8gJyQnIDogJ+KCuScpIH19e3sgcC5wcmljZSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBwLnRvdGFsIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FeHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwLnByb2R1Y3ROYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwLnByb2R1Y3ROYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCIgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+R3JhbmQgVG90YWw8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggKyBGaWx0ZXIgUm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwYXltZW50aGlzdG9yeSBib3JkZXItMCBweC0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gaW52b2ljZXNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG10LTYgbXMtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwibGVuXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBpbnZvaWNlc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3RvcmUgbmFtZSBvciBJRC4uLlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2VhcmNoRmllbGQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VhcmNoRGlzYWJsZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJzUmVhZHlcIiBbZGF0YU9iamVjdF09XCJzdG9yZUZpbHRlck9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseVN0b3JlRmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTG9hZGluZyBTaGltbWVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZUxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIE5vIERhdGEgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlTm9EYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFN0b3JlcyBUYWJsZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXN0b3JlTG9hZGluZyAmJiAhc3RvcmVOb0RhdGFcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWNjb3JkaW9uIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdzdG9yZU5hbWUnKVwiPlNUT1JFIE5BTUVcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlNUT1JFIElEPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPkNPVU5UUlk8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+UFJPRFVDVFM8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgndHJhZmZpY0NhbWVyYUNvdW50JylcIj5UUkFGRklDIENBTUVSQVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3RyYWZmaWNDYW1lcmFDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd0cmFmZmljQ2FtZXJhQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3pvbmVDYW1lcmFDb3VudCcpXCI+Wk9ORSBDQU1FUkFTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ2FtZXJhQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNhbWVyYUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd6b25lQ291bnQnKVwiPlpPTkVTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5GSVJTVCBGSUxFIERBVEU8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGF5c0RpZmZlcmVuY2UnKVwiPldPUktJTkcgREFZU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZGF5c0RpZmZlcmVuY2UnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGF5c0RpZmZlcmVuY2UnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlNUQVRVUzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+SU5WT0lDRSBBTU9VTlQ8L3RoPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSB0YWJsZS10aXRsZS1wcmltYXJ5XCI+e3sgc3RvcmU/LnN0b3JlTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uc3RvcmVJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uY291bnRyeSB8fCAn4oCUJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBzdG9yZT8ucHJvZHVjdHNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kdWN0Py5wcm9kdWN0TmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlPy50cmFmZmljQ2FtZXJhQ291bnQgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nRmllbGRbZ2V0RmllbGRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCAndHJhZmZpY0NhbWVyYUNvdW50JyldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZT8uem9uZUNhbWVyYUNvdW50IHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ0ZpZWxkW2dldEZpZWxkRWRpdEtleShzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDYW1lcmFDb3VudCcpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmU/LnpvbmVDb3VudCB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdGaWVsZFtnZXRGaWVsZEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsICd6b25lQ291bnQnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgc3RvcmU/LmVkZ2VmaXJzdEZpbGVEYXRlID8gKHN0b3JlPy5lZGdlZmlyc3RGaWxlRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScpIDogJ+KAlCcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2Ygc3RvcmU/LnByb2R1Y3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsIHRleHQtbXV0ZWRcIj57eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kdWN0Py5wcm9kdWN0TmFtZSkgfX06PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVmlldyBtb2RlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZyhzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHByb2R1Y3Q/LndvcmtpbmdkYXlzIHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RWRpdChzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgbW9kZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZyhzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdQcm9kdWN0W2dldEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsIHByb2R1Y3Q/LnByb2R1Y3ROYW1lKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVXb3JraW5nRGF5cyhzdG9yZSwgcHJvZHVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxFZGl0KHN0b3JlLCBwcm9kdWN0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZVdvcmtpbmdEYXlzKHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRWRpdChzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiIFtuZ0NsYXNzXT1cInN0b3JlPy5zdGF0dXMgPT09ICdhY3RpdmUnID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZT8uc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyLXByb2R1Y3QgYnJlYWtkb3duIChUcmFmZmljOiDigrl4LCBab25lOiDigrl5IOKApikgKyB0b3RhbC4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBiIG9mIHN0b3JlPy5pbnZvaWNlQnJlYWtkb3duXCIgY2xhc3M9XCJpbnYtYnJlYWtkb3duLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52LWJyZWFrZG93bi1sYWJlbFwiPnt7IGIubGFiZWwgfX06PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3JlQ3VycmVuY3lTeW1ib2woc3RvcmUpIH19e3sgKGIuYW1vdW50IHx8IDApIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgaW52LWJyZWFrZG93bi10b3RhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZSkgfX17eyAoc3RvcmU/Lmludm9pY2VBbW91bnQgfHwgMCkgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzdG9yZUxvYWRpbmcgJiYgIXN0b3JlTm9EYXRhXCI+XG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -4596,11 +4596,19 @@ class DailyPricingComponent {
|
|
|
4596
4596
|
// export endpoint understands. Add more as their queries are wired up.
|
|
4597
4597
|
exportableProducts = {
|
|
4598
4598
|
'eyetest': 'eyetest',
|
|
4599
|
+
'eyetest (additional storage)': 'eyetestadditionalstorage',
|
|
4599
4600
|
'planogram': 'planogram',
|
|
4600
4601
|
'ai manager': 'aimanager',
|
|
4601
4602
|
'vms': 'vms',
|
|
4603
|
+
// 'Run AI' is displayed as 'AI in checklist'; both map to the same export
|
|
4604
|
+
// key so the download works whichever label the API returns.
|
|
4602
4605
|
'run ai': 'runai',
|
|
4606
|
+
'ai in checklist': 'runai',
|
|
4603
4607
|
'remote optum': 'remoteoptum',
|
|
4608
|
+
// Factory QC (FactoryQC_billing Lambda). Day-scoped: the Lambda takes only
|
|
4609
|
+
// report_date, so this export covers the snapshot date shown on the card
|
|
4610
|
+
// rather than month-to-date like Remote Optum.
|
|
4611
|
+
'factory': 'factory',
|
|
4604
4612
|
};
|
|
4605
4613
|
canExportAdditionalProduct(productName) {
|
|
4606
4614
|
return !!this.exportableProducts[(productName || '').toLowerCase()];
|