@hestia-earth/ui-components 0.0.16 → 0.0.17
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.
- package/bundles/hestia-earth-ui-components.umd.js +31 -37
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/utils.d.ts +3 -4
- package/cycles/cycles-activity/cycles-activity.component.d.ts +1 -1
- package/cycles/cycles-emissions/cycles-emissions.component.d.ts +1 -1
- package/cycles/cycles-emissions-chart/cycles-emissions-chart.component.d.ts +3 -3
- package/cycles/cycles-practices/cycles-practices.component.d.ts +1 -1
- package/esm2015/common/utils.js +7 -12
- package/esm2015/cycles/cycles-activity/cycles-activity.component.js +2 -2
- package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +2 -2
- package/esm2015/cycles/cycles-emissions-chart/cycles-emissions-chart.component.js +6 -5
- package/esm2015/cycles/cycles-practices/cycles-practices.component.js +2 -2
- package/esm2015/cycles/cycles-result/cycles-result.component.js +3 -3
- package/esm2015/files/files-error.model.js +3 -1
- package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +2 -2
- package/esm2015/node/node-logs-models/node-logs-models.component.js +4 -4
- package/esm2015/node/node-value-details/node-value-details.component.js +5 -4
- package/esm2015/sites/sites-measurements/sites-measurements.component.js +2 -2
- package/esm2015/sites/sites.model.js +3 -3
- package/fesm2015/hestia-earth-ui-components.js +28 -29
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +1 -1
- package/package.json +5 -4
- package/sites/sites-measurements/sites-measurements.component.d.ts +1 -1
- package/sites/sites.model.d.ts +1 -1
|
@@ -99,7 +99,7 @@ export class CyclesPracticesComponent {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
CyclesPracticesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesPracticesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
CyclesPracticesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesComponent, selector: "he-cycles-practices", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"practices.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && cycles.length === 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <div class=\"has-text-right mb-2\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{practices.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.name\"\n >\n <he-node-link [node]=\"practice.value.term\">\n <span>{{practice.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.units\"\n >{{practice.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let practice of practices\">\n <span *ngIf=\"practice.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: practice.value.values[cycle['@id']], cycle: cycle, key: 'practices' })\"\n >\n <span pointer>{{propertyValue(practice.value.values[cycle['@id']].value) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-practices-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.practices\"\n [recalculatedValues]=\"cycles[0]?.practices\"\n ></he-cycles-practices-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-practices.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.practices.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: [""], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i2.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i3.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { type: i4.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }, { type: i5.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { type: i6.CyclesSuggestFormComponent, selector: "he-cycles-suggest-form", inputs: ["cycles"], outputs: ["cycleAdded"] }, { type: i7.CyclesPracticesLogsComponent, selector: "he-cycles-practices-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { type: i8.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i9.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "ellipsis": i12.EllipsisPipe, "default": i13.DefaultPipe, "precision": i14.PrecisionPipe } });
|
|
102
|
+
CyclesPracticesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesComponent, selector: "he-cycles-practices", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"practices.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && cycles.length === 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <div class=\"has-text-right mb-2\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{practices.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.name\"\n >\n <he-node-link [node]=\"practice.value.term\">\n <span>{{practice.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.units\"\n >{{practice.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let practice of practices\">\n <span *ngIf=\"practice.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: practice.value.values[cycle['@id']], cycle: cycle, key: 'practices' })\"\n >\n <span pointer>{{propertyValue(practice.value.values[cycle['@id']].value, practice.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-practices-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.practices\"\n [recalculatedValues]=\"cycles[0]?.practices\"\n ></he-cycles-practices-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-practices.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.practices.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["label.checkbox{width:20px}td he-node-link{width:160px}table.data-table td:first-child{border-left-width:8px}fa-icon{display:inline-block;width:10px}\n"], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i2.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i3.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { type: i4.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }, { type: i5.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { type: i6.CyclesSuggestFormComponent, selector: "he-cycles-suggest-form", inputs: ["cycles"], outputs: ["cycleAdded"] }, { type: i7.CyclesPracticesLogsComponent, selector: "he-cycles-practices-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { type: i8.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i9.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "ellipsis": i12.EllipsisPipe, "default": i13.DefaultPipe, "precision": i14.PrecisionPipe } });
|
|
103
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesPracticesComponent, decorators: [{
|
|
104
104
|
type: Component,
|
|
105
105
|
args: [{
|
|
@@ -116,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
116
116
|
}], enableCompare: [{
|
|
117
117
|
type: Input
|
|
118
118
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBSDdDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBSzFDLElBQUssSUFHSjtBQUhELFdBQUssSUFBSTtJQUNQLHVCQUFlLENBQUE7SUFDZixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhJLElBQUksS0FBSixJQUFJLFFBR1I7QUFPRCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBT1MsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBSTVCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFHLElBQUksQ0FBQyxLQUFL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S0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7c0hBMUZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHdNQ2xCckMsd3pLQThIQTs0RkQ1R2Esd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBQcmFjdGljZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmNvbnN0IG9yZGVyQnkgPSByZXF1aXJlKCdsb2Rhc2gub3JkZXJieScpO1xuXG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cywgaXRlbUNvbG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGxvZ3MgPSAnbG9ncydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLXByYWN0aWNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtcHJhY3RpY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc1ByYWN0aWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBpdGVtQ29sb3IgPSBpdGVtQ29sb3I7XG4gIHB1YmxpYyBzaG93RG93bmxvYWQgPSBmYWxzZTtcbiAgcHVibGljIFZpZXcgPSBWaWV3O1xuICBwdWJsaWMgc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgcHVibGljIHNlbGVjdGVkQ3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuXG4gIHB1YmxpYyBwcmFjdGljZXM6IElHcm91cGVkS2V5czxQcmFjdGljZT5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2N5Y2xlcycgaW4gY2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgcHJhY3RpY2VzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgUHJhY3RpY2U+KHRoaXMuY3ljbGVzLCAncHJhY3RpY2VzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5wcmFjdGljZXMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhwcmFjdGljZXNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIHRoaXMuc2VsZWN0QWxsQ3ljbGVzKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgLy8gQWRkIGZyb20gc3VnZ2VzdGlvblxuXG4gIHB1YmxpYyBhc3luYyBhZGRDeWNsZShjeWNsZTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgdGhpcy5jeWNsZXMgPSBbXG4gICAgICAuLi50aGlzLmN5Y2xlcyxcbiAgICAgIGN5Y2xlXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIC8vIEN5Y2xlIHNlbGVjdGlvblxuXG4gIHByaXZhdGUgc2VsZWN0QWxsQ3ljbGVzKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMgPSB0aGlzLmN5Y2xlcy5zbGljZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNlbGVjdEFsbEN5Y2xlcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gW107XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsQ3ljbGVzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ3ljbGVzLmxlbmd0aCA/IHRoaXMuc2VsZWN0QWxsQ3ljbGVzKCkgOiB0aGlzLnVuc2VsZWN0QWxsQ3ljbGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEN5Y2xlKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gW1xuICAgICAgLi4udGhpcy5zZWxlY3RlZEN5Y2xlcyxcbiAgICAgIGN5Y2xlXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zZWxlY3RDeWNsZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEN5Y2xlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMgPSB0aGlzLnNlbGVjdGVkQ3ljbGVzLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ3ljbGUoY3ljbGU6IElDeWNsZUpTT05MRCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEN5Y2xlcy5pbmRleE9mKGN5Y2xlKTtcbiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMudW5zZWxlY3RDeWNsZShpbmRleCkgOiB0aGlzLnNlbGVjdEN5Y2xlKGN5Y2xlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEN5Y2xlcy5pbmNsdWRlcyhjeWNsZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwcmFjdGljZXMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtMiBtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsaXN0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbCAmJiBjeWNsZXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3NcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5sb2dzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5SZWNhbGN1bGF0aW9ucyBsb2dzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcudGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtcmlnaHQgbWItMlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1kYXJrIGlzLW91dGxpbmVkIGlzLXNtYWxsXCIgKGNsaWNrKT1cInNob3dEb3dubG9hZCA9IHRydWVcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImRvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5Eb3dubG9hZCAoQ1NWKTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciBkYXRhLXRhYmxlLWNvbnRhaW5lciBtYi0xXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1uYXJyb3cgZGF0YS10YWJsZSBoYXMtY2hpbGRyZW4te3twcmFjdGljZXMubGVuZ3RofX1cIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByYWN0aWNlLnZhbHVlLnRlcm0ubmFtZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwicHJhY3RpY2UudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJhY3RpY2UudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9DeWNsZSNmdW5jdGlvbmFsVW5pdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GdW5jdGlvbmFsIHVuaXQ8L2E+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBwcmFjdGljZSBvZiBwcmFjdGljZXNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcmFjdGljZS52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgID57e3ByYWN0aWNlLnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY3ljbGUgb2YgY3ljbGVzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG9cIiBbYXR0ci50aXRsZV09XCJjeWNsZS5uYW1lXCIgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIml0ZW1Db2xvcihpKVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUN5Y2xlKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrXCIgW25vZGVdPVwiY3ljbGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tjeWNsZS5uYW1lIHx8IGN5Y2xlLmlkfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVzWzBdXCI+PC9oZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByYWN0aWNlLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogcHJhY3RpY2UudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiAncHJhY3RpY2VzJyB9KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPnt7cHJvcGVydHlWYWx1ZShwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS52YWx1ZSkgfCBwcmVjaXNpb246MyB8IGRlZmF1bHQ6Jy0nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgIFtub2RlXT1cInByYWN0aWNlLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLm5vZGVzWzBdXCJcbiAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCIgW3Nob3dEZWxldGVkXT1cInRydWVcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuXG4gICAgPGhlLWN5Y2xlcy1zdWdnZXN0LWZvcm0gKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgW2N5Y2xlc109XCJjeWNsZXNcIiAoY3ljbGVBZGRlZCk9XCJhZGRDeWNsZSgkZXZlbnQpXCI+PC9oZS1jeWNsZXMtc3VnZ2VzdC1mb3JtPlxuICA8L2Rpdj5cblxuICA8aGUtY3ljbGVzLXByYWN0aWNlcy1sb2dzICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3MgJiYgIWlzT3JpZ2luYWxcIlxuICAgIFtjeWNsZV09XCJjeWNsZXNbMF1cIlxuICAgIFtvcmlnaW5hbFZhbHVlc109XCJvcmlnaW5hbFZhbHVlc1swXT8ucHJhY3RpY2VzXCJcbiAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cImN5Y2xlc1swXT8ucHJhY3RpY2VzXCJcbiAgPjwvaGUtY3ljbGVzLXByYWN0aWNlcy1sb2dzPlxuPC9uZy1jb250YWluZXI+XG5cbjxoZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybSAqbmdJZj1cInNob3dEb3dubG9hZFwiXG4gIFtub2Rlc109XCJjeWNsZXNcIiBmaWxlbmFtZT1cImN5Y2xlLXByYWN0aWNlcy5jc3ZcIiBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJbJ2N5Y2xlLmlkJywgJ2N5Y2xlLkBpZCcsICdjeWNsZS5wcmFjdGljZXMuJ11cIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCJcbj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9ja1wiPlxuICAgIDxzcGFuPk5vIGRhdGE8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVZhbHVlPlxuICA8c3Bhbj4tPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxzIGxldC1ub2RlPVwiY3ljbGVcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwia2V5XCI+XG4gIDxwPjxiPnt7bm9kZS5uYW1lfX08L2I+PC9wPlxuICA8aGUtbm9kZS12YWx1ZS1kZXRhaWxzXG4gICAgW2RhdGFdPVwiZGF0YVwiIFtub2RlVHlwZV09XCJub2RlWydAdHlwZSddXCIgW2RhdGFLZXldPVwia2V5XCJcbiAgPjwvaGUtbm9kZS12YWx1ZS1kZXRhaWxzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBSDdDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBSzFDLElBQUssSUFHSjtBQUhELFdBQUssSUFBSTtJQUNQLHVCQUFlLENBQUE7SUFDZixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhJLElBQUksS0FBSixJQUFJLFFBR1I7QUFPRCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBT1MsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBSTVCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFHLElBQUksQ0FBQyxLQUFL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S0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7c0hBMUZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHdNQ2xCckMsbzFLQThIQTs0RkQ1R2Esd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBQcmFjdGljZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmNvbnN0IG9yZGVyQnkgPSByZXF1aXJlKCdsb2Rhc2gub3JkZXJieScpO1xuXG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cywgaXRlbUNvbG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGxvZ3MgPSAnbG9ncydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLXByYWN0aWNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtcHJhY3RpY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc1ByYWN0aWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBpdGVtQ29sb3IgPSBpdGVtQ29sb3I7XG4gIHB1YmxpYyBzaG93RG93bmxvYWQgPSBmYWxzZTtcbiAgcHVibGljIFZpZXcgPSBWaWV3O1xuICBwdWJsaWMgc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgcHVibGljIHNlbGVjdGVkQ3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuXG4gIHB1YmxpYyBwcmFjdGljZXM6IElHcm91cGVkS2V5czxQcmFjdGljZT5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2N5Y2xlcycgaW4gY2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgcHJhY3RpY2VzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgUHJhY3RpY2U+KHRoaXMuY3ljbGVzLCAncHJhY3RpY2VzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5wcmFjdGljZXMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhwcmFjdGljZXNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIHRoaXMuc2VsZWN0QWxsQ3ljbGVzKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgLy8gQWRkIGZyb20gc3VnZ2VzdGlvblxuXG4gIHB1YmxpYyBhc3luYyBhZGRDeWNsZShjeWNsZTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgdGhpcy5jeWNsZXMgPSBbXG4gICAgICAuLi50aGlzLmN5Y2xlcyxcbiAgICAgIGN5Y2xlXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIC8vIEN5Y2xlIHNlbGVjdGlvblxuXG4gIHByaXZhdGUgc2VsZWN0QWxsQ3ljbGVzKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMgPSB0aGlzLmN5Y2xlcy5zbGljZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNlbGVjdEFsbEN5Y2xlcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gW107XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsQ3ljbGVzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ3ljbGVzLmxlbmd0aCA/IHRoaXMuc2VsZWN0QWxsQ3ljbGVzKCkgOiB0aGlzLnVuc2VsZWN0QWxsQ3ljbGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEN5Y2xlKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gW1xuICAgICAgLi4udGhpcy5zZWxlY3RlZEN5Y2xlcyxcbiAgICAgIGN5Y2xlXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zZWxlY3RDeWNsZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEN5Y2xlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMgPSB0aGlzLnNlbGVjdGVkQ3ljbGVzLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ3ljbGUoY3ljbGU6IElDeWNsZUpTT05MRCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEN5Y2xlcy5pbmRleE9mKGN5Y2xlKTtcbiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMudW5zZWxlY3RDeWNsZShpbmRleCkgOiB0aGlzLnNlbGVjdEN5Y2xlKGN5Y2xlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEN5Y2xlcy5pbmNsdWRlcyhjeWNsZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwcmFjdGljZXMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtMiBtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsaXN0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbCAmJiBjeWNsZXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3NcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5sb2dzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5SZWNhbGN1bGF0aW9ucyBsb2dzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcudGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtcmlnaHQgbWItMlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1kYXJrIGlzLW91dGxpbmVkIGlzLXNtYWxsXCIgKGNsaWNrKT1cInNob3dEb3dubG9hZCA9IHRydWVcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImRvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5Eb3dubG9hZCAoQ1NWKTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciBkYXRhLXRhYmxlLWNvbnRhaW5lciBtYi0xXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1uYXJyb3cgZGF0YS10YWJsZSBoYXMtY2hpbGRyZW4te3twcmFjdGljZXMubGVuZ3RofX1cIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByYWN0aWNlLnZhbHVlLnRlcm0ubmFtZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwicHJhY3RpY2UudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJhY3RpY2UudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9DeWNsZSNmdW5jdGlvbmFsVW5pdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GdW5jdGlvbmFsIHVuaXQ8L2E+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBwcmFjdGljZSBvZiBwcmFjdGljZXNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcmFjdGljZS52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgID57e3ByYWN0aWNlLnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY3ljbGUgb2YgY3ljbGVzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG9cIiBbYXR0ci50aXRsZV09XCJjeWNsZS5uYW1lXCIgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIml0ZW1Db2xvcihpKVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUN5Y2xlKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrXCIgW25vZGVdPVwiY3ljbGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tjeWNsZS5uYW1lIHx8IGN5Y2xlLmlkfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVzWzBdXCI+PC9oZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByYWN0aWNlLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogcHJhY3RpY2UudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiAncHJhY3RpY2VzJyB9KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPnt7cHJvcGVydHlWYWx1ZShwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS52YWx1ZSwgcHJhY3RpY2UudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiXG4gICAgICAgICAgICAgICAgICBbbm9kZV09XCJwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS5ub2Rlc1swXVwiXG4gICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgPjwvaGUtYmxhbmstbm9kZS1zdGF0ZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cblxuICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZSBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiIFtzaG93RGVsZXRlZF09XCJ0cnVlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cblxuICAgIDxoZS1jeWNsZXMtc3VnZ2VzdC1mb3JtICpuZ0lmPVwiZW5hYmxlQ29tcGFyZVwiIFtjeWNsZXNdPVwiY3ljbGVzXCIgKGN5Y2xlQWRkZWQpPVwiYWRkQ3ljbGUoJGV2ZW50KVwiPjwvaGUtY3ljbGVzLXN1Z2dlc3QtZm9ybT5cbiAgPC9kaXY+XG5cbiAgPGhlLWN5Y2xlcy1wcmFjdGljZXMtbG9ncyAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCJcbiAgICBbY3ljbGVdPVwiY3ljbGVzWzBdXCJcbiAgICBbb3JpZ2luYWxWYWx1ZXNdPVwib3JpZ2luYWxWYWx1ZXNbMF0/LnByYWN0aWNlc1wiXG4gICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJjeWNsZXNbMF0/LnByYWN0aWNlc1wiXG4gID48L2hlLWN5Y2xlcy1wcmFjdGljZXMtbG9ncz5cbjwvbmctY29udGFpbmVyPlxuXG48aGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0gKm5nSWY9XCJzaG93RG93bmxvYWRcIlxuICBbbm9kZXNdPVwiY3ljbGVzXCIgZmlsZW5hbWU9XCJjeWNsZS1wcmFjdGljZXMuY3N2XCIgW2lzVXBsb2FkXT1cImZhbHNlXCJcbiAgW2hlYWRlcktleXNdPVwiWydjeWNsZS5pZCcsICdjeWNsZS5AaWQnLCAnY3ljbGUucHJhY3RpY2VzLiddXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwicGFuZWwtYmxvY2tcIj5cbiAgICA8c3Bhbj5ObyBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImN5Y2xlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD48Yj57e25vZGUubmFtZX19PC9iPjwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -22,14 +22,14 @@ export class CyclesResultComponent {
|
|
|
22
22
|
init() {
|
|
23
23
|
const labels = this.cycles.map(({ name }, index) => `${index + 1}. ${name}`);
|
|
24
24
|
const productsPerCycle = groupNodesByTerm(this.cycles, 'products');
|
|
25
|
-
const datasets = Object.values(productsPerCycle).map(({ term: { name, units }, values }, index) => {
|
|
25
|
+
const datasets = Object.values(productsPerCycle).map(({ term: { name, units, '@id': termId }, values }, index) => {
|
|
26
26
|
const color = itemColor(index);
|
|
27
27
|
return {
|
|
28
28
|
label: `${name}${units ? ` (in ${units})` : ''}`,
|
|
29
29
|
backgroundColor: color,
|
|
30
30
|
borderColor: color,
|
|
31
31
|
barPercentage: 0.5,
|
|
32
|
-
data: this.cycles.map(({ '@id': id }) => values[id] ? propertyValue(values[id].value) : 0)
|
|
32
|
+
data: this.cycles.map(({ '@id': id }) => values[id] ? propertyValue(values[id].value, termId) : 0)
|
|
33
33
|
};
|
|
34
34
|
});
|
|
35
35
|
this.updateChart(datasets, labels);
|
|
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
89
89
|
}], cycles: [{
|
|
90
90
|
type: Input
|
|
91
91
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU8xRixNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBVVUsV0FBTSxHQUFtQixFQUFFLENBQUM7S0F1RXJDO0lBckVDLGVBQWU7UUFDYixLQUFLLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUNqRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFTyxJQUFJO1FBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFF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VixNQUFNO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBQcm9kdWN0IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbmltcG9ydCB7IHByb3BlcnR5VmFsdWUsIGVsbGlwc2lzLCBncm91cE5vZGVzQnlUZXJtLCBpdGVtQ29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1jeWNsZXMtcmVzdWx0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1yZXN1bHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtcmVzdWx0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuICBASW5wdXQoKVxuICBwcml2YXRlIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgQ2hhcnQuc2NhbGVTZXJ2aWNlLnVwZGF0ZVNjYWxlRGVmYXVsdHMoJ2NhdGVnb3J5Jywge1xuICAgICAgdGlja3M6IHtcbiAgICAgICAgY2FsbGJhY2s6IHRpY2sgPT4gZWxsaXBzaXMoYCR7dGlja31gLCAyNSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuY3ljbGVzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuY3ljbGVzLm1hcCgoeyBuYW1lIH0sIGluZGV4KSA9PiBgJHtpbmRleCArIDF9LiAke25hbWV9YCk7XG4gICAgY29uc3QgcHJvZHVjdHNQZXJDeWNsZSA9IGdyb3VwTm9kZXNCeVRlcm08SUN5Y2xlSlNPTkxELCBQcm9kdWN0Pih0aGlzLmN5Y2xlcywgJ3Byb2R1Y3RzJyk7XG4gICAgY29uc3QgZGF0YXNldHMgPSBPYmplY3QudmFsdWVzKHByb2R1Y3RzUGVyQ3ljbGUpLm1hcCgoeyB0ZXJtOiB7IG5hbWUsIHVuaXRzLCAnQGlkJzogdGVybUlkIH0sIHZhbHVlcyB9LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29sb3IgPSBpdGVtQ29sb3IoaW5kZXgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IGAke25hbWV9JHt1bml0cyA/IGAgKGluICR7dW5pdHN9KWAgOiAnJ31gLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgICBib3JkZXJDb2xvcjogY29sb3IsXG4gICAgICAgIGJhclBlcmNlbnRhZ2U6IDAuNSxcbiAgICAgICAgZGF0YTogdGhpcy5jeWNsZXMubWFwKCh7ICdAaWQnOiBpZCB9KSA9PiB2YWx1ZXNbaWRdID8gcHJvcGVydHlWYWx1ZSh2YWx1ZXNbaWRdLnZhbHVlLCB0ZXJtSWQpIDogMClcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVDaGFydChkYXRhc2V0cyBhcyBhbnksIGxhYmVscyBhcyBhbnkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGFydChkYXRhc2V0cyA9IFtdLCBsYWJlbHMgPSBbXSkge1xuICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxhYmVscyxcbiAgICAgICAgZGF0YXNldHNcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5sYWJlbHMhW3Rvb2x0aXBJdGVtc1swXS5pbmRleCFdIGFzIGFueVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgeEF4ZXM6IFt7XG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XSxcbiAgICAgICAgICB5QXhlczogW3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAnQ3ljbGUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XG4gIDxjYW52YXMgI2NoYXJ0Pnt7Y2hhcnR9fTwvY2FudmFzPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable complexity */
|
|
2
|
+
/* eslint-disable max-len */
|
|
2
3
|
import * as pluralize from 'pluralize';
|
|
3
4
|
import { SchemaType, SiteSiteType, TermTermType } from '@hestia-earth/schema';
|
|
4
5
|
import { toPrecision } from '@hestia-earth/utils';
|
|
@@ -47,6 +48,7 @@ const customErrorMessage = {
|
|
|
47
48
|
'should match pattern "^\\d{13}$"': () => `should be composed of 13 numbers`,
|
|
48
49
|
'should match pattern "^[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?$"': () => dateFormatMessage,
|
|
49
50
|
'should match pattern "^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?$"': () => dateFormatMessage,
|
|
51
|
+
'should match pattern "^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?([T][0-2][0-9]\:[0-5][0-9]\:[0-5][0-9]((\+|\-)[0-1][0-9]:[0-5][0-9])?)?$"': () => dateFormatMessage,
|
|
50
52
|
'must be within the country': () => `The country provided does not contain the region provided. Please check
|
|
51
53
|
the country for errors or the region for errors, and reference the ${glossaryLink('Glossary of Terms')}.`,
|
|
52
54
|
[mapErrorMessage]: ({ dataPath }) => dataPath === '.region' ? `The region provided does not contain the longitude and latitude provided. Please check the
|
|
@@ -180,4 +182,4 @@ export const filterError = (error) => [
|
|
|
180
182
|
isFailingKeywordError
|
|
181
183
|
].every(func => !func(error));
|
|
182
184
|
export const missingNodeErrors = (errors) => errors.filter(({ keyword, params }) => keyword === 'required' && ((params === null || params === void 0 ? void 0 : params.missingProperty) === '@type' || (params === null || params === void 0 ? void 0 : params.missingProperty) === '@id'));
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sS0FBSyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFRLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQTBCdEQsTUFBTSxlQUFlLEdBQUcseUNBQXlDLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQzdDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLHdCQUF3QixDQUFDO0FBQ2hELE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxJQUFJLHFCQUFxQixJQUFJLE1BQU0sQ0FBQztB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QUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDO0lBQ3RELHFCQUFxQjtDQUN0QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FDOUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDcEMsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGVBQWUsTUFBSyxPQUFPLElBQUksQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZUFBZSxNQUFLLEtBQUssQ0FBQyxDQUNyRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0ICogYXMgcGx1cmFsaXplIGZyb20gJ3BsdXJhbGl6ZSc7XG5pbXBvcnQgeyBTY2hlbWFUeXBlLCBTaXRlU2l0ZVR5cGUsIFRlcm0sIFRlcm1UZXJtVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHRvUHJlY2lzaW9uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7IHRlcm1UeXBlTGFiZWwgfSBmcm9tICcuLi90ZXJtcy90ZXJtcy5tb2RlbCc7XG5pbXBvcnQgeyBwYXRoVG9BcGlEb2NzUGF0aCB9IGZyb20gJy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBiYXNlVXJsLCBrZXlUb0xhYmVsIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuLy8gVE9ETzogYWRkIG1vcmUgdmFsaWRhdGlvbiBrZXl3b3JkIGFuZCBwYXJhbXNcbmV4cG9ydCB0eXBlIHZhbGlkYXRpb25FcnJvckxldmVsID0gJ2Vycm9yJyB8ICd3YXJuaW5nJztcbmV4cG9ydCB0eXBlIHZhbGlkYXRpb25FcnJvclBhcmFtID0gJ21pc3NpbmdQcm9wZXJ0eScgfCAndHlwZScgfCAndGVybScgfCAnbW9kZWwnIHwgJ3Byb2R1Y3QnIHwgJ3JhbmdlJyB8XG4gICdhbGxvd2VkVmFsdWVzJyB8ICdhZGRpdGlvbmFsUHJvcGVydHknIHwgJ2V4cGVjdGVkJyB8ICdkZWZhdWx0JyB8ICdjdXJyZW50JyB8ICdwZXJjZW50YWdlJyB8ICdrZXlzJyB8ICd0aHJlc2hvbGQnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yS2V5d29yZCA9ICdyZXF1aXJlZCcgfCAndHlwZScgfCAnaWYnIHwgJ3RoZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElWYWxpZGF0aW9uRXJyb3Ige1xuICBpbmRleD86IG51bWJlcjtcbiAgbm9kZUluZGV4PzogbnVtYmVyO1xuICBsZXZlbD86IHZhbGlkYXRpb25FcnJvckxldmVsO1xuICBkYXRhUGF0aD86IHN0cmluZztcbiAgc2NoZW1hUGF0aD86IHN0cmluZztcbiAga2V5d29yZD86IHZhbGlkYXRpb25FcnJvcktleXdvcmQ7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcGFyYW1zPzogeyBba2V5IGluIHZhbGlkYXRpb25FcnJvclBhcmFtXT86IGFueSB9O1xuICBtYXBFcnJvcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRpb25FcnJvcldpdGhJbmRleCB7XG4gIGVycm9yOiBJVmFsaWRhdGlvbkVycm9yW107XG4gIGluZGV4OiBudW1iZXI7XG4gIGNoYW5nZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBtYXBFcnJvck1lc3NhZ2UgPSAnZG9lcyBub3QgY29udGFpbiBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0YVBhdGggPSAoZGF0YVBhdGggPSAnJykgPT4ge1xuICBjb25zdCBbXywgLi4ucGF0aHNdID0gZGF0YVBhdGguc3BsaXQoJy4nKTtcbiAgcmV0dXJuIHBhdGhzLm1hcChwYXRoID0+ICh7IHBhdGgsIGxhYmVsOiBrZXlUb0xhYmVsKHBhdGgucmVwbGFjZSgvXFxbXFxkK1xcXS9nLCAnJykpIH0pKTtcbn07XG5cbmNvbnN0IGNvbnRhY3RVc0VtYWlsID0gJ2NvbW11bml0eUBoZXN0aWEuZWFydGgnO1xuY29uc3QgZXh0ZXJuYWxMaW5rID0gKGhyZWY6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBgPGEgaHJlZj1cIiR7aHJlZn1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RleHR9PC9hPmA7XG5jb25zdCBnbG9zc2FyeUxpbmsgPSAodGV4dDogc3RyaW5nKSA9PlxuICBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS9nbG9zc2FyeWAsIHRleHQpO1xuY29uc3QgZ2xvc3NhcnlUeXBlTGluayA9ICh0eXBlOiBUZXJtVGVybVR5cGUpID0+XG4gIGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5P3Rlcm1UeXBlPSR7dHlwZX1gLCB0ZXJtVHlwZUxhYmVsKHR5cGUpKTtcbmNvbnN0IHRlcm1MaW5rID0gKHsgaWQsIG5hbWUgfTogUGFydGlhbDxUZXJtPikgPT5cbiAgZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vdGVybS8ke2lkfWAsIG5hbWUhKTtcbmV4cG9ydCBjb25zdCBub2RlTGluayA9ICh7ICdAdHlwZSc6IHR5cGUsICdAaWQnOiBpZCwgbmFtZSB9KSA9PlxuICB0eXBlICYmIGlkID8gYDxhIGhyZWY9XCIvJHt0eXBlLnRvTG93ZXJDYXNlKCl9LyR7aWR9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHtuYW1lIHx8IGlkfTwvYT5gIDogbnVsbDtcbmNvbnN0IHNjaGVtYUxpbmsgPSAodHlwZTogc3RyaW5nLCB0aXRsZSA9IHR5cGUpID0+IGA8YSBocmVmPVwiJHtiYXNlVXJsKCl9L3NjaGVtYS8ke3R5cGV9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHt0aXRsZX08L2E+YDtcbmV4cG9ydCBjb25zdCBjb2RlID0gKHRleHQ6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pID0+IGA8Y29kZT4ke3RleHR9PC9jb2RlPmA7XG5jb25zdCBkYXRlRm9ybWF0TWVzc2FnZSA9XG4gIGBzaG91bGQgZm9sbG93IHRoZSBJU08gODYwMSBkYXRlIGZvcm1hdCwgZS5nLiAke2NvZGUoMjAwMCl9LCBvciAke2NvZGUoJzIwMDAtMTInKX0sIG9yICR7Y29kZSgnMjAwMC0xMi0zMCcpfWA7XG5jb25zdCBjb250YWN0VXMgPSAodGV4dCA9ICdjb250YWN0IHVzJykgPT4gYDxhIGhyZWY9XCJtYWlsdG86JHtjb250YWN0VXNFbWFpbH1cIj4ke3RleHR9PC9hPmA7XG5jb25zdCBtb2RlbExpbmsgPSAodGVybTogVGVybSwgbW9kZWw6IFRlcm0pID0+IGBcbiAgPGEgaHJlZj1cIiR7cGF0aFRvQXBpRG9jc1BhdGgobW9kZWxbJ0BpZCddLCB0ZXJtWydAaWQnXSl9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+JHttb2RlbC5uYW1lfTwvc3Bhbj5cbiAgICA8c3Bhbj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgPC9hPlxuYDtcbmNvbnN0IHRocmVzaG9sZCA9ICh2YWx1ZTogbnVtYmVyKSA9PiBjb2RlKGAke3ZhbHVlICogMTAwfSVgKTtcblxuY29uc3Qgbm9UaWxsYWdlOiBQYXJ0aWFsPFRlcm0+ID0ge2lkOiAnbm9UaWxsYWdlJywgbmFtZTogJ05vIHRpbGxhZ2UnfTtcblxuZXhwb3J0IGNvbnN0IG1pc3NpbmdOb2RlRXJyb3JNZXNzYWdlID0gKHsgJ0B0eXBlJzogX3QsIHR5cGUsIG5hbWUgfTogYW55KSA9PlxuICAoX3QgfHwgdHlwZSkgPT09ICdUZXJtJyA/XG4gICAgYCR7bmFtZSA/IGBUaGUgdGVybSBcIiR7bmFtZX1cImAgOiAnVGhpcyB0ZXJtJ30gZG9lc24ndCBtYXRjaCBhIHRlcm0gaW4gdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeSBvZiBUZXJtcycpfS5cbiAgUGxlYXNlIGNoZWNrIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3NhcnknKX0gZm9yIHRoZSBjb3JyZWN0ICR7Y29kZSgnQGlkJyl9IG9yICR7Y29kZSgnbmFtZScpfSBhbmQgc3BlbGxpbmcuYFxuICAgIDogYFRoaXMgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSBkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGxpbmsgdG8gYW4gZXhpc3RpbmdcbiAgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSBpbiBIZXN0aWEsIHBsZWFzZSBjaGVjayB0aGUgJHtjb2RlKCduYW1lJyl9IG9yICR7Y29kZSgnQGlkJyl9IGlzIGNvcnJlY3QuXG4gIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9LCBwbGVhc2UgaWRlbnRpZnkgaXQgd2l0aCBhbiAke2NvZGUoJ2lkJyl9IGZpZWxkLmA7XG5cbi8vIHNldCBtZXNzYWdlIGFzIGVtcHR5IHRvIG5vdCBkaXNwbGF5IGl0XG5jb25zdCBjdXN0b21FcnJvck1lc3NhZ2U6IHtcbiAgW2tleTogc3RyaW5nXTogKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50OiBudW1iZXIpID0+IHN0cmluZztcbn0gPSB7XG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdAaWRcXCcnOiAoKSA9PiAnZG9lcyBub3QgZXhpc3QgaW4gSGVzdGlhLicsXG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdAdHlwZVxcJyc6ICgpID0+ICcnLFxuICAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFwnaWRcXCcnOiAoKSA9PiAnZG9lcyBub3QgZXhpc3QgaW4gSGVzdGlhLicsXG4gICdzaG91bGQgbWF0Y2ggZXhhY3RseSBvbmUgc2NoZW1hIGluIG9uZU9mJzogKCkgPT4gJycsXG4gICdzaG91bGQgbWF0Y2ggc29tZSBzY2hlbWEgaW4gYW55T2YnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBOT1QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgIGBUaGUgZm9sbG93aW5nIGZpZWxkIGRvZXMgbm90IGV4aXN0OiAke3BhcmFtcz8uYWRkaXRpb25hbFByb3BlcnR5fWAgOlxuICAgICAgYHNob3VsZCBub3QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXNgLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeXFxcXGR7MTN9JFwiJzogKCkgPT4gYHNob3VsZCBiZSBjb21wb3NlZCBvZiAxMyBudW1iZXJzYCxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXlswLTldezR9KC1bMC05XXsyfSk/KC1bMC05XXsyfSk/JFwiJzogKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl4oWzAtOV17NH18LSkoLVswLTldezJ9KT8oLVswLTldezJ9KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ211c3QgYmUgd2l0aGluIHRoZSBjb3VudHJ5JzogKCkgPT4gYFRoZSBjb3VudHJ5IHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlZ2lvbiBwcm92aWRlZC4gUGxlYXNlIGNoZWNrXG4gIHRoZSBjb3VudHJ5IGZvciBlcnJvcnMgb3IgdGhlIHJlZ2lvbiBmb3IgZXJyb3JzLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCxcbiAgW21hcEVycm9yTWVzc2FnZV06ICh7IGRhdGFQYXRoIH0pID0+XG4gICAgZGF0YVBhdGggPT09ICcucmVnaW9uJyA/IGBUaGUgcmVnaW9uIHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGVcbiAgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBmb3IgZXJyb3JzIG9yIHRoZSByZWdpb24gZm9yIGVycm9yLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCA6XG4gICAgYFRoZSBjb3VudHJ5IHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGUgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZVxuICBmb3IgZXJyb3JzIG9yIHRoZSBjb3VudHJ5IGZvciBlcnJvcnMsIGFuZCByZWZlcmVuY2UgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeSBvZiBUZXJtcycpfS5gLFxuICAnc3VtIG5vdCBlcXVhbCB0byAxMDAlIGZvciBzYW5kQ29udGVudCwgc2lsdENvbnRlbnQsIGNsYXlDb250ZW50JzpcbiAgICAoKSA9PiBgVGhlIHN1bSBvZiBTYW5kLCBTaWx0LCBhbmQgQ2xheSBjb250ZW50IHNob3VsZCBlcXVhbCAxMDAlIGZvciBlYWNoIHNvaWwgZGVwdGggaW50ZXJ2YWwuYCxcbiAgJ2lzIG91dHNpZGUgdGhlIGFsbG93ZWQgcmFuZ2UnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgIChcbiAgICAgICAgcGFyYW1zPy50ZXJtID9cbiAgICAgICAgICBgZm9yIHRoaXMgbWVhc3VyZW1lbnQsXG4gICAgICAgICAgdGhlIG1heGltdW0gJHtjb2RlKHBhcmFtcz8udGVybVsnQGlkJ10gfHwgcGFyYW1zPy50ZXJtLm5hbWUpfSBpcyAke3BhcmFtcz8ucmFuZ2U/Lm1heH0gYW5kIHRoZSBtaW5pbXVtIGlzICR7cGFyYW1zPy5yYW5nZT8ubWlufWAgOlxuICAgICAgICAgIGBkb2VzIG5vdCBtYXRjaCB0aGUgcG9zc2libGUgcmFuZ2VzIG9mIHNhbmQsIHNpbHQgYW5kIGNsYXkgY29udGVudC5cbiAgICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIG1lYXN1cmVtZW50LCBpdHMgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudC5gXG4gICAgICApIDpcbiAgICAgIGBFYWNoIHNvaWwgdGV4dHVyZSBoYXMgYSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlIGZvciBzYW5kLCBzaWx0LCBhbmQgY2xheSBjb250ZW50LlxuICAgICAgQXQgbGVhc3Qgb25lIG1lYXN1cmVtZW50IG9mIHNhbmQsIHNpbHQsIG9yIGNsYXkgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIHRoZSBzcGVjaWZpZWQgc29pbCB0ZXh0dXJlLlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgbWVhc3VyZW1lbnRzLCB0aGVpciBkZXB0aCBpbnRlcnZhbHMsIGFuZCB0aGUgZGF0ZXMgb2YgdGhlIG1lYXN1cmVtZW50cy5gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMnOlxuICAgICh7IHBhcmFtcyB9KSA9PiBgbXVzdCBoYXZlIG9uZSBvZiB0aGVzZSB2YWx1ZXM6ICR7cGFyYW1zPy5hbGxvd2VkVmFsdWVzLmpvaW4oJywgJyl9YCxcbiAgJ2lzIG5vdCBhbGxvd2VkIGZvciB0aGlzIGNoYXJhY3RlcmlzZWRJbmRpY2F0b3InOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtlcnJvckNvdW50ID09PSAxID9cbiAgICAgIGAke1xuICAgICAgICBwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubGVuZ3RoID9cbiAgICAgICAgICBgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIG9uZSBvZiB0aGVzZSBtZXRob2RzOiAke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5qb2luKCcsICcpfWAgOlxuICAgICAgICAgIGBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbnkgbWV0aG9kIGFsbG93ZWQuIFBsZWFzZSAke2NvbnRhY3RVcygpfSB0byBjaGFuZ2UgdGhpcy5gXG4gICAgICB9LmAgOlxuICAgICAgYFNvbWUgVGVybXMgYXJlIG5vdCBhbGxvd2VkIHdpdGggdGhlIG1ldGhvZCB5b3Ugc2VsZWN0ZWQuYH1cbiAgICBZb3UgY2FuIGZpbmQgdGhlIGxpc3Qgb2YgYWxsb3dlZCBtZXRob2RzIGZvciBlYWNoIFRlcm0gYnkgY2xpY2tpbmcgb24gdGhlbS5gLFxuICAnc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBpdGVtJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBwYXRocy5sZW5ndGggPj0gMiA/XG4gICAgICBgVGhlICR7cGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0ucGF0aH0gcmVsYXRlZCB0byB0aGlzICR7cGx1cmFsaXplKHBhdGhzW3BhdGhzLmxlbmd0aCAtIDJdLmxhYmVsLCAxKX0gYXJlIGludmFsaWRgIDpcbiAgICAgIGBUaGUgJHtwYXRoc1swXS5wYXRofSBhcmUgaW52YWxpZGA7XG4gIH0sXG4gICdtYXkgYmUgYmV0d2VlbiAwIGFuZCAxMDAnOiAoKSA9PiAncGVyY2VudGFnZXMgc2hvdWxkIGJlIGJldHdlZW4gMCBhbmQgMTAwLCBub3QgMCBhbmQgMS4gVGhpcyBtYXkgYmUgYW4gZXJyb3IuJyxcbiAgJ21heSBub3QgYWxsIGJlIHNldCB0byBmYWxzZSc6ICgpID0+XG4gICAgYFlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZmlsbCBpbiB0aGUgZGF0YSBjb21wbGV0ZW5lc3MgYXNzZXNzbWVudC5cbiAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBmaWxsIGl0IGluLCBwbGVhc2Ugc2VlIHRoZSAke3NjaGVtYUxpbmsoJ0N5Y2xlI2RhdGFDb21wbGV0ZW5lc3MnLCAnc2NoZW1hJyl9LmAsXG4gICdtYXkgbm90IGJlIGVtcHR5JzogKCkgPT4gJ2lmIHRoaXMgdmFsdWUgc2lnbmlmaWVzIG5vIGRhdGEsIEhlc3RpYSBvbmx5IGFjY2VwdHMgXCItXCIgb3IgZW1wdHkgZm9yIG5vIGRhdGEnLFxuICAnbWF5IG5vdCBiZSAwJzogKHsgZGF0YVBhdGggfSwgZXJyb3JDb3VudCkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgYWRkaW5nIGEgdmFsdWUgJHtlcnJvckNvdW50ID09PSAxID8gYCB0byBldmVyeSAke3BhdGhzWzBdLmxhYmVsfSBgIDogJyAnfSBpcyBoaWdobHkgcmVjb21tZW5kZWRcbiAgICAgIGFzIHdpdGhvdXQgdGhpcyBpdCBpcyBub3QgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBJbXBhY3QgQXNzZXNzbWVudC5cbiAgICAgIElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgd2UgcmVjb21tZW5kIHNldHRpbmcgdmFsdWUgdG8gMC5gO1xuICB9LFxuICAndGhlIHN1bSBvZiBhYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nOiAoKSA9PlxuICAgIGBGb3Igc2l0ZXMgb2YgdHlwZSAke2NvZGUoU2l0ZVNpdGVUeXBlLmNyb3BsYW5kKX0gb3IgJHtjb2RlKFNpdGVTaXRlVHlwZVsncGVybWFuZW50IHBhc3R1cmUnXSl9LFxuICAgIGlmIGRhdGEgY29tcGxldGVuZXNzIGlzIG1hcmtlZCB0cnVlIGZvciBjcm9wIHJlc2lkdWUsXG4gICAgdGhlIHN1bSBvZiB0aGUgQWJvdmUgZ3JvdW5kIGNyb3AgcmVzaWR1ZSB0ZXJtcyBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHplcm8sXG4gICAgYW5kIEJlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLmAsXG4gICdsb25nRmFsbG93UGVyaW9kIG11c3QgYmUgbG93ZXIgdGhhbiA1IHllYXJzJzogKCkgPT5cbiAgICBgWW91ciBsb25nRmFsbG93UGVyaW9kIGlzIGdyZWF0ZXIgdGhhbiBmaXZlIHllYXJzLlxuICAgIEZhbGxvdyBpcyBkZWZpbmVkIGJ5IEZBT1NUQVQgYXMgbGFuZCBsZWZ0IHVuY3VsdGl2YXRlZCBmb3IgYmV0d2VlbiAxIGFuZCA1IHllYXJzLFxuICAgIGFuZCB0aGlzIGRlZmluaXRpb24gaXMgdXNlZCBmb3IgSGVzdGlhIGFsc28uYCxcbiAgJ3Nob3VsZCBiZSB3aXRoaW4gcGVyY2VudGFnZSBvZiBkZWZhdWx0IHZhbHVlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICBgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9IGRpZmZlcmVudCB0byBvdXIgZGVmYXVsdCB2YWx1ZSB3aGljaCBpcyAke3BhcmFtcz8uZGVmYXVsdH0uXG4gICAgICBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAgOlxuICAgICAgYGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IHRoYW4gb3VyIGRlZmF1bHQgdmFsdWUuIFBsZWFzZSBjaGVjayB5b3VyIHVwbG9hZGVkIGRhdGEgYXMgdGhpcyBtYXkgYmUgYW4gZXJyb3IuYCxcbiAgJ3RoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBtb2RlbCByZXN1bHQnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgJHtjb2RlKHBhcmFtcz8udGVybS5uYW1lKX1cbiAgICAke3BhcmFtcz8ubW9kZWw/Lm5hbWUgPyBgdXNpbmcgJHttb2RlbExpbmsocGFyYW1zPy50ZXJtLCBwYXJhbXM/Lm1vZGVsKX0gYCA6ICcnfVxuICAgIGZyb20gdGhlIGRhdGEgcHJvdmlkZWQgaW4gdGhlIHVwbG9hZCBpcyAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAgIGAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5leHBlY3RlZCwgMykpfSwgYnV0IHRoZSB2YWx1ZSBpbiB0aGUgdXBsb2FkIGlzICR7Y29kZSh0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfVxuICAgICAgICBQbGVhc2UgZWl0aGVyOlxuICAgICAgICAxKSBjaGVjayB0aGUgJHtwYXJhbXM/LnRlcm0udGVybVR5cGV9IHZhbHVlIHlvdSBwcm92aWRlZDtcbiAgICAgICAgMikgY2hlY2sgdGhlIGRhdGEgeW91IHByb3ZpZGVkIHdoaWNoIGlzIHRoZSBpbnB1dCBpbnRvIHRoaXMgbW9kZWw7XG4gICAgICAgIDMpIGNhcmVmdWxseSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgaWYgd2UgdXNlZCBhIGRlZmF1bHQgcHJvcGVydHkgYXMgcGFydCBvZiB0aGUgY2FsY3VsYXRpb25zLmAgOlxuICAgICAgICBgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LmBcbiAgICB9YCxcbiAgJ3RoZSBtZWFzdXJlbWVudCBwcm92aWRlZCBtaWdodCBiZSBpbiBlcnJvcic6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBUaGUgZXhwZWN0ZWQgdmFsdWUgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGZyb20gdGhlIGRhdGEgcHJvdmlkZWQgaW4gdGhlIHVwbG9hZCBpcyAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAgIGAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5leHBlY3RlZCwgMykpfSwgYnV0IHRoZSB2YWx1ZSBpbiB0aGUgdXBsb2FkIGlzICR7Y29kZSh0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfWAgOlxuICAgICAgICBgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LmBcbiAgICB9YCxcbiAgJ211c3QgYmUgZXF1YWwgdG8gcHJldmlvdXMgcHJvZHVjdCBtdWx0aXBsaWVkIGJ5IHRoZSBzaGFyZSc6ICgpID0+XG4gICAgYFByb2R1Y3RzIGZyb20gYSB0cmFuc2Zvcm1hdGlvbiB3aGljaCBhcmUgYW4gSW5wdXQgaW4gdG8gdGhlIG5leHQgdHJhbnNmb3JtYXRpb24gbXVzdCBmb2xsb3cgdGhlIGZvbGxvd2luZyBydWxlOlxuICAgICR7Y29kZSgncHJldmlvdXMucHJvZHVjdC52YWx1ZSAqIGN1cnJlbnQucHJldmlvdXNUcmFuc2Zvcm1hdGlvblNoYXJlIC8gMTAwID09IGN1cnJlbnQuaW5wdXQudmFsdWUnKX1gLFxuICAnbXVzdCBoYXZlIG9ubHkgb25lIGVudHJ5IHdpdGggdGhlIHNhbWUgdGVybS50ZXJtVHlwZSA9IGV4Y3JldGFNYW5hZ2VtZW50JzogKCkgPT5cbiAgICBgVGhlcmUgY2FuIG9ubHkgYmUgb25lIFByYWN0aWNlIG9mIHR5cGUgZXhjcmV0YU1hbmFnZW1lbnQgaW4gYSBDeWNsZS5cbiAgICBUbyByZXByZXNlbnQgbXVsdGlwbGUgZXhjcmV0YSBtYW5hZ2VtZW50IHN5c3RlbXMgZWl0aGVyIHVzZSBtdWx0aXBsZSBDeWNsZXMgYW5kIGxpbmsgdGhlbSB0b2dldGhlcixcbiAgICBvciB1c2UgVHJhbnNmb3JtYXRpb25zIHdpdGhpbiBhIEN5Y2xlIGFuZCBsaW5rIHRob3NlIHRvZ2V0aGVyLmAsXG4gICdldmVyeSBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBiZSB1bmlxdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBCbGFuayBOb2RlIGlzIGR1cGxpY2F0ZWQuIEV2ZXJ5IEJsYW5rIE5vZGUgc2hvdWxkIGJlIHVuaXF1ZS5cbiAgICBVbmlxdWVuZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBmaWVsZHM6ICR7XG4gICAgICAocGFyYW1zPy5rZXlzIHx8IFtdKS5tYXAoY29kZSkuam9pbignLCAnKVxuICAgIH1gLFxuICAnbXVzdCBjb250YWluIGFzIG1hbnkgaXRlbXMgYXMgdmFsdWVzJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBudW1iZXIgb2YgZGF0ZXMgbXVzdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHZhbHVlcy5cbiAgICBDdXJyZW50bHkgdGhlcmUgYXJlICR7cGFyYW1zPy5jdXJyZW50fSBkYXRlcyBidXQgJHtwYXJhbXM/LmV4cGVjdGVkfSB2YWx1ZXMuYCxcbiAgJ2lzIHRvbyBnZW5lcmljJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgUHJvZHVjdCAke2NvZGUocGFyYW1zPy5wcm9kdWN0Py5uYW1lKX0gaG93ZXZlcixcbiAgICB5b3UgaGF2ZSB1c2VkIGEgZ2VuZXJpYyAke2dsb3NzYXJ5VHlwZUxpbmsocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSl9IHRlcm0gJHtjb2RlKHBhcmFtcz8udGVybT8ubmFtZSl9LlxuICAgIFVzZSBhIG1vcmUgc3BlY2lmaWMgdGVybSBmb3IgdGhlICR7XG4gICAgICBnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8udGVybT8udGVybVR5cGUpXG4gICAgfSB3aGljaCByZWZsZWN0cyB0aGUgc3BlY2lmaWMgJHtcbiAgICAgIGdsb3NzYXJ5VHlwZUxpbmsocGFyYW1zPy5wcm9kdWN0Py50ZXJtVHlwZSlcbiAgICB9LmAsXG4gICdpcyBtaXNzaW5nIHJlcXVpcmVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24nOiAoKSA9PlxuICAgIGBUaGUgYXV0b21hdGljIGJpYmxpb2dyYXBoeSBzZWFyY2ggZmFpbGVkIGZvciB0aGlzIEJpYmxpb2dyYXBoeS4gRWl0aGVyOlxuICAgIDEpIG1hbnVhbGx5IGZpbGwtaW4gdGhlIDxiPnJlcXVpcmVkPC9iPiBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uIGFzIHBlclxuICAgICR7c2NoZW1hTGluayhTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeSwgJ291ciBzY2hlbWEnKX0uXG4gICAgMikgcHJvdmlkZSB0aGUgJHtjb2RlKCdkb2N1bWVudERPSScpfSBhcyB3ZWxsIGFzIHRoZSAke2NvZGUoJ3RpdGxlJyl9XG4gICAgMykgY2hlY2sgdGhlICR7Y29kZSgnZG9jdW1lbnRET0knKX0gYW5kICR7Y29kZSgndGl0bGUnKX0gZm9yIHR5cG9zIGFnYWluc3QgdGhlXG4gICAgJHtleHRlcm5hbExpbmsoJ2h0dHBzOi8vd3d3Lm1lbmRlbGV5LmNvbScsICdNZW5kZWxleSBjYXRhbG9ndWUnKX1gLFxuICAnc2hvdWxkIGJlIGxvd2VyIHRoYW4gbWF4IHNpemUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhlIGJvdW5kYXJ5IG9yIHJlZ2lvbiBpcyA+JHtwYXJhbXM/LmV4cGVjdGVkfWttMiBhbmQgaXMgdG9vIGxhcmdlIHRvIHJlbGlhYmx5IGdhcCBmaWxsIE1lYXN1cmVtZW50cy5gLFxuICAnYW4gZXhjcmV0YSBpbnB1dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGFuIGV4Y3JldGFNYW5hZ2VtZW50IHByYWN0aWNlJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgRXhjcmV0YSBtYW5hZ2VtZW50IGlzIHRoZSBjb252ZXJzaW9uIG9mIGV4Y3JldGEgdG8gYW5vdGhlciB0eXBlIG9mIGV4Y3JldGEuXG4gICAgICBZb3UgaGF2ZSBhZGRlZCBhbiBleGNyZXRhTWFuYWdlbWVudCBQcmFjdGljZSB0byB0aGlzICR7cGF0aHNbMF0ubGFiZWx9IGJ1dCB0aGVyZSBpcyBubyBleGNyZXRhIElucHV0LlxuICAgICAgVG8gcmVwcmVzZW50IGV4Y3JldGEgbWFuYWdlbWVudCwgdXNlIGEgJHtwYXRoc1swXS5sYWJlbH0gd2l0aCBleGNyZXRhIGFzIGFuIElucHV0IGFuZCBleGNyZXRhTWFuYWdlbWVudCBhcyBhIFByYWN0aWNlLmA7XG4gIH0sXG4gICdvbmx5IDEgcHJpbWFyeSBwcm9kdWN0IGFsbG93ZWQnOiAoKSA9PiAnVGhlcmUgY2FuIG9ubHkgYmUgb25lIHByaW1hcnkgcHJvZHVjdCBpbiBlYWNoIEN5Y2xlLicsXG4gICdpcyBub3QgYWxsb3dlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG5vVGlsbGFnZSc6ICgpID0+XG4gICAgYFRoaXMgb3BlcmF0aW9uIGludm9sdmVzIHRpbGxhZ2UsIHlldCB5b3UgaGF2ZSBzcGVjaWZpZWQgdGhlIFByYWN0aWNlICR7dGVybUxpbmsobm9UaWxsYWdlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGlzIG9wZXJhdGlvbiBvciB0aGUgUHJhY3RpY2UuYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYFdlIHJlY29tbWVuZCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHRpbGxhZ2UgdXNlZCBmb3IgdGhpcyBDeWNsZS5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBnbG9zc2FyeS5gLFxuICAnbXVzdCBzZXQgdmFsdWUgZm9yIGV2ZXJ5IHRpbGxhZ2UgcHJhY3RpY2UnOiAoKSA9PlxuICAgIGBFaXRoZXIgc3BlY2lmeSBhIHNpbmdsZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZSBvciBhZGQgYSB2YWx1ZSB0byBhbGwgcHJhY3RpY2VzLmAsXG4gICdzdW0gbm90IGVxdWFsIHRvIDEwMCUgZm9yIHRpbGxhZ2UgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZXMgbXVzdCBlcXVhbCAxMDAlLmAsXG4gICdjYW4gb25seSBoYXZlIDEgdGlsbGFnZSBwcmFjdGljZSB3aXRob3V0IGEgdmFsdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgSXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIEN5Y2xlIHRvIGhhdmUgdGhlIGZvbGxvd2luZyB0aWxsYWdlIFByYWN0aWNlczpcbiAgICAkeyhwYXJhbXM/LmN1cnJlbnQgPz8gW10pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJyBhbmQgJyl9IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgSWYgbXVsdGlwbGUgdGlsbGFnZSBwcmFjdGljZXMgZGlkIG9jY3VyLCBwbGVhc2Ugc3BlY2lmeSB0aGUgcGVyY2VudGFnZSBvZiBhcmVhIHRoZXkgb2NjdXJyZWQgb24uYCxcbiAgJ2NhbiBub3QgYmUgbGlua2VkIHRvIHRoZSBzYW1lIEN5Y2xlJzogKCkgPT4gJ1lvdSBjYW4gbm90IGxpbmsgYW4gSW5wdXQgdG8gdGhlIEltcGFjdCBBc3Nlc3NtZW50IG9mIHRoZSBzYW1lIEN5Y2xlLicsXG4gIC8vIGRlcHJlY2F0ZWQsIHJlbW92ZSB3aGVuIG1lc3NhZ2UgaXMgbm90IGJlaW5nIHVzZWQgYW55bW9yZVxuICAnbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlICR7Y29kZShkYXRhUGF0aD8uc3BsaXQoJy4nKS5wb3AoKSEpfSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmAsXG4gICdlY29ub21pY1ZhbHVlU2hhcmUgbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgZWNvbm9taWNWYWx1ZVNoYXJlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3JldmVudWUgbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgcmV2ZW51ZSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmBcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UgPSAobWVzc2FnZT86IHN0cmluZywgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50ID0gMSkgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID0gbWVzc2FnZSAmJiBtZXNzYWdlIGluIGN1c3RvbUVycm9yTWVzc2FnZSA/XG4gICAgY3VzdG9tRXJyb3JNZXNzYWdlW21lc3NhZ2VdKGVycm9yISwgZXJyb3JDb3VudCkgOlxuICAgIG1lc3NhZ2U7XG4gIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlID8gYDxwIGNsYXNzPVwiaXMtbm9ybWFsXCI+JHtmb3JtYXR0ZWRNZXNzYWdlfTwvcD5gIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0RXJyb3IgPSAoZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50ID0gMSk6IElWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQgPT4gZXJyb3IgPyAoe1xuICBsZXZlbDogJ2Vycm9yJyxcbiAgLi4uZXJyb3IsXG4gIG1hcEVycm9yOiBlcnJvci5tZXNzYWdlID09PSBtYXBFcnJvck1lc3NhZ2UsXG4gIG1lc3NhZ2U6IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShlcnJvci5tZXNzYWdlLCBlcnJvciwgZXJyb3JDb3VudClcbn0pIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNFcnJvciA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+IGVycm9yICYmIChlcnJvci5sZXZlbCA9PT0gJ2Vycm9yJyB8fCAhZXJyb3IubGV2ZWwpO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNXYXJuaW5nID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgZXJyb3IubGV2ZWwgPT09ICd3YXJuaW5nJztcblxuZXhwb3J0IGNvbnN0IGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gISFwYXJhbXMgJiYgJ21pc3NpbmdQcm9wZXJ0eScgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nT25lT2ZFcnJvciA9ICh7IGtleXdvcmQsIHNjaGVtYVBhdGggfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAoc2NoZW1hUGF0aCB8fCAnJykuaW5jbHVkZXMoJ29uZU9mJyk7XG5cbmNvbnN0IGlzRmFpbGluZ0tleXdvcmRFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnZmFpbGluZ0tleXdvcmQnIGluIHBhcmFtcztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckVycm9yID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yKSA9PiBbXG4gIGlzRmFpbGluZ0tleXdvcmRFcnJvclxuXS5ldmVyeShmdW5jID0+ICFmdW5jKGVycm9yKSk7XG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nTm9kZUVycm9ycyA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT5cbiAgZXJyb3JzLmZpbHRlcigoeyBrZXl3b3JkLCBwYXJhbXMgfSkgPT5cbiAgICBrZXl3b3JkID09PSAncmVxdWlyZWQnICYmIChwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0B0eXBlJyB8fCBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpXG4gICk7XG4iXX0=
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUEwQnRELE1BQU0sZUFBZSxHQUFHLHlDQUF5QyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUM3QyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksSUFBSSxxQkFBcUIsSUFBSSxNQUFNLENBQUM7QUFDckcsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUNwQyxZQUFZLENBQUMsR0FBRyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFrQixFQUFFLEVBQUUsQ0FDOUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxFQUFFLHNCQUFzQixJQUFJLEVBQUUsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5RSxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBaUIsRUFBRSxFQUFFLENBQy9DLFlBQVksQ0FBQyxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUssQ0FBQyxDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDN0QsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxxQkFBcUIsSUFBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakcsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxPQUFPLEVBQUUsV0FBVyxJQUFJLHFCQUFxQixLQUFLLE1BQU0sQ0FBQztBQUN4SCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUErQixFQUFFLEVBQUUsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDO0FBQ2hGLE1BQU0saUJBQWlCLEdBQ3JCLGdEQUFnRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hILE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxHQUFHLFlBQVksRUFBRSxFQUFFLENBQUMsbUJBQW1CLGNBQWMsS0FBSyxJQUFJLE1BQU0sQ0FBQztBQUM1RixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVUsRUFBRSxLQUFXLEVBQUUsRUFBRSxDQUFDO2FBQ2xDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ2hDLEtBQUssQ0FBQyxJQUFJOzs7Q0FHbEMsQ0FBQztBQUNGLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUU3RCxNQUFNLFNBQVMsR0FBa0IsRUFBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUMsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFPLEVBQUUsRUFBRSxDQUMxRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN2QixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxnQ0FBZ0MsWUFBWSxDQUFDLG1CQUFtQixDQUFDO3FCQUM1RixZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7SUFDM0csQ0FBQyxDQUFDLFFBQVEsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDaEMsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO3NDQUNsRCxVQUFVLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFFaEgseUNBQXlDO0FBQ3pDLE1BQU0sa0JBQWtCLEdBRXBCO0lBQ0YsdUNBQXVDLEVBQUUsR0FBRyxFQUFFLENBQUMsMkJBQTJCO0lBQzFFLHlDQUF5QyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDbkQsc0NBQXNDLEVBQUUsR0FBRyxFQUFFLENBQUMsMkJBQTJCO0lBQ3pFLDBDQUEwQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDcEQsbUNBQW1DLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtJQUM3Qyx1Q0FBdUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDbEUsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLHVDQUF1QyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLHVDQUF1QztJQUMzQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQ0FBa0M7SUFDNUUsMkRBQTJELEVBQUUsR0FBRyxFQUFFLENBQUMsaUJBQWlCO0lBQ3BGLCtEQUErRCxFQUFFLEdBQUcsRUFBRSxDQUFDLGlCQUFpQjtJQUN4RixzSUFBc0ksRUFBRSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUI7SUFDL0osNEJBQTRCLEVBQUUsR0FBRyxFQUFFLENBQUM7dUVBQ2lDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHO0lBQ3pHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FDbEMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUZBQ29ELFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuSDs0REFDd0QsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEdBQUc7SUFDOUYsaUVBQWlFLEVBQy9ELEdBQUcsRUFBRSxDQUFDLHlGQUF5RjtJQUNqRyw4QkFBOEIsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUU7O1FBQ3pELE9BQUEsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLENBQ0UsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxFQUFDLENBQUM7Z0JBQ1o7d0JBQ2MsSUFBSSxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFDLE9BQU8sTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSywwQ0FBRSxHQUFHLHVCQUF1QixNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLDBDQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xJOytGQUNxRixDQUN4RixDQUFDLENBQUM7WUFDSDs7Z0dBRTBGLENBQUE7S0FBQTtJQUM5Riw4Q0FBOEMsRUFDNUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDdEYsZ0RBQWdELEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQzNFLEdBQUcsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEdBQ0UsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsYUFBYSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQzVCLCtDQUErQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkYsc0RBQXNELFNBQVMsRUFBRSxrQkFDckUsR0FBRyxDQUFDLENBQUM7UUFDTCwwREFBMEQ7Z0ZBQ2dCO0lBQzlFLDZCQUE2QixFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQzlDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFTLENBQUMsQ0FBQztRQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsSCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsMEJBQTBCLEVBQUUsR0FBRyxFQUFFLENBQUMsNkVBQTZFO0lBQy9HLDZCQUE2QixFQUFFLEdBQUcsRUFBRSxDQUNsQzt5REFDcUQsVUFBVSxDQUFDLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyxHQUFHO0lBQ3hHLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxDQUFDLCtFQUErRTtJQUN6RyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFO1FBQzNDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFTLENBQUMsQ0FBQztRQUN2QyxPQUFPLGtCQUFrQixVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRzs7dUVBRWIsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsOEZBQThGLEVBQUUsR0FBRyxFQUFFLENBQ25HLHFCQUFxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs7OytEQUduQztJQUM3RCw2Q0FBNkMsRUFBRSxHQUFHLEVBQUUsQ0FDbEQ7O2lEQUU2QztJQUMvQyw4Q0FBOEMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDekUsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sU0FBUyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLENBQUMsNENBQTRDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPOytEQUNyQyxDQUFDLENBQUM7UUFDM0QsNkdBQTZHO0lBQ2pILDREQUE0RCxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRTs7UUFDdkYsT0FBQSwyQkFBMkIsSUFBSSxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDO01BQ2hELENBQUEsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSywwQ0FBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLFNBQVMsU0FBUyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7OENBRTdFLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1VBQ2hILENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMscUJBQXFCLFNBQVMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTs7dUJBRWhFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLENBQUMsUUFBUTs7cUhBRXlFLENBQUMsQ0FBQztZQUMvRyx1Q0FDSixFQUFFLENBQUE7S0FBQTtJQUNKLDRDQUE0QyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUN2RSwwQkFBMEIsSUFBSSxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLDRDQUMvQyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0NBQW9DLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztVQUNoSCxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLHFCQUFxQixTQUFTLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkYsdUNBQ0osRUFBRTtJQUNKLDJEQUEyRCxFQUFFLEdBQUcsRUFBRSxDQUNoRTtNQUNFLElBQUksQ0FBQywyRkFBMkYsQ0FBQyxFQUFFO0lBQ3ZHLDBFQUEwRSxFQUFFLEdBQUcsRUFBRSxDQUMvRTs7bUVBRStEO0lBQ2pFLHlDQUF5QyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ3hEO3dEQUVFLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxLQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUMxQyxFQUFFO0lBQ0osc0NBQXNDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDckQ7MEJBQ3NCLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLGNBQWMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsVUFBVTtJQUMvRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTs7UUFDL0IsT0FBQSxrQ0FBa0MsSUFBSSxDQUFDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sMENBQUUsSUFBSSxDQUFDOzhCQUNuQyxnQkFBZ0IsQ0FBQyxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLDBDQUFFLFFBQVEsQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLDBDQUFFLElBQUksQ0FBQzt1Q0FFakcsZ0JBQWdCLENBQUMsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSwwQ0FBRSxRQUFRLENBQ3pDLGdDQUNFLGdCQUFnQixDQUFDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sMENBQUUsUUFBUSxDQUM1QyxHQUFHLENBQUE7S0FBQTtJQUNMLCtDQUErQyxFQUFFLEdBQUcsRUFBRSxDQUNwRDs7TUFFRSxVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7cUJBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLElBQUksQ0FBQyxPQUFPLENBQUM7bUJBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDO01BQ3JELFlBQVksQ0FBQywwQkFBMEIsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO0lBQ3BFLCtCQUErQixFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQzlDLDhCQUE4QixNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSx5REFBeUQ7SUFDekcsdUVBQXVFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7UUFDeEYsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU87NkRBQ2tELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLOytDQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxnRUFBZ0UsQ0FBQztJQUM1SCxDQUFDO0lBQ0QsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFLENBQUMsc0RBQXNEO0lBQzlGLDhDQUE4QyxFQUFFLEdBQUcsRUFBRSxDQUNuRCx3RUFBd0UsUUFBUSxDQUFDLFNBQVMsQ0FBQztrREFDN0M7SUFDaEQsbUNBQW1DLEVBQUUsR0FBRyxFQUFFLENBQ3hDO3FCQUNpQixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFDckUsMkNBQTJDLEVBQUUsR0FBRyxFQUFFLENBQ2hELDJCQUEyQixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLDRDQUE0QztJQUMvRyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUUsQ0FDbEQsY0FBYyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLDZCQUE2QjtJQUNuRixrREFBa0QsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTs7UUFDakUsT0FBQTtNQUNFLENBQUMsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxtQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO3FHQUNrQyxDQUFBO0tBQUE7SUFDbkcscUNBQXFDLEVBQUUsR0FBRyxFQUFFLENBQUMsdUVBQXVFO0lBQ3BILDREQUE0RDtJQUM1RCwrQkFBK0IsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQ3BFLHVDQUF1QyxJQUFJLENBQUMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFHLENBQUMsT0FDdEUsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQy9DLHFCQUFxQjtJQUN2QixrREFBa0QsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDN0UsNkRBQ0UsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQy9DLHFCQUFxQjtJQUN2Qix1Q0FBdUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDbEUsa0RBQ0UsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQy9DLHFCQUFxQjtDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEtBQXdCLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQ3JHLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxJQUFJLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sQ0FBQztJQUNWLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixnQkFBZ0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBd0IsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFnQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywrQkFDN0csS0FBSyxFQUFFLE9BQU8sSUFDWCxLQUFLLEtBQ1IsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLEtBQUssZUFBZSxFQUMzQyxPQUFPLEVBQUUsd0JBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQ25FLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUVmLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FBQztBQUVoSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBb0IsRUFBRSxFQUFFLENBQy9FLE9BQU8sS0FBSyxVQUFVLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWpFLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUM7SUFDdEQscUJBQXFCO0NBQ3RCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRSxDQUM5RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUNwQyxPQUFPLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZUFBZSxNQUFLLE9BQU8sSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxlQUFlLE1BQUssS0FBSyxDQUFDLENBQ3JHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBwbHVyYWxpemUgZnJvbSAncGx1cmFsaXplJztcbmltcG9ydCB7IFNjaGVtYVR5cGUsIFNpdGVTaXRlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgdGVybVR5cGVMYWJlbCB9IGZyb20gJy4uL3Rlcm1zL3Rlcm1zLm1vZGVsJztcbmltcG9ydCB7IHBhdGhUb0FwaURvY3NQYXRoIH0gZnJvbSAnLi4vZW5naW5lL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IGJhc2VVcmwsIGtleVRvTGFiZWwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG4vLyBUT0RPOiBhZGQgbW9yZSB2YWxpZGF0aW9uIGtleXdvcmQgYW5kIHBhcmFtc1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yTGV2ZWwgPSAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yUGFyYW0gPSAnbWlzc2luZ1Byb3BlcnR5JyB8ICd0eXBlJyB8ICd0ZXJtJyB8ICdtb2RlbCcgfCAncHJvZHVjdCcgfCAncmFuZ2UnIHxcbiAgJ2FsbG93ZWRWYWx1ZXMnIHwgJ2FkZGl0aW9uYWxQcm9wZXJ0eScgfCAnZXhwZWN0ZWQnIHwgJ2RlZmF1bHQnIHwgJ2N1cnJlbnQnIHwgJ3BlcmNlbnRhZ2UnIHwgJ2tleXMnIHwgJ3RocmVzaG9sZCc7XG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkID0gJ3JlcXVpcmVkJyB8ICd0eXBlJyB8ICdpZicgfCAndGhlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRpb25FcnJvciB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBub2RlSW5kZXg/OiBudW1iZXI7XG4gIGxldmVsPzogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIGRhdGFQYXRoPzogc3RyaW5nO1xuICBzY2hlbWFQYXRoPzogc3RyaW5nO1xuICBrZXl3b3JkPzogdmFsaWRhdGlvbkVycm9yS2V5d29yZDtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYXJhbXM/OiB7IFtrZXkgaW4gdmFsaWRhdGlvbkVycm9yUGFyYW1dPzogYW55IH07XG4gIG1hcEVycm9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4IHtcbiAgZXJyb3I6IElWYWxpZGF0aW9uRXJyb3JbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2hhbmdlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IG1hcEVycm9yTWVzc2FnZSA9ICdkb2VzIG5vdCBjb250YWluIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEYXRhUGF0aCA9IChkYXRhUGF0aCA9ICcnKSA9PiB7XG4gIGNvbnN0IFtfLCAuLi5wYXRoc10gPSBkYXRhUGF0aC5zcGxpdCgnLicpO1xuICByZXR1cm4gcGF0aHMubWFwKHBhdGggPT4gKHsgcGF0aCwgbGFiZWw6IGtleVRvTGFiZWwocGF0aC5yZXBsYWNlKC9cXFtcXGQrXFxdL2csICcnKSkgfSkpO1xufTtcblxuY29uc3QgY29udGFjdFVzRW1haWwgPSAnY29tbXVuaXR5QGhlc3RpYS5lYXJ0aCc7XG5jb25zdCBleHRlcm5hbExpbmsgPSAoaHJlZjogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpID0+IGA8YSBocmVmPVwiJHtocmVmfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7dGV4dH08L2E+YDtcbmNvbnN0IGdsb3NzYXJ5TGluayA9ICh0ZXh0OiBzdHJpbmcpID0+XG4gIGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5YCwgdGV4dCk7XG5jb25zdCBnbG9zc2FyeVR5cGVMaW5rID0gKHR5cGU6IFRlcm1UZXJtVHlwZSkgPT5cbiAgZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/dGVybVR5cGU9JHt0eXBlfWAsIHRlcm1UeXBlTGFiZWwodHlwZSkpO1xuY29uc3QgdGVybUxpbmsgPSAoeyBpZCwgbmFtZSB9OiBQYXJ0aWFsPFRlcm0+KSA9PlxuICBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS90ZXJtLyR7aWR9YCwgbmFtZSEpO1xuZXhwb3J0IGNvbnN0IG5vZGVMaW5rID0gKHsgJ0B0eXBlJzogdHlwZSwgJ0BpZCc6IGlkLCBuYW1lIH0pID0+XG4gIHR5cGUgJiYgaWQgPyBgPGEgaHJlZj1cIi8ke3R5cGUudG9Mb3dlckNhc2UoKX0vJHtpZH1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke25hbWUgfHwgaWR9PC9hPmAgOiBudWxsO1xuY29uc3Qgc2NoZW1hTGluayA9ICh0eXBlOiBzdHJpbmcsIHRpdGxlID0gdHlwZSkgPT4gYDxhIGhyZWY9XCIke2Jhc2VVcmwoKX0vc2NoZW1hLyR7dHlwZX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RpdGxlfTwvYT5gO1xuZXhwb3J0IGNvbnN0IGNvZGUgPSAodGV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikgPT4gYDxjb2RlPiR7dGV4dH08L2NvZGU+YDtcbmNvbnN0IGRhdGVGb3JtYXRNZXNzYWdlID1cbiAgYHNob3VsZCBmb2xsb3cgdGhlIElTTyA4NjAxIGRhdGUgZm9ybWF0LCBlLmcuICR7Y29kZSgyMDAwKX0sIG9yICR7Y29kZSgnMjAwMC0xMicpfSwgb3IgJHtjb2RlKCcyMDAwLTEyLTMwJyl9YDtcbmNvbnN0IGNvbnRhY3RVcyA9ICh0ZXh0ID0gJ2NvbnRhY3QgdXMnKSA9PiBgPGEgaHJlZj1cIm1haWx0bzoke2NvbnRhY3RVc0VtYWlsfVwiPiR7dGV4dH08L2E+YDtcbmNvbnN0IG1vZGVsTGluayA9ICh0ZXJtOiBUZXJtLCBtb2RlbDogVGVybSkgPT4gYFxuICA8YSBocmVmPVwiJHtwYXRoVG9BcGlEb2NzUGF0aChtb2RlbFsnQGlkJ10sIHRlcm1bJ0BpZCddKX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4ke21vZGVsLm5hbWV9PC9zcGFuPlxuICAgIDxzcGFuPihWaWV3IERvY3MpPC9zcGFuPlxuICA8L2E+XG5gO1xuY29uc3QgdGhyZXNob2xkID0gKHZhbHVlOiBudW1iZXIpID0+IGNvZGUoYCR7dmFsdWUgKiAxMDB9JWApO1xuXG5jb25zdCBub1RpbGxhZ2U6IFBhcnRpYWw8VGVybT4gPSB7aWQ6ICdub1RpbGxhZ2UnLCBuYW1lOiAnTm8gdGlsbGFnZSd9O1xuXG5leHBvcnQgY29uc3QgbWlzc2luZ05vZGVFcnJvck1lc3NhZ2UgPSAoeyAnQHR5cGUnOiBfdCwgdHlwZSwgbmFtZSB9OiBhbnkpID0+XG4gIChfdCB8fCB0eXBlKSA9PT0gJ1Rlcm0nID9cbiAgICBgJHtuYW1lID8gYFRoZSB0ZXJtIFwiJHtuYW1lfVwiYCA6ICdUaGlzIHRlcm0nfSBkb2Vzbid0IG1hdGNoIGEgdGVybSBpbiB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LlxuICBQbGVhc2UgY2hlY2sgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeScpfSBmb3IgdGhlIGNvcnJlY3QgJHtjb2RlKCdAaWQnKX0gb3IgJHtjb2RlKCduYW1lJyl9IGFuZCBzcGVsbGluZy5gXG4gICAgOiBgVGhpcyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGRvZXMgbm90IGV4aXN0IGluIEhlc3RpYS4gSWYgeW91IGFyZSB0cnlpbmcgdG8gbGluayB0byBhbiBleGlzdGluZ1xuICAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGluIEhlc3RpYSwgcGxlYXNlIGNoZWNrIHRoZSAke2NvZGUoJ25hbWUnKX0gb3IgJHtjb2RlKCdAaWQnKX0gaXMgY29ycmVjdC5cbiAgSWYgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGEgbmV3ICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0sIHBsZWFzZSBpZGVudGlmeSBpdCB3aXRoIGFuICR7Y29kZSgnaWQnKX0gZmllbGQuYDtcblxuLy8gc2V0IG1lc3NhZ2UgYXMgZW1wdHkgdG8gbm90IGRpc3BsYXkgaXRcbmNvbnN0IGN1c3RvbUVycm9yTWVzc2FnZToge1xuICBba2V5OiBzdHJpbmddOiAoZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IsIGVycm9yQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nO1xufSA9IHtcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ0BpZFxcJyc6ICgpID0+ICdkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuJyxcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ0B0eXBlXFwnJzogKCkgPT4gJycsXG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdpZFxcJyc6ICgpID0+ICdkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuJyxcbiAgJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2YnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBtYXRjaCBzb21lIHNjaGVtYSBpbiBhbnlPZic6ICgpID0+ICcnLFxuICAnc2hvdWxkIE5PVCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllcyc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgYFRoZSBmb2xsb3dpbmcgZmllbGQgZG9lcyBub3QgZXhpc3Q6ICR7cGFyYW1zPy5hZGRpdGlvbmFsUHJvcGVydHl9YCA6XG4gICAgICBgc2hvdWxkIG5vdCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllc2AsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5cXFxcZHsxM30kXCInOiAoKSA9PiBgc2hvdWxkIGJlIGNvbXBvc2VkIG9mIDEzIG51bWJlcnNgLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeWzAtOV17NH0oLVswLTldezJ9KT8oLVswLTldezJ9KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXihbMC05XXs0fXwtKSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/KFtUXVswLTJdWzAtOV1cXDpbMC01XVswLTldXFw6WzAtNV1bMC05XSgoXFwrfFxcLSlbMC0xXVswLTldOlswLTVdWzAtOV0pPyk/JFwiJzogKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdtdXN0IGJlIHdpdGhpbiB0aGUgY291bnRyeSc6ICgpID0+IGBUaGUgY291bnRyeSBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVja1xuICB0aGUgY291bnRyeSBmb3IgZXJyb3JzIG9yIHRoZSByZWdpb24gZm9yIGVycm9ycywgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LmAsXG4gIFttYXBFcnJvck1lc3NhZ2VdOiAoeyBkYXRhUGF0aCB9KSA9PlxuICAgIGRhdGFQYXRoID09PSAnLnJlZ2lvbicgPyBgVGhlIHJlZ2lvbiBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhlXG4gIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgZm9yIGVycm9ycyBvciB0aGUgcmVnaW9uIGZvciBlcnJvciwgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LmAgOlxuICAgIGBUaGUgY291bnRyeSBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGVcbiAgZm9yIGVycm9ycyBvciB0aGUgY291bnRyeSBmb3IgZXJyb3JzLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCxcbiAgJ3N1bSBub3QgZXF1YWwgdG8gMTAwJSBmb3Igc2FuZENvbnRlbnQsIHNpbHRDb250ZW50LCBjbGF5Q29udGVudCc6XG4gICAgKCkgPT4gYFRoZSBzdW0gb2YgU2FuZCwgU2lsdCwgYW5kIENsYXkgY29udGVudCBzaG91bGQgZXF1YWwgMTAwJSBmb3IgZWFjaCBzb2lsIGRlcHRoIGludGVydmFsLmAsXG4gICdpcyBvdXRzaWRlIHRoZSBhbGxvd2VkIHJhbmdlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAoXG4gICAgICAgIHBhcmFtcz8udGVybSA/XG4gICAgICAgICAgYGZvciB0aGlzIG1lYXN1cmVtZW50LFxuICAgICAgICAgIHRoZSBtYXhpbXVtICR7Y29kZShwYXJhbXM/LnRlcm1bJ0BpZCddIHx8IHBhcmFtcz8udGVybS5uYW1lKX0gaXMgJHtwYXJhbXM/LnJhbmdlPy5tYXh9IGFuZCB0aGUgbWluaW11bSBpcyAke3BhcmFtcz8ucmFuZ2U/Lm1pbn1gIDpcbiAgICAgICAgICBgZG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlcyBvZiBzYW5kLCBzaWx0IGFuZCBjbGF5IGNvbnRlbnQuXG4gICAgICAgICAgUGxlYXNlIGNoZWNrIHRoZSBtZWFzdXJlbWVudCwgaXRzIGRlcHRoIGludGVydmFscywgYW5kIHRoZSBkYXRlcyBvZiB0aGUgbWVhc3VyZW1lbnQuYFxuICAgICAgKSA6XG4gICAgICBgRWFjaCBzb2lsIHRleHR1cmUgaGFzIGEgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZSBmb3Igc2FuZCwgc2lsdCwgYW5kIGNsYXkgY29udGVudC5cbiAgICAgIEF0IGxlYXN0IG9uZSBtZWFzdXJlbWVudCBvZiBzYW5kLCBzaWx0LCBvciBjbGF5IGNvbnRlbnQgZG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlIGZvciB0aGUgc3BlY2lmaWVkIHNvaWwgdGV4dHVyZS5cbiAgICAgIFBsZWFzZSBjaGVjayB5b3VyIG1lYXN1cmVtZW50cywgdGhlaXIgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudHMuYCxcbiAgJ3Nob3VsZCBiZSBlcXVhbCB0byBvbmUgb2YgdGhlIGFsbG93ZWQgdmFsdWVzJzpcbiAgICAoeyBwYXJhbXMgfSkgPT4gYG11c3QgaGF2ZSBvbmUgb2YgdGhlc2UgdmFsdWVzOiAke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5qb2luKCcsICcpfWAsXG4gICdpcyBub3QgYWxsb3dlZCBmb3IgdGhpcyBjaGFyYWN0ZXJpc2VkSW5kaWNhdG9yJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7ZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICBgJHtcbiAgICAgICAgcGFyYW1zPy5hbGxvd2VkVmFsdWVzLmxlbmd0aCA/XG4gICAgICAgICAgYGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBvbmUgb2YgdGhlc2UgbWV0aG9kczogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMuam9pbignLCAnKX1gIDpcbiAgICAgICAgICBgZG9lcyBub3QgY3VycmVudGx5IGhhdmUgYW55IG1ldGhvZCBhbGxvd2VkLiBQbGVhc2UgJHtjb250YWN0VXMoKX0gdG8gY2hhbmdlIHRoaXMuYFxuICAgICAgfS5gIDpcbiAgICAgIGBTb21lIFRlcm1zIGFyZSBub3QgYWxsb3dlZCB3aXRoIHRoZSBtZXRob2QgeW91IHNlbGVjdGVkLmB9XG4gICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIGFsbG93ZWQgbWV0aG9kcyBmb3IgZWFjaCBUZXJtIGJ5IGNsaWNraW5nIG9uIHRoZW0uYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdmFsaWQgaXRlbSc6ICh7IGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gcGF0aHMubGVuZ3RoID49IDIgP1xuICAgICAgYFRoZSAke3BhdGhzW3BhdGhzLmxlbmd0aCAtIDFdLnBhdGh9IHJlbGF0ZWQgdG8gdGhpcyAke3BsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAyXS5sYWJlbCwgMSl9IGFyZSBpbnZhbGlkYCA6XG4gICAgICBgVGhlICR7cGF0aHNbMF0ucGF0aH0gYXJlIGludmFsaWRgO1xuICB9LFxuICAnbWF5IGJlIGJldHdlZW4gMCBhbmQgMTAwJzogKCkgPT4gJ3BlcmNlbnRhZ2VzIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCwgbm90IDAgYW5kIDEuIFRoaXMgbWF5IGJlIGFuIGVycm9yLicsXG4gICdtYXkgbm90IGFsbCBiZSBzZXQgdG8gZmFsc2UnOiAoKSA9PlxuICAgIGBZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGZpbGwgaW4gdGhlIGRhdGEgY29tcGxldGVuZXNzIGFzc2Vzc21lbnQuXG4gIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZmlsbCBpdCBpbiwgcGxlYXNlIHNlZSB0aGUgJHtzY2hlbWFMaW5rKCdDeWNsZSNkYXRhQ29tcGxldGVuZXNzJywgJ3NjaGVtYScpfS5gLFxuICAnbWF5IG5vdCBiZSBlbXB0eSc6ICgpID0+ICdpZiB0aGlzIHZhbHVlIHNpZ25pZmllcyBubyBkYXRhLCBIZXN0aWEgb25seSBhY2NlcHRzIFwiLVwiIG9yIGVtcHR5IGZvciBubyBkYXRhJyxcbiAgJ21heSBub3QgYmUgMCc6ICh7IGRhdGFQYXRoIH0sIGVycm9yQ291bnQpID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gYGFkZGluZyBhIHZhbHVlICR7ZXJyb3JDb3VudCA9PT0gMSA/IGAgdG8gZXZlcnkgJHtwYXRoc1swXS5sYWJlbH0gYCA6ICcgJ30gaXMgaGlnaGx5IHJlY29tbWVuZGVkXG4gICAgICBhcyB3aXRob3V0IHRoaXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgSW1wYWN0IEFzc2Vzc21lbnQuXG4gICAgICBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHdlIHJlY29tbWVuZCBzZXR0aW5nIHZhbHVlIHRvIDAuYDtcbiAgfSxcbiAgJ3RoZSBzdW0gb2YgYWJvdmUgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJzogKCkgPT5cbiAgICBgRm9yIHNpdGVzIG9mIHR5cGUgJHtjb2RlKFNpdGVTaXRlVHlwZS5jcm9wbGFuZCl9IG9yICR7Y29kZShTaXRlU2l0ZVR5cGVbJ3Blcm1hbmVudCBwYXN0dXJlJ10pfSxcbiAgICBpZiBkYXRhIGNvbXBsZXRlbmVzcyBpcyBtYXJrZWQgdHJ1ZSBmb3IgY3JvcCByZXNpZHVlLFxuICAgIHRoZSBzdW0gb2YgdGhlIEFib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgdGVybXMgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLFxuICAgIGFuZCBCZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyby5gLFxuICAnbG9uZ0ZhbGxvd1BlcmlvZCBtdXN0IGJlIGxvd2VyIHRoYW4gNSB5ZWFycyc6ICgpID0+XG4gICAgYFlvdXIgbG9uZ0ZhbGxvd1BlcmlvZCBpcyBncmVhdGVyIHRoYW4gZml2ZSB5ZWFycy5cbiAgICBGYWxsb3cgaXMgZGVmaW5lZCBieSBGQU9TVEFUIGFzIGxhbmQgbGVmdCB1bmN1bHRpdmF0ZWQgZm9yIGJldHdlZW4gMSBhbmQgNSB5ZWFycyxcbiAgICBhbmQgdGhpcyBkZWZpbml0aW9uIGlzIHVzZWQgZm9yIEhlc3RpYSBhbHNvLmAsXG4gICdzaG91bGQgYmUgd2l0aGluIHBlcmNlbnRhZ2Ugb2YgZGVmYXVsdCB2YWx1ZSc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgYGlzIMKxJHt0aHJlc2hvbGQocGFyYW1zPy50aHJlc2hvbGQpfSBkaWZmZXJlbnQgdG8gb3VyIGRlZmF1bHQgdmFsdWUgd2hpY2ggaXMgJHtwYXJhbXM/LmRlZmF1bHR9LlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgdXBsb2FkZWQgZGF0YSBhcyB0aGlzIG1heSBiZSBhbiBlcnJvci5gIDpcbiAgICAgIGBpcyBzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIG91ciBkZWZhdWx0IHZhbHVlLiBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAsXG4gICd0aGUgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0JzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYFRoZSBleHBlY3RlZCByZXN1bHQgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5jdXJyZW50LCAzKSl9LlxuICAgICAgICAke3BhcmFtcz8udGhyZXNob2xkID8gYE91ciB0aHJlc2hvbGQgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9LmAgOiAnJ31cbiAgICAgICAgUGxlYXNlIGVpdGhlcjpcbiAgICAgICAgMSkgY2hlY2sgdGhlICR7cGFyYW1zPy50ZXJtLnRlcm1UeXBlfSB2YWx1ZSB5b3UgcHJvdmlkZWQ7XG4gICAgICAgIDIpIGNoZWNrIHRoZSBkYXRhIHlvdSBwcm92aWRlZCB3aGljaCBpcyB0aGUgaW5wdXQgaW50byB0aGlzIG1vZGVsO1xuICAgICAgICAzKSBjYXJlZnVsbHkgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGlmIHdlIHVzZWQgYSBkZWZhdWx0IHByb3BlcnR5IGFzIHBhcnQgb2YgdGhlIGNhbGN1bGF0aW9ucy5gIDpcbiAgICAgICAgYG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIG1vZGVsIHJlc3VsdC5gXG4gICAgfWAsXG4gICd0aGUgbWVhc3VyZW1lbnQgcHJvdmlkZWQgbWlnaHQgYmUgaW4gZXJyb3InOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4cGVjdGVkIHZhbHVlIGZvciAke2NvZGUocGFyYW1zPy50ZXJtLm5hbWUpfSBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5jdXJyZW50LCAzKSl9LlxuICAgICAgICAke3BhcmFtcz8udGhyZXNob2xkID8gYE91ciB0aHJlc2hvbGQgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9LmAgOiAnJ31gIDpcbiAgICAgICAgYG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIG1vZGVsIHJlc3VsdC5gXG4gICAgfWAsXG4gICdtdXN0IGJlIGVxdWFsIHRvIHByZXZpb3VzIHByb2R1Y3QgbXVsdGlwbGllZCBieSB0aGUgc2hhcmUnOiAoKSA9PlxuICAgIGBQcm9kdWN0cyBmcm9tIGEgdHJhbnNmb3JtYXRpb24gd2hpY2ggYXJlIGFuIElucHV0IGluIHRvIHRoZSBuZXh0IHRyYW5zZm9ybWF0aW9uIG11c3QgZm9sbG93IHRoZSBmb2xsb3dpbmcgcnVsZTpcbiAgICAke2NvZGUoJ3ByZXZpb3VzLnByb2R1Y3QudmFsdWUgKiBjdXJyZW50LnByZXZpb3VzVHJhbnNmb3JtYXRpb25TaGFyZSAvIDEwMCA9PSBjdXJyZW50LmlucHV0LnZhbHVlJyl9YCxcbiAgJ211c3QgaGF2ZSBvbmx5IG9uZSBlbnRyeSB3aXRoIHRoZSBzYW1lIHRlcm0udGVybVR5cGUgPSBleGNyZXRhTWFuYWdlbWVudCc6ICgpID0+XG4gICAgYFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBQcmFjdGljZSBvZiB0eXBlIGV4Y3JldGFNYW5hZ2VtZW50IGluIGEgQ3ljbGUuXG4gICAgVG8gcmVwcmVzZW50IG11bHRpcGxlIGV4Y3JldGEgbWFuYWdlbWVudCBzeXN0ZW1zIGVpdGhlciB1c2UgbXVsdGlwbGUgQ3ljbGVzIGFuZCBsaW5rIHRoZW0gdG9nZXRoZXIsXG4gICAgb3IgdXNlIFRyYW5zZm9ybWF0aW9ucyB3aXRoaW4gYSBDeWNsZSBhbmQgbGluayB0aG9zZSB0b2dldGhlci5gLFxuICAnZXZlcnkgaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgYmUgdW5pcXVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgQmxhbmsgTm9kZSBpcyBkdXBsaWNhdGVkLiBFdmVyeSBCbGFuayBOb2RlIHNob3VsZCBiZSB1bmlxdWUuXG4gICAgVW5pcXVlbmVzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgZmllbGRzOiAke1xuICAgICAgKHBhcmFtcz8ua2V5cyB8fCBbXSkubWFwKGNvZGUpLmpvaW4oJywgJylcbiAgICB9YCxcbiAgJ211c3QgY29udGFpbiBhcyBtYW55IGl0ZW1zIGFzIHZhbHVlcyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGUgbnVtYmVyIG9mIGRhdGVzIG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiB2YWx1ZXMuXG4gICAgQ3VycmVudGx5IHRoZXJlIGFyZSAke3BhcmFtcz8uY3VycmVudH0gZGF0ZXMgYnV0ICR7cGFyYW1zPy5leHBlY3RlZH0gdmFsdWVzLmAsXG4gICdpcyB0b28gZ2VuZXJpYyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSB0aGUgZm9sbG93aW5nIFByb2R1Y3QgJHtjb2RlKHBhcmFtcz8ucHJvZHVjdD8ubmFtZSl9IGhvd2V2ZXIsXG4gICAgeW91IGhhdmUgdXNlZCBhIGdlbmVyaWMgJHtnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8udGVybT8udGVybVR5cGUpfSB0ZXJtICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfS5cbiAgICBVc2UgYSBtb3JlIHNwZWNpZmljIHRlcm0gZm9yIHRoZSAke1xuICAgICAgZ2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKVxuICAgIH0gd2hpY2ggcmVmbGVjdHMgdGhlIHNwZWNpZmljICR7XG4gICAgICBnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8ucHJvZHVjdD8udGVybVR5cGUpXG4gICAgfS5gLFxuICAnaXMgbWlzc2luZyByZXF1aXJlZCBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uJzogKCkgPT5cbiAgICBgVGhlIGF1dG9tYXRpYyBiaWJsaW9ncmFwaHkgc2VhcmNoIGZhaWxlZCBmb3IgdGhpcyBCaWJsaW9ncmFwaHkuIEVpdGhlcjpcbiAgICAxKSBtYW51YWxseSBmaWxsLWluIHRoZSA8Yj5yZXF1aXJlZDwvYj4gYmlibGlvZ3JhcGhpYyBpbmZvcm1hdGlvbiBhcyBwZXJcbiAgICAke3NjaGVtYUxpbmsoU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHksICdvdXIgc2NoZW1hJyl9LlxuICAgIDIpIHByb3ZpZGUgdGhlICR7Y29kZSgnZG9jdW1lbnRET0knKX0gYXMgd2VsbCBhcyB0aGUgJHtjb2RlKCd0aXRsZScpfVxuICAgIDMpIGNoZWNrIHRoZSAke2NvZGUoJ2RvY3VtZW50RE9JJyl9IGFuZCAke2NvZGUoJ3RpdGxlJyl9IGZvciB0eXBvcyBhZ2FpbnN0IHRoZVxuICAgICR7ZXh0ZXJuYWxMaW5rKCdodHRwczovL3d3dy5tZW5kZWxleS5jb20nLCAnTWVuZGVsZXkgY2F0YWxvZ3VlJyl9YCxcbiAgJ3Nob3VsZCBiZSBsb3dlciB0aGFuIG1heCBzaXplJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBib3VuZGFyeSBvciByZWdpb24gaXMgPiR7cGFyYW1zPy5leHBlY3RlZH1rbTIgYW5kIGlzIHRvbyBsYXJnZSB0byByZWxpYWJseSBnYXAgZmlsbCBNZWFzdXJlbWVudHMuYCxcbiAgJ2FuIGV4Y3JldGEgaW5wdXQgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBhbiBleGNyZXRhTWFuYWdlbWVudCBwcmFjdGljZSc6ICh7IGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gYEV4Y3JldGEgbWFuYWdlbWVudCBpcyB0aGUgY29udmVyc2lvbiBvZiBleGNyZXRhIHRvIGFub3RoZXIgdHlwZSBvZiBleGNyZXRhLlxuICAgICAgWW91IGhhdmUgYWRkZWQgYW4gZXhjcmV0YU1hbmFnZW1lbnQgUHJhY3RpY2UgdG8gdGhpcyAke3BhdGhzWzBdLmxhYmVsfSBidXQgdGhlcmUgaXMgbm8gZXhjcmV0YSBJbnB1dC5cbiAgICAgIFRvIHJlcHJlc2VudCBleGNyZXRhIG1hbmFnZW1lbnQsIHVzZSBhICR7cGF0aHNbMF0ubGFiZWx9IHdpdGggZXhjcmV0YSBhcyBhbiBJbnB1dCBhbmQgZXhjcmV0YU1hbmFnZW1lbnQgYXMgYSBQcmFjdGljZS5gO1xuICB9LFxuICAnb25seSAxIHByaW1hcnkgcHJvZHVjdCBhbGxvd2VkJzogKCkgPT4gJ1RoZXJlIGNhbiBvbmx5IGJlIG9uZSBwcmltYXJ5IHByb2R1Y3QgaW4gZWFjaCBDeWNsZS4nLFxuICAnaXMgbm90IGFsbG93ZWQgaW4gY29tYmluYXRpb24gd2l0aCBub1RpbGxhZ2UnOiAoKSA9PlxuICAgIGBUaGlzIG9wZXJhdGlvbiBpbnZvbHZlcyB0aWxsYWdlLCB5ZXQgeW91IGhhdmUgc3BlY2lmaWVkIHRoZSBQcmFjdGljZSAke3Rlcm1MaW5rKG5vVGlsbGFnZSl9LlxuICAgIEVpdGhlciBjaGFuZ2UgdGhpcyBvcGVyYXRpb24gb3IgdGhlIFByYWN0aWNlLmAsXG4gICdzaG91bGQgY29udGFpbiBhIHRpbGxhZ2UgcHJhY3RpY2UnOiAoKSA9PlxuICAgIGBXZSByZWNvbW1lbmQgc3BlY2lmeWluZyB0aGUgdHlwZSBvZiB0aWxsYWdlIHVzZWQgZm9yIHRoaXMgQ3ljbGUuXG4gICAgUGxlYXNlIHNlZSB0aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS50aWxsYWdlKX0gZ2xvc3NhcnkuYCxcbiAgJ211c3Qgc2V0IHZhbHVlIGZvciBldmVyeSB0aWxsYWdlIHByYWN0aWNlJzogKCkgPT5cbiAgICBgRWl0aGVyIHNwZWNpZnkgYSBzaW5nbGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS50aWxsYWdlKX0gcHJhY3RpY2Ugb3IgYWRkIGEgdmFsdWUgdG8gYWxsIHByYWN0aWNlcy5gLFxuICAnc3VtIG5vdCBlcXVhbCB0byAxMDAlIGZvciB0aWxsYWdlIHByYWN0aWNlcyc6ICgpID0+XG4gICAgYFRoZSBzdW0gb2YgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS50aWxsYWdlKX0gcHJhY3RpY2VzIG11c3QgZXF1YWwgMTAwJS5gLFxuICAnY2FuIG9ubHkgaGF2ZSAxIHRpbGxhZ2UgcHJhY3RpY2Ugd2l0aG91dCBhIHZhbHVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYEl0IGlzIG5vdCBwb3NzaWJsZSBmb3IgYSBDeWNsZSB0byBoYXZlIHRoZSBmb2xsb3dpbmcgdGlsbGFnZSBQcmFjdGljZXM6XG4gICAgJHsocGFyYW1zPy5jdXJyZW50ID8/IFtdKS5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKS5qb2luKCcgYW5kICcpfSBhdCB0aGUgc2FtZSB0aW1lLlxuICAgIElmIG11bHRpcGxlIHRpbGxhZ2UgcHJhY3RpY2VzIGRpZCBvY2N1ciwgcGxlYXNlIHNwZWNpZnkgdGhlIHBlcmNlbnRhZ2Ugb2YgYXJlYSB0aGV5IG9jY3VycmVkIG9uLmAsXG4gICdjYW4gbm90IGJlIGxpbmtlZCB0byB0aGUgc2FtZSBDeWNsZSc6ICgpID0+ICdZb3UgY2FuIG5vdCBsaW5rIGFuIElucHV0IHRvIHRoZSBJbXBhY3QgQXNzZXNzbWVudCBvZiB0aGUgc2FtZSBDeWNsZS4nLFxuICAvLyBkZXByZWNhdGVkLCByZW1vdmUgd2hlbiBtZXNzYWdlIGlzIG5vdCBiZWluZyB1c2VkIGFueW1vcmVcbiAgJ211c3QgYmUgMCBmb3IgcHJvZHVjdCB2YWx1ZSAwJzogKHsgZGF0YVBhdGgsIHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSAke2NvZGUoZGF0YVBhdGg/LnNwbGl0KCcuJykucG9wKCkhKX0gb2YgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgPyBjb2RlKHBhcmFtcz8udGVybS5uYW1lKSA6ICd0aGF0IHByb2R1Y3QnXG4gICAgfSBtdXN0IGFsc28gYmUgemVyby5gLFxuICAnZWNvbm9taWNWYWx1ZVNoYXJlIG11c3QgYmUgMCBmb3IgcHJvZHVjdCB2YWx1ZSAwJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlIGVjb25vbWljVmFsdWVTaGFyZSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmAsXG4gICdyZXZlbnVlIG11c3QgYmUgMCBmb3IgcHJvZHVjdCB2YWx1ZSAwJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlIHJldmVudWUgb2YgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgPyBjb2RlKHBhcmFtcz8udGVybS5uYW1lKSA6ICd0aGF0IHByb2R1Y3QnXG4gICAgfSBtdXN0IGFsc28gYmUgemVyby5gXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlID0gKG1lc3NhZ2U/OiBzdHJpbmcsIGVycm9yPzogSVZhbGlkYXRpb25FcnJvciwgZXJyb3JDb3VudCA9IDEpID0+IHtcbiAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZSA9IG1lc3NhZ2UgJiYgbWVzc2FnZSBpbiBjdXN0b21FcnJvck1lc3NhZ2UgP1xuICAgIGN1c3RvbUVycm9yTWVzc2FnZVttZXNzYWdlXShlcnJvciEsIGVycm9yQ291bnQpIDpcbiAgICBtZXNzYWdlO1xuICByZXR1cm4gZm9ybWF0dGVkTWVzc2FnZSA/IGA8cCBjbGFzcz1cImlzLW5vcm1hbFwiPiR7Zm9ybWF0dGVkTWVzc2FnZX08L3A+YCA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEVycm9yID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvciwgZXJyb3JDb3VudCA9IDEpOiBJVmFsaWRhdGlvbkVycm9yIHwgdW5kZWZpbmVkID0+IGVycm9yID8gKHtcbiAgbGV2ZWw6ICdlcnJvcicsXG4gIC4uLmVycm9yLFxuICBtYXBFcnJvcjogZXJyb3IubWVzc2FnZSA9PT0gbWFwRXJyb3JNZXNzYWdlLFxuICBtZXNzYWdlOiBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IubWVzc2FnZSwgZXJyb3IsIGVycm9yQ291bnQpXG59KSA6IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IGVycm9ySGFzRXJyb3IgPSAoZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yKSA9PiBlcnJvciAmJiAoZXJyb3IubGV2ZWwgPT09ICdlcnJvcicgfHwgIWVycm9yLmxldmVsKTtcblxuZXhwb3J0IGNvbnN0IGVycm9ySGFzV2FybmluZyA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+IGVycm9yICYmIGVycm9yLmxldmVsID09PSAnd2FybmluZyc7XG5cbmV4cG9ydCBjb25zdCBpc01pc3NpbmdQcm9wZXJ0eUVycm9yID0gKHsgcGFyYW1zIH06IElWYWxpZGF0aW9uRXJyb3IpID0+ICEhcGFyYW1zICYmICdtaXNzaW5nUHJvcGVydHknIGluIHBhcmFtcztcblxuZXhwb3J0IGNvbnN0IGlzTWlzc2luZ09uZU9mRXJyb3IgPSAoeyBrZXl3b3JkLCBzY2hlbWFQYXRoIH06IElWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGtleXdvcmQgPT09ICdyZXF1aXJlZCcgJiYgKHNjaGVtYVBhdGggfHwgJycpLmluY2x1ZGVzKCdvbmVPZicpO1xuXG5jb25zdCBpc0ZhaWxpbmdLZXl3b3JkRXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gISFwYXJhbXMgJiYgJ2ZhaWxpbmdLZXl3b3JkJyBpbiBwYXJhbXM7XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJFcnJvciA9IChlcnJvcjogSVZhbGlkYXRpb25FcnJvcikgPT4gW1xuICBpc0ZhaWxpbmdLZXl3b3JkRXJyb3Jcbl0uZXZlcnkoZnVuYyA9PiAhZnVuYyhlcnJvcikpO1xuXG5leHBvcnQgY29uc3QgbWlzc2luZ05vZGVFcnJvcnMgPSAoZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10pID0+XG4gIGVycm9ycy5maWx0ZXIoKHsga2V5d29yZCwgcGFyYW1zIH0pID0+XG4gICAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAocGFyYW1zPy5taXNzaW5nUHJvcGVydHkgPT09ICdAdHlwZScgfHwgcGFyYW1zPy5taXNzaW5nUHJvcGVydHkgPT09ICdAaWQnKVxuICApO1xuIl19
|