nuxeo-development-framework 6.1.3 → 6.1.5
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/nuxeo-development-framework.umd.js +390 -350
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-option-text/filter-option-text.component.js +4 -3
- package/esm2015/lib/components/ndf-filters/models/base-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/filter-option.model.js +1 -1
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +5 -3
- package/esm2015/lib/components/ndf-filters/pipes/evaluate-label.pipe.js +40 -0
- package/esm2015/lib/components/ndf-filters/pipes/index.js +4 -3
- package/esm2015/lib/components/ndf-filters/services/aggregation-field.service.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +2 -2
- package/esm2015/lib/shared/evaluator/types.js +1 -1
- package/fesm2015/nuxeo-development-framework.js +360 -322
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-filters/models/base-field-config.d.ts +2 -1
- package/lib/components/ndf-filters/models/filter-option.model.d.ts +3 -0
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +31 -30
- package/lib/components/ndf-filters/pipes/evaluate-label.pipe.d.ts +14 -0
- package/lib/components/ndf-filters/pipes/index.d.ts +3 -2
- package/lib/shared/evaluator/types.d.ts +1 -1
- package/package.json +1 -1
package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js
CHANGED
|
@@ -369,7 +369,7 @@ export class NdfReportsComponent extends DestroySubject {
|
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
NdfReportsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, deps: [{ token: i1.TranslateService }, { token: i2.FiltersMapperService }, { token: i3.NdfReportsService }, { token: i3.ChartManagerService }, { token: i3.ReportTransformService }, { token: i0.ChangeDetectorRef }, { token: i2.FilterQueryService }, { token: i3.ReportsStateService }, { token: i3.ReportConfigurationService }, { token: i4.Router }, { token: i0.NgZone }, { token: i3.ReportsHooksService }], target: i0.ɵɵFactoryTarget.Component });
|
|
372
|
-
NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", loadCondition: "loadCondition", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, queries: [{ propertyName: "filterCustomTemplate", first: true, predicate: CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "headerPanelTemplate", first: true, predicate: HEADER_PANEL_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "emptyContentTemplate", first: true, predicate: EMPTY_CONTENT_TEMPLATE, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"ndf-reports__container\"\r\n [class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n [dir]=\"direction\"\r\n ndfFluidHeight\r\n>\r\n <div\r\n class=\"absolute flex justify-center items-center loading-result\"\r\n *ngIf=\"isLoadingResult && callLoadCondition()\"\r\n >\r\n <mat-spinner class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n </div>\r\n\r\n <div class=\"ndf-reports__panel print:hidden\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerPanelTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: aggregations,\r\n filterChanged: filterChanged,\r\n activeQuery: activeQuery,\r\n triggerUpdate: triggerUpdate,\r\n reset: resetFilters,\r\n config: config\r\n }\"\r\n ></ng-container>\r\n\r\n <app-filters-panel\r\n *ngIf=\"!!filtersConfig?.fields?.length && callLoadCondition()\"\r\n [fields]=\"filtersConfig?.fields\"\r\n [aggregations]=\"aggregations\"\r\n (filterChanged)=\"filterChanged($event)\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n class=\"ndf-reports__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n ></app-filters-panel>\r\n </div>\r\n\r\n <ng-container *ngIf=\"callLoadCondition(); else emptyContent\">\r\n <div\r\n class=\"ndf-reports__content\"\r\n (scrolled)=\"onContentScroll($event)\"\r\n *ngIf=\"reportsData$ | async as reports\"\r\n >\r\n <div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n <button\r\n mat-stroked-button\r\n class=\"toggle-button\"\r\n (click)=\"togglePanel()\"\r\n >\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <app-editor-button\r\n *ngIf=\"jsonEditorEnabled && reportsKey\"\r\n [key]=\"reportsKey\"\r\n [type]=\"editorType\"\r\n ></app-editor-button>\r\n <button\r\n mat-stroked-button\r\n *ngIf=\"config?.options?.print\"\r\n class=\"print-button\"\r\n (click)=\"printAll()\"\r\n >\r\n <mat-icon> print</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n <app-ndf-report\r\n *ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n [config]=\"config\"\r\n [data]=\"reports?.response\"\r\n [criteria]=\"filtersParams$ | async\"\r\n [direction]=\"direction\"\r\n [attr.data-width]=\"config?.layout?.width || 4\"\r\n [attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n [attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n [attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n [class.wide]=\"config?.layout?.width >= 6\"\r\n [style]=\"config?.layout?.style\"\r\n class=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n (onNavigate)=\"onNavigate($event)\"\r\n (onOpen)=\"openReportDetails($event, config)\"\r\n ></app-ndf-report>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n class=\"ndf-reports__details print:hidden\"\r\n [class.opened]=\"showDetails\"\r\n [@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n (@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n >\r\n <app-ndf-table\r\n *ngIf=\"reportDetails$ | async as report\"\r\n [config]=\"report.config\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n [customCriteria]=\"detailsFiltersParams$ | async\"\r\n >\r\n <ng-template searchTableTemplate let-toggle=\"togglePanel\">\r\n <div class=\"ndf-reports__details__header flex gap-2\">\r\n <button mat-stroked-button class=\"toggle-button\" (click)=\"toggle()\">\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"close-button\"\r\n (click)=\"closeDetailsPanel()\"\r\n >\r\n <mat-icon> close</mat-icon>\r\n </button>\r\n </div>\r\n <h3>\r\n {{ report.label | translate }}\r\n </h3>\r\n </ng-template>\r\n </app-ndf-table>\r\n </div>\r\n</div>\r\n\r\n<ng-template #emptyContent>\r\n <div class=\"ndf-reports__content flex items-center flex-grow-1\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyContentTemplate || defaultEmptyContent\"\r\n ></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyContent>\r\n <div class=\"no-data mt-26\">\r\n {{ 'noData' | translate }}\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--table-dev-height: var(--ndf-reports-table-dev-height, auto);--report-height: var(--ndf-reports-report-height, 430px);--cp-height: var(--report-height);padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}@media print{:host{--report-height: auto;--cp-print-min-height: 80mm;padding:0}}.loading-result{background:var(--loading-result-background, rgba(255, 255, 255, .5));-webkit-backdrop-filter:var(--loading-result-filter, blur(3px));backdrop-filter:var(--loading-result-filter, blur(3px));width:100%;height:100%;z-index:3}.ndf-reports *{box-sizing:border-box;min-height:0}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc( var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5) ));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-pis: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-pis, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible;width:100%;margin:0;padding:0;page-break-after:avoid}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 10mm;--reports-grid-margin-top: 0;padding:0;margin:0;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i10.NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: i11.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "styleClass", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i12.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i13.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i14.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
|
|
372
|
+
NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", loadCondition: "loadCondition", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, queries: [{ propertyName: "filterCustomTemplate", first: true, predicate: CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "headerPanelTemplate", first: true, predicate: HEADER_PANEL_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "emptyContentTemplate", first: true, predicate: EMPTY_CONTENT_TEMPLATE, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"ndf-reports__container\"\r\n [class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n [dir]=\"direction\"\r\n ndfFluidHeight\r\n>\r\n <div\r\n class=\"absolute flex justify-center items-center loading-result\"\r\n *ngIf=\"isLoadingResult && callLoadCondition()\"\r\n >\r\n <mat-spinner class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n </div>\r\n\r\n <div class=\"ndf-reports__panel print:hidden\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerPanelTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: aggregations,\r\n filterChanged: filterChanged,\r\n activeQuery: activeQuery,\r\n triggerUpdate: triggerUpdate,\r\n reset: resetFilters,\r\n config: config\r\n }\"\r\n ></ng-container>\r\n\r\n <app-filters-panel\r\n *ngIf=\"!!filtersConfig?.fields?.length && callLoadCondition()\"\r\n [fields]=\"filtersConfig?.fields\"\r\n [aggregations]=\"aggregations\"\r\n (filterChanged)=\"filterChanged($event)\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n class=\"ndf-reports__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n ></app-filters-panel>\r\n </div>\r\n\r\n <ng-container *ngIf=\"callLoadCondition(); else emptyContent\">\r\n <div\r\n class=\"ndf-reports__content\"\r\n (scrolled)=\"onContentScroll($event)\"\r\n *ngIf=\"reportsData$ | async as reports\"\r\n >\r\n <div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n <button\r\n mat-stroked-button\r\n class=\"toggle-button\"\r\n (click)=\"togglePanel()\"\r\n >\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <app-editor-button\r\n *ngIf=\"jsonEditorEnabled && reportsKey\"\r\n [key]=\"reportsKey\"\r\n [type]=\"editorType\"\r\n ></app-editor-button>\r\n <button\r\n mat-stroked-button\r\n *ngIf=\"config?.options?.print\"\r\n class=\"print-button\"\r\n (click)=\"printAll()\"\r\n >\r\n <mat-icon> print</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n <app-ndf-report\r\n *ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n [config]=\"config\"\r\n [data]=\"reports?.response\"\r\n [criteria]=\"filtersParams$ | async\"\r\n [direction]=\"direction\"\r\n [attr.data-width]=\"config?.layout?.width || 4\"\r\n [attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n [attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n [attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n [class.wide]=\"config?.layout?.width >= 6\"\r\n [style]=\"config?.layout?.style\"\r\n class=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n (onNavigate)=\"onNavigate($event)\"\r\n (onOpen)=\"openReportDetails($event, config)\"\r\n ></app-ndf-report>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n class=\"ndf-reports__details print:hidden\"\r\n [class.opened]=\"showDetails\"\r\n [@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n (@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n >\r\n <app-ndf-table\r\n *ngIf=\"reportDetails$ | async as report\"\r\n [config]=\"report.config\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n [customCriteria]=\"detailsFiltersParams$ | async\"\r\n >\r\n <ng-template searchTableTemplate let-toggle=\"togglePanel\">\r\n <div class=\"ndf-reports__details__header flex gap-2\">\r\n <button mat-stroked-button class=\"toggle-button\" (click)=\"toggle()\">\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"close-button\"\r\n (click)=\"closeDetailsPanel()\"\r\n >\r\n <mat-icon> close</mat-icon>\r\n </button>\r\n </div>\r\n <h3>\r\n {{ report.label | translate }}\r\n </h3>\r\n </ng-template>\r\n </app-ndf-table>\r\n </div>\r\n</div>\r\n\r\n<ng-template #emptyContent>\r\n <div class=\"ndf-reports__content flex items-center flex-grow-1\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyContentTemplate || defaultEmptyContent\"\r\n ></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyContent>\r\n <div class=\"no-data mt-26\">\r\n {{ 'noData' | translate }}\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--table-dev-height: var(--ndf-reports-table-dev-height, auto);--report-height: var(--ndf-reports-report-height, 430px);--cp-height: var(--report-height);padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}@media print{:host{--report-height: auto;--cp-print-min-height: 80mm;padding:0}}.loading-result{background:var(--loading-result-background, rgba(255, 255, 255, .5));-webkit-backdrop-filter:var(--loading-result-filter, blur(3px));backdrop-filter:var(--loading-result-filter, blur(3px));width:100%;height:100%;z-index:3}.ndf-reports *{box-sizing:border-box;min-height:0}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc( var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5) ));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-pis: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-pis, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible;width:100%;margin:0;padding:0;page-break-after:avoid}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));grid-template-rows:var(--reports-grid-rows, auto);margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 10mm;--reports-grid-margin-top: 0;padding:0;margin:0;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i10.NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: i11.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "styleClass", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i12.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i13.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i14.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
|
|
373
373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, decorators: [{
|
|
374
374
|
type: Component,
|
|
375
375
|
args: [{
|
|
@@ -407,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
407
407
|
type: ContentChild,
|
|
408
408
|
args: [EMPTY_CONTENT_TEMPLATE, { read: TemplateRef }]
|
|
409
409
|
}] } });
|
|
410
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXJlcG9ydHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2NvbnRhaW5lcnMvbmRmLXJlcG9ydHMvbmRmLXJlcG9ydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2NvbnRhaW5lcnMvbmRmLXJlcG9ydHMvbmRmLXJlcG9ydHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBRVQsRUFBRSxFQUNGLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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LFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgdHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBmb3JrSm9pbixcclxuICBmcm9tLFxyXG4gIGZyb21FdmVudCxcclxuICBPYnNlcnZhYmxlLFxyXG4gIG9mLFxyXG4gIFJlcGxheVN1YmplY3QsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgZmlsdGVyLFxyXG4gIGZpbmFsaXplLFxyXG4gIG1hcCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERlc3Ryb3lTdWJqZWN0LCBGbHVpZEhlaWdodERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBBcGlSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOREZfRURJVE9SX1RZUEUgfSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtY29uZmlnLWVkaXRvci9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gIEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcbiAgQ1VTVE9NX1RFTVBMQVRFLFxyXG4gIEZpZWxkQ29uZmlnTW9kZWwsXHJcbiAgRmlsdGVyUXVlcnlTZXJ2aWNlLFxyXG4gIEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG4gIEZvcm1RdWVyeU1vZGVsLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzJztcclxuaW1wb3J0IHsgTmRmVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXMnO1xyXG5pbXBvcnQge1xyXG4gIEVNUFRZX0NPTlRFTlRfVEVNUExBVEUsXHJcbiAgSEVBREVSX1BBTkVMX1RFTVBMQVRFLFxyXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG4gIENyaXRlcmlhTW9kZWwsXHJcbiAgTmRmUmVwb3J0c0NvbmZpZyxcclxuICBSZXBvcnRDb25maWdNb2RlbCxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcbiAgTmRmUmVwb3J0c1NlcnZpY2UsXHJcbiAgUmVwb3J0Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgUmVwb3J0c0hvb2tzU2VydmljZSxcclxuICBSZXBvcnRzU3RhdGVTZXJ2aWNlLFxyXG4gIFJlcG9ydFRyYW5zZm9ybVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBtYXBUb05kZlRhYmxlQ29uZmlnLCBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcclxuXHJcbmV4cG9ydCBjb25zdCBzbGlkZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgc3RhdGUoXHJcbiAgICAnY2xvc2VkJyxcclxuICAgIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCh2YXIoLS1uZGYtcmVwb3J0cy1kZXRhaWxzLXRyYW5zbGF0ZVgsIC0xMDAlKSknLFxyXG4gICAgfSlcclxuICApLFxyXG4gIHN0YXRlKCdvcGVuJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSksXHJcbiAgdHJhbnNpdGlvbignY2xvc2VkIDw9PiBvcGVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSksXHJcbl0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbmRmLXJlcG9ydHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmRmLXJlcG9ydHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ25kZi1yZXBvcnRzJyxcclxuICAgICdbZGlyXSc6ICdkaXJlY3Rpb24nLFxyXG4gIH0sXHJcbiAgYW5pbWF0aW9uczogW3NsaWRlQW5pbWF0aW9uXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5kZlJlcG9ydHNDb21wb25lbnRcclxuICBleHRlbmRzIERlc3Ryb3lTdWJqZWN0XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXHJcbntcclxuICBAVmlld0NoaWxkKEZsdWlkSGVpZ2h0RGlyZWN0aXZlKSBmbHVpZERpcmVjdGl2ZTogRmx1aWRIZWlnaHREaXJlY3RpdmU7XHJcbiAgX2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcbiAgaXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG4gIHJlcG9ydHNEYXRhJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIGlzRXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUXVlcnlTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgIHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICB9PihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViID0gbmV3IFJlcGxheVN1YmplY3Q8Rm9ybVF1ZXJ5TW9kZWw+KCk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlRmlsdGVyc1F1ZXJ5JCA9IHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmUmVwb3J0c0NvbmZpZz4obnVsbCk7XHJcbiAgcmVhZG9ubHkgcmVwb3J0Q29uZmlnJCA9IHRoaXMuX2NvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyaXRlcmlhTW9kZWw+KFxyXG4gICAgbnVsbFxyXG4gICk7XHJcbiAgcmVhZG9ubHkgZmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmlnZ2VyRmlsdGVyc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RldGFpbHNGaWx0ZXJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4oXHJcbiAgICBudWxsXHJcbiAgKTtcclxuICByZWFkb25seSBkZXRhaWxzRmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9kZXRhaWxzRmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX3JlcG9ydERldGFpbHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGNvbmZpZzogTmRmVGFibGVDb25maWc7XHJcbiAgfT4obnVsbCk7XHJcblxyXG4gIGdldCBhY3RpdmVRdWVyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpPy5jdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcmVwb3J0RGV0YWlscyQgPSB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPjtcclxuXHJcbiAgZ2V0IHNob3dEZXRhaWxzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG5cclxuICBnZXQgZmlsdGVyc0NvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVycztcclxuICB9XHJcblxyXG4gIGdldCByZXBvcnRDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnJlcG9ydHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBqc29uRWRpdG9yRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcG9ydHNLZXk6IHN0cmluZztcclxuICBlZGl0b3JUeXBlID0gTkRGX0VESVRPUl9UWVBFLlJFUE9SVFM7XHJcblxyXG4gIEBJbnB1dCgpIG5hdmlnYXRlUm91dGU6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRDb25kaXRpb246ICguLi5hcmdzOiBhbnlbXSkgPT4gYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfaXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogTmRmUmVwb3J0c0NvbmZpZztcclxuICBASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdTdWJqZWN0LmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25RdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChDVVNUT01fVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICBmaWx0ZXJDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAQ29udGVudENoaWxkKEhFQURFUl9QQU5FTF9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGhlYWRlclBhbmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoRU1QVFlfQ09OVEVOVF9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGVtcHR5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICB0cmFja0J5Rm4gPSAoXzogbnVtYmVyLCByZXBvcnQ6IFJlcG9ydENvbmZpZ01vZGVsKSA9PiB7XHJcbiAgICByZXR1cm4gcmVwb3J0LmlkO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZpbHRlcnNNYXBwZXI6IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbmRmUmVwb3J0c1NlcnZpY2U6IE5kZlJlcG9ydHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhcnRIZWxwZXJTZXJ2aWNlOiBDaGFydE1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNmb3JtU2VydmljZTogUmVwb3J0VHJhbnNmb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9maWx0ZXJRdWVyeVNlcnZpY2U6IEZpbHRlclF1ZXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX3N0YXRlU2VydmljZTogUmVwb3J0c1N0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBSZXBvcnRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIF9yZXBvcnRzSG9va3NTZXJ2aWNlOiBSZXBvcnRzSG9va3NTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IHJlcy5sYW5nID09PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVwb3J0c0RhdGEkID0gdGhpcy5fcHJlcGFyZVJlcG9ydHMoKTtcclxuICAgIHRoaXMuX2hhbmRsZUtleWJvYXJkRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLl90cmlnZ2VyRmlsdGVyc1N1Yi5uZXh0KHRydWUpO1xyXG4gIH07XHJcblxyXG4gIHJlc2V0RmlsdGVycyA9ICgpID0+IHtcclxuICAgIHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuICB9O1xyXG5cclxuICBjYWxsTG9hZENvbmRpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmxvYWRDb25kaXRpb24gJiYgdHlwZW9mIHRoaXMubG9hZENvbmRpdGlvbiA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRDb25kaXRpb24odGhpcy5hY3RpdmVRdWVyeSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHJlcG9ydHNLZXkgPSBjaGFuZ2VzLnJlcG9ydHNLZXk/LmN1cnJlbnRWYWx1ZTtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgaWYgKHJlcG9ydHNLZXkgJiYgY29uZmlnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnWW91IGNhbm5vdCBzZXQgYm90aCByZXBvcnRzS2V5IGFuZCByZXBvcnRzIENvbmZpZyBhdCB0aGUgc2FtZSB0aW1lLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcG9ydHNLZXkpIHtcclxuICAgICAgdGhpcy5fbG9hZFJlcG9ydHNDb25maWcocmVwb3J0c0tleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlKGRhdGE6IHsgcmVwb3J0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pIHtcclxuICAgIGNvbnN0IHJlcG9ydCA9IGRhdGE/LnJlcG9ydDtcclxuICAgIGNvbnN0IF9jdXN0b21Sb3V0ZSA9IHJlcG9ydC5uYXZpZ2F0ZT8ucm91dGUgfHwgW107XHJcbiAgICAvLyBsZXQgcm91dGUgPSBbUk1TX0JBU0UucmVwbGFjZSgvXFwvJC8sICcnKV07XHJcbiAgICBsZXQgcm91dGUgPSB0aGlzLm5hdmlnYXRlUm91dGU7XHJcbiAgICBpZiAoISFfY3VzdG9tUm91dGUubGVuZ3RoKSB7XHJcbiAgICAgIHJvdXRlID0gWy4uLnJvdXRlLCAuLi5fY3VzdG9tUm91dGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XHJcbiAgICBpZiAocmVwb3J0Lm5hdmlnYXRlPy5pbmNsdWRlUGFyYW1zID8/IHRydWUpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkgfHwge30pLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJRdWVyeVNlcnZpY2UuZW5jb2RlUXVlcnkodGhpcy5hY3RpdmVRdWVyeSk7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zWydmaWx0ZXJzJ10gPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShyb3V0ZSwgeyBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMgfSkudGhlbigoKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYW5lbCgpIHtcclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLnJlc2l6ZUNoYXJ0cygpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByaW50QWxsKCkge1xyXG4gICAgd2luZG93LnByaW50KCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDaGFuZ2VkID0gKGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+KSA9PiB7XHJcbiAgICBpZiAoXy5pc0VxdWFsKHRoaXMuYWN0aXZlUXVlcnksIGNyaXRlcmlhKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uUXVlcnlDaGFuZ2UuZW1pdChjcml0ZXJpYSk7XHJcbiAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeShjcml0ZXJpYSk7XHJcbiAgICBjb25zdCBfZGF0ZSA9IHRoaXMuX3ByZXBhcmVNYXBwZWRRdWVyeShjcml0ZXJpYSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpO1xyXG4gICAgdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5uZXh0KF9kYXRlKTtcclxuICB9O1xyXG5cclxuICBvbkNvbnRlbnRTY3JvbGwoaXNTY3JvbGxpbmc6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXRlU2VydmljZS5vbkNvbnRlbnRTY3JvbGwoaXNTY3JvbGxpbmcpO1xyXG5cclxuICAgIGlmIChpc1Njcm9sbGluZyAmJiAhdGhpcy5faXNIZWlnaHRVcGRhdGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmx1aWREaXJlY3RpdmUuc2NoZWR1bGVTZXRIZWlnaHQoMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoIWlzU2Nyb2xsaW5nICYmIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCkge1xyXG4gICAgICB0aGlzLl9pc0hlaWdodFVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5mbHVpZERpcmVjdGl2ZS5zY2hlZHVsZVNldEhlaWdodCgxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlcG9ydERldGFpbHMoXHJcbiAgICBjcml0ZXJpYU1vZGVsOiBDcml0ZXJpYU1vZGVsLFxyXG4gICAgcmVwb3J0Q29uZmlnOiBSZXBvcnRDb25maWdNb2RlbFxyXG4gICkge1xyXG4gICAgaWYgKCFyZXBvcnRDb25maWc/LmRldGFpbHM/LmVuYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuX2RldGFpbHNGaWx0ZXJzU3ViamVjdC5uZXh0KHBhcmFtcyk7XHJcblxyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBzb3VyY2UgPSByZXBvcnRDb25maWc/LmRldGFpbHM/LnNvdXJjZTtcclxuICAgIGNvbnN0IGNvbmZpZyQgPVxyXG4gICAgICBzb3VyY2UgJiYgdHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFRhYmxlQ29uZmlndXJhdGlvbihzb3VyY2UpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghIWRhdGE/Lm9wdGlvbnM/LmZpbHRlcnM/LmZpZWxkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8ubWVyZ2UoZGF0YSwge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzKFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE/Lm9wdGlvbnM/LmZpbHRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICA6IG9mKG1hcFRvTmRmVGFibGVDb25maWcodGhpcy5jb25maWcsIHJlcG9ydENvbmZpZy5kZXRhaWxzKSk7XHJcblxyXG4gICAgY29uZmlnJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgICAgY29uZmlnLFxyXG4gICAgICAgICAgbGFiZWw6IHJlcG9ydENvbmZpZy5sYWJlbCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlRGV0YWlsc1BhbmVsKCkge1xyXG4gICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIG9uRGV0YWlsc0FuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcclxuICAgIHRoaXMuaXNEZXRhaWxzT3BlbmVkID0gZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgdGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLmRlc3Ryb3lBbGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUNyaXRlcmlhUGF5bG9hZChcclxuICAgIGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+LFxyXG4gICAgZmllbGRzOiBGaWVsZENvbmZpZ01vZGVsW10gPSB0aGlzLmZpbHRlcnNDb25maWcuZmllbGRzXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyc01hcHBlci5wcmVwYXJlUGF5bG9hZChmaWVsZHMsIGNyaXRlcmlhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVSZXBvcnRzKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdSZXN1bHQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmZpbHRlcnNQYXJhbXMkLFxyXG4gICAgICB0aGlzLnJlcG9ydENvbmZpZyQsXHJcbiAgICAgIHRoaXMuX3RyaWdnZXJGaWx0ZXJzU3ViLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoW2NyaXRlcmlhLCBjb25maWddKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNvbmZpZz8ucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IF9wYXlsb2FkID0gY3JpdGVyaWE7XHJcbiAgICAgICAgaWYgKCFjcml0ZXJpYSAmJiAhIWNvbmZpZy5hY3RpdmVRdWVyeSkge1xyXG4gICAgICAgICAgX3BheWxvYWQgPSB0aGlzLnByZXBhcmVDcml0ZXJpYVBheWxvYWQoY29uZmlnLmFjdGl2ZVF1ZXJ5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGEkID0gZnJvbShcclxuICAgICAgICAgIHRoaXMuX3JlcG9ydHNIb29rc1NlcnZpY2UuZXhlY3V0ZUJlZm9yZVN1Ym1pdCh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuX25kZlJlcG9ydHNTZXJ2aWNlLnByZXBhcmVSZXF1ZXN0KHJlcXVlc3QsIGNyaXRlcmlhKSxcclxuICAgICAgICAgICAgcmVxdWVzdCxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IHRoaXMuX25kZlJlcG9ydHNTZXJ2aWNlLmdldERhdGEocmVxdWVzdCwgcmVzKSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcG9ydHM6IEFwaVJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVNlcnZpY2UucHJlcGFyZURhdGEocmVwb3J0cywgY29uZmlnKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oW29mKGNvbmZpZyksIGRhdGEkXSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKFtjb25maWcsIHJlc3BvbnNlXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVBZ2dyZWdhdGlvbnMocmVzcG9uc2U/LmFnZ3JlZ2F0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvbmZpZyxcclxuICAgICAgICAgIHJlc3BvbnNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlS2V5Ym9hcmRFdmVudCgpIHtcclxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5zaG93RGV0YWlsc1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VEZXRhaWxzUGFuZWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZU1hcHBlZFF1ZXJ5KFxyXG4gICAgY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBtb2RlOiAncGF5bG9hZCcgfCAncGFyYW1zJ1xyXG4gICkge1xyXG4gICAgcmV0dXJuIG1vZGUgPT0gJ3BheWxvYWQnXHJcbiAgICAgID8gdGhpcy5wcmVwYXJlQ3JpdGVyaWFQYXlsb2FkKGNyaXRlcmlhKVxyXG4gICAgICA6IHtcclxuICAgICAgICAgIHBhcmFtczogdGhpcy5fc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhKSxcclxuICAgICAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQWN0aXZlUXVlcnkocXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5hY3RpdmVRdWVyeSxcclxuICAgICAgY3VycmVudDogcXVlcnksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5uZXh0KHtcclxuICAgICAgcXVlcnksXHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgJiYgdGhpcy5hZ2dyZWdhdGlvbnMpIHtcclxuICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlbG9hZFN0cmF0ZWd5ID0gdGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8uc3RyYXRlZ3k7XHJcblxyXG4gICAgaWYgKHRoaXMuYWdncmVnYXRpb25zICYmIHJlbG9hZFN0cmF0ZWd5ID09PSAnbmV2ZXInKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgJiYgcmVsb2FkU3RyYXRlZ3kgPT09ICdvbkNoYW5nZScpIHtcclxuICAgICAgaWYgKHRoaXMuX3Nob3VsZFJlbG9hZE9uQ2hhbmdlKCkpIHtcclxuICAgICAgICB0aGlzLl91cGRhdGVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9ucyk7XHJcbiAgICB0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3VsZFJlbG9hZE9uQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5maWx0ZXJzPy5yZWxvYWQ/LnN0cmF0ZWd5ICE9PSAnb25DaGFuZ2UnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyRmllbGRzID0gdGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8udHJpZ2dlckZpZWxkcztcclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJpZ2dlckZpZWxkcykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbGlkRmllbGRzID0gdHJpZ2dlckZpZWxkcy5maWx0ZXIoQm9vbGVhbik7XHJcbiAgICBpZiAoIXZhbGlkRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWN0aXZhdGVkUXVlcnkgPSB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnQgfHwge307XHJcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LnByZXZpb3VzIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IGNoYW5nZWRLZXlzID0gdGhpcy5fZ2V0Q2hhbmdlZEtleXMocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRGaWVsZHMuc29tZSgoZmllbGQpID0+IGNoYW5nZWRLZXlzLmluY2x1ZGVzKGZpZWxkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDaGFuZ2VkS2V5cyhcclxuICAgIHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGFsbEtleXMgPSBfLnVuaW9uKF8ua2V5cyhwcmV2aW91cyksIF8ua2V5cyhjdXJyZW50KSk7XHJcbiAgICByZXR1cm4gYWxsS2V5cy5maWx0ZXIoKGtleSkgPT4gIV8uaXNFcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnM6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBfLmNsb25lRGVlcChhZ2dyZWdhdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tDb25maWdDaGFuZ2UodmFsdWU6IE5kZlJlcG9ydHNDb25maWcpIHtcclxuICAgIGNvbnN0IHsgYWN0aXZlUXVlcnksIC4uLmNvbmZpZyB9ID0gdmFsdWU7XHJcbiAgICBjb25zdCB7IGFjdGl2ZVF1ZXJ5OiBhcSwgLi4uY3VycmVudENvbmZpZyB9ID1cclxuICAgICAgdGhpcy5fY29uZmlnU3ViamVjdC5nZXRWYWx1ZSgpIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9ICFfLmlzRXF1YWwoY3VycmVudENvbmZpZywgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRSZXBvcnRzQ29uZmlnKGtleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZVxyXG4gICAgICAuZ2V0UmVwb3J0c0NvbmZpZ3VyYXRpb24oa2V5KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIGlmIChjb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZzogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgY29uc3QgdmFsdWUgPSBfLmNsb25lRGVlcChjb25maWcpO1xyXG4gICAgdGhpcy5fY2hlY2tDb25maWdDaGFuZ2UodmFsdWUpO1xyXG4gICAgdGhpcy5fY29uZmlnU3ViamVjdC5uZXh0KHZhbHVlKTtcclxuICAgIGlmICh2YWx1ZT8uYWN0aXZlUXVlcnkgJiYgISFPYmplY3Qua2V5cyh2YWx1ZT8uYWN0aXZlUXVlcnkpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeSh2YWx1ZT8uYWN0aXZlUXVlcnkpO1xyXG4gICAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQoXHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZU1hcHBlZFF1ZXJ5KHZhbHVlPy5hY3RpdmVRdWVyeSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmFjdGl2ZVF1ZXJ5IHx8IE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICEhY29uZmlnPy5maWx0ZXJzLnZpc2libGU7XHJcbiAgICB0aGlzLmlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKSB7XHJcbiAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeSh7fSk7XHJcbiAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm5kZi1yZXBvcnRzX19jb250YWluZXJcIlxyXG4gIFtjbGFzcy5wYW5lbC1vcGVuZWRdPVwiaXNQYW5lbE9wZW5lZCAmJiBmaWx0ZXJzQ29uZmlnXCJcclxuICBbZGlyXT1cImRpcmVjdGlvblwiXHJcbiAgbmRmRmx1aWRIZWlnaHRcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYWJzb2x1dGUgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgbG9hZGluZy1yZXN1bHRcIlxyXG4gICAgKm5nSWY9XCJpc0xvYWRpbmdSZXN1bHQgJiYgY2FsbExvYWRDb25kaXRpb24oKVwiXHJcbiAgPlxyXG4gICAgPG1hdC1zcGlubmVyIGNsYXNzPVwibXQtNSBteC1hdXRvXCIgW2RpYW1ldGVyXT1cIjQ4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm5kZi1yZXBvcnRzX19wYW5lbCBwcmludDpoaWRkZW5cIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyUGFuZWxUZW1wbGF0ZVwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgJGltcGxpY2l0OiBhZ2dyZWdhdGlvbnMsXHJcbiAgICAgICAgZmlsdGVyQ2hhbmdlZDogZmlsdGVyQ2hhbmdlZCxcclxuICAgICAgICBhY3RpdmVRdWVyeTogYWN0aXZlUXVlcnksXHJcbiAgICAgICAgdHJpZ2dlclVwZGF0ZTogdHJpZ2dlclVwZGF0ZSxcclxuICAgICAgICByZXNldDogcmVzZXRGaWx0ZXJzLFxyXG4gICAgICAgIGNvbmZpZzogY29uZmlnXHJcbiAgICAgIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxhcHAtZmlsdGVycy1wYW5lbFxyXG4gICAgICAqbmdJZj1cIiEhZmlsdGVyc0NvbmZpZz8uZmllbGRzPy5sZW5ndGggJiYgY2FsbExvYWRDb25kaXRpb24oKVwiXHJcbiAgICAgIFtmaWVsZHNdPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCJcclxuICAgICAgW2FnZ3JlZ2F0aW9uc109XCJhZ2dyZWdhdGlvbnNcIlxyXG4gICAgICAoZmlsdGVyQ2hhbmdlZCk9XCJmaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICBbYWN0aXZlUXVlcnldPVwiYWN0aXZlRmlsdGVyc1F1ZXJ5JCB8IGFzeW5jXCJcclxuICAgICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fZmlsdGVyc1wiXHJcbiAgICAgIFtjdXN0b21UZW1wbGF0ZVJlZl09XCJmaWx0ZXJDdXN0b21UZW1wbGF0ZVwiXHJcbiAgICA+PC9hcHAtZmlsdGVycy1wYW5lbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxMb2FkQ29uZGl0aW9uKCk7IGVsc2UgZW1wdHlDb250ZW50XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnRcIlxyXG4gICAgICAoc2Nyb2xsZWQpPVwib25Db250ZW50U2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAqbmdJZj1cInJlcG9ydHNEYXRhJCB8IGFzeW5jIGFzIHJlcG9ydHNcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2hlYWRlciBmbGV4IHB0LTQgcHJpbnQ6aGlkZGVuXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGFwcC1lZGl0b3ItYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cImpzb25FZGl0b3JFbmFibGVkICYmIHJlcG9ydHNLZXlcIlxyXG4gICAgICAgICAgW2tleV09XCJyZXBvcnRzS2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cImVkaXRvclR5cGVcIlxyXG4gICAgICAgID48L2FwcC1lZGl0b3ItYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/Lm9wdGlvbnM/LnByaW50XCJcclxuICAgICAgICAgIGNsYXNzPVwicHJpbnQtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJwcmludEFsbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+IHByaW50PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVwb3J0cy1ncmlkXCIgKm5nSWY9XCIhaXNMb2FkaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgPGFwcC1uZGYtcmVwb3J0XHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIHJlcG9ydENvbmZpZy5pdGVtczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgICAgICAgIFtkYXRhXT1cInJlcG9ydHM/LnJlc3BvbnNlXCJcclxuICAgICAgICAgIFtjcml0ZXJpYV09XCJmaWx0ZXJzUGFyYW1zJCB8IGFzeW5jXCJcclxuICAgICAgICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtd2lkdGhdPVwiY29uZmlnPy5sYXlvdXQ/LndpZHRoIHx8IDRcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1oZWlnaHRdPVwiY29uZmlnPy5sYXlvdXQ/LmhlaWdodCB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1zdGFydC1jb2x1bW5dPVwiY29uZmlnPy5sYXlvdXQ/LmNvbHVtblBvc2l0aW9uIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXN0YXJ0LXJvd109XCJjb25maWc/LmxheW91dD8ucm93UG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuICAgICAgICAgIFtjbGFzcy53aWRlXT1cImNvbmZpZz8ubGF5b3V0Py53aWR0aCA+PSA2XCJcclxuICAgICAgICAgIFtzdHlsZV09XCJjb25maWc/LmxheW91dD8uc3R5bGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyZXBvcnRzLWdyaWRfX2l0ZW0ge3sgY29uZmlnPy5sYXlvdXQ/LnN0eWxlQ2xhc3MgfX0gXCJcclxuICAgICAgICAgIChvbk5hdmlnYXRlKT1cIm9uTmF2aWdhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25PcGVuKT1cIm9wZW5SZXBvcnREZXRhaWxzKCRldmVudCwgY29uZmlnKVwiXHJcbiAgICAgICAgPjwvYXBwLW5kZi1yZXBvcnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fZGV0YWlscyBwcmludDpoaWRkZW5cIlxyXG4gICAgW2NsYXNzLm9wZW5lZF09XCJzaG93RGV0YWlsc1wiXHJcbiAgICBbQHNsaWRlSW5PdXRdPVwic2hvd0RldGFpbHMgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgICAoQHNsaWRlSW5PdXQuZG9uZSk9XCJvbkRldGFpbHNBbmltYXRpb25FbmQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGFwcC1uZGYtdGFibGVcclxuICAgICAgKm5nSWY9XCJyZXBvcnREZXRhaWxzJCB8IGFzeW5jIGFzIHJlcG9ydFwiXHJcbiAgICAgIFtjb25maWddPVwicmVwb3J0LmNvbmZpZ1wiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVGaWx0ZXJzUXVlcnkkIHwgYXN5bmNcIlxyXG4gICAgICBbY3VzdG9tQ3JpdGVyaWFdPVwiZGV0YWlsc0ZpbHRlcnNQYXJhbXMkIHwgYXN5bmNcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgc2VhcmNoVGFibGVUZW1wbGF0ZSBsZXQtdG9nZ2xlPVwidG9nZ2xlUGFuZWxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2RldGFpbHNfX2hlYWRlciBmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEZXRhaWxzUGFuZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj4gY2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGgzPlxyXG4gICAgICAgICAge3sgcmVwb3J0LmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvYXBwLW5kZi10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cclxuICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnQgZmxleCBpdGVtcy1jZW50ZXIgZmxleC1ncm93LTFcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlDb250ZW50VGVtcGxhdGUgfHwgZGVmYXVsdEVtcHR5Q29udGVudFwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eUNvbnRlbnQ+XHJcbiAgPGRpdiBjbGFzcz1cIm5vLWRhdGEgbXQtMjZcIj5cclxuICAgIHt7ICdub0RhdGEnIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXJlcG9ydHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2NvbnRhaW5lcnMvbmRmLXJlcG9ydHMvbmRmLXJlcG9ydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2NvbnRhaW5lcnMvbmRmLXJlcG9ydHMvbmRmLXJlcG9ydHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBRVQsRUFBRSxFQUNGLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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LFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgdHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBmb3JrSm9pbixcclxuICBmcm9tLFxyXG4gIGZyb21FdmVudCxcclxuICBPYnNlcnZhYmxlLFxyXG4gIG9mLFxyXG4gIFJlcGxheVN1YmplY3QsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgZmlsdGVyLFxyXG4gIGZpbmFsaXplLFxyXG4gIG1hcCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERlc3Ryb3lTdWJqZWN0LCBGbHVpZEhlaWdodERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBBcGlSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOREZfRURJVE9SX1RZUEUgfSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtY29uZmlnLWVkaXRvci9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gIEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcbiAgQ1VTVE9NX1RFTVBMQVRFLFxyXG4gIEZpZWxkQ29uZmlnTW9kZWwsXHJcbiAgRmlsdGVyUXVlcnlTZXJ2aWNlLFxyXG4gIEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG4gIEZvcm1RdWVyeU1vZGVsLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzJztcclxuaW1wb3J0IHsgTmRmVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXMnO1xyXG5pbXBvcnQge1xyXG4gIEVNUFRZX0NPTlRFTlRfVEVNUExBVEUsXHJcbiAgSEVBREVSX1BBTkVMX1RFTVBMQVRFLFxyXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG4gIENyaXRlcmlhTW9kZWwsXHJcbiAgTmRmUmVwb3J0c0NvbmZpZyxcclxuICBSZXBvcnRDb25maWdNb2RlbCxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcbiAgTmRmUmVwb3J0c1NlcnZpY2UsXHJcbiAgUmVwb3J0Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgUmVwb3J0c0hvb2tzU2VydmljZSxcclxuICBSZXBvcnRzU3RhdGVTZXJ2aWNlLFxyXG4gIFJlcG9ydFRyYW5zZm9ybVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBtYXBUb05kZlRhYmxlQ29uZmlnLCBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcclxuXHJcbmV4cG9ydCBjb25zdCBzbGlkZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgc3RhdGUoXHJcbiAgICAnY2xvc2VkJyxcclxuICAgIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCh2YXIoLS1uZGYtcmVwb3J0cy1kZXRhaWxzLXRyYW5zbGF0ZVgsIC0xMDAlKSknLFxyXG4gICAgfSlcclxuICApLFxyXG4gIHN0YXRlKCdvcGVuJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSksXHJcbiAgdHJhbnNpdGlvbignY2xvc2VkIDw9PiBvcGVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSksXHJcbl0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbmRmLXJlcG9ydHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmRmLXJlcG9ydHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ25kZi1yZXBvcnRzJyxcclxuICAgICdbZGlyXSc6ICdkaXJlY3Rpb24nLFxyXG4gIH0sXHJcbiAgYW5pbWF0aW9uczogW3NsaWRlQW5pbWF0aW9uXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5kZlJlcG9ydHNDb21wb25lbnRcclxuICBleHRlbmRzIERlc3Ryb3lTdWJqZWN0XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXHJcbntcclxuICBAVmlld0NoaWxkKEZsdWlkSGVpZ2h0RGlyZWN0aXZlKSBmbHVpZERpcmVjdGl2ZTogRmx1aWRIZWlnaHREaXJlY3RpdmU7XHJcbiAgX2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcbiAgaXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG4gIHJlcG9ydHNEYXRhJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIGlzRXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUXVlcnlTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgIHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICB9PihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViID0gbmV3IFJlcGxheVN1YmplY3Q8Rm9ybVF1ZXJ5TW9kZWw+KCk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlRmlsdGVyc1F1ZXJ5JCA9IHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmUmVwb3J0c0NvbmZpZz4obnVsbCk7XHJcbiAgcmVhZG9ubHkgcmVwb3J0Q29uZmlnJCA9IHRoaXMuX2NvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyaXRlcmlhTW9kZWw+KFxyXG4gICAgbnVsbFxyXG4gICk7XHJcbiAgcmVhZG9ubHkgZmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmlnZ2VyRmlsdGVyc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RldGFpbHNGaWx0ZXJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4oXHJcbiAgICBudWxsXHJcbiAgKTtcclxuICByZWFkb25seSBkZXRhaWxzRmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9kZXRhaWxzRmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX3JlcG9ydERldGFpbHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGNvbmZpZzogTmRmVGFibGVDb25maWc7XHJcbiAgfT4obnVsbCk7XHJcblxyXG4gIGdldCBhY3RpdmVRdWVyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpPy5jdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcmVwb3J0RGV0YWlscyQgPSB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPjtcclxuXHJcbiAgZ2V0IHNob3dEZXRhaWxzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG5cclxuICBnZXQgZmlsdGVyc0NvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVycztcclxuICB9XHJcblxyXG4gIGdldCByZXBvcnRDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnJlcG9ydHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBqc29uRWRpdG9yRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcG9ydHNLZXk6IHN0cmluZztcclxuICBlZGl0b3JUeXBlID0gTkRGX0VESVRPUl9UWVBFLlJFUE9SVFM7XHJcblxyXG4gIEBJbnB1dCgpIG5hdmlnYXRlUm91dGU6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRDb25kaXRpb246ICguLi5hcmdzOiBhbnlbXSkgPT4gYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfaXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogTmRmUmVwb3J0c0NvbmZpZztcclxuICBASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdTdWJqZWN0LmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25RdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChDVVNUT01fVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICBmaWx0ZXJDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAQ29udGVudENoaWxkKEhFQURFUl9QQU5FTF9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGhlYWRlclBhbmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoRU1QVFlfQ09OVEVOVF9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGVtcHR5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICB0cmFja0J5Rm4gPSAoXzogbnVtYmVyLCByZXBvcnQ6IFJlcG9ydENvbmZpZ01vZGVsKSA9PiB7XHJcbiAgICByZXR1cm4gcmVwb3J0LmlkO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZpbHRlcnNNYXBwZXI6IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbmRmUmVwb3J0c1NlcnZpY2U6IE5kZlJlcG9ydHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhcnRIZWxwZXJTZXJ2aWNlOiBDaGFydE1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNmb3JtU2VydmljZTogUmVwb3J0VHJhbnNmb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9maWx0ZXJRdWVyeVNlcnZpY2U6IEZpbHRlclF1ZXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX3N0YXRlU2VydmljZTogUmVwb3J0c1N0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBSZXBvcnRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIF9yZXBvcnRzSG9va3NTZXJ2aWNlOiBSZXBvcnRzSG9va3NTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IHJlcy5sYW5nID09PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVwb3J0c0RhdGEkID0gdGhpcy5fcHJlcGFyZVJlcG9ydHMoKTtcclxuICAgIHRoaXMuX2hhbmRsZUtleWJvYXJkRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLl90cmlnZ2VyRmlsdGVyc1N1Yi5uZXh0KHRydWUpO1xyXG4gIH07XHJcblxyXG4gIHJlc2V0RmlsdGVycyA9ICgpID0+IHtcclxuICAgIHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuICB9O1xyXG5cclxuICBjYWxsTG9hZENvbmRpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmxvYWRDb25kaXRpb24gJiYgdHlwZW9mIHRoaXMubG9hZENvbmRpdGlvbiA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRDb25kaXRpb24odGhpcy5hY3RpdmVRdWVyeSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHJlcG9ydHNLZXkgPSBjaGFuZ2VzLnJlcG9ydHNLZXk/LmN1cnJlbnRWYWx1ZTtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgaWYgKHJlcG9ydHNLZXkgJiYgY29uZmlnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnWW91IGNhbm5vdCBzZXQgYm90aCByZXBvcnRzS2V5IGFuZCByZXBvcnRzIENvbmZpZyBhdCB0aGUgc2FtZSB0aW1lLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcG9ydHNLZXkpIHtcclxuICAgICAgdGhpcy5fbG9hZFJlcG9ydHNDb25maWcocmVwb3J0c0tleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlKGRhdGE6IHsgcmVwb3J0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pIHtcclxuICAgIGNvbnN0IHJlcG9ydCA9IGRhdGE/LnJlcG9ydDtcclxuICAgIGNvbnN0IF9jdXN0b21Sb3V0ZSA9IHJlcG9ydC5uYXZpZ2F0ZT8ucm91dGUgfHwgW107XHJcbiAgICAvLyBsZXQgcm91dGUgPSBbUk1TX0JBU0UucmVwbGFjZSgvXFwvJC8sICcnKV07XHJcbiAgICBsZXQgcm91dGUgPSB0aGlzLm5hdmlnYXRlUm91dGU7XHJcbiAgICBpZiAoISFfY3VzdG9tUm91dGUubGVuZ3RoKSB7XHJcbiAgICAgIHJvdXRlID0gWy4uLnJvdXRlLCAuLi5fY3VzdG9tUm91dGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XHJcbiAgICBpZiAocmVwb3J0Lm5hdmlnYXRlPy5pbmNsdWRlUGFyYW1zID8/IHRydWUpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkgfHwge30pLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJRdWVyeVNlcnZpY2UuZW5jb2RlUXVlcnkodGhpcy5hY3RpdmVRdWVyeSk7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zWydmaWx0ZXJzJ10gPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShyb3V0ZSwgeyBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMgfSkudGhlbigoKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYW5lbCgpIHtcclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLnJlc2l6ZUNoYXJ0cygpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByaW50QWxsKCkge1xyXG4gICAgd2luZG93LnByaW50KCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDaGFuZ2VkID0gKGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+KSA9PiB7XHJcbiAgICBpZiAoXy5pc0VxdWFsKHRoaXMuYWN0aXZlUXVlcnksIGNyaXRlcmlhKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uUXVlcnlDaGFuZ2UuZW1pdChjcml0ZXJpYSk7XHJcbiAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeShjcml0ZXJpYSk7XHJcbiAgICBjb25zdCBfZGF0ZSA9IHRoaXMuX3ByZXBhcmVNYXBwZWRRdWVyeShjcml0ZXJpYSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpO1xyXG4gICAgdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5uZXh0KF9kYXRlKTtcclxuICB9O1xyXG5cclxuICBvbkNvbnRlbnRTY3JvbGwoaXNTY3JvbGxpbmc6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXRlU2VydmljZS5vbkNvbnRlbnRTY3JvbGwoaXNTY3JvbGxpbmcpO1xyXG5cclxuICAgIGlmIChpc1Njcm9sbGluZyAmJiAhdGhpcy5faXNIZWlnaHRVcGRhdGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmx1aWREaXJlY3RpdmUuc2NoZWR1bGVTZXRIZWlnaHQoMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoIWlzU2Nyb2xsaW5nICYmIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCkge1xyXG4gICAgICB0aGlzLl9pc0hlaWdodFVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5mbHVpZERpcmVjdGl2ZS5zY2hlZHVsZVNldEhlaWdodCgxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlcG9ydERldGFpbHMoXHJcbiAgICBjcml0ZXJpYU1vZGVsOiBDcml0ZXJpYU1vZGVsLFxyXG4gICAgcmVwb3J0Q29uZmlnOiBSZXBvcnRDb25maWdNb2RlbFxyXG4gICkge1xyXG4gICAgaWYgKCFyZXBvcnRDb25maWc/LmRldGFpbHM/LmVuYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuX2RldGFpbHNGaWx0ZXJzU3ViamVjdC5uZXh0KHBhcmFtcyk7XHJcblxyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBzb3VyY2UgPSByZXBvcnRDb25maWc/LmRldGFpbHM/LnNvdXJjZTtcclxuICAgIGNvbnN0IGNvbmZpZyQgPVxyXG4gICAgICBzb3VyY2UgJiYgdHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFRhYmxlQ29uZmlndXJhdGlvbihzb3VyY2UpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghIWRhdGE/Lm9wdGlvbnM/LmZpbHRlcnM/LmZpZWxkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8ubWVyZ2UoZGF0YSwge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzKFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE/Lm9wdGlvbnM/LmZpbHRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICA6IG9mKG1hcFRvTmRmVGFibGVDb25maWcodGhpcy5jb25maWcsIHJlcG9ydENvbmZpZy5kZXRhaWxzKSk7XHJcblxyXG4gICAgY29uZmlnJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgICAgY29uZmlnLFxyXG4gICAgICAgICAgbGFiZWw6IHJlcG9ydENvbmZpZy5sYWJlbCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlRGV0YWlsc1BhbmVsKCkge1xyXG4gICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIG9uRGV0YWlsc0FuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcclxuICAgIHRoaXMuaXNEZXRhaWxzT3BlbmVkID0gZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgdGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLmRlc3Ryb3lBbGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUNyaXRlcmlhUGF5bG9hZChcclxuICAgIGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+LFxyXG4gICAgZmllbGRzOiBGaWVsZENvbmZpZ01vZGVsW10gPSB0aGlzLmZpbHRlcnNDb25maWcuZmllbGRzXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyc01hcHBlci5wcmVwYXJlUGF5bG9hZChmaWVsZHMsIGNyaXRlcmlhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVSZXBvcnRzKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdSZXN1bHQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmZpbHRlcnNQYXJhbXMkLFxyXG4gICAgICB0aGlzLnJlcG9ydENvbmZpZyQsXHJcbiAgICAgIHRoaXMuX3RyaWdnZXJGaWx0ZXJzU3ViLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoW2NyaXRlcmlhLCBjb25maWddKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNvbmZpZz8ucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IF9wYXlsb2FkID0gY3JpdGVyaWE7XHJcbiAgICAgICAgaWYgKCFjcml0ZXJpYSAmJiAhIWNvbmZpZy5hY3RpdmVRdWVyeSkge1xyXG4gICAgICAgICAgX3BheWxvYWQgPSB0aGlzLnByZXBhcmVDcml0ZXJpYVBheWxvYWQoY29uZmlnLmFjdGl2ZVF1ZXJ5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGEkID0gZnJvbShcclxuICAgICAgICAgIHRoaXMuX3JlcG9ydHNIb29rc1NlcnZpY2UuZXhlY3V0ZUJlZm9yZVN1Ym1pdCh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuX25kZlJlcG9ydHNTZXJ2aWNlLnByZXBhcmVSZXF1ZXN0KHJlcXVlc3QsIGNyaXRlcmlhKSxcclxuICAgICAgICAgICAgcmVxdWVzdCxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IHRoaXMuX25kZlJlcG9ydHNTZXJ2aWNlLmdldERhdGEocmVxdWVzdCwgcmVzKSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcG9ydHM6IEFwaVJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVNlcnZpY2UucHJlcGFyZURhdGEocmVwb3J0cywgY29uZmlnKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oW29mKGNvbmZpZyksIGRhdGEkXSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKFtjb25maWcsIHJlc3BvbnNlXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVBZ2dyZWdhdGlvbnMocmVzcG9uc2U/LmFnZ3JlZ2F0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvbmZpZyxcclxuICAgICAgICAgIHJlc3BvbnNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlS2V5Ym9hcmRFdmVudCgpIHtcclxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5zaG93RGV0YWlsc1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VEZXRhaWxzUGFuZWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZU1hcHBlZFF1ZXJ5KFxyXG4gICAgY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBtb2RlOiAncGF5bG9hZCcgfCAncGFyYW1zJ1xyXG4gICkge1xyXG4gICAgcmV0dXJuIG1vZGUgPT0gJ3BheWxvYWQnXHJcbiAgICAgID8gdGhpcy5wcmVwYXJlQ3JpdGVyaWFQYXlsb2FkKGNyaXRlcmlhKVxyXG4gICAgICA6IHtcclxuICAgICAgICAgIHBhcmFtczogdGhpcy5fc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhKSxcclxuICAgICAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQWN0aXZlUXVlcnkocXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5hY3RpdmVRdWVyeSxcclxuICAgICAgY3VycmVudDogcXVlcnksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5uZXh0KHtcclxuICAgICAgcXVlcnksXHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgJiYgdGhpcy5hZ2dyZWdhdGlvbnMpIHtcclxuICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlbG9hZFN0cmF0ZWd5ID0gdGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8uc3RyYXRlZ3k7XHJcblxyXG4gICAgaWYgKHRoaXMuYWdncmVnYXRpb25zICYmIHJlbG9hZFN0cmF0ZWd5ID09PSAnbmV2ZXInKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgJiYgcmVsb2FkU3RyYXRlZ3kgPT09ICdvbkNoYW5nZScpIHtcclxuICAgICAgaWYgKHRoaXMuX3Nob3VsZFJlbG9hZE9uQ2hhbmdlKCkpIHtcclxuICAgICAgICB0aGlzLl91cGRhdGVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9ucyk7XHJcbiAgICB0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3VsZFJlbG9hZE9uQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5maWx0ZXJzPy5yZWxvYWQ/LnN0cmF0ZWd5ICE9PSAnb25DaGFuZ2UnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyRmllbGRzID0gdGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8udHJpZ2dlckZpZWxkcztcclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJpZ2dlckZpZWxkcykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbGlkRmllbGRzID0gdHJpZ2dlckZpZWxkcy5maWx0ZXIoQm9vbGVhbik7XHJcbiAgICBpZiAoIXZhbGlkRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWN0aXZhdGVkUXVlcnkgPSB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnQgfHwge307XHJcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LnByZXZpb3VzIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IGNoYW5nZWRLZXlzID0gdGhpcy5fZ2V0Q2hhbmdlZEtleXMocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRGaWVsZHMuc29tZSgoZmllbGQpID0+IGNoYW5nZWRLZXlzLmluY2x1ZGVzKGZpZWxkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDaGFuZ2VkS2V5cyhcclxuICAgIHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGFsbEtleXMgPSBfLnVuaW9uKF8ua2V5cyhwcmV2aW91cyksIF8ua2V5cyhjdXJyZW50KSk7XHJcbiAgICByZXR1cm4gYWxsS2V5cy5maWx0ZXIoKGtleSkgPT4gIV8uaXNFcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnM6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBfLmNsb25lRGVlcChhZ2dyZWdhdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tDb25maWdDaGFuZ2UodmFsdWU6IE5kZlJlcG9ydHNDb25maWcpIHtcclxuICAgIGNvbnN0IHsgYWN0aXZlUXVlcnksIC4uLmNvbmZpZyB9ID0gdmFsdWU7XHJcbiAgICBjb25zdCB7IGFjdGl2ZVF1ZXJ5OiBhcSwgLi4uY3VycmVudENvbmZpZyB9ID1cclxuICAgICAgdGhpcy5fY29uZmlnU3ViamVjdC5nZXRWYWx1ZSgpIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9ICFfLmlzRXF1YWwoY3VycmVudENvbmZpZywgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRSZXBvcnRzQ29uZmlnKGtleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZVxyXG4gICAgICAuZ2V0UmVwb3J0c0NvbmZpZ3VyYXRpb24oa2V5KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIGlmIChjb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZzogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgY29uc3QgdmFsdWUgPSBfLmNsb25lRGVlcChjb25maWcpO1xyXG4gICAgdGhpcy5fY2hlY2tDb25maWdDaGFuZ2UodmFsdWUpO1xyXG4gICAgdGhpcy5fY29uZmlnU3ViamVjdC5uZXh0KHZhbHVlKTtcclxuICAgIGlmICh2YWx1ZT8uYWN0aXZlUXVlcnkgJiYgISFPYmplY3Qua2V5cyh2YWx1ZT8uYWN0aXZlUXVlcnkpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeSh2YWx1ZT8uYWN0aXZlUXVlcnkpO1xyXG4gICAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQoXHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZU1hcHBlZFF1ZXJ5KHZhbHVlPy5hY3RpdmVRdWVyeSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmFjdGl2ZVF1ZXJ5IHx8IE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICEhY29uZmlnPy5maWx0ZXJzLnZpc2libGU7XHJcbiAgICB0aGlzLmlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKSB7XHJcbiAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeSh7fSk7XHJcbiAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm5kZi1yZXBvcnRzX19jb250YWluZXJcIlxyXG4gIFtjbGFzcy5wYW5lbC1vcGVuZWRdPVwiaXNQYW5lbE9wZW5lZCAmJiBmaWx0ZXJzQ29uZmlnXCJcclxuICBbZGlyXT1cImRpcmVjdGlvblwiXHJcbiAgbmRmRmx1aWRIZWlnaHRcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYWJzb2x1dGUgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgbG9hZGluZy1yZXN1bHRcIlxyXG4gICAgKm5nSWY9XCJpc0xvYWRpbmdSZXN1bHQgJiYgY2FsbExvYWRDb25kaXRpb24oKVwiXHJcbiAgPlxyXG4gICAgPG1hdC1zcGlubmVyIGNsYXNzPVwibXQtNSBteC1hdXRvXCIgW2RpYW1ldGVyXT1cIjQ4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm5kZi1yZXBvcnRzX19wYW5lbCBwcmludDpoaWRkZW5cIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyUGFuZWxUZW1wbGF0ZVwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgJGltcGxpY2l0OiBhZ2dyZWdhdGlvbnMsXHJcbiAgICAgICAgZmlsdGVyQ2hhbmdlZDogZmlsdGVyQ2hhbmdlZCxcclxuICAgICAgICBhY3RpdmVRdWVyeTogYWN0aXZlUXVlcnksXHJcbiAgICAgICAgdHJpZ2dlclVwZGF0ZTogdHJpZ2dlclVwZGF0ZSxcclxuICAgICAgICByZXNldDogcmVzZXRGaWx0ZXJzLFxyXG4gICAgICAgIGNvbmZpZzogY29uZmlnXHJcbiAgICAgIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxhcHAtZmlsdGVycy1wYW5lbFxyXG4gICAgICAqbmdJZj1cIiEhZmlsdGVyc0NvbmZpZz8uZmllbGRzPy5sZW5ndGggJiYgY2FsbExvYWRDb25kaXRpb24oKVwiXHJcbiAgICAgIFtmaWVsZHNdPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCJcclxuICAgICAgW2FnZ3JlZ2F0aW9uc109XCJhZ2dyZWdhdGlvbnNcIlxyXG4gICAgICAoZmlsdGVyQ2hhbmdlZCk9XCJmaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICBbYWN0aXZlUXVlcnldPVwiYWN0aXZlRmlsdGVyc1F1ZXJ5JCB8IGFzeW5jXCJcclxuICAgICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fZmlsdGVyc1wiXHJcbiAgICAgIFtjdXN0b21UZW1wbGF0ZVJlZl09XCJmaWx0ZXJDdXN0b21UZW1wbGF0ZVwiXHJcbiAgICA+PC9hcHAtZmlsdGVycy1wYW5lbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxMb2FkQ29uZGl0aW9uKCk7IGVsc2UgZW1wdHlDb250ZW50XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnRcIlxyXG4gICAgICAoc2Nyb2xsZWQpPVwib25Db250ZW50U2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAqbmdJZj1cInJlcG9ydHNEYXRhJCB8IGFzeW5jIGFzIHJlcG9ydHNcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2hlYWRlciBmbGV4IHB0LTQgcHJpbnQ6aGlkZGVuXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGFwcC1lZGl0b3ItYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cImpzb25FZGl0b3JFbmFibGVkICYmIHJlcG9ydHNLZXlcIlxyXG4gICAgICAgICAgW2tleV09XCJyZXBvcnRzS2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cImVkaXRvclR5cGVcIlxyXG4gICAgICAgID48L2FwcC1lZGl0b3ItYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/Lm9wdGlvbnM/LnByaW50XCJcclxuICAgICAgICAgIGNsYXNzPVwicHJpbnQtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJwcmludEFsbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+IHByaW50PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVwb3J0cy1ncmlkXCIgKm5nSWY9XCIhaXNMb2FkaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgPGFwcC1uZGYtcmVwb3J0XHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIHJlcG9ydENvbmZpZy5pdGVtczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgICAgICAgIFtkYXRhXT1cInJlcG9ydHM/LnJlc3BvbnNlXCJcclxuICAgICAgICAgIFtjcml0ZXJpYV09XCJmaWx0ZXJzUGFyYW1zJCB8IGFzeW5jXCJcclxuICAgICAgICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtd2lkdGhdPVwiY29uZmlnPy5sYXlvdXQ/LndpZHRoIHx8IDRcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1oZWlnaHRdPVwiY29uZmlnPy5sYXlvdXQ/LmhlaWdodCB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1zdGFydC1jb2x1bW5dPVwiY29uZmlnPy5sYXlvdXQ/LmNvbHVtblBvc2l0aW9uIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXN0YXJ0LXJvd109XCJjb25maWc/LmxheW91dD8ucm93UG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuICAgICAgICAgIFtjbGFzcy53aWRlXT1cImNvbmZpZz8ubGF5b3V0Py53aWR0aCA+PSA2XCJcclxuICAgICAgICAgIFtzdHlsZV09XCJjb25maWc/LmxheW91dD8uc3R5bGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyZXBvcnRzLWdyaWRfX2l0ZW0ge3sgY29uZmlnPy5sYXlvdXQ/LnN0eWxlQ2xhc3MgfX0gXCJcclxuICAgICAgICAgIChvbk5hdmlnYXRlKT1cIm9uTmF2aWdhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25PcGVuKT1cIm9wZW5SZXBvcnREZXRhaWxzKCRldmVudCwgY29uZmlnKVwiXHJcbiAgICAgICAgPjwvYXBwLW5kZi1yZXBvcnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fZGV0YWlscyBwcmludDpoaWRkZW5cIlxyXG4gICAgW2NsYXNzLm9wZW5lZF09XCJzaG93RGV0YWlsc1wiXHJcbiAgICBbQHNsaWRlSW5PdXRdPVwic2hvd0RldGFpbHMgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgICAoQHNsaWRlSW5PdXQuZG9uZSk9XCJvbkRldGFpbHNBbmltYXRpb25FbmQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGFwcC1uZGYtdGFibGVcclxuICAgICAgKm5nSWY9XCJyZXBvcnREZXRhaWxzJCB8IGFzeW5jIGFzIHJlcG9ydFwiXHJcbiAgICAgIFtjb25maWddPVwicmVwb3J0LmNvbmZpZ1wiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVGaWx0ZXJzUXVlcnkkIHwgYXN5bmNcIlxyXG4gICAgICBbY3VzdG9tQ3JpdGVyaWFdPVwiZGV0YWlsc0ZpbHRlcnNQYXJhbXMkIHwgYXN5bmNcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgc2VhcmNoVGFibGVUZW1wbGF0ZSBsZXQtdG9nZ2xlPVwidG9nZ2xlUGFuZWxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2RldGFpbHNfX2hlYWRlciBmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEZXRhaWxzUGFuZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj4gY2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGgzPlxyXG4gICAgICAgICAge3sgcmVwb3J0LmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvYXBwLW5kZi10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cclxuICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnQgZmxleCBpdGVtcy1jZW50ZXIgZmxleC1ncm93LTFcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlDb250ZW50VGVtcGxhdGUgfHwgZGVmYXVsdEVtcHR5Q29udGVudFwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eUNvbnRlbnQ+XHJcbiAgPGRpdiBjbGFzcz1cIm5vLWRhdGEgbXQtMjZcIj5cclxuICAgIHt7ICdub0RhdGEnIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG5cdCAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuXHQgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuXHQgKi9cclxuXHRzZWN1cml0eU1vZGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG5cdGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG5cdCAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuXHQgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuXHQgKi9cclxuXHRzZWN1cml0eU1vZGU/OiAnc2VjdXJlJyB8ICd1bnNhZmUnO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGVtcGxhdGVTZXR0aW5ncyA9IHtcclxuXHRpbnRlcnBvbGF0ZTogUmVnRXhwO1xyXG5cdGV2YWx1YXRlOiBSZWdFeHA7XHJcblx0ZXNjYXBlOiBSZWdFeHA7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBJbnRlcnBvbGF0ZVN0cmluZyA9IHN0cmluZztcclxuXHJcbmV4cG9ydCB0eXBlIEV2YWx1YXRlZFN0cmluZzxWQVIgZXh0ZW5kcyBzdHJpbmcgPSAnc2hvdyc+ID0gYCR7c3RyaW5nfSR7VkFSfSR7V2hpdGVzcGFjZX09JHtXaGl0ZXNwYWNlfSR7c3RyaW5nfWA7XHJcblxyXG50eXBlIFdoaXRlc3BhY2UgPSAnJyB8ICcgJyB8IGAke2FueX1gO1xyXG4iXX0=
|