nuxeo-development-framework 5.4.4 → 5.4.6
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 +761 -440
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/base/base-checkbox-radio.component.js +18 -7
- package/esm2015/lib/components/ndf-filters/constants/type.js +3 -2
- package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +15 -14
- package/esm2015/lib/components/ndf-filters/containers/base-field.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/custom-field/custom-field.component.js +3 -2
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +5 -3
- package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.js +87 -0
- package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.js +20 -0
- package/esm2015/lib/components/ndf-filters/custom-components/index.js +3 -1
- package/esm2015/lib/components/ndf-filters/models/custom-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-fields-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +97 -28
- package/esm2015/lib/components/ndf-filters/public-api.js +4 -3
- package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +7 -33
- package/esm2015/lib/components/ndf-filters/utility/nxql-query.js +4 -4
- package/esm2015/lib/components/ndf-tabs/component/ndf-tabs.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +10 -2
- package/esm2015/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.js +12 -4
- package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +8 -8
- package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +27 -3
- package/esm2015/lib/components/reports/ndf-reports/models/base.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/request.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/base-chart-builder.service.js +5 -5
- package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/digit-chart.service.js +3 -3
- package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +34 -29
- package/esm2015/lib/components/reports/ndf-reports/services/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +12 -5
- package/esm2015/lib/components/reports/ndf-reports/services/reports-data-transformers.service.js +70 -0
- package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +6 -5
- package/esm2015/lib/components/skeleton/skeleton.component.js +1 -1
- package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +32 -8
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
- package/esm2015/lib/shared/evaluator/types.js +1 -1
- package/fesm2015/nuxeo-development-framework.js +754 -464
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-filters/base/base-checkbox-radio.component.d.ts +1 -0
- package/lib/components/ndf-filters/constants/type.d.ts +1 -0
- package/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.d.ts +26 -0
- package/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.d.ts +9 -0
- package/lib/components/ndf-filters/custom-components/index.d.ts +2 -0
- package/lib/components/ndf-filters/models/custom-field-config.d.ts +2 -2
- package/lib/components/ndf-filters/models/field-options/custom-fields-options.d.ts +14 -0
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +58 -47
- package/lib/components/ndf-filters/public-api.d.ts +3 -2
- package/lib/components/ndf-filters/services/dynamic-component-loader.service.d.ts +1 -3
- package/lib/components/reports/ndf-reports/base/base-chart.d.ts +5 -2
- package/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.d.ts +2 -0
- package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +4 -2
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +8 -2
- package/lib/components/reports/ndf-reports/models/base.d.ts +7 -3
- package/lib/components/reports/ndf-reports/models/details.d.ts +6 -1
- package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +6 -1
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +4 -0
- package/lib/components/reports/ndf-reports/models/request.d.ts +1 -0
- package/lib/components/reports/ndf-reports/services/base-chart-builder.service.d.ts +3 -3
- package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +9 -2
- package/lib/components/reports/ndf-reports/services/digit-chart.service.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +10 -15
- package/lib/components/reports/ndf-reports/services/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts +5 -1
- package/lib/components/reports/ndf-reports/services/reports-data-transformers.service.d.ts +48 -0
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +5 -1
- package/lib/components/tables/ndf-table/models/table-config.d.ts +5 -0
- package/lib/shared/evaluator/types.d.ts +3 -1
- package/package.json +1 -1
- package/src/docs/ndf-table.doc.md +4 -5
|
@@ -286,7 +286,7 @@ export class DynamicSearchComponent {
|
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
DynamicSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicSearchComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.EvaluatorsService }, { token: i3.NuxeoService }, { token: i4.GlobalAdminService }, { token: 'environment' }, { token: i5.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
289
|
-
DynamicSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicSearchComponent, selector: "cts-dynamic-search", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", sortingBy: "sortingBy", fullTextParamName: "fullTextParamName", filter: "filter", suggesterApi: "suggesterApi", onRowSelected: "onRowSelected", sortingArray: "sortingArray", customResponsiveStyle: "customResponsiveStyle", openCloseFilterFromOutside: "openCloseFilterFromOutside", theme: "theme" }, outputs: { actionOnRow: "actionOnRow" }, viewQueries: [{ propertyName: "dynamicTable", first: true, predicate: ["dynamicTable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"search-toolbar d-md-flex d-xl-none mx-3\">\r\n <button (click)=\"onOpenFilter()\" class=\"my-button\">\r\n <span> {{ \"FILTER\" | translate }}</span>\r\n <i class=\"bi bi-filter\" *ngIf=\"!openFilter\"></i>\r\n <i class=\"bi bi-x\" *ngIf=\"openFilter\"></i>\r\n </button>\r\n <div *ngIf=\"openFilter\">\r\n <i class=\"bi bi-caret-up-fill arrow-up\"></i>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"customResponsiveStyle\">\r\n <div class=\"customStyle -mt-12 px-8 flex flex-col\"\r\n [ngClass]=\"{'bg-accent-200': theme === 'dgda','bg-accent-100': theme === 'ksreleif' || theme === 'comptechco'}\"\r\n [@collapse]=\"!openFilter\">\r\n <!-- <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form> -->\r\n <div class=\"flex gap-x-18 flex-row mt-5 pb-3 overflow-x-auto\">\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <ng-container *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"row wrapper\">\r\n <div class=\"wrapper-overlay\" *ngIf=\"loading\"></div>\r\n \r\n <ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"popup-filter px-3 d-flex d-xl-none\" *ngIf=\"openFilter\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete1\" [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete1=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n {{'no_result_found' | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col-xl-3 search-sideMenu d-none d-xl-block\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete2\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \" [disableRipple]=\"true\" #matAutocomplete2=\"matAutocomplete\">\r\n <mat-option class=\"no-text\" *ngIf=\"resultSets && !resultSets.length\">\r\n {{'no_result_found' | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span class=\"option-iner-text\">{{ resultSet.label }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-12 col-xl-9\">\r\n <app-card>\r\n <div class=\"title\">\r\n <h3>\r\n {{ \"search.header\" | translate }}\r\n </h3>\r\n </div>\r\n <div class=\"body\">\r\n <div *ngIf=\"aggregations\" class=\"table-toolbar\">\r\n <div class=\"result-count\">\r\n <span>\r\n {{\r\n \"search.\" + \"resultsNumber\"\r\n | translate: { value: totalRecords ? totalRecords : 0 }\r\n }}\r\n </span>\r\n </div>\r\n <div>\r\n <form class=\"d-flex justify-between\" [formGroup]=\"searchForm\" (ngSubmit)=\"submitForm()\">\r\n <div *ngIf=\"useToggleFilters && !customResponsiveStyle\"></div>\r\n <div *ngIf=\"customResponsiveStyle\">\r\n <div class=\"search-form custom-responsive-search\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </div>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n {{no_result_found | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"useToggleFilters\">\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.PERSONAL_FILES'\"\r\n (onToggle)=\"submitForm()\" formControlName=\"personalFiles\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.DEP_FILES'\"\r\n formControlName=\"depFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.WORKSPACE_FILES'\"\r\n formControlName=\"workSpaceFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <cts-dynamic-table #dynamicTable [pageSize]=\"pageSize\" [columns]=\"columns\" [responsiveColumns]=\"responsiveColumns\"\r\n [pageProvider]=\"pageProvider\" [quickFilter]=\"filter\" [entityType]=\"entityType\" [fields]=\"fields\"\r\n [queryParam]=\"queryParams\" [headers]=\"headers\" [prefix]=\"prefix\" [sortingBy]=\"sortingBy\" [isSearchPage]=\"true\"\r\n (onRowSelected)=\"onRowSelected($event)\" (actionOnRow)=\"performAction($event)\"\r\n (onGettingData)=\"getTableData($event)\"></cts-dynamic-table>\r\n </div>\r\n </app-card>\r\n </div>\r\n\r\n <ng-template #progressSpinner>\r\n <div class=\"progress-spinner\">\r\n <mat-spinner color=\"warn\" [diameter]=\"25\"></mat-spinner>\r\n </div>\r\n </ng-template>\r\n <ng-template #noAggregations>\r\n <div class=\"progress-spinner\">\r\n {{ \"search.noAggregations\" | translate }}\r\n </div>\r\n </ng-template>\r\n</div>", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.result-count{color:#8f98aa;font-size:14px}.search-sideMenu{background-color:#fff;padding-top:22px;padding-bottom:22px;border-radius:5px}.auto-complete-iner-wrapper{max-height:350px;border-radius:4px}.auto-complete-iner-wrapper .no-text{font-size:14px;color:#465573}.auto-complete-iner-wrapper .mat-option{text-align:start;color:#465573;font-weight:bold;font-size:14px}.auto-complete-iner-wrapper .mat-option .mat-option-text{text-align:flex-start}.search-form{display:flex;color:#6a768e;width:100%}.search-form .search-input{width:100%;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.search-form .search-input::-webkit-input-placeholder{font-size:14px}.search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.search-form .search-icon{background:#465573;color:#fff;width:12%;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}.small-font{font-size:14px}.custom-responsive-search{width:300px!important;margin:0 35px}.search-toolbar{position:relative;display:flex;justify-content:flex-end;margin-bottom:16px}.search-toolbar .my-button{width:90px}.search-toolbar .arrow-up{position:absolute;top:26px;right:28px;font-size:25px;color:#8f98aab3}.wrapper{position:relative}.wrapper .popup-filter{flex-direction:column;position:absolute;right:0;z-index:9999;max-height:70vh;max-width:400px;background-color:#fff;overflow:scroll;box-shadow:0 1px 10px 2px #00000054;top:-4px;border-radius:5px}.wrapper .popup-filter .search-form{margin-top:10px!important}.wrapper .popup-filter .search-input{width:100%!important}.wrapper .search-container{background-color:#fff;border-radius:5px;border:0px;padding:16px;height:max-content}.wrapper .search-container .table-toolbar{display:flex;align-items:center;margin-bottom:8px;justify-content:space-between}.wrapper .wrapper-overlay{position:absolute;top:0;bottom:0;right:0;left:0;z-index:9}.progress-spinner{margin-top:10px;margin-block-end:0;display:grid;place-items:center;width:100%}.rtl .popup-filter{left:0px;right:unset!important}.rtl .arrow-up{position:absolute;top:33px;left:28px;right:unset!important}@media (width: 1180px),(width: 820px){.customStyle cts-dynamic-filter .aggregation-container{width:176px!important}}.customStyle .search-form{display:flex;color:#6a768e;width:100%}.customStyle .search-form .search-input{width:288px;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.customStyle .search-form .search-input::-webkit-input-placeholder{font-size:14px}.customStyle .search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.customStyle .search-form .search-icon{background:#465573;color:#fff;width:40px;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}\n"], components: [{ type: i6.DynamicFilterComponent, selector: "cts-dynamic-filter", inputs: ["title", "filters", "selections", "id", "entityType", "prefix", "department", "componentType", "customPageProvider", "config"], outputs: ["onFilterSelected"] }, { type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9.CardComponent, selector: "app-card", inputs: ["noBody", "dark"] }, { type: i10.DynamicFormSlideToggleitemComponent, selector: "cts-dynamic-form-slide-toggleitem", inputs: ["label", "disabled", "checked", "theme"], outputs: ["onToggle"] }, { type: i11.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i12.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i14.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i15.TranslatePipe }, animations: [
|
|
289
|
+
DynamicSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicSearchComponent, selector: "cts-dynamic-search", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", sortingBy: "sortingBy", fullTextParamName: "fullTextParamName", filter: "filter", suggesterApi: "suggesterApi", onRowSelected: "onRowSelected", sortingArray: "sortingArray", customResponsiveStyle: "customResponsiveStyle", openCloseFilterFromOutside: "openCloseFilterFromOutside", theme: "theme" }, outputs: { actionOnRow: "actionOnRow" }, viewQueries: [{ propertyName: "dynamicTable", first: true, predicate: ["dynamicTable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"search-toolbar d-md-flex d-xl-none mx-3\">\r\n <button (click)=\"onOpenFilter()\" class=\"my-button\">\r\n <span> {{ \"FILTER\" | translate }}</span>\r\n <i class=\"bi bi-filter\" *ngIf=\"!openFilter\"></i>\r\n <i class=\"bi bi-x\" *ngIf=\"openFilter\"></i>\r\n </button>\r\n <div *ngIf=\"openFilter\">\r\n <i class=\"bi bi-caret-up-fill arrow-up\"></i>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"customResponsiveStyle\">\r\n <div class=\"customStyle -mt-12 px-8 flex flex-col\"\r\n [ngClass]=\"{'bg-accent-200': theme === 'dgda','bg-accent-100': theme === 'ksreleif' || theme === 'comptechco'}\"\r\n [@collapse]=\"!openFilter\">\r\n <!-- <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form> -->\r\n <div class=\"flex gap-x-18 flex-row mt-5 pb-3 overflow-x-auto\">\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <ng-container *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"row wrapper\">\r\n <div class=\"wrapper-overlay\" *ngIf=\"loading\"></div>\r\n \r\n <ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"popup-filter px-3 d-flex d-xl-none\" *ngIf=\"openFilter\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete1\" [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete1=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n {{'no_result_found' | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col-xl-3 search-sideMenu d-none d-xl-block\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete2\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \" [disableRipple]=\"true\" #matAutocomplete2=\"matAutocomplete\">\r\n <mat-option class=\"no-text\" *ngIf=\"resultSets && !resultSets.length\">\r\n {{'no_result_found' | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span class=\"option-iner-text\">{{ resultSet.label }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-12 col-xl-9\">\r\n <app-card>\r\n <div class=\"title\">\r\n <h3>\r\n {{ \"search.header\" | translate }}\r\n </h3>\r\n </div>\r\n <div class=\"body\">\r\n <div *ngIf=\"aggregations\" class=\"table-toolbar\">\r\n <div class=\"result-count\">\r\n <span>\r\n {{\r\n \"search.\" + \"resultsNumber\"\r\n | translate: { value: totalRecords ? totalRecords : 0 }\r\n }}\r\n </span>\r\n </div>\r\n <div>\r\n <form class=\"d-flex justify-between\" [formGroup]=\"searchForm\" (ngSubmit)=\"submitForm()\">\r\n <div *ngIf=\"useToggleFilters && !customResponsiveStyle\"></div>\r\n <div *ngIf=\"customResponsiveStyle\">\r\n <div class=\"search-form custom-responsive-search\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </div>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n {{no_result_found | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"useToggleFilters\">\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.PERSONAL_FILES'\"\r\n (onToggle)=\"submitForm()\" formControlName=\"personalFiles\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.DEP_FILES'\"\r\n formControlName=\"depFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.WORKSPACE_FILES'\"\r\n formControlName=\"workSpaceFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <cts-dynamic-table #dynamicTable [pageSize]=\"pageSize\" [columns]=\"columns\" [responsiveColumns]=\"responsiveColumns\"\r\n [pageProvider]=\"pageProvider\" [quickFilter]=\"filter\" [entityType]=\"entityType\" [fields]=\"fields\"\r\n [queryParam]=\"queryParams\" [headers]=\"headers\" [prefix]=\"prefix\" [sortingBy]=\"sortingBy\" [isSearchPage]=\"true\"\r\n (onRowSelected)=\"onRowSelected($event)\" (actionOnRow)=\"performAction($event)\"\r\n (onGettingData)=\"getTableData($event)\"></cts-dynamic-table>\r\n </div>\r\n </app-card>\r\n </div>\r\n\r\n <ng-template #progressSpinner>\r\n <div class=\"progress-spinner\">\r\n <mat-spinner color=\"warn\" [diameter]=\"25\"></mat-spinner>\r\n </div>\r\n </ng-template>\r\n <ng-template #noAggregations>\r\n <div class=\"progress-spinner\">\r\n {{ \"search.noAggregations\" | translate }}\r\n </div>\r\n </ng-template>\r\n</div>", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.result-count{color:#8f98aa;font-size:14px}.search-sideMenu{background-color:#fff;padding-top:22px;padding-bottom:22px;border-radius:5px}.auto-complete-iner-wrapper{max-height:350px;border-radius:4px}.auto-complete-iner-wrapper .no-text{font-size:14px;color:#465573}.auto-complete-iner-wrapper .mat-option{text-align:start;color:#465573;font-weight:bold;font-size:14px}.auto-complete-iner-wrapper .mat-option .mat-option-text{text-align:flex-start}.search-form{display:flex;color:#6a768e;width:100%}.search-form .search-input{width:100%;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.search-form .search-input::-webkit-input-placeholder{font-size:14px}.search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.search-form .search-icon{background:#465573;color:#fff;width:12%;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}.small-font{font-size:14px}.custom-responsive-search{width:300px!important;margin:0 35px}.search-toolbar{position:relative;display:flex;justify-content:flex-end;margin-bottom:16px}.search-toolbar .my-button{width:90px}.search-toolbar .arrow-up{position:absolute;top:26px;right:28px;font-size:25px;color:#8f98aab3}.wrapper{position:relative}.wrapper .popup-filter{flex-direction:column;position:absolute;right:0;z-index:9999;max-height:70vh;max-width:400px;background-color:#fff;overflow:scroll;box-shadow:0 1px 10px 2px #00000054;top:-4px;border-radius:5px}.wrapper .popup-filter .search-form{margin-top:10px!important}.wrapper .popup-filter .search-input{width:100%!important}.wrapper .search-container{background-color:#fff;border-radius:5px;border:0px;padding:16px;height:max-content}.wrapper .search-container .table-toolbar{display:flex;align-items:center;margin-bottom:8px;justify-content:space-between}.wrapper .wrapper-overlay{position:absolute;top:0;bottom:0;right:0;left:0;z-index:9}.progress-spinner{margin-top:10px;margin-block-end:0;display:grid;place-items:center;width:100%}.rtl .popup-filter{left:0px;right:unset!important}.rtl .arrow-up{position:absolute;top:33px;left:28px;right:unset!important}@media (width: 1180px),(width: 820px){.customStyle cts-dynamic-filter .aggregation-container{width:176px!important}}.customStyle .search-form{display:flex;color:#6a768e;width:100%}.customStyle .search-form .search-input{width:288px;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.customStyle .search-form .search-input::-webkit-input-placeholder{font-size:14px}.customStyle .search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.customStyle .search-form .search-icon{background:#465573;color:#fff;width:40px;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}\n"], components: [{ type: i6.DynamicFilterComponent, selector: "cts-dynamic-filter", inputs: ["title", "filters", "selections", "id", "entityType", "prefix", "department", "componentType", "customPageProvider", "config"], outputs: ["onFilterSelected"] }, { type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9.CardComponent, selector: "app-card", inputs: ["noBody", "dark"] }, { type: i10.DynamicFormSlideToggleitemComponent, selector: "cts-dynamic-form-slide-toggleitem", inputs: ["label", "disabled", "checked", "theme"], outputs: ["onToggle"] }, { type: i11.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "requestActions", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i12.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i14.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i15.TranslatePipe }, animations: [
|
|
290
290
|
trigger('collapse', [
|
|
291
291
|
state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
|
|
292
292
|
state('true', style({ height: '0', visibility: 'hidden' })),
|
|
@@ -353,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
353
353
|
}], theme: [{
|
|
354
354
|
type: Input
|
|
355
355
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEVBR2pCLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFlSCxNQUFNLE9BQU8sc0JBQXNCO0lBMERsQyxZQUNTLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxnQkFBbUMsRUFDbkMsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ2YsV0FBVyxFQUNuQyxr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QUFDLENBQUM7NEJBQ3pDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUN6QyxDQUFDO3FCQUNGO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUNyQzs7MEJBaUVFLE1BQU07MkJBQUMsYUFBYTs2RUE3REssWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVOLGFBQWE7c0JBRFosS0FBSztnQkFPSSxXQUFXO3NCQUFwQixNQUFNO2dCQWFQLFlBQVk7c0JBRFgsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdFbmNhcHN1bGF0aW9uLFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdEluamVjdCxcclxuXHRWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIEFVVE9fU1RZTEUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBFdmFsdWF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9ldmFsdWF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2dsb2JhbC1hZG1pbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGVzJztcclxuXHJcbi8qKlxyXG4gKiBEeW5hbWljIHNlYXJjaCBjb21wb25lbnQgdXNlcyBbRHluYW1pYyBUYWJsZV17QGxpbmsgRHluYW1pY1RhYmxlQ29tcG9uZW50fSAmIFtEeW5hbWljIEZpbHRlcl17QGxpbmsgRHluYW1pY0ZpbHRlckNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogYW5kIHV0aWxpemVzIGl0cyBpbnB1dHMgdG8gcGVyZm9ybSBhZHZhbmNlZCBzZWFyY2ggYW5kIGZpbHRlcmluZyBvbiBhbnkgbnV4ZW8gUHJvdmlkZXJcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgU2VhcmNoXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxjdHMtZHluYW1pYy1zZWFyY2hcclxuICogICBbcGFnZVByb3ZpZGVyXT1cIidwYWdlUHJvdmlkZXJOYW1lJ1wiXHJcbiAqICAgW2NvbHVtbnNdPVwiY29sdW1uc0FycmF5XCJcclxuICogICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNBcnJheVwiXHJcbiAqICAgW2VudGl0eVR5cGVdPVwiJ2RvY3VtZW50cydcIlxyXG4gKiAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgW2hlYWRlcnNdPVwiaGVhZGVyc1wiXHJcbiAqICAgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIlxyXG4gKiAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiogICAgW2N1c3RvbVJlc3BvbnNpdmVTdHlsZV09XCJmYWxzZSBvciB0cnVlXCJcclxuICAgICBbb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGVdPVwicGFzcyBGaWx0ZXIgc3RhdGUgZnJvbSBwYXJlbnQgY29tcG9uZW50XCJcclxuICAgICBbdGhlbWVdID0gXCJ0byAgc2V0IGJhY2tncm91bmQgZGVwZW5lZCBvbiB0aGVtZVwiXHJcbiAqID5cclxuICogPC9jdHMtZHluYW1pYy1zZWFyY2g+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N0cy1keW5hbWljLXNlYXJjaCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9keW5hbWljLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG5cdGFuaW1hdGlvbnM6IFtcclxuXHRcdHRyaWdnZXIoJ2NvbGxhcHNlJywgW1xyXG5cdFx0XHRzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IGhlaWdodDogQVVUT19TVFlMRSwgdmlzaWJpbGl0eTogQVVUT19TVFlMRSB9KSksXHJcblx0XHRcdHN0YXRlKCd0cnVlJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG5cdFx0XHR0cmFuc2l0aW9uKCdmYWxzZSA9PiB0cnVlJywgYW5pbWF0ZSgzMDApKSxcclxuXHRcdFx0dHJhbnNpdGlvbigndHJ1ZSA9PiBmYWxzZScsIGFuaW1hdGUoMzAwKSlcclxuXHRcdF0pXHJcblx0XSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cdHRleHQ6IHN0cmluZztcclxuXHRhZ2dyZWdhdGlvbnM7XHJcblx0QFZpZXdDaGlsZCgnZHluYW1pY1RhYmxlJykgZHluYW1pY1RhYmxlOiBEeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblx0LyoqIEFycmF5IG9mIGNvbHVtbnMgKi9cclxuXHRASW5wdXQoKSBjb2x1bW5zO1xyXG5cdC8qKiBBcnJheSBvZiBjb2x1bW5zIG9uIHNtYWxsZXIgc2NyZWVucyAqL1xyXG5cdEBJbnB1dCgpIHJlc3BvbnNpdmVDb2x1bW5zPztcclxuXHQvKiogRGVmaW5lcyB0aGUgcGFnZSBpbiB3aGljaCB0YWJsZSBpcyBiZWluZyB1c2VkICovXHJcblx0QElucHV0KCkgZW50aXR5VHlwZTogc3RyaW5nO1xyXG5cdC8qKiBUcmFuc2xhdGlvbnMgcHJlZml4ICovXHJcblx0QElucHV0KCkgcHJlZml4ID0gJyc7XHJcblx0LyoqIEhlYWRlcnMgdG8gYmUgc2VudCB3aXRoIEFQSSBSZXF1ZXN0ICovXHJcblx0QElucHV0KCkgaGVhZGVycztcclxuXHQvKiogRmllbGRzIGtleW1hcCB0byBiZSBtYXBwZWQgaW4gdGhlIGFkYXB0ZXIgKi9cclxuXHRASW5wdXQoKSBmaWVsZHM7XHJcblx0LyoqIFBhZ2UgUHJvdmlkZXIgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXRyaWV2ZSBkYXRhICovXHJcblx0QElucHV0KCkgcGFnZVByb3ZpZGVyO1xyXG5cdC8qKiBDb250cm9scyBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGFibGUgKi9cclxuXHRASW5wdXQoKSBwYWdlU2l6ZTtcclxuXHQvKiogU29ydGluZyBjb2x1bW4gKi9cclxuXHRASW5wdXQoKSBzb3J0aW5nQnk/ID0ge307XHJcblx0QElucHV0KCkgZnVsbFRleHRQYXJhbU5hbWUgPSAnc3lzdGVtX2Z1bGx0ZXh0JztcclxuXHRASW5wdXQoKSBmaWx0ZXI7IC8vIHVzZWQgdG8gcGFzcyBwYXJhbXMgZnJvbSBvdXRzaWRlIHRvIHBhcmFtcyBvZiBkeW5hbWljIHRhYmxlIGRpcmVjdGx5XHJcblxyXG5cdEBJbnB1dCgpIHN1Z2dlc3RlckFwaTsgLy8gYXBpIHRvIGJlIHVzZWQgaW4gdGhlIHN1Z2dlc3RlciBpbnB1dCBpZiBzZW50IHdpbGwgdXNlZCBpdCBpZiBub3Qgd2lsbCB1c2UgdGhlIGRlZnVsdCBvbmNlXHJcblx0QElucHV0KClcclxuXHRvblJvd1NlbGVjdGVkID0gKHJvdykgPT4ge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyB2aWV3ZXI6IFsndmlldycsIHJvd1sndWlkJ11dIH0gfV0sIHtcclxuXHRcdFx0cXVlcnlQYXJhbXM6IHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9XHJcblx0XHR9KTtcclxuXHR9O1xyXG5cdC8qKiB1c2VkIHRvIGVtaXQgYW55IGFjdGlvbnMgdG8gb3V0c2lkZSAqL1xyXG5cdEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRxdWVyeVBhcmFtcyA9IHt9O1xyXG5cdGZpbHRlcnM7XHJcblx0c2VhcmNoRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG5cdFx0dGV4dDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0cGVyc29uYWxGaWxlczogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcclxuXHRcdGRlcEZpbGVzOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG5cdFx0d29ya1NwYWNlRmlsZXM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSlcclxuXHR9KTtcclxuXHRsb2FkaW5nID0gZmFsc2U7XHJcblx0dG90YWxSZWNvcmRzO1xyXG5cdG9wZW5GaWx0ZXI6IGJvb2xlYW47XHJcblx0QElucHV0KClcclxuXHRzb3J0aW5nQXJyYXk7XHJcblx0QElucHV0KCkgY3VzdG9tUmVzcG9uc2l2ZVN0eWxlOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSB0aGVtZTogYW55O1xyXG5cdHVzZVRvZ2dsZUZpbHRlcnM7XHJcblxyXG5cdHF1aWNrRmlsdGVycyA9ICcnO1xyXG5cdHNhdmVkUGVyc0ZpbHRlclZhbHVlID0gbnVsbDtcclxuXHRzYXZlZERlcEZpbHRlclZhbHVlID0gbnVsbDtcclxuXHRzYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlID0gbnVsbDtcclxuXHJcblx0cmVzdWx0U2V0cyA9IFtdO1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBldmFsdWF0b3JTZXJ2aWNlOiBFdmFsdWF0b3JzU2VydmljZSxcclxuXHRcdHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGdsb2JhbEFkbWluU2VydmljZTogR2xvYmFsQWRtaW5TZXJ2aWNlLFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50LFxyXG5cdFx0cHVibGljIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXHJcblx0KSB7XHJcblx0XHR0aGlzLmV2YWx1YXRvclNlcnZpY2UuZXZhbHVhdGVSdWxlKCdlbmFibGVTZWFyY2hUb2dnbGVzJywge30pLnRoZW4oKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLnVzZVRvZ2dsZUZpbHRlcnMgPSByZXM7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzLm9wZW5DbG9zZUZpbHRlckZyb21PdXRzaWRlKSB7XHJcblx0XHRcdHRoaXMub3BlbkZpbHRlciA9IGNoYW5nZXMub3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGUuY3VycmVudFZhbHVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuY29uc3RydWN0UGFyYW1zRnVuY3Rpb24odGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykpO1xyXG5cdFx0dGhpcy5zZWFyY2hJbnB1dFBvcHVsYXRlKCk7XHJcblx0XHR0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQodGhpcy50ZXh0ICE9PSBwYXJhbXNbJ3NlYXJjaF9xdWVyeSddICYmIHBhcmFtc1snc2VhcmNoX3F1ZXJ5J10pIHx8XHJcblx0XHRcdFx0KHBhcmFtc1snc2VhcmNoX3F1ZXJ5J10/Lmxlbmd0aCA9PSAwICYmIHRoaXMudGV4dCAhPT0gcGFyYW1zWydzZWFyY2hfcXVlcnknXSkgfHxcclxuXHRcdFx0XHQodGhpcy51c2VUb2dnbGVGaWx0ZXJzICYmIHRoaXMucXVpY2tGaWx0ZXJzICE9PSBwYXJhbXNbJ3F1aWNrRmlsdGVycyddKVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuY29uc3RydWN0UGFyYW1zRnVuY3Rpb24ocGFyYW1zKSk7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dFBvcHVsYXRlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5icmVha3BvaW50KCk7XHJcblxyXG5cdFx0dGhpcy5zZWFyY2hGb3JtXHJcblx0XHRcdC5nZXQoJ3RleHQnKVxyXG5cdFx0XHQudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoKHJlcykuc3Vic2NyaWJlKChyZXN1bHRzKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJlc3VsdFNldHMgPSByZXN1bHRzO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdFBhcmFtc0Z1bmN0aW9uKHBhcmFtcykge1xyXG5cdFx0bGV0IGNvbnRydWN0ZWRQYXJtcyA9IHt9O1xyXG5cdFx0dGhpcy50ZXh0ID0gcGFyYW1zWydzZWFyY2hfcXVlcnknXTtcclxuXHRcdGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0LnRyaW0oKSkge1xyXG5cdFx0XHRpZiAodGhpcy51c2VUb2dnbGVGaWx0ZXJzKSB7XHJcblx0XHRcdFx0aWYgKHBhcmFtc1sncXVpY2tGaWx0ZXJzJ10pIHtcclxuXHRcdFx0XHRcdHRoaXMucXVpY2tGaWx0ZXJzID0gcGFyYW1zWydxdWlja0ZpbHRlcnMnXTtcclxuXHRcdFx0XHRcdGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdOiB0aGlzLnRleHQgKyAnKicsIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMgfTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5xdWlja0ZpbHRlcnMgPSAnJztcclxuXHRcdFx0XHRcdGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdOiB0aGlzLnRleHQgKyAnKicsIHF1aWNrRmlsdGVyczogJycgfTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29udHJ1Y3RlZFBhcm1zID0geyBbdGhpcy5mdWxsVGV4dFBhcmFtTmFtZV06IHRoaXMudGV4dCArICcqJyB9O1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb250cnVjdGVkUGFybXMgPSB7IFt0aGlzLmZ1bGxUZXh0UGFyYW1OYW1lXTogbnVsbCB9O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBjb250cnVjdGVkUGFybXM7XHJcblx0fVxyXG5cdHVwZGF0ZVF1ZXJ5UGFyYW1zKG5ld1F1ZXJ5cGFyYW1zOiBvYmplY3QpIHtcclxuXHRcdHRoaXMucXVlcnlQYXJhbXMgPSB7XHJcblx0XHRcdC4uLnRoaXMucXVlcnlQYXJhbXMsXHJcblx0XHRcdC4uLm5ld1F1ZXJ5cGFyYW1zXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0c2VhcmNoSW5wdXRQb3B1bGF0ZSgpIHtcclxuXHRcdGlmICh0aGlzLnVzZVRvZ2dsZUZpbHRlcnMpIHtcclxuXHRcdFx0dGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG5cdFx0XHRcdHRleHQ6IHRoaXMudGV4dCxcclxuXHRcdFx0XHRwZXJzb25hbEZpbGVzOlxyXG5cdFx0XHRcdFx0dGhpcy5xdWlja0ZpbHRlcnMgPT09ICdwZXJzb25hbEZpbHRlcidcclxuXHRcdFx0XHRcdFx0PyB0cnVlXHJcblx0XHRcdFx0XHRcdDogdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAhPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZVxyXG5cdFx0XHRcdFx0XHRcdDogZmFsc2UsXHJcblx0XHRcdFx0ZGVwRmlsZXM6XHJcblx0XHRcdFx0XHR0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ2RlcGFydG1lbnRGaWx0ZXInXHJcblx0XHRcdFx0XHRcdD8gdHJ1ZVxyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAhPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlXHJcblx0XHRcdFx0XHRcdFx0OiBmYWxzZSxcclxuXHRcdFx0XHR3b3JrU3BhY2VGaWxlczpcclxuXHRcdFx0XHRcdHRoaXMucXVpY2tGaWx0ZXJzID09PSAnZGVwYXJ0bWVudFdvcmtTcGFjZUZpbHRlcidcclxuXHRcdFx0XHRcdFx0PyB0cnVlXHJcblx0XHRcdFx0XHRcdDogdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlICE9PSBudWxsXHJcblx0XHRcdFx0XHRcdFx0PyB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWVcclxuXHRcdFx0XHRcdFx0XHQ6IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG5cdFx0XHRcdHRleHQ6IHRoaXMudGV4dFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEZpbHRlclNlbGVjdGVkKHZhbDogYW55KSB7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMsIC4uLnZhbC5maWx0ZXIgfTsgLy9zdG9yZSBmaWx0ZXJzXHJcblx0XHR0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuZmlsdGVycyk7XHJcblx0fVxyXG5cclxuXHRwYWdpbmF0aW9uQ2hhbmdlKGV2ZW50KSB7fVxyXG5cclxuXHRnZXRUYWJsZURhdGEoZGF0YSkge1xyXG5cdFx0dGhpcy5hZ2dyZWdhdGlvbnMgPSBPYmplY3QuZW50cmllcyhkYXRhLmFnZ3JlZ2F0aW9ucyB8fCB7fSkubWFwKChpdGVtKSA9PiB7XHJcblx0XHRcdHJldHVybiBpdGVtWzFdO1xyXG5cdFx0fSk7XHJcblx0XHQvLyB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuYWdncmVnYXRpb25zLmZpbHRlcigoaXRlbSkgPT5cclxuXHRcdC8vICAgdGhpcy5zb3J0aW5nQXJyYXkuaW5jbHVkZXMoaXRlbS5pZClcclxuXHRcdC8vICk7XHJcblx0XHRsZXQgdXBkYXRlZEFnZ3JlZ2F0aW9uID0gW107XHJcblx0XHR0aGlzLmFnZ3JlZ2F0aW9ucy5tYXAoKGFnZ3JlZykgPT4ge1xyXG5cdFx0XHR0aGlzLnNvcnRpbmdBcnJheS5tYXAoKHNvcnRUeXBlKSA9PiB7XHJcblx0XHRcdFx0aWYgKHNvcnRUeXBlLmlkID09PSBhZ2dyZWcuaWQpIHtcclxuXHRcdFx0XHRcdGFnZ3JlZ1snY29tcG9uZW50VHlwZSddID0gc29ydFR5cGUuY29tcG9lbmVudFR5cGU7XHJcblx0XHRcdFx0XHQvLyBpbiBjYXNlIG9mIGN1c3RvbSBjb21wb25lbnQgbmVlZCB0byBjYWxsIHBhZ2UgcHJvdmlkZXIgdG8gZ2V0IGRhdGFcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0c29ydFR5cGUuY29tcG9lbmVudFR5cGUgPT09ICdjdXN0b20tcHAnIHx8XHJcblx0XHRcdFx0XHRcdHNvcnRUeXBlLmNvbXBvZW5lbnRUeXBlID09PSAnY3VzdG9tLWRvY3VtZW50JyB8fFxyXG5cdFx0XHRcdFx0XHRzb3J0VHlwZS5jb21wb2VuZW50VHlwZSA9PT0gJ2N1c3RvbS1kZXBhcnRtZW50J1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdChhZ2dyZWdbJ2N1c3RvbVBhZ2VQcm92aWRlciddID0gc29ydFR5cGUucGFnZVByb3ZpZGVyKSwgKGFnZ3JlZ1snY29uZmlnJ10gPSBzb3J0VHlwZS5jb25maWcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dXBkYXRlZEFnZ3JlZ2F0aW9uLnB1c2goYWdncmVnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmFnZ3JlZ2F0aW9ucyA9IF8uc29ydEJ5KHVwZGF0ZWRBZ2dyZWdhdGlvbiwgKGl0ZW0pID0+IHtcclxuXHRcdFx0bGV0IGkgPSAtMTtcclxuXHRcdFx0dGhpcy5zb3J0aW5nQXJyYXkubWFwKChzb3J0VHlwZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRpZiAoc29ydFR5cGUuaWQgPT09IGl0ZW0uaWQpIHtcclxuXHRcdFx0XHRcdGkgPSBpbmRleDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRyZXR1cm4gaTtcclxuXHRcdH0pO1xyXG5cdFx0Y29uc29sZS5sb2coJ2FnZ3JlZ2F0aW9ucycsIHRoaXMuYWdncmVnYXRpb25zKTtcclxuXHRcdHRoaXMudG90YWxSZWNvcmRzID0gZGF0YS50b3RhbFNpemU7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdHN1Ym1pdEZvcm0oKSB7XHJcblx0XHRsZXQgcGFyYW1zID0ge307XHJcblx0XHRpZiAodGhpcy51c2VUb2dnbGVGaWx0ZXJzKSB7XHJcblx0XHRcdHBhcmFtcyA9IHtcclxuXHRcdFx0XHRzZWFyY2hfcXVlcnk6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy50ZXh0LnZhbHVlLFxyXG5cdFx0XHRcdHF1aWNrRmlsdGVyczogdGhpcy5nZXRUb2dnbGVGaWx0ZXJzKClcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBhcmFtcyA9IHtcclxuXHRcdFx0XHRzZWFyY2hfcXVlcnk6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy50ZXh0LnZhbHVlXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4nXSwge1xyXG5cdFx0XHRyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG5cdFx0XHRxdWVyeVBhcmFtczogcGFyYW1zXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldFRvZ2dsZUZpbHRlcnMoKSB7XHJcblx0XHR0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMuZGVwRmlsZXMudmFsdWU7XHJcblx0XHR0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlID0gdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLnBlcnNvbmFsRmlsZXMudmFsdWU7XHJcblx0XHR0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMud29ya1NwYWNlRmlsZXMudmFsdWU7XHJcblx0XHRpZiAoXHJcblx0XHRcdCh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHx8XHJcblx0XHRcdCghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmICF0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICYmICF0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG5cdFx0XHRyZXR1cm4gJ3BlcnNvbmFsRmlsdGVyJztcclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmICF0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuICdkZXBhcnRtZW50RmlsdGVyJztcclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuICdkZXBhcnRtZW50V29ya1NwYWNlRmlsdGVyJztcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG5cdFx0XHRyZXR1cm4gJ2RlcGFydG1lbnRQZXJzb25hbEZpbHRlcic7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuICdwZXJzb25hbERlcGFydG1lbnRXb3JrU3BhY2VGaWx0ZXInO1xyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSB7XHJcblx0XHRcdHJldHVybiAnZGVwdERlcGF0bWVudFdvcmtTcGFjZUZpbHRlcic7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRPcHRpb25WYWx1ZShzZWFyY2hlZFRleHQpIHtcclxuXHRcdHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3RleHQnKS5zZXRWYWx1ZShzZWFyY2hlZFRleHQpO1xyXG5cdFx0dGhpcy5zdWJtaXRGb3JtKCk7XHJcblx0fVxyXG5cdG9uT3BlbkZpbHRlcigpIHtcclxuXHRcdHRoaXMub3BlbkZpbHRlciA9ICF0aGlzLm9wZW5GaWx0ZXI7XHJcblx0fVxyXG5cclxuXHRicmVha3BvaW50KCkge1xyXG5cdFx0dGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbJyhtaW4td2lkdGg6IDEyMDBweCknXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdC5tYXRjaGVzKSB7XHJcblx0XHRcdFx0dGhpcy5vcGVuRmlsdGVyID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cGVyZm9ybUFjdGlvbihhY3Rpb24pIHtcclxuXHRcdHRoaXMuYWN0aW9uT25Sb3cuZW1pdChhY3Rpb24pO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcGFyYW1zID0ge1xyXG5cdFx0XHRzZWFyY2hUZXJtOiB0ZXJtXHJcblx0XHR9O1xyXG5cdFx0aWYgKHRoaXMuZ2xvYmFsQWRtaW5TZXJ2aWNlLmlzR2xvYmFsQWRtaW4pIHtcclxuXHRcdFx0cGFyYW1zWydwYXRoJ10gPSB0aGlzLmdsb2JhbEFkbWluU2VydmljZS5hY3RpdmVUZW5hbnQgO1xyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5nbG9iYWxBZG1pblNlcnZpY2UuaXNHbG9iYWxBZG1pbiAmJiB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWQpIHtcclxuXHRcdFx0cGFyYW1zWydwYXRoJ10gPSB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWQ7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZnJvbShcclxuXHRcdFx0dGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuXHRcdFx0XHQub3BlcmF0aW9uKHRoaXMuc3VnZ2VzdGVyQXBpID8gdGhpcy5zdWdnZXN0ZXJBcGkgOiAnU2VhcmNoLkN1c3RvbVN1Z2dlc3RlcnNMYXVuY2hlcicsIHtcclxuXHRcdFx0XHRcdHVybDogYCR7dGhpcy5lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHQucGFyYW1zKHtcclxuXHRcdFx0XHRcdC4uLnBhcmFtc1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0LmNvbnRleHQoe30pXHJcblx0XHRcdFx0LmV4ZWN1dGUoKVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXRvb2xiYXIgZC1tZC1mbGV4IGQteGwtbm9uZSBteC0zXCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJvbk9wZW5GaWx0ZXIoKVwiIGNsYXNzPVwibXktYnV0dG9uXCI+XHJcbiAgICAgIDxzcGFuPiB7eyBcIkZJTFRFUlwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8aSBjbGFzcz1cImJpIGJpLWZpbHRlclwiICpuZ0lmPVwiIW9wZW5GaWx0ZXJcIj48L2k+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmkgYmkteFwiICpuZ0lmPVwib3BlbkZpbHRlclwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wZW5GaWx0ZXJcIj5cclxuICAgICAgPGkgY2xhc3M9XCJiaSBiaS1jYXJldC11cC1maWxsIGFycm93LXVwXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVJlc3BvbnNpdmVTdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b21TdHlsZSAtbXQtMTIgcHgtOCBmbGV4IGZsZXgtY29sXCJcclxuICAgIFtuZ0NsYXNzXT1cInsnYmctYWNjZW50LTIwMCc6IHRoZW1lID09PSAnZGdkYScsJ2JnLWFjY2VudC0xMDAnOiB0aGVtZSA9PT0gJ2tzcmVsZWlmJyB8fCB0aGVtZSA9PT0gJ2NvbXB0ZWNoY28nfVwiXHJcbiAgICBbQGNvbGxhcHNlXT1cIiFvcGVuRmlsdGVyXCI+XHJcbiAgICA8IS0tIDxmb3JtXHJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCJcclxuICAgICAgICBjbGFzcz1cInNlYXJjaC1mb3JtXCJcclxuICAgICAgICAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGV4dFwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaC5zZWFyY2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIGNsYXNzPVwic2VhcmNoLWljb24gYmkgYmktc2VhcmNoXCI+PC9kaXY+XHJcbiAgICAgIDwvZm9ybT4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAteC0xOCBmbGV4LXJvdyBtdC01IHBiLTMgb3ZlcmZsb3cteC1hdXRvXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnM7IGVsc2UgcHJvZ3Jlc3NTcGlubmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9ucy5sZW5ndGg7IGVsc2Ugbm9BZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb24uYnVja2V0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZpbHRlciBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCIgW2ZpbHRlcnNdPVwiYWdncmVnYXRpb24uYnVja2V0c1wiIFtpZF09XCJhZ2dyZWdhdGlvbi5pZFwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0aW9uc109XCJhZ2dyZWdhdGlvbi5zZWxlY3Rpb25cIiBbdGl0bGVdPVwiYWdncmVnYXRpb24uZmllbGRcIiBbcHJlZml4XT1cIidzZWFyY2gnXCIgW2RlcGFydG1lbnRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRpb24uZmllbGQgPT09ICdjb3JyOnRvJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjpmcm9tJ1xyXG4gICAgICAgICAgICAgICAgICBcIiBbY29tcG9uZW50VHlwZV09XCJhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlID8gYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA6ICdkZWZ1bHQnXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21QYWdlUHJvdmlkZXJdPVwiYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyID8gYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyIDogJydcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJhZ2dyZWdhdGlvbi5jb25maWcgPyBhZ2dyZWdhdGlvbi5jb25maWcgOiB7fVwiIChvbkZpbHRlclNlbGVjdGVkKT1cIkZpbHRlclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZpbHRlcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwicm93IHdyYXBwZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlci1vdmVybGF5XCIgKm5nSWY9XCJsb2FkaW5nXCI+PC9kaXY+XHJcbiAgXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1maWx0ZXIgcHgtMyBkLWZsZXggZC14bC1ub25lXCIgKm5nSWY9XCJvcGVuRmlsdGVyXCI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIGNsYXNzPVwic2VhcmNoLWZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgW21hdEF1dG9jb21wbGV0ZV09XCJtYXRBdXRvY29tcGxldGUxXCIgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICBjbGFzcz1cIlxyXG4gICAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgICAgYXV0by1jb21wbGV0ZS13cmFwcGVyXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAjbWF0QXV0b2NvbXBsZXRlMT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgPlxyXG4gICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgY2xhc3M9XCJuby10ZXh0XCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzdWx0U2V0cyAmJiAhcmVzdWx0U2V0cy5sZW5ndGhcIlxyXG4gICAgICA+XHJcbiAgICAgICAgICB7eydub19yZXN1bHRfZm91bmQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZXN1bHRTZXQgb2YgcmVzdWx0U2V0c1wiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gIChjbGljayk9XCJzZXRPcHRpb25WYWx1ZShyZXN1bHRTZXQubGFiZWwpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taW5lci10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHJlc3VsdFNldC5sYWJlbCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbiA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnM7IGVsc2UgcHJvZ3Jlc3NTcGlubmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9ucy5sZW5ndGg7IGVsc2Ugbm9BZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb24uYnVja2V0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZpbHRlciBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCIgW2ZpbHRlcnNdPVwiYWdncmVnYXRpb24uYnVja2V0c1wiIFtpZF09XCJhZ2dyZWdhdGlvbi5pZFwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0aW9uc109XCJhZ2dyZWdhdGlvbi5zZWxlY3Rpb25cIiBbdGl0bGVdPVwiYWdncmVnYXRpb24uZmllbGRcIiBbcHJlZml4XT1cIidzZWFyY2gnXCIgW2RlcGFydG1lbnRdPVwiXHJcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6dG8nIHx8XHJcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6ZnJvbSdcclxuICAgICAgICAgICAgICBcIiBbY29tcG9uZW50VHlwZV09XCJhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlID8gYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA6ICdkZWZ1bHQnXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21QYWdlUHJvdmlkZXJdPVwiYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyID8gYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyIDogJydcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJhZ2dyZWdhdGlvbi5jb25maWcgPyBhZ2dyZWdhdGlvbi5jb25maWcgOiB7fVwiIChvbkZpbHRlclNlbGVjdGVkKT1cIkZpbHRlclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZpbHRlcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbC14bC0zIHNlYXJjaC1zaWRlTWVudSBkLW5vbmUgZC14bC1ibG9ja1wiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgY2xhc3M9XCJzZWFyY2gtZm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgW21hdEF1dG9jb21wbGV0ZV09XCJtYXRBdXRvY29tcGxldGUyXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaC5zZWFyY2gnIHwgdHJhbnNsYXRlXCIgLz5cclxuICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwiXHJcbiAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgIGF1dG8tY29tcGxldGUtd3JhcHBlclxyXG4gICAgXCIgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiICNtYXRBdXRvY29tcGxldGUyPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibm8tdGV4dFwiICpuZ0lmPVwicmVzdWx0U2V0cyAmJiAhcmVzdWx0U2V0cy5sZW5ndGhcIj5cclxuICAgICAgICB7eydub19yZXN1bHRfZm91bmQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZXN1bHRTZXQgb2YgcmVzdWx0U2V0c1wiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJzZXRPcHRpb25WYWx1ZShyZXN1bHRTZXQubGFiZWwpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1pbmVyLXRleHRcIj57eyByZXN1bHRTZXQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnM7IGVsc2UgcHJvZ3Jlc3NTcGlubmVyXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbi5idWNrZXRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxjdHMtZHluYW1pYy1maWx0ZXIgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiIFtmaWx0ZXJzXT1cImFnZ3JlZ2F0aW9uLmJ1Y2tldHNcIiBbaWRdPVwiYWdncmVnYXRpb24uaWRcIlxyXG4gICAgICAgICAgICBbc2VsZWN0aW9uc109XCJhZ2dyZWdhdGlvbi5zZWxlY3Rpb25cIiBbdGl0bGVdPVwiYWdncmVnYXRpb24uZmllbGRcIiBbcHJlZml4XT1cIidzZWFyY2gnXCIgW2RlcGFydG1lbnRdPVwiXHJcbiAgICAgICAgICAgICAgYWdncmVnYXRpb24uZmllbGQgPT09ICdjb3JyOnRvJyB8fFxyXG4gICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjpmcm9tJ1xyXG4gICAgICAgICAgICBcIiBbY29tcG9uZW50VHlwZV09XCJhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlID8gYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA6ICdkZWZ1bHQnXCJcclxuICAgICAgICAgICAgW2N1c3RvbVBhZ2VQcm92aWRlcl09XCJhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgPyBhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgIFtjb25maWddPVwiYWdncmVnYXRpb24uY29uZmlnID8gYWdncmVnYXRpb24uY29uZmlnIDoge31cIiAob25GaWx0ZXJTZWxlY3RlZCk9XCJGaWx0ZXJTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L2N0cy1keW5hbWljLWZpbHRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wteGwtOVwiPlxyXG4gICAgPGFwcC1jYXJkPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICA8aDM+XHJcbiAgICAgICAgICB7eyBcInNlYXJjaC5oZWFkZXJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhZ2dyZWdhdGlvbnNcIiBjbGFzcz1cInRhYmxlLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY291bnRcIj5cclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICBcInNlYXJjaC5cIiArIFwicmVzdWx0c051bWJlclwiXHJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgdmFsdWU6IHRvdGFsUmVjb3JkcyA/IHRvdGFsUmVjb3JkcyA6IDAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJkLWZsZXgganVzdGlmeS1iZXR3ZWVuXCIgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VUb2dnbGVGaWx0ZXJzICYmICFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tUmVzcG9uc2l2ZVN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZvcm0gY3VzdG9tLXJlc3BvbnNpdmUtc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGV4dFwiIFttYXRBdXRvY29tcGxldGVdPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaC5zZWFyY2gnIHwgdHJhbnNsYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiXHJcbiAgICAgICAgICAgICAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG8tY29tcGxldGUtd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgI21hdEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3VsdFNldHMgJiYgIXJlc3VsdFNldHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7e25vX3Jlc3VsdF9mb3VuZCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZXN1bHRTZXQgb2YgcmVzdWx0U2V0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICAoY2xpY2spPVwic2V0T3B0aW9uVmFsdWUocmVzdWx0U2V0LmxhYmVsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taW5lci10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyByZXN1bHRTZXQubGFiZWwgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbiA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJ1c2VUb2dnbGVGaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtIGNsYXNzPVwibXgtMiBzbWFsbC1mb250XCIgW2xhYmVsXT1cIidzZWFyY2guUEVSU09OQUxfRklMRVMnXCJcclxuICAgICAgICAgICAgICAgICAgKG9uVG9nZ2xlKT1cInN1Ym1pdEZvcm0oKVwiIGZvcm1Db250cm9sTmFtZT1cInBlcnNvbmFsRmlsZXNcIj5cclxuICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtPlxyXG4gICAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbSBjbGFzcz1cIm14LTIgc21hbGwtZm9udFwiIFtsYWJlbF09XCInc2VhcmNoLkRFUF9GSUxFUydcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXBGaWxlc1wiIChvblRvZ2dsZSk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtPlxyXG4gICAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbSBjbGFzcz1cIm14LTIgc21hbGwtZm9udFwiIFtsYWJlbF09XCInc2VhcmNoLldPUktTUEFDRV9GSUxFUydcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwid29ya1NwYWNlRmlsZXNcIiAob25Ub2dnbGUpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgPC9jdHMtZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjdHMtZHluYW1pYy10YWJsZSAjZHluYW1pY1RhYmxlIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG4gICAgICAgICAgW3BhZ2VQcm92aWRlcl09XCJwYWdlUHJvdmlkZXJcIiBbcXVpY2tGaWx0ZXJdPVwiZmlsdGVyXCIgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiIFtmaWVsZHNdPVwiZmllbGRzXCJcclxuICAgICAgICAgIFtxdWVyeVBhcmFtXT1cInF1ZXJ5UGFyYW1zXCIgW2hlYWRlcnNdPVwiaGVhZGVyc1wiIFtwcmVmaXhdPVwicHJlZml4XCIgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIiBbaXNTZWFyY2hQYWdlXT1cInRydWVcIlxyXG4gICAgICAgICAgKG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZCgkZXZlbnQpXCIgKGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25HZXR0aW5nRGF0YSk9XCJnZXRUYWJsZURhdGEoJGV2ZW50KVwiPjwvY3RzLWR5bmFtaWMtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9hcHAtY2FyZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1NwaW5uZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lclwiPlxyXG4gICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJ3YXJuXCIgW2RpYW1ldGVyXT1cIjI1XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNub0FnZ3JlZ2F0aW9ucz5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCI+XHJcbiAgICAgIHt7IFwic2VhcmNoLm5vQWdncmVnYXRpb25zXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PiJdfQ==
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEVBR2pCLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFlSCxNQUFNLE9BQU8sc0JBQXNCO0lBMERsQyxZQUNTLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxnQkFBbUMsRUFDbkMsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ2YsV0FBVyxFQUNuQyxr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QUFDLENBQUM7NEJBQ3pDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUN6QyxDQUFDO3FCQUNGO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUNyQzs7MEJBaUVFLE1BQU07MkJBQUMsYUFBYTs2RUE3REssWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVOLGFBQWE7c0JBRFosS0FBSztnQkFPSSxXQUFXO3NCQUFwQixNQUFNO2dCQWFQLFlBQVk7c0JBRFgsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdFbmNhcHN1bGF0aW9uLFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdEluamVjdCxcclxuXHRWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIEFVVE9fU1RZTEUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBFdmFsdWF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9ldmFsdWF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2dsb2JhbC1hZG1pbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGVzJztcclxuXHJcbi8qKlxyXG4gKiBEeW5hbWljIHNlYXJjaCBjb21wb25lbnQgdXNlcyBbRHluYW1pYyBUYWJsZV17QGxpbmsgRHluYW1pY1RhYmxlQ29tcG9uZW50fSAmIFtEeW5hbWljIEZpbHRlcl17QGxpbmsgRHluYW1pY0ZpbHRlckNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogYW5kIHV0aWxpemVzIGl0cyBpbnB1dHMgdG8gcGVyZm9ybSBhZHZhbmNlZCBzZWFyY2ggYW5kIGZpbHRlcmluZyBvbiBhbnkgbnV4ZW8gUHJvdmlkZXJcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgU2VhcmNoXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxjdHMtZHluYW1pYy1zZWFyY2hcclxuICogICBbcGFnZVByb3ZpZGVyXT1cIidwYWdlUHJvdmlkZXJOYW1lJ1wiXHJcbiAqICAgW2NvbHVtbnNdPVwiY29sdW1uc0FycmF5XCJcclxuICogICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNBcnJheVwiXHJcbiAqICAgW2VudGl0eVR5cGVdPVwiJ2RvY3VtZW50cydcIlxyXG4gKiAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgW2hlYWRlcnNdPVwiaGVhZGVyc1wiXHJcbiAqICAgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIlxyXG4gKiAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiogICAgW2N1c3RvbVJlc3BvbnNpdmVTdHlsZV09XCJmYWxzZSBvciB0cnVlXCJcclxuICAgICBbb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGVdPVwicGFzcyBGaWx0ZXIgc3RhdGUgZnJvbSBwYXJlbnQgY29tcG9uZW50XCJcclxuICAgICBbdGhlbWVdID0gXCJ0byAgc2V0IGJhY2tncm91bmQgZGVwZW5lZCBvbiB0aGVtZVwiXHJcbiAqID5cclxuICogPC9jdHMtZHluYW1pYy1zZWFyY2g+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N0cy1keW5hbWljLXNlYXJjaCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9keW5hbWljLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG5cdGFuaW1hdGlvbnM6IFtcclxuXHRcdHRyaWdnZXIoJ2NvbGxhcHNlJywgW1xyXG5cdFx0XHRzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IGhlaWdodDogQVVUT19TVFlMRSwgdmlzaWJpbGl0eTogQVVUT19TVFlMRSB9KSksXHJcblx0XHRcdHN0YXRlKCd0cnVlJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG5cdFx0XHR0cmFuc2l0aW9uKCdmYWxzZSA9PiB0cnVlJywgYW5pbWF0ZSgzMDApKSxcclxuXHRcdFx0dHJhbnNpdGlvbigndHJ1ZSA9PiBmYWxzZScsIGFuaW1hdGUoMzAwKSlcclxuXHRcdF0pXHJcblx0XSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cdHRleHQ6IHN0cmluZztcclxuXHRhZ2dyZWdhdGlvbnM7XHJcblx0QFZpZXdDaGlsZCgnZHluYW1pY1RhYmxlJykgZHluYW1pY1RhYmxlOiBEeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblx0LyoqIEFycmF5IG9mIGNvbHVtbnMgKi9cclxuXHRASW5wdXQoKSBjb2x1bW5zO1xyXG5cdC8qKiBBcnJheSBvZiBjb2x1bW5zIG9uIHNtYWxsZXIgc2NyZWVucyAqL1xyXG5cdEBJbnB1dCgpIHJlc3BvbnNpdmVDb2x1bW5zPztcclxuXHQvKiogRGVmaW5lcyB0aGUgcGFnZSBpbiB3aGljaCB0YWJsZSBpcyBiZWluZyB1c2VkICovXHJcblx0QElucHV0KCkgZW50aXR5VHlwZTogc3RyaW5nO1xyXG5cdC8qKiBUcmFuc2xhdGlvbnMgcHJlZml4ICovXHJcblx0QElucHV0KCkgcHJlZml4ID0gJyc7XHJcblx0LyoqIEhlYWRlcnMgdG8gYmUgc2VudCB3aXRoIEFQSSBSZXF1ZXN0ICovXHJcblx0QElucHV0KCkgaGVhZGVycztcclxuXHQvKiogRmllbGRzIGtleW1hcCB0byBiZSBtYXBwZWQgaW4gdGhlIGFkYXB0ZXIgKi9cclxuXHRASW5wdXQoKSBmaWVsZHM7XHJcblx0LyoqIFBhZ2UgUHJvdmlkZXIgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXRyaWV2ZSBkYXRhICovXHJcblx0QElucHV0KCkgcGFnZVByb3ZpZGVyO1xyXG5cdC8qKiBDb250cm9scyBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGFibGUgKi9cclxuXHRASW5wdXQoKSBwYWdlU2l6ZTtcclxuXHQvKiogU29ydGluZyBjb2x1bW4gKi9cclxuXHRASW5wdXQoKSBzb3J0aW5nQnk/ID0ge307XHJcblx0QElucHV0KCkgZnVsbFRleHRQYXJhbU5hbWUgPSAnc3lzdGVtX2Z1bGx0ZXh0JztcclxuXHRASW5wdXQoKSBmaWx0ZXI7IC8vIHVzZWQgdG8gcGFzcyBwYXJhbXMgZnJvbSBvdXRzaWRlIHRvIHBhcmFtcyBvZiBkeW5hbWljIHRhYmxlIGRpcmVjdGx5XHJcblxyXG5cdEBJbnB1dCgpIHN1Z2dlc3RlckFwaTsgLy8gYXBpIHRvIGJlIHVzZWQgaW4gdGhlIHN1Z2dlc3RlciBpbnB1dCBpZiBzZW50IHdpbGwgdXNlZCBpdCBpZiBub3Qgd2lsbCB1c2UgdGhlIGRlZnVsdCBvbmNlXHJcblx0QElucHV0KClcclxuXHRvblJvd1NlbGVjdGVkID0gKHJvdykgPT4ge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyB2aWV3ZXI6IFsndmlldycsIHJvd1sndWlkJ11dIH0gfV0sIHtcclxuXHRcdFx0cXVlcnlQYXJhbXM6IHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9XHJcblx0XHR9KTtcclxuXHR9O1xyXG5cdC8qKiB1c2VkIHRvIGVtaXQgYW55IGFjdGlvbnMgdG8gb3V0c2lkZSAqL1xyXG5cdEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRxdWVyeVBhcmFtcyA9IHt9O1xyXG5cdGZpbHRlcnM7XHJcblx0c2VhcmNoRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG5cdFx0dGV4dDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0cGVyc29uYWxGaWxlczogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcclxuXHRcdGRlcEZpbGVzOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxyXG5cdFx0d29ya1NwYWNlRmlsZXM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSlcclxuXHR9KTtcclxuXHRsb2FkaW5nID0gZmFsc2U7XHJcblx0dG90YWxSZWNvcmRzO1xyXG5cdG9wZW5GaWx0ZXI6IGJvb2xlYW47XHJcblx0QElucHV0KClcclxuXHRzb3J0aW5nQXJyYXk7XHJcblx0QElucHV0KCkgY3VzdG9tUmVzcG9uc2l2ZVN0eWxlOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSB0aGVtZTogYW55O1xyXG5cdHVzZVRvZ2dsZUZpbHRlcnM7XHJcblxyXG5cdHF1aWNrRmlsdGVycyA9ICcnO1xyXG5cdHNhdmVkUGVyc0ZpbHRlclZhbHVlID0gbnVsbDtcclxuXHRzYXZlZERlcEZpbHRlclZhbHVlID0gbnVsbDtcclxuXHRzYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlID0gbnVsbDtcclxuXHJcblx0cmVzdWx0U2V0cyA9IFtdO1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBldmFsdWF0b3JTZXJ2aWNlOiBFdmFsdWF0b3JzU2VydmljZSxcclxuXHRcdHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGdsb2JhbEFkbWluU2VydmljZTogR2xvYmFsQWRtaW5TZXJ2aWNlLFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50LFxyXG5cdFx0cHVibGljIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXHJcblx0KSB7XHJcblx0XHR0aGlzLmV2YWx1YXRvclNlcnZpY2UuZXZhbHVhdGVSdWxlKCdlbmFibGVTZWFyY2hUb2dnbGVzJywge30pLnRoZW4oKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLnVzZVRvZ2dsZUZpbHRlcnMgPSByZXM7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzLm9wZW5DbG9zZUZpbHRlckZyb21PdXRzaWRlKSB7XHJcblx0XHRcdHRoaXMub3BlbkZpbHRlciA9IGNoYW5nZXMub3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGUuY3VycmVudFZhbHVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuY29uc3RydWN0UGFyYW1zRnVuY3Rpb24odGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykpO1xyXG5cdFx0dGhpcy5zZWFyY2hJbnB1dFBvcHVsYXRlKCk7XHJcblx0XHR0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQodGhpcy50ZXh0ICE9PSBwYXJhbXNbJ3NlYXJjaF9xdWVyeSddICYmIHBhcmFtc1snc2VhcmNoX3F1ZXJ5J10pIHx8XHJcblx0XHRcdFx0KHBhcmFtc1snc2VhcmNoX3F1ZXJ5J10/Lmxlbmd0aCA9PSAwICYmIHRoaXMudGV4dCAhPT0gcGFyYW1zWydzZWFyY2hfcXVlcnknXSkgfHxcclxuXHRcdFx0XHQodGhpcy51c2VUb2dnbGVGaWx0ZXJzICYmIHRoaXMucXVpY2tGaWx0ZXJzICE9PSBwYXJhbXNbJ3F1aWNrRmlsdGVycyddKVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuY29uc3RydWN0UGFyYW1zRnVuY3Rpb24ocGFyYW1zKSk7XHJcblx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dFBvcHVsYXRlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5icmVha3BvaW50KCk7XHJcblxyXG5cdFx0dGhpcy5zZWFyY2hGb3JtXHJcblx0XHRcdC5nZXQoJ3RleHQnKVxyXG5cdFx0XHQudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoKHJlcykuc3Vic2NyaWJlKChyZXN1bHRzKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJlc3VsdFNldHMgPSByZXN1bHRzO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdFBhcmFtc0Z1bmN0aW9uKHBhcmFtcykge1xyXG5cdFx0bGV0IGNvbnRydWN0ZWRQYXJtcyA9IHt9O1xyXG5cdFx0dGhpcy50ZXh0ID0gcGFyYW1zWydzZWFyY2hfcXVlcnknXTtcclxuXHRcdGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0LnRyaW0oKSkge1xyXG5cdFx0XHRpZiAodGhpcy51c2VUb2dnbGVGaWx0ZXJzKSB7XHJcblx0XHRcdFx0aWYgKHBhcmFtc1sncXVpY2tGaWx0ZXJzJ10pIHtcclxuXHRcdFx0XHRcdHRoaXMucXVpY2tGaWx0ZXJzID0gcGFyYW1zWydxdWlja0ZpbHRlcnMnXTtcclxuXHRcdFx0XHRcdGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdOiB0aGlzLnRleHQgKyAnKicsIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMgfTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5xdWlja0ZpbHRlcnMgPSAnJztcclxuXHRcdFx0XHRcdGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdOiB0aGlzLnRleHQgKyAnKicsIHF1aWNrRmlsdGVyczogJycgfTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29udHJ1Y3RlZFBhcm1zID0geyBbdGhpcy5mdWxsVGV4dFBhcmFtTmFtZV06IHRoaXMudGV4dCArICcqJyB9O1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb250cnVjdGVkUGFybXMgPSB7IFt0aGlzLmZ1bGxUZXh0UGFyYW1OYW1lXTogbnVsbCB9O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBjb250cnVjdGVkUGFybXM7XHJcblx0fVxyXG5cdHVwZGF0ZVF1ZXJ5UGFyYW1zKG5ld1F1ZXJ5cGFyYW1zOiBvYmplY3QpIHtcclxuXHRcdHRoaXMucXVlcnlQYXJhbXMgPSB7XHJcblx0XHRcdC4uLnRoaXMucXVlcnlQYXJhbXMsXHJcblx0XHRcdC4uLm5ld1F1ZXJ5cGFyYW1zXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0c2VhcmNoSW5wdXRQb3B1bGF0ZSgpIHtcclxuXHRcdGlmICh0aGlzLnVzZVRvZ2dsZUZpbHRlcnMpIHtcclxuXHRcdFx0dGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG5cdFx0XHRcdHRleHQ6IHRoaXMudGV4dCxcclxuXHRcdFx0XHRwZXJzb25hbEZpbGVzOlxyXG5cdFx0XHRcdFx0dGhpcy5xdWlja0ZpbHRlcnMgPT09ICdwZXJzb25hbEZpbHRlcidcclxuXHRcdFx0XHRcdFx0PyB0cnVlXHJcblx0XHRcdFx0XHRcdDogdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAhPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZVxyXG5cdFx0XHRcdFx0XHRcdDogZmFsc2UsXHJcblx0XHRcdFx0ZGVwRmlsZXM6XHJcblx0XHRcdFx0XHR0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ2RlcGFydG1lbnRGaWx0ZXInXHJcblx0XHRcdFx0XHRcdD8gdHJ1ZVxyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAhPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlXHJcblx0XHRcdFx0XHRcdFx0OiBmYWxzZSxcclxuXHRcdFx0XHR3b3JrU3BhY2VGaWxlczpcclxuXHRcdFx0XHRcdHRoaXMucXVpY2tGaWx0ZXJzID09PSAnZGVwYXJ0bWVudFdvcmtTcGFjZUZpbHRlcidcclxuXHRcdFx0XHRcdFx0PyB0cnVlXHJcblx0XHRcdFx0XHRcdDogdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlICE9PSBudWxsXHJcblx0XHRcdFx0XHRcdFx0PyB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWVcclxuXHRcdFx0XHRcdFx0XHQ6IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG5cdFx0XHRcdHRleHQ6IHRoaXMudGV4dFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEZpbHRlclNlbGVjdGVkKHZhbDogYW55KSB7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMsIC4uLnZhbC5maWx0ZXIgfTsgLy9zdG9yZSBmaWx0ZXJzXHJcblx0XHR0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuZmlsdGVycyk7XHJcblx0fVxyXG5cclxuXHRwYWdpbmF0aW9uQ2hhbmdlKGV2ZW50KSB7fVxyXG5cclxuXHRnZXRUYWJsZURhdGEoZGF0YSkge1xyXG5cdFx0dGhpcy5hZ2dyZWdhdGlvbnMgPSBPYmplY3QuZW50cmllcyhkYXRhLmFnZ3JlZ2F0aW9ucyB8fCB7fSkubWFwKChpdGVtKSA9PiB7XHJcblx0XHRcdHJldHVybiBpdGVtWzFdO1xyXG5cdFx0fSk7XHJcblx0XHQvLyB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHRoaXMuYWdncmVnYXRpb25zLmZpbHRlcigoaXRlbSkgPT5cclxuXHRcdC8vICAgdGhpcy5zb3J0aW5nQXJyYXkuaW5jbHVkZXMoaXRlbS5pZClcclxuXHRcdC8vICk7XHJcblx0XHRsZXQgdXBkYXRlZEFnZ3JlZ2F0aW9uID0gW107XHJcblx0XHR0aGlzLmFnZ3JlZ2F0aW9ucy5tYXAoKGFnZ3JlZykgPT4ge1xyXG5cdFx0XHR0aGlzLnNvcnRpbmdBcnJheS5tYXAoKHNvcnRUeXBlKSA9PiB7XHJcblx0XHRcdFx0aWYgKHNvcnRUeXBlLmlkID09PSBhZ2dyZWcuaWQpIHtcclxuXHRcdFx0XHRcdGFnZ3JlZ1snY29tcG9uZW50VHlwZSddID0gc29ydFR5cGUuY29tcG9lbmVudFR5cGU7XHJcblx0XHRcdFx0XHQvLyBpbiBjYXNlIG9mIGN1c3RvbSBjb21wb25lbnQgbmVlZCB0byBjYWxsIHBhZ2UgcHJvdmlkZXIgdG8gZ2V0IGRhdGFcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0c29ydFR5cGUuY29tcG9lbmVudFR5cGUgPT09ICdjdXN0b20tcHAnIHx8XHJcblx0XHRcdFx0XHRcdHNvcnRUeXBlLmNvbXBvZW5lbnRUeXBlID09PSAnY3VzdG9tLWRvY3VtZW50JyB8fFxyXG5cdFx0XHRcdFx0XHRzb3J0VHlwZS5jb21wb2VuZW50VHlwZSA9PT0gJ2N1c3RvbS1kZXBhcnRtZW50J1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdChhZ2dyZWdbJ2N1c3RvbVBhZ2VQcm92aWRlciddID0gc29ydFR5cGUucGFnZVByb3ZpZGVyKSwgKGFnZ3JlZ1snY29uZmlnJ10gPSBzb3J0VHlwZS5jb25maWcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dXBkYXRlZEFnZ3JlZ2F0aW9uLnB1c2goYWdncmVnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmFnZ3JlZ2F0aW9ucyA9IF8uc29ydEJ5KHVwZGF0ZWRBZ2dyZWdhdGlvbiwgKGl0ZW0pID0+IHtcclxuXHRcdFx0bGV0IGkgPSAtMTtcclxuXHRcdFx0dGhpcy5zb3J0aW5nQXJyYXkubWFwKChzb3J0VHlwZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRpZiAoc29ydFR5cGUuaWQgPT09IGl0ZW0uaWQpIHtcclxuXHRcdFx0XHRcdGkgPSBpbmRleDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRyZXR1cm4gaTtcclxuXHRcdH0pO1xyXG5cdFx0Y29uc29sZS5sb2coJ2FnZ3JlZ2F0aW9ucycsIHRoaXMuYWdncmVnYXRpb25zKTtcclxuXHRcdHRoaXMudG90YWxSZWNvcmRzID0gZGF0YS50b3RhbFNpemU7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdHN1Ym1pdEZvcm0oKSB7XHJcblx0XHRsZXQgcGFyYW1zID0ge307XHJcblx0XHRpZiAodGhpcy51c2VUb2dnbGVGaWx0ZXJzKSB7XHJcblx0XHRcdHBhcmFtcyA9IHtcclxuXHRcdFx0XHRzZWFyY2hfcXVlcnk6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy50ZXh0LnZhbHVlLFxyXG5cdFx0XHRcdHF1aWNrRmlsdGVyczogdGhpcy5nZXRUb2dnbGVGaWx0ZXJzKClcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBhcmFtcyA9IHtcclxuXHRcdFx0XHRzZWFyY2hfcXVlcnk6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy50ZXh0LnZhbHVlXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4nXSwge1xyXG5cdFx0XHRyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG5cdFx0XHRxdWVyeVBhcmFtczogcGFyYW1zXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldFRvZ2dsZUZpbHRlcnMoKSB7XHJcblx0XHR0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMuZGVwRmlsZXMudmFsdWU7XHJcblx0XHR0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlID0gdGhpcy5zZWFyY2hGb3JtLmNvbnRyb2xzLnBlcnNvbmFsRmlsZXMudmFsdWU7XHJcblx0XHR0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMud29ya1NwYWNlRmlsZXMudmFsdWU7XHJcblx0XHRpZiAoXHJcblx0XHRcdCh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHx8XHJcblx0XHRcdCghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmICF0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICYmICF0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG5cdFx0XHRyZXR1cm4gJ3BlcnNvbmFsRmlsdGVyJztcclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmICF0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuICdkZXBhcnRtZW50RmlsdGVyJztcclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuICdkZXBhcnRtZW50V29ya1NwYWNlRmlsdGVyJztcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG5cdFx0XHRyZXR1cm4gJ2RlcGFydG1lbnRQZXJzb25hbEZpbHRlcic7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuICdwZXJzb25hbERlcGFydG1lbnRXb3JrU3BhY2VGaWx0ZXInO1xyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSB7XHJcblx0XHRcdHJldHVybiAnZGVwdERlcGF0bWVudFdvcmtTcGFjZUZpbHRlcic7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRPcHRpb25WYWx1ZShzZWFyY2hlZFRleHQpIHtcclxuXHRcdHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3RleHQnKS5zZXRWYWx1ZShzZWFyY2hlZFRleHQpO1xyXG5cdFx0dGhpcy5zdWJtaXRGb3JtKCk7XHJcblx0fVxyXG5cdG9uT3BlbkZpbHRlcigpIHtcclxuXHRcdHRoaXMub3BlbkZpbHRlciA9ICF0aGlzLm9wZW5GaWx0ZXI7XHJcblx0fVxyXG5cclxuXHRicmVha3BvaW50KCkge1xyXG5cdFx0dGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbJyhtaW4td2lkdGg6IDEyMDBweCknXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdC5tYXRjaGVzKSB7XHJcblx0XHRcdFx0dGhpcy5vcGVuRmlsdGVyID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cGVyZm9ybUFjdGlvbihhY3Rpb24pIHtcclxuXHRcdHRoaXMuYWN0aW9uT25Sb3cuZW1pdChhY3Rpb24pO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcGFyYW1zID0ge1xyXG5cdFx0XHRzZWFyY2hUZXJtOiB0ZXJtXHJcblx0XHR9O1xyXG5cdFx0aWYgKHRoaXMuZ2xvYmFsQWRtaW5TZXJ2aWNlLmlzR2xvYmFsQWRtaW4pIHtcclxuXHRcdFx0cGFyYW1zWydwYXRoJ10gPSB0aGlzLmdsb2JhbEFkbWluU2VydmljZS5hY3RpdmVUZW5hbnQgO1xyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5nbG9iYWxBZG1pblNlcnZpY2UuaXNHbG9iYWxBZG1pbiAmJiB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWQpIHtcclxuXHRcdFx0cGFyYW1zWydwYXRoJ10gPSB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWQ7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZnJvbShcclxuXHRcdFx0dGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuXHRcdFx0XHQub3BlcmF0aW9uKHRoaXMuc3VnZ2VzdGVyQXBpID8gdGhpcy5zdWdnZXN0ZXJBcGkgOiAnU2VhcmNoLkN1c3RvbVN1Z2dlc3RlcnNMYXVuY2hlcicsIHtcclxuXHRcdFx0XHRcdHVybDogYCR7dGhpcy5lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHQucGFyYW1zKHtcclxuXHRcdFx0XHRcdC4uLnBhcmFtc1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0LmNvbnRleHQoe30pXHJcblx0XHRcdFx0LmV4ZWN1dGUoKVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXRvb2xiYXIgZC1tZC1mbGV4IGQteGwtbm9uZSBteC0zXCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJvbk9wZW5GaWx0ZXIoKVwiIGNsYXNzPVwibXktYnV0dG9uXCI+XHJcbiAgICAgIDxzcGFuPiB7eyBcIkZJTFRFUlwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8aSBjbGFzcz1cImJpIGJpLWZpbHRlclwiICpuZ0lmPVwiIW9wZW5GaWx0ZXJcIj48L2k+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmkgYmkteFwiICpuZ0lmPVwib3BlbkZpbHRlclwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wZW5GaWx0ZXJcIj5cclxuICAgICAgPGkgY2xhc3M9XCJiaSBiaS1jYXJldC11cC1maWxsIGFycm93LXVwXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVJlc3BvbnNpdmVTdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b21TdHlsZSAtbXQtMTIgcHgtOCBmbGV4IGZsZXgtY29sXCJcclxuICAgIFtuZ0NsYXNzXT1cInsnYmctYWNjZW50LTIwMCc6IHRoZW1lID09PSAnZGdkYScsJ2JnLWFjY2VudC0xMDAnOiB0aGVtZSA9PT0gJ2tzcmVsZWlmJyB8fCB0aGVtZSA9PT0gJ2NvbXB0ZWNoY28nfVwiXHJcbiAgICBbQGNvbGxhcHNlXT1cIiFvcGVuRmlsdGVyXCI+XHJcbiAgICA8IS0tIDxmb3JtXHJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCJcclxuICAgICAgICBjbGFzcz1cInNlYXJjaC1mb3JtXCJcclxuICAgICAgICAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGV4dFwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaC5zZWFyY2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIGNsYXNzPVwic2VhcmNoLWljb24gYmkgYmktc2VhcmNoXCI+PC9kaXY+XHJcbiAgICAgIDwvZm9ybT4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAteC0xOCBmbGV4LXJvdyBtdC01IHBiLTMgb3ZlcmZsb3cteC1hdXRvXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnM7IGVsc2UgcHJvZ3Jlc3NTcGlubmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9ucy5sZW5ndGg7IGVsc2Ugbm9BZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb24uYnVja2V0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZpbHRlciBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCIgW2ZpbHRlcnNdPVwiYWdncmVnYXRpb24uYnVja2V0c1wiIFtpZF09XCJhZ2dyZWdhdGlvbi5pZFwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0aW9uc109XCJhZ2dyZWdhdGlvbi5zZWxlY3Rpb25cIiBbdGl0bGVdPVwiYWdncmVnYXRpb24uZmllbGRcIiBbcHJlZml4XT1cIidzZWFyY2gnXCIgW2RlcGFydG1lbnRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRpb24uZmllbGQgPT09ICdjb3JyOnRvJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjpmcm9tJ1xyXG4gICAgICAgICAgICAgICAgICBcIiBbY29tcG9uZW50VHlwZV09XCJhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlID8gYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA6ICdkZWZ1bHQnXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21QYWdlUHJvdmlkZXJdPVwiYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyID8gYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyIDogJydcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJhZ2dyZWdhdGlvbi5jb25maWcgPyBhZ2dyZWdhdGlvbi5jb25maWcgOiB7fVwiIChvbkZpbHRlclNlbGVjdGVkKT1cIkZpbHRlclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZpbHRlcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwicm93IHdyYXBwZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlci1vdmVybGF5XCIgKm5nSWY9XCJsb2FkaW5nXCI+PC9kaXY+XHJcbiAgXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1maWx0ZXIgcHgtMyBkLWZsZXggZC14bC1ub25lXCIgKm5nSWY9XCJvcGVuRmlsdGVyXCI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIGNsYXNzPVwic2VhcmNoLWZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgW21hdEF1dG9jb21wbGV0ZV09XCJtYXRBdXRvY29tcGxldGUxXCIgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICBjbGFzcz1cIlxyXG4gICAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgICAgYXV0by1jb21wbGV0ZS13cmFwcGVyXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAjbWF0QXV0b2NvbXBsZXRlMT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgPlxyXG4gICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgY2xhc3M9XCJuby10ZXh0XCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzdWx0U2V0cyAmJiAhcmVzdWx0U2V0cy5sZW5ndGhcIlxyXG4gICAgICA+XHJcbiAgICAgICAgICB7eydub19yZXN1bHRfZm91bmQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZXN1bHRTZXQgb2YgcmVzdWx0U2V0c1wiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gIChjbGljayk9XCJzZXRPcHRpb25WYWx1ZShyZXN1bHRTZXQubGFiZWwpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taW5lci10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHJlc3VsdFNldC5sYWJlbCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbiA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnM7IGVsc2UgcHJvZ3Jlc3NTcGlubmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9ucy5sZW5ndGg7IGVsc2Ugbm9BZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb24uYnVja2V0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZpbHRlciBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCIgW2ZpbHRlcnNdPVwiYWdncmVnYXRpb24uYnVja2V0c1wiIFtpZF09XCJhZ2dyZWdhdGlvbi5pZFwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0aW9uc109XCJhZ2dyZWdhdGlvbi5zZWxlY3Rpb25cIiBbdGl0bGVdPVwiYWdncmVnYXRpb24uZmllbGRcIiBbcHJlZml4XT1cIidzZWFyY2gnXCIgW2RlcGFydG1lbnRdPVwiXHJcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6dG8nIHx8XHJcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6ZnJvbSdcclxuICAgICAgICAgICAgICBcIiBbY29tcG9uZW50VHlwZV09XCJhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlID8gYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA6ICdkZWZ1bHQnXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21QYWdlUHJvdmlkZXJdPVwiYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyID8gYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyIDogJydcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJhZ2dyZWdhdGlvbi5jb25maWcgPyBhZ2dyZWdhdGlvbi5jb25maWcgOiB7fVwiIChvbkZpbHRlclNlbGVjdGVkKT1cIkZpbHRlclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZpbHRlcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbC14bC0zIHNlYXJjaC1zaWRlTWVudSBkLW5vbmUgZC14bC1ibG9ja1wiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgY2xhc3M9XCJzZWFyY2gtZm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgW21hdEF1dG9jb21wbGV0ZV09XCJtYXRBdXRvY29tcGxldGUyXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaC5zZWFyY2gnIHwgdHJhbnNsYXRlXCIgLz5cclxuICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwiXHJcbiAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgIGF1dG8tY29tcGxldGUtd3JhcHBlclxyXG4gICAgXCIgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiICNtYXRBdXRvY29tcGxldGUyPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibm8tdGV4dFwiICpuZ0lmPVwicmVzdWx0U2V0cyAmJiAhcmVzdWx0U2V0cy5sZW5ndGhcIj5cclxuICAgICAgICB7eydub19yZXN1bHRfZm91bmQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZXN1bHRTZXQgb2YgcmVzdWx0U2V0c1wiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJzZXRPcHRpb25WYWx1ZShyZXN1bHRTZXQubGFiZWwpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1pbmVyLXRleHRcIj57eyByZXN1bHRTZXQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnM7IGVsc2UgcHJvZ3Jlc3NTcGlubmVyXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbi5idWNrZXRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxjdHMtZHluYW1pYy1maWx0ZXIgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiIFtmaWx0ZXJzXT1cImFnZ3JlZ2F0aW9uLmJ1Y2tldHNcIiBbaWRdPVwiYWdncmVnYXRpb24uaWRcIlxyXG4gICAgICAgICAgICBbc2VsZWN0aW9uc109XCJhZ2dyZWdhdGlvbi5zZWxlY3Rpb25cIiBbdGl0bGVdPVwiYWdncmVnYXRpb24uZmllbGRcIiBbcHJlZml4XT1cIidzZWFyY2gnXCIgW2RlcGFydG1lbnRdPVwiXHJcbiAgICAgICAgICAgICAgYWdncmVnYXRpb24uZmllbGQgPT09ICdjb3JyOnRvJyB8fFxyXG4gICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjpmcm9tJ1xyXG4gICAgICAgICAgICBcIiBbY29tcG9uZW50VHlwZV09XCJhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlID8gYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA6ICdkZWZ1bHQnXCJcclxuICAgICAgICAgICAgW2N1c3RvbVBhZ2VQcm92aWRlcl09XCJhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgPyBhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgIFtjb25maWddPVwiYWdncmVnYXRpb24uY29uZmlnID8gYWdncmVnYXRpb24uY29uZmlnIDoge31cIiAob25GaWx0ZXJTZWxlY3RlZCk9XCJGaWx0ZXJTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L2N0cy1keW5hbWljLWZpbHRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wteGwtOVwiPlxyXG4gICAgPGFwcC1jYXJkPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICA8aDM+XHJcbiAgICAgICAgICB7eyBcInNlYXJjaC5oZWFkZXJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhZ2dyZWdhdGlvbnNcIiBjbGFzcz1cInRhYmxlLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY291bnRcIj5cclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICBcInNlYXJjaC5cIiArIFwicmVzdWx0c051bWJlclwiXHJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgdmFsdWU6IHRvdGFsUmVjb3JkcyA/IHRvdGFsUmVjb3JkcyA6IDAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJkLWZsZXgganVzdGlmeS1iZXR3ZWVuXCIgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VUb2dnbGVGaWx0ZXJzICYmICFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tUmVzcG9uc2l2ZVN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZvcm0gY3VzdG9tLXJlc3BvbnNpdmUtc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGV4dFwiIFttYXRBdXRvY29tcGxldGVdPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaC5zZWFyY2gnIHwgdHJhbnNsYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiXHJcbiAgICAgICAgICAgICAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG8tY29tcGxldGUtd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgI21hdEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3VsdFNldHMgJiYgIXJlc3VsdFNldHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7e25vX3Jlc3VsdF9mb3VuZCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZXN1bHRTZXQgb2YgcmVzdWx0U2V0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICAoY2xpY2spPVwic2V0T3B0aW9uVmFsdWUocmVzdWx0U2V0LmxhYmVsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taW5lci10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyByZXN1bHRTZXQubGFiZWwgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbiA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJ1c2VUb2dnbGVGaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtIGNsYXNzPVwibXgtMiBzbWFsbC1mb250XCIgW2xhYmVsXT1cIidzZWFyY2guUEVSU09OQUxfRklMRVMnXCJcclxuICAgICAgICAgICAgICAgICAgKG9uVG9nZ2xlKT1cInN1Ym1pdEZvcm0oKVwiIGZvcm1Db250cm9sTmFtZT1cInBlcnNvbmFsRmlsZXNcIj5cclxuICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtPlxyXG4gICAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbSBjbGFzcz1cIm14LTIgc21hbGwtZm9udFwiIFtsYWJlbF09XCInc2VhcmNoLkRFUF9GSUxFUydcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXBGaWxlc1wiIChvblRvZ2dsZSk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtPlxyXG4gICAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbSBjbGFzcz1cIm14LTIgc21hbGwtZm9udFwiIFtsYWJlbF09XCInc2VhcmNoLldPUktTUEFDRV9GSUxFUydcIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwid29ya1NwYWNlRmlsZXNcIiAob25Ub2dnbGUpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgPC9jdHMtZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjdHMtZHluYW1pYy10YWJsZSAjZHluYW1pY1RhYmxlIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG4gICAgICAgICAgW3BhZ2VQcm92aWRlcl09XCJwYWdlUHJvdmlkZXJcIiBbcXVpY2tGaWx0ZXJdPVwiZmlsdGVyXCIgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiIFtmaWVsZHNdPVwiZmllbGRzXCJcclxuICAgICAgICAgIFtxdWVyeVBhcmFtXT1cInF1ZXJ5UGFyYW1zXCIgW2hlYWRlcnNdPVwiaGVhZGVyc1wiIFtwcmVmaXhdPVwicHJlZml4XCIgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIiBbaXNTZWFyY2hQYWdlXT1cInRydWVcIlxyXG4gICAgICAgICAgKG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZCgkZXZlbnQpXCIgKGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25HZXR0aW5nRGF0YSk9XCJnZXRUYWJsZURhdGEoJGV2ZW50KVwiPjwvY3RzLWR5bmFtaWMtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9hcHAtY2FyZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1NwaW5uZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lclwiPlxyXG4gICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJ3YXJuXCIgW2RpYW1ldGVyXT1cIjI1XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNub0FnZ3JlZ2F0aW9ucz5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCI+XHJcbiAgICAgIHt7IFwic2VhcmNoLm5vQWdncmVnYXRpb25zXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Directive } from '@angular/core';
|
|
2
2
|
import _ from 'lodash';
|
|
3
|
-
import { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';
|
|
3
|
+
import { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { BaseAggregationField } from '.';
|
|
5
|
-
import { MIN_VISIBLE_COUNT } from '../constants';
|
|
6
|
-
import { isFieldValueObject } from '../utility';
|
|
5
|
+
import { COMPARISON_OPERATOR, MIN_VISIBLE_COUNT } from '../constants';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export class AggregationBaseSelectionComponent extends BaseAggregationField {
|
|
9
8
|
/**
|
|
@@ -29,7 +28,10 @@ export class AggregationBaseSelectionComponent extends BaseAggregationField {
|
|
|
29
28
|
}
|
|
30
29
|
writeValue(values) {
|
|
31
30
|
if (values) {
|
|
32
|
-
const _values =
|
|
31
|
+
const _values = this._getValues(values);
|
|
32
|
+
if (_.isEqual(_values, this.internalValue)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
33
35
|
const _vals = Array.isArray(_values) ? _values : [_values];
|
|
34
36
|
this.internalValue = _values;
|
|
35
37
|
this.selectionModel.select(..._vals);
|
|
@@ -44,23 +46,32 @@ export class AggregationBaseSelectionComponent extends BaseAggregationField {
|
|
|
44
46
|
updateValue() {
|
|
45
47
|
this.selectionModel.changed
|
|
46
48
|
.asObservable()
|
|
47
|
-
.pipe(map((data) => data.source.selected), distinctUntilChanged((a, b) => _.isEqual(a, b)), takeUntil(this.destroy$))
|
|
49
|
+
.pipe(map((data) => data.source.selected), distinctUntilChanged((a, b) => _.isEqual(a, b)), filter((value) => !_.isEqual(this.internalValue, value)), takeUntil(this.destroy$))
|
|
48
50
|
.subscribe((value) => {
|
|
49
51
|
this.emitValue(value);
|
|
50
52
|
});
|
|
51
53
|
}
|
|
52
54
|
emitValue(value) {
|
|
55
|
+
var _a;
|
|
53
56
|
this.internalValue = value;
|
|
54
57
|
this._isFieldDirty = !!(value === null || value === void 0 ? void 0 : value.length);
|
|
55
|
-
|
|
58
|
+
if ((value === null || value === void 0 ? void 0 : value.length) !== 0 && this._isValueObject()) {
|
|
59
|
+
this.onChange(this._prepareValueObject(value, ((_a = this.fieldConfig) === null || _a === void 0 ? void 0 : _a.operator) || COMPARISON_OPERATOR.in));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.onChange(value);
|
|
56
63
|
}
|
|
57
64
|
sortChange(event) {
|
|
58
65
|
this.sort = Object.assign({}, event);
|
|
59
66
|
}
|
|
67
|
+
_getValues(values) {
|
|
68
|
+
var _a;
|
|
69
|
+
return Array.isArray(values) ? values : ((_a = values) === null || _a === void 0 ? void 0 : _a.value) || [];
|
|
70
|
+
}
|
|
60
71
|
}
|
|
61
72
|
AggregationBaseSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationBaseSelectionComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
73
|
AggregationBaseSelectionComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: AggregationBaseSelectionComponent, usesInheritance: true, ngImport: i0 });
|
|
63
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationBaseSelectionComponent, decorators: [{
|
|
64
75
|
type: Directive
|
|
65
76
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGVja2JveC1yYWRpby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1maWx0ZXJzL2Jhc2UvYmFzZS1jaGVja2JveC1yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLdEUsTUFBTSxPQUFnQixpQ0FFcEIsU0FBUSxvQkFBNkI7SUFXdEM7O09BRUc7SUFDSCxZQUFZLFFBQWtCO1FBQzdCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVpqQixzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLGlCQUFpQixDQUFDO1FBQ2xDLFNBQUksR0FBYztZQUNqQixHQUFHLEVBQUUsV0FBVztZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxNQUFNO1NBQ2pCLENBQUM7UUFPRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBeUIsRUFBRSxFQUFFO1lBQzFGLElBQUksR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLGVBQWUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGlC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QyxNQUFnQzs7UUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsTUFBQyxNQUEyQiwwQ0FBRSxLQUFLLEtBQUksRUFBRSxDQUFDO0lBQ25GLENBQUM7OytIQTdFb0IsaUNBQWlDO21IQUFqQyxpQ0FBaUM7NEZBQWpDLGlDQUFpQztrQkFEdEQsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEJhc2VBZ2dyZWdhdGlvbkZpZWxkIH0gZnJvbSAnLic7XHJcbmltcG9ydCB7IENPTVBBUklTT05fT1BFUkFUT1IsIE1JTl9WSVNJQkxFX0NPVU5UIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRmllbGRWYWx1ZU9iamVjdCwgT3B0aW9uc1R5cGUsIFNvcnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IGlzRmllbGRWYWx1ZU9iamVjdCB9IGZyb20gJy4uL3V0aWxpdHknO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ2dyZWdhdGlvbkJhc2VTZWxlY3Rpb25Db21wb25lbnQ8XHJcblx0T3B0VHlwZSBleHRlbmRzICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3N3aXRjaCdcclxuPiBleHRlbmRzIEJhc2VBZ2dyZWdhdGlvbkZpZWxkPE9wdFR5cGU+IHtcclxuXHRpbnRlcm5hbFZhbHVlOiBhbnk7XHJcblx0YWJzdHJhY3Qgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPHVua25vd24+O1xyXG5cdHZpc2libGVJdGVtc0NvdW50ID0gTUlOX1ZJU0lCTEVfQ09VTlQ7XHJcblx0ZXhwYW5kZWRDb3VudCA9IE1JTl9WSVNJQkxFX0NPVU5UO1xyXG5cdHNvcnQ6IFNvcnRNb2RlbCA9IHtcclxuXHRcdGtleTogJ2NvdW50RGVzYycsXHJcblx0XHR2YWx1ZTogJ2NvdW50JyxcclxuXHRcdGRpcmVjdGlvbjogJ2Rlc2MnXHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICpcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHRcdHN1cGVyKGluamVjdG9yKTtcclxuXHRcdHRoaXMucmVuZGVyT3B0aW9ucyQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBPcHRpb25zVHlwZTxPcHRUeXBlPikgPT4ge1xyXG5cdFx0XHRpZiAocmVzPy5taW5WaXNpYmxlQ291bnQpIHtcclxuXHRcdFx0XHR0aGlzLnZpc2libGVJdGVtc0NvdW50ID0gcmVzPy5taW5WaXNpYmxlQ291bnQ7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHJlcz8uZXhwYW5kZWRDb3VudCkge1xyXG5cdFx0XHRcdHRoaXMuZXhwYW5kZWRDb3VudCA9IHJlcz8uZXhwYW5kZWRDb3VudDtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHR3cml0ZVZhbHVlKHZhbHVlczogYW55W10gfCBGaWVsZFZhbHVlT2JqZWN0KTogdm9pZCB7XHJcblx0XHRpZiAodmFsdWVzKSB7XHJcblx0XHRcdGNvbnN0IF92YWx1ZXMgPSB0aGlzLl9nZXRWYWx1ZXModmFsdWVzKTtcclxuXHJcblx0XHRcdGlmIChfLmlzRXF1YWwoX3ZhbHVlcywgdGhpcy5pbnRlcm5hbFZhbHVlKSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgX3ZhbHMgPSBBcnJheS5pc0FycmF5KF92YWx1ZXMpID8gX3ZhbHVlcyA6IFtfdmFsdWVzXTtcclxuXHRcdFx0dGhpcy5pbnRlcm5hbFZhbHVlID0gX3ZhbHVlcztcclxuXHRcdFx0dGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoLi4uX3ZhbHMpO1xyXG5cdFx0XHR0aGlzLl9pc0ZpZWxkRGlydHkgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5faXNGaWVsZERpcnR5KSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcclxuXHRcdFx0dGhpcy5faXNGaWVsZERpcnR5ID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVWYWx1ZSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0aW9uTW9kZWwuY2hhbmdlZFxyXG5cdFx0XHQuYXNPYnNlcnZhYmxlKClcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0bWFwKChkYXRhKSA9PiBkYXRhLnNvdXJjZS5zZWxlY3RlZCksXHJcblx0XHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IF8uaXNFcXVhbChhLCBiKSksXHJcblx0XHRcdFx0ZmlsdGVyKCh2YWx1ZSkgPT4gIV8uaXNFcXVhbCh0aGlzLmludGVybmFsVmFsdWUsIHZhbHVlKSksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgodmFsdWU6IHN0cmluZ1tdKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5lbWl0VmFsdWUodmFsdWUpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGVtaXRWYWx1ZSh2YWx1ZTogc3RyaW5nW10pIHtcclxuXHRcdHRoaXMuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xyXG5cdFx0dGhpcy5faXNGaWVsZERpcnR5ID0gISF2YWx1ZT8ubGVuZ3RoO1xyXG5cdFx0aWYgKHZhbHVlPy5sZW5ndGggIT09IDAgJiYgdGhpcy5faXNWYWx1ZU9iamVjdCgpKSB7XHJcblx0XHRcdHRoaXMub25DaGFuZ2UodGhpcy5fcHJlcGFyZVZhbHVlT2JqZWN0KHZhbHVlLCB0aGlzLmZpZWxkQ29uZmlnPy5vcGVyYXRvciB8fCBDT01QQVJJU09OX09QRVJBVE9SLmluKSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG5cdH1cclxuXHJcblx0c29ydENoYW5nZShldmVudDogU29ydE1vZGVsKSB7XHJcblx0XHR0aGlzLnNvcnQgPSB7IC4uLmV2ZW50IH07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9nZXRWYWx1ZXModmFsdWVzOiBhbnlbXSB8IEZpZWxkVmFsdWVPYmplY3QpIHtcclxuXHRcdHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiAodmFsdWVzIGFzIEZpZWxkVmFsdWVPYmplY3QpPy52YWx1ZSB8fCBbXTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -21,6 +21,7 @@ export const PREDICATE_FIELD_TYPES = {
|
|
|
21
21
|
date: 'date'
|
|
22
22
|
};
|
|
23
23
|
export const CUSTOM_FIELD_TYPES = {
|
|
24
|
-
activeUser: 'activeUser'
|
|
24
|
+
activeUser: 'activeUser',
|
|
25
|
+
aggregationGroup: 'aggregationGroup',
|
|
25
26
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWZpbHRlcnMvY29uc3RhbnRzL3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUc7SUFDdEMsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixZQUFZLEVBQUUsY0FBYztJQUM1QixRQUFRLEVBQUUsVUFBVTtJQUNwQixNQUFNLEVBQUUsUUFBUTtDQUNQLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDN0IsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsVUFBVTtDQUNYLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDekIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsTUFBTSxFQUFFLFFBQVE7Q0FDUCxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDcEMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtDQUNILENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNqQyxVQUFVLEVBQUUsWUFBWTtJQUN4QixnQkFBZ0IsRUFBRSxrQkFBa0I7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9GSUVMRF9UWVBFUyA9IHtcclxuXHRkcm9wZG93bjogJ2Ryb3Bkb3duJyxcclxuXHRjaGVja2JveDogJ2NoZWNrYm94JyxcclxuXHRyYWRpbzogJ3JhZGlvJyxcclxuXHRzd2l0Y2g6ICdzd2l0Y2gnLFxyXG5cdGF1dG9jb21wbGV0ZTogJ2F1dG9jb21wbGV0ZScsXHJcblx0ZGF0ZUxpc3Q6ICdkYXRlTGlzdCcsXHJcblx0Y3VzdG9tOiAnY3VzdG9tJ1xyXG59IGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IERBVEVfTElTVF9WSUVXID0ge1xyXG5cdGxpc3Q6ICdsaXN0JyxcclxuXHRkcm9wZG93bjogJ2Ryb3Bkb3duJ1xyXG59IGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IEZJRUxEX1RZUEUgPSB7XHJcblx0YWdncmVnYXRpb246ICdhZ2dyZWdhdGlvbicsXHJcblx0cHJlZGljYXRlOiAncHJlZGljYXRlJyxcclxuXHRjdXN0b206ICdjdXN0b20nXHJcbn0gYXMgY29uc3Q7XHJcblxyXG5leHBvcnQgY29uc3QgUFJFRElDQVRFX0ZJRUxEX1RZUEVTID0ge1xyXG5cdGlucHV0OiAnaW5wdXQnLFxyXG5cdGRhdGU6ICdkYXRlJ1xyXG59IGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IENVU1RPTV9GSUVMRF9UWVBFUyA9IHtcclxuXHRhY3RpdmVVc2VyOiAnYWN0aXZlVXNlcicsXHJcblx0YWdncmVnYXRpb25Hcm91cDogJ2FnZ3JlZ2F0aW9uR3JvdXAnLFxyXG59IGFzIGNvbnN0O1xyXG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { BaseField } from '../base-field';
|
|
1
|
+
import { Component, forwardRef, Input, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
4
3
|
import { AGGREGATION_FIELD_TYPES } from '../../constants';
|
|
4
|
+
import { BaseField } from '../base-field';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class AggregationFieldComponent extends BaseField {
|
|
7
7
|
constructor() {
|
|
@@ -13,7 +13,7 @@ export class AggregationFieldComponent extends BaseField {
|
|
|
13
13
|
[AGGREGATION_FIELD_TYPES.switch]: this._prepareField.bind(this),
|
|
14
14
|
[AGGREGATION_FIELD_TYPES.autocomplete]: this._prepareField.bind(this),
|
|
15
15
|
[AGGREGATION_FIELD_TYPES.dateList]: this._prepareField.bind(this),
|
|
16
|
-
[AGGREGATION_FIELD_TYPES.custom]: this._prepareField.bind(this)
|
|
16
|
+
[AGGREGATION_FIELD_TYPES.custom]: this._prepareField.bind(this),
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
ngOnInit() {
|
|
@@ -26,7 +26,8 @@ export class AggregationFieldComponent extends BaseField {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
_prepareField() {
|
|
29
|
-
const instance = this._componentRef
|
|
29
|
+
const instance = this._componentRef
|
|
30
|
+
.instance;
|
|
30
31
|
instance.aggregation = this.aggregation;
|
|
31
32
|
instance.fieldConfig = this.fieldConfig;
|
|
32
33
|
if (this.contentTemplate) {
|
|
@@ -39,13 +40,13 @@ AggregationFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
39
40
|
{
|
|
40
41
|
provide: NG_VALUE_ACCESSOR,
|
|
41
42
|
useExisting: forwardRef(() => AggregationFieldComponent),
|
|
42
|
-
multi: true
|
|
43
|
+
multi: true,
|
|
43
44
|
},
|
|
44
45
|
{
|
|
45
46
|
provide: NG_VALIDATORS,
|
|
46
47
|
useExisting: forwardRef(() => AggregationFieldComponent),
|
|
47
|
-
multi: true
|
|
48
|
-
}
|
|
48
|
+
multi: true,
|
|
49
|
+
},
|
|
49
50
|
], usesInheritance: true, ngImport: i0, template: '<ng-container #dynamicContainer></ng-container>', isInline: true, styles: [""], encapsulation: i0.ViewEncapsulation.None });
|
|
50
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationFieldComponent, decorators: [{
|
|
51
52
|
type: Component,
|
|
@@ -58,21 +59,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
58
59
|
{
|
|
59
60
|
provide: NG_VALUE_ACCESSOR,
|
|
60
61
|
useExisting: forwardRef(() => AggregationFieldComponent),
|
|
61
|
-
multi: true
|
|
62
|
+
multi: true,
|
|
62
63
|
},
|
|
63
64
|
{
|
|
64
65
|
provide: NG_VALIDATORS,
|
|
65
66
|
useExisting: forwardRef(() => AggregationFieldComponent),
|
|
66
|
-
multi: true
|
|
67
|
-
}
|
|
67
|
+
multi: true,
|
|
68
|
+
},
|
|
68
69
|
],
|
|
69
70
|
host: {
|
|
70
|
-
'[class]': "'aggregation-field' + ' aggregation-field__fieldConfig?.render?.type' "
|
|
71
|
-
}
|
|
71
|
+
'[class]': "'aggregation-field' + ' aggregation-field__fieldConfig?.render?.type' ",
|
|
72
|
+
},
|
|
72
73
|
}]
|
|
73
74
|
}], propDecorators: { aggregation: [{
|
|
74
75
|
type: Input
|
|
75
76
|
}], contentTemplate: [{
|
|
76
77
|
type: Input
|
|
77
78
|
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtZmlsdGVycy9jb250YWluZXJzL2FnZ3JlZ2F0aW9uLWZpZWxkL2FnZ3JlZ2F0aW9uLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxhQUFhLEVBQ2IsaUJBQWlCLEdBRWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUF3QjFDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxTQUFpQztJQXRCaEY7O1FBMEJtQixhQUFRLEdBQTZDO1lBQ3BFLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzlELENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQy9ELENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3JFLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2hFLENBQUM7S0F3Qkg7SUF0QkMsUUFBUTs7UUFDTixNQUFNLGFBQWEsR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsTUFBTSwwQ0FBRSxJQUFJLENBQUM7UUFDckQsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUN4RCxhQUFhLEVBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsTUFBQSxNQUFBLElBQUksQ0FBQyxRQUFRLEVBQUMsYUFBYSxDQUFDLGtEQUFJLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYTthQUNoQyxRQUFzRCxDQUFDO1FBQzFELFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4QyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUNqRDtJQUNILENBQUM7O3VIQW5DVSx5QkFBeUI7MkdBQXpCLHlCQUF5QiwwT0FqQnpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4RCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsaURBZFMsaURBQWlEOzRGQW9CaEQseUJBQXlCO2tCQXRCckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsaURBQWlEO29CQUMzRCxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ1osYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUNQLHlFQUF5RTtxQkFDNUU7aUJBQ0Y7OEJBRVUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBOZ01vZHVsZSxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3Jtc01vZHVsZSxcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCYXNlQWdncmVnYXRpb25GaWVsZCB9IGZyb20gJy4uLy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBBR0dSRUdBVElPTl9GSUVMRF9UWVBFUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcbiAgQWdncmVnYXRpb25GaWVsZENvbmZpZyxcclxuICBBZ2dyZWdhdGlvbkZpZWxkVHlwZSxcclxuICBBZ2dyZWdhdGlvblJlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCB9IGZyb20gJy4uL2Jhc2UtZmllbGQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWdncmVnYXRpb24tZmllbGQnLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRhaW5lciAjZHluYW1pY0NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj4nLFxyXG4gIHN0eWxlczogWycnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQWdncmVnYXRpb25GaWVsZENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQWdncmVnYXRpb25GaWVsZENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3NdJzpcclxuICAgICAgXCInYWdncmVnYXRpb24tZmllbGQnICsgJyAgYWdncmVnYXRpb24tZmllbGRfX2ZpZWxkQ29uZmlnPy5yZW5kZXI/LnR5cGUnIFwiLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ2dyZWdhdGlvbkZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpZWxkPEFnZ3JlZ2F0aW9uRmllbGRDb25maWc+IHtcclxuICBASW5wdXQoKSBhZ2dyZWdhdGlvbjogQWdncmVnYXRpb25SZXNwb25zZTtcclxuICBASW5wdXQoKSBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlcnM6IFJlY29yZDxBZ2dyZWdhdGlvbkZpZWxkVHlwZSwgKCkgPT4gdm9pZD4gPSB7XHJcbiAgICBbQUdHUkVHQVRJT05fRklFTERfVFlQRVMuZHJvcGRvd25dOiB0aGlzLl9wcmVwYXJlRmllbGQuYmluZCh0aGlzKSxcclxuICAgIFtBR0dSRUdBVElPTl9GSUVMRF9UWVBFUy5jaGVja2JveF06IHRoaXMuX3ByZXBhcmVGaWVsZC5iaW5kKHRoaXMpLFxyXG4gICAgW0FHR1JFR0FUSU9OX0ZJRUxEX1RZUEVTLnJhZGlvXTogdGhpcy5fcHJlcGFyZUZpZWxkLmJpbmQodGhpcyksXHJcbiAgICBbQUdHUkVHQVRJT05fRklFTERfVFlQRVMuc3dpdGNoXTogdGhpcy5fcHJlcGFyZUZpZWxkLmJpbmQodGhpcyksXHJcbiAgICBbQUdHUkVHQVRJT05fRklFTERfVFlQRVMuYXV0b2NvbXBsZXRlXTogdGhpcy5fcHJlcGFyZUZpZWxkLmJpbmQodGhpcyksXHJcbiAgICBbQUdHUkVHQVRJT05fRklFTERfVFlQRVMuZGF0ZUxpc3RdOiB0aGlzLl9wcmVwYXJlRmllbGQuYmluZCh0aGlzKSxcclxuICAgIFtBR0dSRUdBVElPTl9GSUVMRF9UWVBFUy5jdXN0b21dOiB0aGlzLl9wcmVwYXJlRmllbGQuYmluZCh0aGlzKSxcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLmZpZWxkQ29uZmlnPy5yZW5kZXI/LnR5cGU7XHJcbiAgICBpZiAoY29tcG9uZW50VHlwZSkge1xyXG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnQucmVuZGVyQ29tcG9uZW50KFxyXG4gICAgICAgIGNvbXBvbmVudFR5cGUsXHJcbiAgICAgICAgdGhpcy5jb250YWluZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5fcHJlcGFyZVZhbHVlQWNjZXNzb3IoKTtcclxuICAgICAgdGhpcy5oYW5kbGVyc1tjb21wb25lbnRUeXBlXT8uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRmllbGQoKSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuX2NvbXBvbmVudFJlZlxyXG4gICAgICAuaW5zdGFuY2UgYXMgQmFzZUFnZ3JlZ2F0aW9uRmllbGQ8QWdncmVnYXRpb25GaWVsZFR5cGU+O1xyXG4gICAgaW5zdGFuY2UuYWdncmVnYXRpb24gPSB0aGlzLmFnZ3JlZ2F0aW9uO1xyXG4gICAgaW5zdGFuY2UuZmllbGRDb25maWcgPSB0aGlzLmZpZWxkQ29uZmlnO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbnRlbnRUZW1wbGF0ZSkge1xyXG4gICAgICBpbnN0YW5jZS5jb250ZW50VGVtcGxhdGUgPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|