verben-ng-ui 1.3.7 → 1.3.8
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/esm2022/src/lib/components/data-filter/data-filter.component.mjs +125 -13
- package/esm2022/src/lib/components/data-table/data-table.types.mjs +1 -1
- package/esm2022/src/lib/components/table-filter/table-filter.component.mjs +3 -3
- package/fesm2022/verben-ng-ui-src-lib-components-data-filter.mjs +124 -12
- package/fesm2022/verben-ng-ui-src-lib-components-data-filter.mjs.map +1 -1
- package/fesm2022/verben-ng-ui-src-lib-components-data-table.mjs.map +1 -1
- package/fesm2022/verben-ng-ui-src-lib-components-table-filter.mjs +2 -2
- package/fesm2022/verben-ng-ui-src-lib-components-table-filter.mjs.map +1 -1
- package/package.json +96 -96
- package/src/lib/components/data-filter/data-filter.component.d.ts +46 -6
- package/src/lib/components/data-table/data-table.types.d.ts +7 -0
|
@@ -235,11 +235,11 @@ export class TableFilterComponent {
|
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: TableFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
238
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: TableFilterComponent, selector: "verben-table-filter", inputs: { filterOptions: "filterOptions", pd: "pd", mg: "mg", height: "height", width: "width", bgColor: "bgColor", boxShadow: "boxShadow", textColor: "textColor", primaryColor: "primaryColor", secondaryColor: "secondaryColor", tertiaryColor: "tertiaryColor", border: "border", borderRadius: "borderRadius", selectWidth: "selectWidth", maxFilterLength: "maxFilterLength", savedFilters: "savedFilters", tooltip: "tooltip", saveCallback: "saveCallback" }, outputs: { filtersApplied: "filtersApplied", resetSortData: "resetSortData" }, ngImport: i0, template: "<section\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n>\n <div class=\"top\">\n <h3 [style.color]=\"tertiaryColor\" [style.font-size]=\"'14px'\">\n Filters\n <span [style.color]=\"secondaryColor\"\n ><sup>({{ filterCount }})</sup></span\n >\n </h3>\n <button\n [style.color]=\"secondaryColor\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetFilters()\"\n >\n Reset\n </button>\n </div>\n <hr />\n\n <!-- Saved Filters Section -->\n <div class=\"center\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Saved Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n ></verben-svg>\n </div>\n <div class=\"selectAllWrapper\" *ngIf=\"savedFilters.length\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <p [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">Select All</p>\n </div>\n <div\n *ngFor=\"let filter of visibleFilters; let i = index\"\n class=\"centerInnerWrapper\"\n >\n <div class=\"checkboxWrapper\">\n <span\n ><input\n type=\"checkbox\"\n [checked]=\"filter.checked\"\n (click)=\"toggleCheckbox(i)\"\n /></span>\n <p\n [style.font-size]=\"'13px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ filter.name }} {{ filter.condition }} {{ filter.value }}\n </p>\n </div>\n <div class=\"iconWrapper\">\n <verben-svg\n icon=\"pencil\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"var(--vbn-color-border-focus)\"\n fill=\"var(--vbn-color-surface)\"\n (click)=\"editFilter(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"trash\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"var(--vbn-color-error)\"\n (click)=\"deleteFilter(i)\"\n ></verben-svg>\n </div>\n </div>\n\n <div\n class=\"moreWrapper\"\n *ngIf=\"savedFilters.length > maxFilterLength\"\n (click)=\"toggleShowMore()\"\n >\n <p\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ showAllFilters ? \"Show less\" : \"Show more\" }}\n </p>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"var(--vbn-color-text)\"\n stroke=\"var(--vbn-color-text)\"\n ></verben-svg>\n </div>\n </div>\n <hr />\n\n <!-- Operation Section -->\n <div class=\"bottom\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Operation</h3>\n <div [ngStyle]=\"{ position: 'relative' }\">\n <verben-tooltip\n [tooltipContent]=\"tooltipTemplate\"\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n width=\"200px\"\n [top]=\"'20px'\"\n [right]=\"'0px'\"\n >\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n *ngIf=\"isDuplicateFilter\"\n fill=\"var(--vbn-color-error)\"\n >\n </verben-svg>\n </verben-tooltip>\n\n <ng-template #tooltipTemplate>\n {{ duplicateMessage }}\n </ng-template>\n <!-- <verben-tooltip\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n [textColor]=\"'var(--vbn-color-surface)'\"\n [padding]=\"'10px'\"\n [borderRadius]=\"'8px'\"\n [top]=\"'20px'\" \n [right]=\"'0px'\" \n width=\"250px\" \n #tooltip \n *ngIf=\"tooltip\"\n >\n <h3>{{duplicateMessage}}</h3>\n </verben-tooltip> -->\n </div>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n *ngIf=\"!isDuplicateFilter\"\n ></verben-svg>\n </div>\n\n <div class=\"inputsWrapper\">\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n [options]=\"filterArray\"\n [(ngModel)]=\"selectedFilterValue\"\n (ngModelChange)=\"onFilterNameChange(selectedFilterValue)\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n placeholder=\"Select value\"\n [options]=\"conditionOptions\"\n (onChange)=\"checkDuplicateFilter()\"\n [(ngModel)]=\"selectedCondition\"\n >\n </verben-drop-down>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Date'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"80px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [type]=\"'date'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType === 'Credit' || selectedFilterType === 'Integer'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input integer\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"integer\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Decimal'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input a decimal\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"decimal\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Number'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input number\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n type=\"number\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"number\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType !== 'Credit' &&\n selectedFilterType !== 'Date' &&\n selectedFilterType !== 'Integer' &&\n selectedFilterType !== 'Decimal' &&\n selectedFilterType !== 'Number'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n placeHolder=\"input value\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n </div>\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.border-radius]=\"borderRadius\"\n [style.background-color]=\"'transparent'\"\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [disabled]=\"disableAddFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableAddFilterBtn,\n enableBtn: !disableAddFilterBtn,\n }\"\n (click)=\"addFilter()\"\n >\n + Add\n </button>\n </div>\n <hr />\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n (click)=\"applyFilters()\"\n >\n Confirm\n </button>\n </div>\n </div>\n</section>\n", styles: ["h3,p{margin-top:0!important;margin-bottom:0!important}.top{display:flex;align-items:end;justify-content:space-between}hr{border:1px solid var(--vbn-color-border);margin:.8rem 0rem}.centerInnerWrapper{display:flex;align-items:center;justify-content:space-between}.savedWrapper{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.checkboxWrapper{display:flex;align-items:center;gap:.3rem}.iconWrapper{display:flex;align-items:center;gap:.7rem;cursor:pointer}.moreWrapper{display:flex;align-items:center;gap:.4rem;cursor:pointer}.center{overflow-y:auto;max-height:24rem}.inputsWrapper{margin-top:.5rem;display:flex;align-items:center;gap:.5rem}.btnWrapper{display:flex;justify-content:end}.inputsWrapper select:nth-of-type(1){width:120px}.inputsWrapper select:nth-of-type(2){width:70px}input[type=checkbox].checked{accent-color:var(--vbn-color-border-focus)}.selectAllWrapper{display:flex;align-items:center;gap:.25rem;margin-bottom:.5rem}.selectAllWrapper>input{cursor:pointer}.disablebtn{cursor:not-allowed}.enableBtn{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["disabled", "label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i5.ValidateDirective, selector: "[appValidate]", inputs: ["appValidate", "required", "showBorder", "showErrorMessage", "errorBorderColor", "errorMessageColor", "errorIconTooltipPosition", "showErrorIcon"] }, { kind: "component", type: i6.TooltipComponent, selector: "verben-tooltip", inputs: ["tooltipContent", "customClass", "backgroundColor", "textColor", "padding", "borderRadius", "zIndex", "border", "width", "top", "bottom", "left", "right"] }, { kind: "component", type: i7.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
|
|
238
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: TableFilterComponent, selector: "verben-table-filter", inputs: { filterOptions: "filterOptions", pd: "pd", mg: "mg", height: "height", width: "width", bgColor: "bgColor", boxShadow: "boxShadow", textColor: "textColor", primaryColor: "primaryColor", secondaryColor: "secondaryColor", tertiaryColor: "tertiaryColor", border: "border", borderRadius: "borderRadius", selectWidth: "selectWidth", maxFilterLength: "maxFilterLength", savedFilters: "savedFilters", tooltip: "tooltip", saveCallback: "saveCallback" }, outputs: { filtersApplied: "filtersApplied", resetSortData: "resetSortData" }, ngImport: i0, template: "<section\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n>\n <div class=\"top\">\n <h3 [style.color]=\"tertiaryColor\" [style.font-size]=\"'14px'\">\n Filters\n <span [style.color]=\"secondaryColor\"\n ><sup>({{ filterCount }})</sup></span\n >\n </h3>\n <button\n [style.color]=\"secondaryColor\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetFilters()\"\n >\n Reset\n </button>\n </div>\n <hr />\n\n <!-- Saved Filters Section -->\n <div class=\"center\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Saved Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n ></verben-svg>\n </div>\n <div class=\"selectAllWrapper\" *ngIf=\"savedFilters.length\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <p [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">Select All</p>\n </div>\n <div\n *ngFor=\"let filter of visibleFilters; let i = index\"\n class=\"centerInnerWrapper\"\n >\n <div class=\"checkboxWrapper\">\n <span\n ><input\n type=\"checkbox\"\n [checked]=\"filter.checked\"\n (click)=\"toggleCheckbox(i)\"\n /></span>\n <p\n [style.font-size]=\"'13px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ filter.name }} {{ filter.condition }} {{ filter.value }}\n </p>\n </div>\n <div class=\"iconWrapper\">\n <verben-svg\n icon=\"pencil\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"black\"\n fill=\"black\"\n (click)=\"editFilter(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"trash\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"var(--vbn-color-error)\"\n (click)=\"deleteFilter(i)\"\n ></verben-svg>\n </div>\n </div>\n\n <div\n class=\"moreWrapper\"\n *ngIf=\"savedFilters.length > maxFilterLength\"\n (click)=\"toggleShowMore()\"\n >\n <p\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ showAllFilters ? \"Show less\" : \"Show more\" }}\n </p>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"var(--vbn-color-text)\"\n stroke=\"var(--vbn-color-text)\"\n ></verben-svg>\n </div>\n </div>\n <hr />\n\n <!-- Operation Section -->\n <div class=\"bottom\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Operation</h3>\n <div [ngStyle]=\"{ position: 'relative' }\">\n <verben-tooltip\n [tooltipContent]=\"tooltipTemplate\"\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n width=\"200px\"\n [top]=\"'20px'\"\n [right]=\"'0px'\"\n >\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n *ngIf=\"isDuplicateFilter\"\n fill=\"var(--vbn-color-error)\"\n >\n </verben-svg>\n </verben-tooltip>\n\n <ng-template #tooltipTemplate>\n {{ duplicateMessage }}\n </ng-template>\n <!-- <verben-tooltip\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n [textColor]=\"'var(--vbn-color-surface)'\"\n [padding]=\"'10px'\"\n [borderRadius]=\"'8px'\"\n [top]=\"'20px'\" \n [right]=\"'0px'\" \n width=\"250px\" \n #tooltip \n *ngIf=\"tooltip\"\n >\n <h3>{{duplicateMessage}}</h3>\n </verben-tooltip> -->\n </div>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n *ngIf=\"!isDuplicateFilter\"\n ></verben-svg>\n </div>\n\n <div class=\"inputsWrapper\">\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n [options]=\"filterArray\"\n [(ngModel)]=\"selectedFilterValue\"\n (ngModelChange)=\"onFilterNameChange(selectedFilterValue)\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n placeholder=\"Select value\"\n [options]=\"conditionOptions\"\n (onChange)=\"checkDuplicateFilter()\"\n [(ngModel)]=\"selectedCondition\"\n >\n </verben-drop-down>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Date'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"80px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [type]=\"'date'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType === 'Credit' || selectedFilterType === 'Integer'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input integer\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"integer\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Decimal'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input a decimal\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"decimal\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Number'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input number\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n type=\"number\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"number\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType !== 'Credit' &&\n selectedFilterType !== 'Date' &&\n selectedFilterType !== 'Integer' &&\n selectedFilterType !== 'Decimal' &&\n selectedFilterType !== 'Number'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n placeHolder=\"input value\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n </div>\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.border-radius]=\"borderRadius\"\n [style.background-color]=\"'transparent'\"\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [disabled]=\"disableAddFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableAddFilterBtn,\n enableBtn: !disableAddFilterBtn,\n }\"\n (click)=\"addFilter()\"\n >\n {{ this.editIndex != null ? \"+ Update\" : \"+ Add\" }}\n </button>\n </div>\n <hr />\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n (click)=\"applyFilters()\"\n >\n Confirm\n </button>\n </div>\n </div>\n</section>\n", styles: ["h3,p{margin-top:0!important;margin-bottom:0!important}.top{display:flex;align-items:end;justify-content:space-between}hr{border:1px solid var(--vbn-color-border);margin:.8rem 0rem}.centerInnerWrapper{display:flex;align-items:center;justify-content:space-between}.savedWrapper{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.checkboxWrapper{display:flex;align-items:center;gap:.3rem}.iconWrapper{display:flex;align-items:center;gap:.7rem;cursor:pointer}.moreWrapper{display:flex;align-items:center;gap:.4rem;cursor:pointer}.center{overflow-y:auto;max-height:24rem}.inputsWrapper{margin-top:.5rem;display:flex;align-items:center;gap:.5rem}.btnWrapper{display:flex;justify-content:end}.inputsWrapper select:nth-of-type(1){width:120px}.inputsWrapper select:nth-of-type(2){width:70px}input[type=checkbox].checked{accent-color:var(--vbn-color-border-focus)}.selectAllWrapper{display:flex;align-items:center;gap:.25rem;margin-bottom:.5rem}.selectAllWrapper>input{cursor:pointer}.disablebtn{cursor:not-allowed}.enableBtn{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["disabled", "label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i5.ValidateDirective, selector: "[appValidate]", inputs: ["appValidate", "required", "showBorder", "showErrorMessage", "errorBorderColor", "errorMessageColor", "errorIconTooltipPosition", "showErrorIcon"] }, { kind: "component", type: i6.TooltipComponent, selector: "verben-tooltip", inputs: ["tooltipContent", "customClass", "backgroundColor", "textColor", "padding", "borderRadius", "zIndex", "border", "width", "top", "bottom", "left", "right"] }, { kind: "component", type: i7.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
|
|
239
239
|
}
|
|
240
240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: TableFilterComponent, decorators: [{
|
|
241
241
|
type: Component,
|
|
242
|
-
args: [{ selector: 'verben-table-filter', template: "<section\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n>\n <div class=\"top\">\n <h3 [style.color]=\"tertiaryColor\" [style.font-size]=\"'14px'\">\n Filters\n <span [style.color]=\"secondaryColor\"\n ><sup>({{ filterCount }})</sup></span\n >\n </h3>\n <button\n [style.color]=\"secondaryColor\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetFilters()\"\n >\n Reset\n </button>\n </div>\n <hr />\n\n <!-- Saved Filters Section -->\n <div class=\"center\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Saved Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n ></verben-svg>\n </div>\n <div class=\"selectAllWrapper\" *ngIf=\"savedFilters.length\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <p [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">Select All</p>\n </div>\n <div\n *ngFor=\"let filter of visibleFilters; let i = index\"\n class=\"centerInnerWrapper\"\n >\n <div class=\"checkboxWrapper\">\n <span\n ><input\n type=\"checkbox\"\n [checked]=\"filter.checked\"\n (click)=\"toggleCheckbox(i)\"\n /></span>\n <p\n [style.font-size]=\"'13px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ filter.name }} {{ filter.condition }} {{ filter.value }}\n </p>\n </div>\n <div class=\"iconWrapper\">\n <verben-svg\n icon=\"pencil\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"var(--vbn-color-border-focus)\"\n fill=\"var(--vbn-color-surface)\"\n (click)=\"editFilter(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"trash\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"var(--vbn-color-error)\"\n (click)=\"deleteFilter(i)\"\n ></verben-svg>\n </div>\n </div>\n\n <div\n class=\"moreWrapper\"\n *ngIf=\"savedFilters.length > maxFilterLength\"\n (click)=\"toggleShowMore()\"\n >\n <p\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ showAllFilters ? \"Show less\" : \"Show more\" }}\n </p>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"var(--vbn-color-text)\"\n stroke=\"var(--vbn-color-text)\"\n ></verben-svg>\n </div>\n </div>\n <hr />\n\n <!-- Operation Section -->\n <div class=\"bottom\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Operation</h3>\n <div [ngStyle]=\"{ position: 'relative' }\">\n <verben-tooltip\n [tooltipContent]=\"tooltipTemplate\"\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n width=\"200px\"\n [top]=\"'20px'\"\n [right]=\"'0px'\"\n >\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n *ngIf=\"isDuplicateFilter\"\n fill=\"var(--vbn-color-error)\"\n >\n </verben-svg>\n </verben-tooltip>\n\n <ng-template #tooltipTemplate>\n {{ duplicateMessage }}\n </ng-template>\n <!-- <verben-tooltip\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n [textColor]=\"'var(--vbn-color-surface)'\"\n [padding]=\"'10px'\"\n [borderRadius]=\"'8px'\"\n [top]=\"'20px'\" \n [right]=\"'0px'\" \n width=\"250px\" \n #tooltip \n *ngIf=\"tooltip\"\n >\n <h3>{{duplicateMessage}}</h3>\n </verben-tooltip> -->\n </div>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n *ngIf=\"!isDuplicateFilter\"\n ></verben-svg>\n </div>\n\n <div class=\"inputsWrapper\">\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n [options]=\"filterArray\"\n [(ngModel)]=\"selectedFilterValue\"\n (ngModelChange)=\"onFilterNameChange(selectedFilterValue)\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n placeholder=\"Select value\"\n [options]=\"conditionOptions\"\n (onChange)=\"checkDuplicateFilter()\"\n [(ngModel)]=\"selectedCondition\"\n >\n </verben-drop-down>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Date'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"80px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [type]=\"'date'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType === 'Credit' || selectedFilterType === 'Integer'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input integer\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"integer\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Decimal'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input a decimal\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"decimal\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Number'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input number\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n type=\"number\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"number\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType !== 'Credit' &&\n selectedFilterType !== 'Date' &&\n selectedFilterType !== 'Integer' &&\n selectedFilterType !== 'Decimal' &&\n selectedFilterType !== 'Number'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n placeHolder=\"input value\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n </div>\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.border-radius]=\"borderRadius\"\n [style.background-color]=\"'transparent'\"\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [disabled]=\"disableAddFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableAddFilterBtn,\n enableBtn: !disableAddFilterBtn,\n }\"\n (click)=\"addFilter()\"\n >\n + Add\n </button>\n </div>\n <hr />\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n (click)=\"applyFilters()\"\n >\n Confirm\n </button>\n </div>\n </div>\n</section>\n", styles: ["h3,p{margin-top:0!important;margin-bottom:0!important}.top{display:flex;align-items:end;justify-content:space-between}hr{border:1px solid var(--vbn-color-border);margin:.8rem 0rem}.centerInnerWrapper{display:flex;align-items:center;justify-content:space-between}.savedWrapper{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.checkboxWrapper{display:flex;align-items:center;gap:.3rem}.iconWrapper{display:flex;align-items:center;gap:.7rem;cursor:pointer}.moreWrapper{display:flex;align-items:center;gap:.4rem;cursor:pointer}.center{overflow-y:auto;max-height:24rem}.inputsWrapper{margin-top:.5rem;display:flex;align-items:center;gap:.5rem}.btnWrapper{display:flex;justify-content:end}.inputsWrapper select:nth-of-type(1){width:120px}.inputsWrapper select:nth-of-type(2){width:70px}input[type=checkbox].checked{accent-color:var(--vbn-color-border-focus)}.selectAllWrapper{display:flex;align-items:center;gap:.25rem;margin-bottom:.5rem}.selectAllWrapper>input{cursor:pointer}.disablebtn{cursor:not-allowed}.enableBtn{cursor:pointer}\n"] }]
|
|
242
|
+
args: [{ selector: 'verben-table-filter', template: "<section\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n>\n <div class=\"top\">\n <h3 [style.color]=\"tertiaryColor\" [style.font-size]=\"'14px'\">\n Filters\n <span [style.color]=\"secondaryColor\"\n ><sup>({{ filterCount }})</sup></span\n >\n </h3>\n <button\n [style.color]=\"secondaryColor\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetFilters()\"\n >\n Reset\n </button>\n </div>\n <hr />\n\n <!-- Saved Filters Section -->\n <div class=\"center\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Saved Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n ></verben-svg>\n </div>\n <div class=\"selectAllWrapper\" *ngIf=\"savedFilters.length\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <p [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">Select All</p>\n </div>\n <div\n *ngFor=\"let filter of visibleFilters; let i = index\"\n class=\"centerInnerWrapper\"\n >\n <div class=\"checkboxWrapper\">\n <span\n ><input\n type=\"checkbox\"\n [checked]=\"filter.checked\"\n (click)=\"toggleCheckbox(i)\"\n /></span>\n <p\n [style.font-size]=\"'13px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ filter.name }} {{ filter.condition }} {{ filter.value }}\n </p>\n </div>\n <div class=\"iconWrapper\">\n <verben-svg\n icon=\"pencil\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"black\"\n fill=\"black\"\n (click)=\"editFilter(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"trash\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"var(--vbn-color-error)\"\n (click)=\"deleteFilter(i)\"\n ></verben-svg>\n </div>\n </div>\n\n <div\n class=\"moreWrapper\"\n *ngIf=\"savedFilters.length > maxFilterLength\"\n (click)=\"toggleShowMore()\"\n >\n <p\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ showAllFilters ? \"Show less\" : \"Show more\" }}\n </p>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"var(--vbn-color-text)\"\n stroke=\"var(--vbn-color-text)\"\n ></verben-svg>\n </div>\n </div>\n <hr />\n\n <!-- Operation Section -->\n <div class=\"bottom\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Operation</h3>\n <div [ngStyle]=\"{ position: 'relative' }\">\n <verben-tooltip\n [tooltipContent]=\"tooltipTemplate\"\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n width=\"200px\"\n [top]=\"'20px'\"\n [right]=\"'0px'\"\n >\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n *ngIf=\"isDuplicateFilter\"\n fill=\"var(--vbn-color-error)\"\n >\n </verben-svg>\n </verben-tooltip>\n\n <ng-template #tooltipTemplate>\n {{ duplicateMessage }}\n </ng-template>\n <!-- <verben-tooltip\n [backgroundColor]=\"'var(--vbn-color-surface-alt)'\"\n [textColor]=\"'var(--vbn-color-surface)'\"\n [padding]=\"'10px'\"\n [borderRadius]=\"'8px'\"\n [top]=\"'20px'\" \n [right]=\"'0px'\" \n width=\"250px\" \n #tooltip \n *ngIf=\"tooltip\"\n >\n <h3>{{duplicateMessage}}</h3>\n </verben-tooltip> -->\n </div>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"var(--vbn-color-text-muted)\"\n *ngIf=\"!isDuplicateFilter\"\n ></verben-svg>\n </div>\n\n <div class=\"inputsWrapper\">\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n [options]=\"filterArray\"\n [(ngModel)]=\"selectedFilterValue\"\n (ngModelChange)=\"onFilterNameChange(selectedFilterValue)\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n placeholder=\"Select value\"\n [options]=\"conditionOptions\"\n (onChange)=\"checkDuplicateFilter()\"\n [(ngModel)]=\"selectedCondition\"\n >\n </verben-drop-down>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Date'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"80px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [type]=\"'date'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType === 'Credit' || selectedFilterType === 'Integer'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input integer\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"integer\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Decimal'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input a decimal\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"decimal\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Number'\"\n border=\"1px solid var(--vbn-color-border)\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input number\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n type=\"number\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"number\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"\n selectedFilterType !== 'Credit' &&\n selectedFilterType !== 'Date' &&\n selectedFilterType !== 'Integer' &&\n selectedFilterType !== 'Decimal' &&\n selectedFilterType !== 'Number'\n \"\n border=\"1px solid var(--vbn-color-border)\"\n placeHolder=\"input value\"\n borderRadius=\"5px\"\n textColor=\"var(--vbn-color-text)\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n </div>\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.border-radius]=\"borderRadius\"\n [style.background-color]=\"'transparent'\"\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [disabled]=\"disableAddFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableAddFilterBtn,\n enableBtn: !disableAddFilterBtn,\n }\"\n (click)=\"addFilter()\"\n >\n {{ this.editIndex != null ? \"+ Update\" : \"+ Add\" }}\n </button>\n </div>\n <hr />\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n (click)=\"applyFilters()\"\n >\n Confirm\n </button>\n </div>\n </div>\n</section>\n", styles: ["h3,p{margin-top:0!important;margin-bottom:0!important}.top{display:flex;align-items:end;justify-content:space-between}hr{border:1px solid var(--vbn-color-border);margin:.8rem 0rem}.centerInnerWrapper{display:flex;align-items:center;justify-content:space-between}.savedWrapper{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.checkboxWrapper{display:flex;align-items:center;gap:.3rem}.iconWrapper{display:flex;align-items:center;gap:.7rem;cursor:pointer}.moreWrapper{display:flex;align-items:center;gap:.4rem;cursor:pointer}.center{overflow-y:auto;max-height:24rem}.inputsWrapper{margin-top:.5rem;display:flex;align-items:center;gap:.5rem}.btnWrapper{display:flex;justify-content:end}.inputsWrapper select:nth-of-type(1){width:120px}.inputsWrapper select:nth-of-type(2){width:70px}input[type=checkbox].checked{accent-color:var(--vbn-color-border-focus)}.selectAllWrapper{display:flex;align-items:center;gap:.25rem;margin-bottom:.5rem}.selectAllWrapper>input{cursor:pointer}.disablebtn{cursor:not-allowed}.enableBtn{cursor:pointer}\n"] }]
|
|
243
243
|
}], ctorParameters: () => [], propDecorators: { filterOptions: [{
|
|
244
244
|
type: Input
|
|
245
245
|
}], pd: [{
|
|
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
281
281
|
}], resetSortData: [{
|
|
282
282
|
type: Output
|
|
283
283
|
}] } });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7QUFPckQsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixhQUFhLEdBQWtCLEVBQUUsQ0FBQztJQUNsQyxFQUFFLENBQVU7SUFDWixFQUFFLENBQVU7SUFDWixNQUFNLENBQVU7SUFDaEIsS0FBSyxDQUFVO0lBQ2YsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsWUFBWSxDQUFVO0lBQ3RCLGNBQWMsQ0FBVTtJQUN4QixhQUFhLENBQVU7SUFDdkIsTUFBTSxDQUFVO0lBQ2hCLFlBQVksQ0FBVTtJQUN0QixXQUFXLENBQVU7SUFDckIsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLFlBQVksQ0FBMkM7SUFDdEQsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDekMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbEQs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IE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YUZpbHRlclR5cGUsIElEYXRhRmlsdGVyIH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbi10YWJsZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtZmlsdGVyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmaWx0ZXJPcHRpb25zOiBJRGF0YUZpbHRlcltdID0gW107XG4gIEBJbnB1dCgpIHBkPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZz86IHN0cmluZztcbiAgQElucHV0KCkgaGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgYmdDb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgYm94U2hhZG93Pzogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgc2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlcnRpYXJ5Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvcmRlcj86IHN0cmluZztcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RXaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgbWF4RmlsdGVyTGVuZ3RoOiBudW1iZXIgPSAzO1xuICBASW5wdXQoKSBzYXZlZEZpbHRlcnM6IElEYXRhRmlsdGVyW10gPSBbXTtcbiAgQElucHV0KCkgdG9vbHRpcDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzYXZlQ2FsbGJhY2s/OiAoaXRlbXM6IElEYXRhRmlsdGVyW10pID0+IFByb21pc2U8dm9pZD47XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVzZXRTb3J0RGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBmaWx0ZXJBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRGaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRmlsdGVyVHlwZTogRGF0YUZpbHRlclR5cGUgfCBudWxsID0gbnVsbDtcbiAgY29uZGl0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRDb25kaXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICBpbnB1dFZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBzZWxlY3RlZEZpbHRlcnM6IElEYXRhRmlsdGVyW10gPSBbXTtcbiAgc2hvd0FsbEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZWRpdEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY2hlY2tBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEdXBsaWNhdGVGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzYWJsZUFkZEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICAvL2Rpc2FibGVBcHBseUZpbHRlckJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIGR1cGxpY2F0ZU1lc3NhZ2U/OiBzdHJpbmcgPSAnJztcbiAgY29uZmlnSW5zdGFuY2U6IENvbmZpZztcbiAgc3RvcmFnZUtleTogc3RyaW5nID0gJ3NhdmVkRmlsdGVycyc7XG4gIGZpbHRlckNvdW50OiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uZmlnSW5zdGFuY2UgPSBuZXcgQ29uZmlnKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckFycmF5ID0gdGhpcy5maWx0ZXJPcHRpb25zLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcbiAgfVxuXG4gIG9uRmlsdGVyTmFtZUNoYW5nZShzZWxlY3RlZEZpbHRlclZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RlZEZpbHRlciA9IHRoaXMuZmlsdGVyT3B0aW9ucy5maW5kKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLm5hbWUgPT09IHNlbGVjdGVkRmlsdGVyVmFsdWUsXG4gICAgKTtcblxuICAgIGlmIChzZWxlY3RlZEZpbHRlcikge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlclR5cGUgPSBzZWxlY3RlZEZpbHRlci50eXBlO1xuICAgICAgdGhpcy5jb25kaXRpb25PcHRpb25zID1cbiAgICAgICAgdGhpcy5jb25maWdJbnN0YW5jZS5nZXRDb25kaXRpb25PcHRpb25zKHRoaXMuc2VsZWN0ZWRGaWx0ZXJUeXBlKSB8fCBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gPSAnJztcbiAgICB9XG4gIH1cblxuICByZXNldEZpbHRlcnMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlclR5cGUgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gPSAnJztcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAvLyB0aGlzLnNhdmVkRmlsdGVycyA9IFtdO1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzLmZvckVhY2goKHgpID0+IHtcbiAgICAgIHguY2hlY2tlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHRoaXMuZWRpdEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmNoZWNrQWxsID0gZmFsc2U7XG4gICAgdGhpcy5pc0R1cGxpY2F0ZUZpbHRlciA9IGZhbHNlO1xuICAgIC8vIHRoaXMuZGlzYWJsZUFwcGx5RmlsdGVyQnRuID0gdHJ1ZTtcbiAgICB0aGlzLmR1cGxpY2F0ZU1lc3NhZ2UgPSAnJztcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnN0b3JhZ2VLZXkpO1xuICAgIHRoaXMuZmlsdGVyQ291bnQgPSB0aGlzLnNhdmVkRmlsdGVycy5maWx0ZXIoXG4gICAgICAoaXRlbSkgPT4gaXRlbS5jaGVja2VkID09PSB0cnVlLFxuICAgICkubGVuZ3RoO1xuICAgIHRoaXMucmVzZXRTb3J0RGF0YS5lbWl0KCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnModHJ1ZSk7XG4gIH1cblxuICBhZGRGaWx0ZXIoKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWRDb25kaXRpb24gfHxcbiAgICAgICF0aGlzLmlucHV0VmFsdWVcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0SW5kZXggPT09IG51bGwgJiYgdGhpcy5pc0R1cGxpY2F0ZUZpbHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyAwMDowMCAyMzo1OVxuICAgIGlmIChcbiAgICAgICh0aGlzLnNlbGVjdGVkRmlsdGVyVHlwZSBhcyBEYXRhRmlsdGVyVHlwZSkgPT0gRGF0YUZpbHRlclR5cGUuRGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZENvbmRpdGlvbiA9PSAnT24nXG4gICAgKSB7XG4gICAgICBjb25zdCBsZWZ0RmlsdGVyOiBJRGF0YUZpbHRlciA9IHtcbiAgICAgICAgbmFtZTogdGhpcy5zZWxlY3RlZEZpbHRlclZhbHVlLFxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkRmlsdGVyVHlwZSB8fCBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsXG4gICAgICAgIGNvbmRpdGlvbjogJ0FmdGVyJyxcbiAgICAgICAgdmFsdWU6ICh0aGlzLmlucHV0VmFsdWUgYXMgc3RyaW5nKS5jb25jYXQoJyAwMDowMCcpLFxuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmlnaHRGaWx0ZXI6IElEYXRhRmlsdGVyID0ge1xuICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkRmlsdGVyVmFsdWUsXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUeXBlIHx8IERhdGFGaWx0ZXJUeXBlLlN0cmluZyxcbiAgICAgICAgY29uZGl0aW9uOiAnQmVmb3JlJyxcbiAgICAgICAgdmFsdWU6ICh0aGlzLmlucHV0VmFsdWUgYXMgc3RyaW5nKS5jb25jYXQoJyAyMzo1OScpLFxuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmlsdGVycyA9IFtsZWZ0RmlsdGVyLCByaWdodEZpbHRlcl07XG5cbiAgICAgIGZvciAobGV0IG5ld0ZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgICAgIChmaWx0ZXIsIGluZGV4KSA9PlxuICAgICAgICAgICAgICBmaWx0ZXIubmFtZSA9PT0gbmV3RmlsdGVyLm5hbWUgJiZcbiAgICAgICAgICAgICAgZmlsdGVyLmNvbmRpdGlvbiA9PT0gbmV3RmlsdGVyLmNvbmRpdGlvbiAmJlxuICAgICAgICAgICAgICBpbmRleCAhPT0gdGhpcy5lZGl0SW5kZXgsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzW3RoaXMuZWRpdEluZGV4XSA9IG5ld0ZpbHRlcjtcbiAgICAgICAgICB0aGlzLmVkaXRJbmRleCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgICAgICAgKGZpbHRlcikgPT5cbiAgICAgICAgICAgICAgICBmaWx0ZXIubmFtZSA9PT0gbmV3RmlsdGVyLm5hbWUgJiZcbiAgICAgICAgICAgICAgICBmaWx0ZXIuY29uZGl0aW9uID09PSBuZXdGaWx0ZXIuY29uZGl0aW9uLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzLnB1c2gobmV3RmlsdGVyKTtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICApLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXI6IElEYXRhRmlsdGVyID0ge1xuICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkRmlsdGVyVmFsdWUsXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUeXBlIHx8IERhdGFGaWx0ZXJUeXBlLlN0cmluZyxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlbGVjdGVkQ29uZGl0aW9uLFxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbHVlLFxuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZWRpdEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgICAoZmlsdGVyLCBpbmRleCkgPT5cbiAgICAgICAgICAgIGZpbHRlci5uYW1lID09PSBuZXdGaWx0ZXIubmFtZSAmJlxuICAgICAgICAgICAgZmlsdGVyLmNvbmRpdGlvbiA9PT0gbmV3RmlsdGVyLmNvbmRpdGlvbiAmJlxuICAgICAgICAgICAgaW5kZXggIT09IHRoaXMuZWRpdEluZGV4LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNhdmVkRmlsdGVyc1t0aGlzLmVkaXRJbmRleF0gPSBuZXdGaWx0ZXI7XG4gICAgICAgIHRoaXMuZWRpdEluZGV4ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycy5zb21lKFxuICAgICAgICAgICAgKGZpbHRlcikgPT5cbiAgICAgICAgICAgICAgZmlsdGVyLm5hbWUgPT09IG5ld0ZpbHRlci5uYW1lICYmXG4gICAgICAgICAgICAgIGZpbHRlci5jb25kaXRpb24gPT09IG5ld0ZpbHRlci5jb25kaXRpb24sXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMucHVzaChuZXdGaWx0ZXIpO1xuICAgICAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNoZWNrZWQgPT09IHRydWUsXG4gICAgICAgICkubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2xlYXJPcGVyYXRpb25TZWN0aW9uKCk7XG4gICAgLy8gdGhpcy5jaGVja0ZpbHRlckJ1dHRvbigpO1xuICB9XG5cbiAgdG9nZ2xlQ2hlY2tib3goaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzW2luZGV4XS5jaGVja2VkID0gIXRoaXMuc2F2ZWRGaWx0ZXJzW2luZGV4XS5jaGVja2VkO1xuICAgIHRoaXMuY2hlY2tBbGwgPSB0aGlzLnNhdmVkRmlsdGVycy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5jaGVja2VkKTtcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICApLmxlbmd0aDtcbiAgfVxuXG4gIGRlbGV0ZUZpbHRlcihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmNoZWNrRHVwbGljYXRlRmlsdGVyKCk7XG4gICAgLy8gIHRoaXMuY2hlY2tGaWx0ZXJCdXR0b24oKTtcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICApLmxlbmd0aDtcbiAgICBpZiAodGhpcy5zYXZlZEZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNoZWNrQWxsID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnNhdmVDYWxsYmFjaykge1xuICAgICAgdGhpcy5zYXZlQ2FsbGJhY2sodGhpcy5zYXZlZEZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRGaWx0ZXIoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzW2luZGV4XTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyVHlwZSA9IGZpbHRlci50eXBlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSA9IGZpbHRlci5uYW1lO1xuICAgIHRoaXMub25GaWx0ZXJOYW1lQ2hhbmdlKHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZENvbmRpdGlvbiA9IGZpbHRlci5jb25kaXRpb247XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgIHRoaXMuZWRpdEluZGV4ID0gaW5kZXg7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoc2tpcFNhdmU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+IGZpbHRlci5jaGVja2VkKTtcbiAgICBpZiAodGhpcy5zYXZlQ2FsbGJhY2sgJiYgIXNraXBTYXZlKSB7XG4gICAgICB0aGlzLnNhdmVDYWxsYmFjayh0aGlzLnNhdmVkRmlsdGVycyk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XG4gICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KHRoaXMuc3RvcmFnZUtleSk7XG4gIH1cblxuICB0b2dnbGVTaG93TW9yZSgpIHtcbiAgICB0aGlzLnNob3dBbGxGaWx0ZXJzID0gIXRoaXMuc2hvd0FsbEZpbHRlcnM7XG4gIH1cblxuICBnZXQgdmlzaWJsZUZpbHRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FsbEZpbHRlcnNcbiAgICAgID8gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgIDogdGhpcy5zYXZlZEZpbHRlcnMuc2xpY2UoMCwgdGhpcy5tYXhGaWx0ZXJMZW5ndGgpO1xuICB9XG5cbiAgY2xlYXJPcGVyYXRpb25TZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gPSAnJztcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgfVxuXG4gIC8vIGNoZWNrRmlsdGVyQnV0dG9uKCkge1xuICAvLyAgIHRoaXMuZGlzYWJsZUFwcGx5RmlsdGVyQnRuID0gdGhpcy5zYXZlZEZpbHRlcnMubGVuZ3RoID09PSAwO1xuICAvLyB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tBbGwgPSAhdGhpcy5jaGVja0FsbDtcbiAgICB0aGlzLnNhdmVkRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IChmaWx0ZXIuY2hlY2tlZCA9IHRoaXMuY2hlY2tBbGwpKTtcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICApLmxlbmd0aDtcbiAgfVxuXG4gIGNoZWNrRHVwbGljYXRlRmlsdGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgKGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgZmlsdGVyLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSAmJlxuICAgICAgICAgIGZpbHRlci5jb25kaXRpb24gPT09IHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gJiZcbiAgICAgICAgICBpbmRleCAhPT0gdGhpcy5lZGl0SW5kZXgsXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNhYmxlQWRkRmlsdGVyQnRuID0gZXhpc3RzO1xuICAgICAgdGhpcy5pc0R1cGxpY2F0ZUZpbHRlciA9IGV4aXN0cztcbiAgICAgIHRoaXMuZHVwbGljYXRlTWVzc2FnZSA9IGV4aXN0c1xuICAgICAgICA/ICdUaGlzIGVudHJ5IGlzIGEgZHVwbGljYXRlIGFuZCBjYW5ub3QgYmUgYWRkZWQuJ1xuICAgICAgICA6ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGlzdHMgPSB0aGlzLnNhdmVkRmlsdGVycy5zb21lKFxuICAgICAgICAoZmlsdGVyKSA9PlxuICAgICAgICAgIGZpbHRlci5uYW1lID09PSB0aGlzLnNlbGVjdGVkRmlsdGVyVmFsdWUgJiZcbiAgICAgICAgICBmaWx0ZXIuY29uZGl0aW9uID09PSB0aGlzLnNlbGVjdGVkQ29uZGl0aW9uLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZUFkZEZpbHRlckJ0biA9IGV4aXN0cztcbiAgICAgIHRoaXMuaXNEdXBsaWNhdGVGaWx0ZXIgPSBleGlzdHM7XG4gICAgICB0aGlzLmR1cGxpY2F0ZU1lc3NhZ2UgPSBleGlzdHNcbiAgICAgICAgPyAnVGhpcyBlbnRyeSBpcyBhIGR1cGxpY2F0ZSBhbmQgY2Fubm90IGJlIGFkZGVkLidcbiAgICAgICAgOiAnJztcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uXG4gIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJnQ29sb3JcIlxuICBbc3R5bGUuYm94LXNoYWRvd109XCJib3hTaGFkb3dcIlxuICBbc3R5bGUuYm9yZGVyXT1cImJvcmRlclwiXG4gIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cImJvcmRlclJhZGl1c1wiXG4gIFtzdHlsZS5jb2xvcl09XCJ0ZXh0Q29sb3JcIlxuICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gIFtzdHlsZS5wYWRkaW5nXT1cInBkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInRvcFwiPlxuICAgIDxoMyBbc3R5bGUuY29sb3JdPVwidGVydGlhcnlDb2xvclwiIFtzdHlsZS5mb250LXNpemVdPVwiJzE0cHgnXCI+XG4gICAgICBGaWx0ZXJzXG4gICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIlxuICAgICAgICA+PHN1cD4oe3sgZmlsdGVyQ291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICA+XG4gICAgPC9oMz5cbiAgICA8YnV0dG9uXG4gICAgICBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmdDb2xvclwiXG4gICAgICBbc3R5bGUuYm9yZGVyXT1cIidub25lJ1wiXG4gICAgICBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiXG4gICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAoY2xpY2spPVwicmVzZXRGaWx0ZXJzKClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8aHIgLz5cblxuICA8IS0tIFNhdmVkIEZpbHRlcnMgU2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzYXZlZFdyYXBwZXJcIj5cbiAgICAgIDxoMyBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiPlNhdmVkIEZpbHRlcnM8L2gzPlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgZmlsbD1cInZhcigtLXZibi1jb2xvci10ZXh0LW11dGVkKVwiXG4gICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RBbGxXcmFwcGVyXCIgKm5nSWY9XCJzYXZlZEZpbHRlcnMubGVuZ3RoXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tBbGxcIlxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbCgpXCJcbiAgICAgIC8+XG4gICAgICA8cCBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiIFtzdHlsZS5mb250LXdlaWdodF09XCInNTAwJ1wiPlNlbGVjdCBBbGw8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGZpbHRlciBvZiB2aXNpYmxlRmlsdGVyczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBjbGFzcz1cImNlbnRlcklubmVyV3JhcHBlclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94V3JhcHBlclwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgID48aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJmaWx0ZXIuY2hlY2tlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hlY2tib3goaSlcIlxuICAgICAgICAvPjwvc3Bhbj5cbiAgICAgICAgPHBcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIic1MDAnXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGVydGlhcnlDb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmaWx0ZXIubmFtZSB9fSB7eyBmaWx0ZXIuY29uZGl0aW9uIH19IHt7IGZpbHRlci52YWx1ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uV3JhcHBlclwiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJwZW5jaWxcIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgc3Ryb2tlPVwidmFyKC0tdmJuLWNvbG9yLWJvcmRlci1mb2N1cylcIlxuICAgICAgICAgIGZpbGw9XCJ2YXIoLS12Ym4tY29sb3Itc3VyZmFjZSlcIlxuICAgICAgICAgIChjbGljayk9XCJlZGl0RmlsdGVyKGkpXCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwidHJhc2hcIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgc3Ryb2tlPVwidmFyKC0tdmJuLWNvbG9yLWVycm9yKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbHRlcihpKVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibW9yZVdyYXBwZXJcIlxuICAgICAgKm5nSWY9XCJzYXZlZEZpbHRlcnMubGVuZ3RoID4gbWF4RmlsdGVyTGVuZ3RoXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93TW9yZSgpXCJcbiAgICA+XG4gICAgICA8cFxuICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInNTAwJ1wiXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0ZXJ0aWFyeUNvbG9yXCJcbiAgICAgID5cbiAgICAgICAge3sgc2hvd0FsbEZpbHRlcnMgPyBcIlNob3cgbGVzc1wiIDogXCJTaG93IG1vcmVcIiB9fVxuICAgICAgPC9wPlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgaWNvbj1cImNoZXZyb25cIlxuICAgICAgICBbd2lkdGhdPVwiOFwiXG4gICAgICAgIFtoZWlnaHRdPVwiNlwiXG4gICAgICAgIGZpbGw9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgICBzdHJva2U9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxociAvPlxuXG4gIDwhLS0gT3BlcmF0aW9uIFNlY3Rpb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJib3R0b21cIj5cbiAgICA8ZGl2IGNsYXNzPVwic2F2ZWRXcmFwcGVyXCI+XG4gICAgICA8aDMgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTNweCdcIj5PcGVyYXRpb248L2gzPlxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IHBvc2l0aW9uOiAncmVsYXRpdmUnIH1cIj5cbiAgICAgICAgPHZlcmJlbi10b29sdGlwXG4gICAgICAgICAgW3Rvb2x0aXBDb250ZW50XT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgICAgICAgW2JhY2tncm91bmRDb2xvcl09XCIndmFyKC0tdmJuLWNvbG9yLXN1cmZhY2UtYWx0KSdcIlxuICAgICAgICAgIHdpZHRoPVwiMjAwcHhcIlxuICAgICAgICAgIFt0b3BdPVwiJzIwcHgnXCJcbiAgICAgICAgICBbcmlnaHRdPVwiJzBweCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNEdXBsaWNhdGVGaWx0ZXJcIlxuICAgICAgICAgICAgZmlsbD1cInZhcigtLXZibi1jb2xvci1lcnJvcilcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwVGVtcGxhdGU+XG4gICAgICAgICAge3sgZHVwbGljYXRlTWVzc2FnZSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIDx2ZXJiZW4tdG9vbHRpcFxuICAgICAgICAgW2JhY2tncm91bmRDb2xvcl09XCIndmFyKC0tdmJuLWNvbG9yLXN1cmZhY2UtYWx0KSdcIlxuICAgICAgICAgW3RleHRDb2xvcl09XCIndmFyKC0tdmJuLWNvbG9yLXN1cmZhY2UpJ1wiXG4gICAgICAgICBbcGFkZGluZ109XCInMTBweCdcIlxuICAgICAgICAgW2JvcmRlclJhZGl1c109XCInOHB4J1wiXG4gICAgICAgICBbdG9wXT1cIicyMHB4J1wiICAgICAgICAgICAgICAgICBcbiAgICAgICAgIFtyaWdodF09XCInMHB4J1wiICAgXG4gICAgICAgICB3aWR0aD1cIjI1MHB4XCIgXG4gICAgICAgICAjdG9vbHRpcCBcbiAgICAgICAgICpuZ0lmPVwidG9vbHRpcFwiXG4gICAgICAgICA+XG4gICAgICAgICA8aDM+e3tkdXBsaWNhdGVNZXNzYWdlfX08L2gzPlxuICAgICAgICA8L3ZlcmJlbi10b29sdGlwPiAtLT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgZmlsbD1cInZhcigtLXZibi1jb2xvci10ZXh0LW11dGVkKVwiXG4gICAgICAgICpuZ0lmPVwiIWlzRHVwbGljYXRlRmlsdGVyXCJcbiAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXRzV3JhcHBlclwiPlxuICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgd2lkdGg9XCI3cmVtXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdmFsdWVcIlxuICAgICAgICBbb3B0aW9uc109XCJmaWx0ZXJBcnJheVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGaWx0ZXJWYWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyTmFtZUNoYW5nZShzZWxlY3RlZEZpbHRlclZhbHVlKVwiXG4gICAgICA+XG4gICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICB3aWR0aD1cIjdyZW1cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB2YWx1ZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHZhbHVlXCJcbiAgICAgICAgW29wdGlvbnNdPVwiY29uZGl0aW9uT3B0aW9uc1wiXG4gICAgICAgIChvbkNoYW5nZSk9XCJjaGVja0R1cGxpY2F0ZUZpbHRlcigpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbmRpdGlvblwiXG4gICAgICA+XG4gICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRGaWx0ZXJUeXBlID09PSAnRGF0ZSdcIlxuICAgICAgICBib3JkZXI9XCIxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLWJvcmRlcilcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgICB3aWR0aD1cIjgwcHhcIlxuICAgICAgICBoZWlnaHQ9XCIyNXB4XCJcbiAgICAgICAgcGQ9XCI2cHhcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgW3R5cGVdPVwiJ2RhdGUnXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJUeXBlID09PSAnQ3JlZGl0JyB8fCBzZWxlY3RlZEZpbHRlclR5cGUgPT09ICdJbnRlZ2VyJ1xuICAgICAgICBcIlxuICAgICAgICBib3JkZXI9XCIxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLWJvcmRlcilcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgaGVpZ2h0PVwiMjVweFwiXG4gICAgICAgIHBkPVwiNnB4XCJcbiAgICAgICAgcGxhY2VIb2xkZXI9XCJpbnB1dCBpbnRlZ2VyXCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgIGFwcFZhbGlkYXRlPVwiaW50ZWdlclwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuXG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAqbmdJZj1cInNlbGVjdGVkRmlsdGVyVHlwZSA9PT0gJ0RlY2ltYWwnXCJcbiAgICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkIHZhcigtLXZibi1jb2xvci1ib3JkZXIpXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiNXB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwidmFyKC0tdmJuLWNvbG9yLXRleHQpXCJcbiAgICAgICAgd2lkdGg9XCIxMDBweFwiXG4gICAgICAgIGhlaWdodD1cIjI1cHhcIlxuICAgICAgICBwZD1cIjZweFwiXG4gICAgICAgIHBsYWNlSG9sZGVyPVwiaW5wdXQgYSBkZWNpbWFsXCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cImZhbHNlXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBhcHBWYWxpZGF0ZT1cImRlY2ltYWxcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEZpbHRlclR5cGUgPT09ICdOdW1iZXInXCJcbiAgICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkIHZhcigtLXZibi1jb2xvci1ib3JkZXIpXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiNXB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwidmFyKC0tdmJuLWNvbG9yLXRleHQpXCJcbiAgICAgICAgd2lkdGg9XCIxMDBweFwiXG4gICAgICAgIGhlaWdodD1cIjI1cHhcIlxuICAgICAgICBwZD1cIjZweFwiXG4gICAgICAgIHBsYWNlSG9sZGVyPVwiaW5wdXQgbnVtYmVyXCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cImZhbHNlXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgYXBwVmFsaWRhdGU9XCJudW1iZXJcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlclR5cGUgIT09ICdDcmVkaXQnICYmXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJUeXBlICE9PSAnRGF0ZScgJiZcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlclR5cGUgIT09ICdJbnRlZ2VyJyAmJlxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyVHlwZSAhPT0gJ0RlY2ltYWwnICYmXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJUeXBlICE9PSAnTnVtYmVyJ1xuICAgICAgICBcIlxuICAgICAgICBib3JkZXI9XCIxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLWJvcmRlcilcIlxuICAgICAgICBwbGFjZUhvbGRlcj1cImlucHV0IHZhbHVlXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiNXB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwidmFyKC0tdmJuLWNvbG9yLXRleHQpXCJcbiAgICAgICAgd2lkdGg9XCIxMDBweFwiXG4gICAgICAgIGhlaWdodD1cIjI1cHhcIlxuICAgICAgICBwZD1cIjZweFwiXG4gICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJidG5XcmFwcGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtzdHlsZS5tYXJnaW4tdG9wXT1cIicwLjVyZW0nXCJcbiAgICAgICAgW3N0eWxlLm91dGxpbmVdPVwiJ25vbmUnXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1c109XCJib3JkZXJSYWRpdXNcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cInNlY29uZGFyeUNvbG9yXCJcbiAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJzUwMCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUFkZEZpbHRlckJ0blwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBkaXNhYmxlYnRuOiBkaXNhYmxlQWRkRmlsdGVyQnRuLFxuICAgICAgICAgIGVuYWJsZUJ0bjogIWRpc2FibGVBZGRGaWx0ZXJCdG4sXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwiYWRkRmlsdGVyKClcIlxuICAgICAgPlxuICAgICAgICArIEFkZFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGhyIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnRuV3JhcHBlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbc3R5bGUubWFyZ2luLXRvcF09XCInMC41cmVtJ1wiXG4gICAgICAgIFtzdHlsZS5vdXRsaW5lXT1cIidub25lJ1wiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJ25vbmUnXCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmddPVwiJzAuMnJlbSAxLjZyZW0nXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicHJpbWFyeUNvbG9yXCJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRlcnRpYXJ5Q29sb3JcIlxuICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInNjAwJ1wiXG4gICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICA+XG4gICAgICAgIENvbmZpcm1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7QUFPckQsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixhQUFhLEdBQWtCLEVBQUUsQ0FBQztJQUNsQyxFQUFFLENBQVU7SUFDWixFQUFFLENBQVU7SUFDWixNQUFNLENBQVU7SUFDaEIsS0FBSyxDQUFVO0lBQ2YsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsWUFBWSxDQUFVO0lBQ3RCLGNBQWMsQ0FBVTtJQUN4QixhQUFhLENBQVU7SUFDdkIsTUFBTSxDQUFVO0lBQ2hCLFlBQVksQ0FBVTtJQUN0QixXQUFXLENBQVU7SUFDckIsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLFlBQVksQ0FBMkM7SUFDdEQsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDekMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbEQs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IE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YUZpbHRlclR5cGUsIElEYXRhRmlsdGVyIH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbi10YWJsZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtZmlsdGVyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmaWx0ZXJPcHRpb25zOiBJRGF0YUZpbHRlcltdID0gW107XG4gIEBJbnB1dCgpIHBkPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZz86IHN0cmluZztcbiAgQElucHV0KCkgaGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgYmdDb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgYm94U2hhZG93Pzogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgc2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlcnRpYXJ5Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvcmRlcj86IHN0cmluZztcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RXaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgbWF4RmlsdGVyTGVuZ3RoOiBudW1iZXIgPSAzO1xuICBASW5wdXQoKSBzYXZlZEZpbHRlcnM6IElEYXRhRmlsdGVyW10gPSBbXTtcbiAgQElucHV0KCkgdG9vbHRpcDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzYXZlQ2FsbGJhY2s/OiAoaXRlbXM6IElEYXRhRmlsdGVyW10pID0+IFByb21pc2U8dm9pZD47XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVzZXRTb3J0RGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBmaWx0ZXJBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRGaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRmlsdGVyVHlwZTogRGF0YUZpbHRlclR5cGUgfCBudWxsID0gbnVsbDtcbiAgY29uZGl0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRDb25kaXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICBpbnB1dFZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBzZWxlY3RlZEZpbHRlcnM6IElEYXRhRmlsdGVyW10gPSBbXTtcbiAgc2hvd0FsbEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZWRpdEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY2hlY2tBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEdXBsaWNhdGVGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzYWJsZUFkZEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICAvL2Rpc2FibGVBcHBseUZpbHRlckJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIGR1cGxpY2F0ZU1lc3NhZ2U/OiBzdHJpbmcgPSAnJztcbiAgY29uZmlnSW5zdGFuY2U6IENvbmZpZztcbiAgc3RvcmFnZUtleTogc3RyaW5nID0gJ3NhdmVkRmlsdGVycyc7XG4gIGZpbHRlckNvdW50OiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uZmlnSW5zdGFuY2UgPSBuZXcgQ29uZmlnKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckFycmF5ID0gdGhpcy5maWx0ZXJPcHRpb25zLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcbiAgfVxuXG4gIG9uRmlsdGVyTmFtZUNoYW5nZShzZWxlY3RlZEZpbHRlclZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RlZEZpbHRlciA9IHRoaXMuZmlsdGVyT3B0aW9ucy5maW5kKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLm5hbWUgPT09IHNlbGVjdGVkRmlsdGVyVmFsdWUsXG4gICAgKTtcblxuICAgIGlmIChzZWxlY3RlZEZpbHRlcikge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlclR5cGUgPSBzZWxlY3RlZEZpbHRlci50eXBlO1xuICAgICAgdGhpcy5jb25kaXRpb25PcHRpb25zID1cbiAgICAgICAgdGhpcy5jb25maWdJbnN0YW5jZS5nZXRDb25kaXRpb25PcHRpb25zKHRoaXMuc2VsZWN0ZWRGaWx0ZXJUeXBlKSB8fCBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gPSAnJztcbiAgICB9XG4gIH1cblxuICByZXNldEZpbHRlcnMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlclR5cGUgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gPSAnJztcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAvLyB0aGlzLnNhdmVkRmlsdGVycyA9IFtdO1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzLmZvckVhY2goKHgpID0+IHtcbiAgICAgIHguY2hlY2tlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHRoaXMuZWRpdEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmNoZWNrQWxsID0gZmFsc2U7XG4gICAgdGhpcy5pc0R1cGxpY2F0ZUZpbHRlciA9IGZhbHNlO1xuICAgIC8vIHRoaXMuZGlzYWJsZUFwcGx5RmlsdGVyQnRuID0gdHJ1ZTtcbiAgICB0aGlzLmR1cGxpY2F0ZU1lc3NhZ2UgPSAnJztcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnN0b3JhZ2VLZXkpO1xuICAgIHRoaXMuZmlsdGVyQ291bnQgPSB0aGlzLnNhdmVkRmlsdGVycy5maWx0ZXIoXG4gICAgICAoaXRlbSkgPT4gaXRlbS5jaGVja2VkID09PSB0cnVlLFxuICAgICkubGVuZ3RoO1xuICAgIHRoaXMucmVzZXRTb3J0RGF0YS5lbWl0KCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnModHJ1ZSk7XG4gIH1cblxuICBhZGRGaWx0ZXIoKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWRDb25kaXRpb24gfHxcbiAgICAgICF0aGlzLmlucHV0VmFsdWVcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0SW5kZXggPT09IG51bGwgJiYgdGhpcy5pc0R1cGxpY2F0ZUZpbHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyAwMDowMCAyMzo1OVxuICAgIGlmIChcbiAgICAgICh0aGlzLnNlbGVjdGVkRmlsdGVyVHlwZSBhcyBEYXRhRmlsdGVyVHlwZSkgPT0gRGF0YUZpbHRlclR5cGUuRGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZENvbmRpdGlvbiA9PSAnT24nXG4gICAgKSB7XG4gICAgICBjb25zdCBsZWZ0RmlsdGVyOiBJRGF0YUZpbHRlciA9IHtcbiAgICAgICAgbmFtZTogdGhpcy5zZWxlY3RlZEZpbHRlclZhbHVlLFxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkRmlsdGVyVHlwZSB8fCBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsXG4gICAgICAgIGNvbmRpdGlvbjogJ0FmdGVyJyxcbiAgICAgICAgdmFsdWU6ICh0aGlzLmlucHV0VmFsdWUgYXMgc3RyaW5nKS5jb25jYXQoJyAwMDowMCcpLFxuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmlnaHRGaWx0ZXI6IElEYXRhRmlsdGVyID0ge1xuICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkRmlsdGVyVmFsdWUsXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUeXBlIHx8IERhdGFGaWx0ZXJUeXBlLlN0cmluZyxcbiAgICAgICAgY29uZGl0aW9uOiAnQmVmb3JlJyxcbiAgICAgICAgdmFsdWU6ICh0aGlzLmlucHV0VmFsdWUgYXMgc3RyaW5nKS5jb25jYXQoJyAyMzo1OScpLFxuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmlsdGVycyA9IFtsZWZ0RmlsdGVyLCByaWdodEZpbHRlcl07XG5cbiAgICAgIGZvciAobGV0IG5ld0ZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgICAgIChmaWx0ZXIsIGluZGV4KSA9PlxuICAgICAgICAgICAgICBmaWx0ZXIubmFtZSA9PT0gbmV3RmlsdGVyLm5hbWUgJiZcbiAgICAgICAgICAgICAgZmlsdGVyLmNvbmRpdGlvbiA9PT0gbmV3RmlsdGVyLmNvbmRpdGlvbiAmJlxuICAgICAgICAgICAgICBpbmRleCAhPT0gdGhpcy5lZGl0SW5kZXgsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzW3RoaXMuZWRpdEluZGV4XSA9IG5ld0ZpbHRlcjtcbiAgICAgICAgICB0aGlzLmVkaXRJbmRleCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgICAgICAgKGZpbHRlcikgPT5cbiAgICAgICAgICAgICAgICBmaWx0ZXIubmFtZSA9PT0gbmV3RmlsdGVyLm5hbWUgJiZcbiAgICAgICAgICAgICAgICBmaWx0ZXIuY29uZGl0aW9uID09PSBuZXdGaWx0ZXIuY29uZGl0aW9uLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzLnB1c2gobmV3RmlsdGVyKTtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICApLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXI6IElEYXRhRmlsdGVyID0ge1xuICAgICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkRmlsdGVyVmFsdWUsXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJUeXBlIHx8IERhdGFGaWx0ZXJUeXBlLlN0cmluZyxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlbGVjdGVkQ29uZGl0aW9uLFxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbHVlLFxuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZWRpdEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgICAoZmlsdGVyLCBpbmRleCkgPT5cbiAgICAgICAgICAgIGZpbHRlci5uYW1lID09PSBuZXdGaWx0ZXIubmFtZSAmJlxuICAgICAgICAgICAgZmlsdGVyLmNvbmRpdGlvbiA9PT0gbmV3RmlsdGVyLmNvbmRpdGlvbiAmJlxuICAgICAgICAgICAgaW5kZXggIT09IHRoaXMuZWRpdEluZGV4LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNhdmVkRmlsdGVyc1t0aGlzLmVkaXRJbmRleF0gPSBuZXdGaWx0ZXI7XG4gICAgICAgIHRoaXMuZWRpdEluZGV4ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycy5zb21lKFxuICAgICAgICAgICAgKGZpbHRlcikgPT5cbiAgICAgICAgICAgICAgZmlsdGVyLm5hbWUgPT09IG5ld0ZpbHRlci5uYW1lICYmXG4gICAgICAgICAgICAgIGZpbHRlci5jb25kaXRpb24gPT09IG5ld0ZpbHRlci5jb25kaXRpb24sXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMucHVzaChuZXdGaWx0ZXIpO1xuICAgICAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNoZWNrZWQgPT09IHRydWUsXG4gICAgICAgICkubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2xlYXJPcGVyYXRpb25TZWN0aW9uKCk7XG4gICAgLy8gdGhpcy5jaGVja0ZpbHRlckJ1dHRvbigpO1xuICB9XG5cbiAgdG9nZ2xlQ2hlY2tib3goaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzW2luZGV4XS5jaGVja2VkID0gIXRoaXMuc2F2ZWRGaWx0ZXJzW2luZGV4XS5jaGVja2VkO1xuICAgIHRoaXMuY2hlY2tBbGwgPSB0aGlzLnNhdmVkRmlsdGVycy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5jaGVja2VkKTtcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICApLmxlbmd0aDtcbiAgfVxuXG4gIGRlbGV0ZUZpbHRlcihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmNoZWNrRHVwbGljYXRlRmlsdGVyKCk7XG4gICAgLy8gIHRoaXMuY2hlY2tGaWx0ZXJCdXR0b24oKTtcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICApLmxlbmd0aDtcbiAgICBpZiAodGhpcy5zYXZlZEZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNoZWNrQWxsID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnNhdmVDYWxsYmFjaykge1xuICAgICAgdGhpcy5zYXZlQ2FsbGJhY2sodGhpcy5zYXZlZEZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRGaWx0ZXIoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzW2luZGV4XTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyVHlwZSA9IGZpbHRlci50eXBlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSA9IGZpbHRlci5uYW1lO1xuICAgIHRoaXMub25GaWx0ZXJOYW1lQ2hhbmdlKHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZENvbmRpdGlvbiA9IGZpbHRlci5jb25kaXRpb247XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgIHRoaXMuZWRpdEluZGV4ID0gaW5kZXg7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoc2tpcFNhdmU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+IGZpbHRlci5jaGVja2VkKTtcbiAgICBpZiAodGhpcy5zYXZlQ2FsbGJhY2sgJiYgIXNraXBTYXZlKSB7XG4gICAgICB0aGlzLnNhdmVDYWxsYmFjayh0aGlzLnNhdmVkRmlsdGVycyk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XG4gICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KHRoaXMuc3RvcmFnZUtleSk7XG4gIH1cblxuICB0b2dnbGVTaG93TW9yZSgpIHtcbiAgICB0aGlzLnNob3dBbGxGaWx0ZXJzID0gIXRoaXMuc2hvd0FsbEZpbHRlcnM7XG4gIH1cblxuICBnZXQgdmlzaWJsZUZpbHRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FsbEZpbHRlcnNcbiAgICAgID8gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgIDogdGhpcy5zYXZlZEZpbHRlcnMuc2xpY2UoMCwgdGhpcy5tYXhGaWx0ZXJMZW5ndGgpO1xuICB9XG5cbiAgY2xlYXJPcGVyYXRpb25TZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gPSAnJztcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgfVxuXG4gIC8vIGNoZWNrRmlsdGVyQnV0dG9uKCkge1xuICAvLyAgIHRoaXMuZGlzYWJsZUFwcGx5RmlsdGVyQnRuID0gdGhpcy5zYXZlZEZpbHRlcnMubGVuZ3RoID09PSAwO1xuICAvLyB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tBbGwgPSAhdGhpcy5jaGVja0FsbDtcbiAgICB0aGlzLnNhdmVkRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IChmaWx0ZXIuY2hlY2tlZCA9IHRoaXMuY2hlY2tBbGwpKTtcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5zYXZlZEZpbHRlcnMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZSxcbiAgICApLmxlbmd0aDtcbiAgfVxuXG4gIGNoZWNrRHVwbGljYXRlRmlsdGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5zYXZlZEZpbHRlcnMuc29tZShcbiAgICAgICAgKGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgZmlsdGVyLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRGaWx0ZXJWYWx1ZSAmJlxuICAgICAgICAgIGZpbHRlci5jb25kaXRpb24gPT09IHRoaXMuc2VsZWN0ZWRDb25kaXRpb24gJiZcbiAgICAgICAgICBpbmRleCAhPT0gdGhpcy5lZGl0SW5kZXgsXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNhYmxlQWRkRmlsdGVyQnRuID0gZXhpc3RzO1xuICAgICAgdGhpcy5pc0R1cGxpY2F0ZUZpbHRlciA9IGV4aXN0cztcbiAgICAgIHRoaXMuZHVwbGljYXRlTWVzc2FnZSA9IGV4aXN0c1xuICAgICAgICA/ICdUaGlzIGVudHJ5IGlzIGEgZHVwbGljYXRlIGFuZCBjYW5ub3QgYmUgYWRkZWQuJ1xuICAgICAgICA6ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGlzdHMgPSB0aGlzLnNhdmVkRmlsdGVycy5zb21lKFxuICAgICAgICAoZmlsdGVyKSA9PlxuICAgICAgICAgIGZpbHRlci5uYW1lID09PSB0aGlzLnNlbGVjdGVkRmlsdGVyVmFsdWUgJiZcbiAgICAgICAgICBmaWx0ZXIuY29uZGl0aW9uID09PSB0aGlzLnNlbGVjdGVkQ29uZGl0aW9uLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZUFkZEZpbHRlckJ0biA9IGV4aXN0cztcbiAgICAgIHRoaXMuaXNEdXBsaWNhdGVGaWx0ZXIgPSBleGlzdHM7XG4gICAgICB0aGlzLmR1cGxpY2F0ZU1lc3NhZ2UgPSBleGlzdHNcbiAgICAgICAgPyAnVGhpcyBlbnRyeSBpcyBhIGR1cGxpY2F0ZSBhbmQgY2Fubm90IGJlIGFkZGVkLidcbiAgICAgICAgOiAnJztcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uXG4gIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJnQ29sb3JcIlxuICBbc3R5bGUuYm94LXNoYWRvd109XCJib3hTaGFkb3dcIlxuICBbc3R5bGUuYm9yZGVyXT1cImJvcmRlclwiXG4gIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cImJvcmRlclJhZGl1c1wiXG4gIFtzdHlsZS5jb2xvcl09XCJ0ZXh0Q29sb3JcIlxuICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gIFtzdHlsZS5wYWRkaW5nXT1cInBkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInRvcFwiPlxuICAgIDxoMyBbc3R5bGUuY29sb3JdPVwidGVydGlhcnlDb2xvclwiIFtzdHlsZS5mb250LXNpemVdPVwiJzE0cHgnXCI+XG4gICAgICBGaWx0ZXJzXG4gICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIlxuICAgICAgICA+PHN1cD4oe3sgZmlsdGVyQ291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICA+XG4gICAgPC9oMz5cbiAgICA8YnV0dG9uXG4gICAgICBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmdDb2xvclwiXG4gICAgICBbc3R5bGUuYm9yZGVyXT1cIidub25lJ1wiXG4gICAgICBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiXG4gICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAoY2xpY2spPVwicmVzZXRGaWx0ZXJzKClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8aHIgLz5cblxuICA8IS0tIFNhdmVkIEZpbHRlcnMgU2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzYXZlZFdyYXBwZXJcIj5cbiAgICAgIDxoMyBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiPlNhdmVkIEZpbHRlcnM8L2gzPlxuICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgZmlsbD1cInZhcigtLXZibi1jb2xvci10ZXh0LW11dGVkKVwiXG4gICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RBbGxXcmFwcGVyXCIgKm5nSWY9XCJzYXZlZEZpbHRlcnMubGVuZ3RoXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tBbGxcIlxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbCgpXCJcbiAgICAgIC8+XG4gICAgICA8cCBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiIFtzdHlsZS5mb250LXdlaWdodF09XCInNTAwJ1wiPlNlbGVjdCBBbGw8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGZpbHRlciBvZiB2aXNpYmxlRmlsdGVyczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBjbGFzcz1cImNlbnRlcklubmVyV3JhcHBlclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94V3JhcHBlclwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgID48aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJmaWx0ZXIuY2hlY2tlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hlY2tib3goaSlcIlxuICAgICAgICAvPjwvc3Bhbj5cbiAgICAgICAgPHBcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIic1MDAnXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGVydGlhcnlDb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmaWx0ZXIubmFtZSB9fSB7eyBmaWx0ZXIuY29uZGl0aW9uIH19IHt7IGZpbHRlci52YWx1ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uV3JhcHBlclwiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJwZW5jaWxcIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgc3Ryb2tlPVwiYmxhY2tcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgICAgKGNsaWNrKT1cImVkaXRGaWx0ZXIoaSlcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJ0cmFzaFwiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBzdHJva2U9XCJ2YXIoLS12Ym4tY29sb3ItZXJyb3IpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsdGVyKGkpXCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb3JlV3JhcHBlclwiXG4gICAgICAqbmdJZj1cInNhdmVkRmlsdGVycy5sZW5ndGggPiBtYXhGaWx0ZXJMZW5ndGhcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dNb3JlKClcIlxuICAgID5cbiAgICAgIDxwXG4gICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiJzEycHgnXCJcbiAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIic1MDAnXCJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRlcnRpYXJ5Q29sb3JcIlxuICAgICAgPlxuICAgICAgICB7eyBzaG93QWxsRmlsdGVycyA/IFwiU2hvdyBsZXNzXCIgOiBcIlNob3cgbW9yZVwiIH19XG4gICAgICA8L3A+XG4gICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgIFt3aWR0aF09XCI4XCJcbiAgICAgICAgW2hlaWdodF09XCI2XCJcbiAgICAgICAgZmlsbD1cInZhcigtLXZibi1jb2xvci10ZXh0KVwiXG4gICAgICAgIHN0cm9rZT1cInZhcigtLXZibi1jb2xvci10ZXh0KVwiXG4gICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGhyIC8+XG5cbiAgPCEtLSBPcGVyYXRpb24gU2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImJvdHRvbVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzYXZlZFdyYXBwZXJcIj5cbiAgICAgIDxoMyBbc3R5bGUuZm9udC1zaXplXT1cIicxM3B4J1wiPk9wZXJhdGlvbjwvaDM+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgcG9zaXRpb246ICdyZWxhdGl2ZScgfVwiPlxuICAgICAgICA8dmVyYmVuLXRvb2x0aXBcbiAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIid2YXIoLS12Ym4tY29sb3Itc3VyZmFjZS1hbHQpJ1wiXG4gICAgICAgICAgd2lkdGg9XCIyMDBweFwiXG4gICAgICAgICAgW3RvcF09XCInMjBweCdcIlxuICAgICAgICAgIFtyaWdodF09XCInMHB4J1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgKm5nSWY9XCJpc0R1cGxpY2F0ZUZpbHRlclwiXG4gICAgICAgICAgICBmaWxsPVwidmFyKC0tdmJuLWNvbG9yLWVycm9yKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC92ZXJiZW4tdG9vbHRpcD5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBUZW1wbGF0ZT5cbiAgICAgICAgICB7eyBkdXBsaWNhdGVNZXNzYWdlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwhLS0gPHZlcmJlbi10b29sdGlwXG4gICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIid2YXIoLS12Ym4tY29sb3Itc3VyZmFjZS1hbHQpJ1wiXG4gICAgICAgICBbdGV4dENvbG9yXT1cIid2YXIoLS12Ym4tY29sb3Itc3VyZmFjZSknXCJcbiAgICAgICAgIFtwYWRkaW5nXT1cIicxMHB4J1wiXG4gICAgICAgICBbYm9yZGVyUmFkaXVzXT1cIic4cHgnXCJcbiAgICAgICAgIFt0b3BdPVwiJzIwcHgnXCIgICAgICAgICAgICAgICAgIFxuICAgICAgICAgW3JpZ2h0XT1cIicwcHgnXCIgICBcbiAgICAgICAgIHdpZHRoPVwiMjUwcHhcIiBcbiAgICAgICAgICN0b29sdGlwIFxuICAgICAgICAgKm5nSWY9XCJ0b29sdGlwXCJcbiAgICAgICAgID5cbiAgICAgICAgIDxoMz57e2R1cGxpY2F0ZU1lc3NhZ2V9fTwvaDM+XG4gICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+IC0tPlxuICAgICAgPC9kaXY+XG4gICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICBmaWxsPVwidmFyKC0tdmJuLWNvbG9yLXRleHQtbXV0ZWQpXCJcbiAgICAgICAgKm5nSWY9XCIhaXNEdXBsaWNhdGVGaWx0ZXJcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dHNXcmFwcGVyXCI+XG4gICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICB3aWR0aD1cIjdyZW1cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB2YWx1ZVwiXG4gICAgICAgIFtvcHRpb25zXT1cImZpbHRlckFycmF5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZpbHRlclZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJOYW1lQ2hhbmdlKHNlbGVjdGVkRmlsdGVyVmFsdWUpXCJcbiAgICAgID5cbiAgICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cbiAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgIHdpZHRoPVwiN3JlbVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHZhbHVlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdmFsdWVcIlxuICAgICAgICBbb3B0aW9uc109XCJjb25kaXRpb25PcHRpb25zXCJcbiAgICAgICAgKG9uQ2hhbmdlKT1cImNoZWNrRHVwbGljYXRlRmlsdGVyKClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29uZGl0aW9uXCJcbiAgICAgID5cbiAgICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cblxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEZpbHRlclR5cGUgPT09ICdEYXRlJ1wiXG4gICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCB2YXIoLS12Ym4tY29sb3ItYm9yZGVyKVwiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjVweFwiXG4gICAgICAgIHRleHRDb2xvcj1cInZhcigtLXZibi1jb2xvci10ZXh0KVwiXG4gICAgICAgIHdpZHRoPVwiODBweFwiXG4gICAgICAgIGhlaWdodD1cIjI1cHhcIlxuICAgICAgICBwZD1cIjZweFwiXG4gICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBbdHlwZV09XCInZGF0ZSdcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlclR5cGUgPT09ICdDcmVkaXQnIHx8IHNlbGVjdGVkRmlsdGVyVHlwZSA9PT0gJ0ludGVnZXInXG4gICAgICAgIFwiXG4gICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCB2YXIoLS12Ym4tY29sb3ItYm9yZGVyKVwiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjVweFwiXG4gICAgICAgIHRleHRDb2xvcj1cInZhcigtLXZibi1jb2xvci10ZXh0KVwiXG4gICAgICAgIHdpZHRoPVwiMTAwcHhcIlxuICAgICAgICBoZWlnaHQ9XCIyNXB4XCJcbiAgICAgICAgcGQ9XCI2cHhcIlxuICAgICAgICBwbGFjZUhvbGRlcj1cImlucHV0IGludGVnZXJcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgYXBwVmFsaWRhdGU9XCJpbnRlZ2VyXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRGaWx0ZXJUeXBlID09PSAnRGVjaW1hbCdcIlxuICAgICAgICBib3JkZXI9XCIxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLWJvcmRlcilcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgaGVpZ2h0PVwiMjVweFwiXG4gICAgICAgIHBkPVwiNnB4XCJcbiAgICAgICAgcGxhY2VIb2xkZXI9XCJpbnB1dCBhIGRlY2ltYWxcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwiZmFsc2VcIlxuICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgIGFwcFZhbGlkYXRlPVwiZGVjaW1hbFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuXG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAqbmdJZj1cInNlbGVjdGVkRmlsdGVyVHlwZSA9PT0gJ051bWJlcidcIlxuICAgICAgICBib3JkZXI9XCIxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLWJvcmRlcilcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgaGVpZ2h0PVwiMjVweFwiXG4gICAgICAgIHBkPVwiNnB4XCJcbiAgICAgICAgcGxhY2VIb2xkZXI9XCJpbnB1dCBudW1iZXJcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwiZmFsc2VcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBhcHBWYWxpZGF0ZT1cIm51bWJlclwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuXG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyVHlwZSAhPT0gJ0NyZWRpdCcgJiZcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlclR5cGUgIT09ICdEYXRlJyAmJlxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyVHlwZSAhPT0gJ0ludGVnZXInICYmXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJUeXBlICE9PSAnRGVjaW1hbCcgJiZcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlclR5cGUgIT09ICdOdW1iZXInXG4gICAgICAgIFwiXG4gICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCB2YXIoLS12Ym4tY29sb3ItYm9yZGVyKVwiXG4gICAgICAgIHBsYWNlSG9sZGVyPVwiaW5wdXQgdmFsdWVcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItdGV4dClcIlxuICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgaGVpZ2h0PVwiMjVweFwiXG4gICAgICAgIHBkPVwiNnB4XCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJ0bldyYXBwZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW3N0eWxlLm1hcmdpbi10b3BdPVwiJzAuNXJlbSdcIlxuICAgICAgICBbc3R5bGUub3V0bGluZV09XCInbm9uZSdcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIidub25lJ1wiXG4gICAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cImJvcmRlclJhZGl1c1wiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIlxuICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInNTAwJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQWRkRmlsdGVyQnRuXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgIGRpc2FibGVidG46IGRpc2FibGVBZGRGaWx0ZXJCdG4sXG4gICAgICAgICAgZW5hYmxlQnRuOiAhZGlzYWJsZUFkZEZpbHRlckJ0bixcbiAgICAgICAgfVwiXG4gICAgICAgIChjbGljayk9XCJhZGRGaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHRoaXMuZWRpdEluZGV4ICE9IG51bGwgPyBcIisgVXBkYXRlXCIgOiBcIisgQWRkXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxociAvPlxuXG4gICAgPGRpdiBjbGFzcz1cImJ0bldyYXBwZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW3N0eWxlLm1hcmdpbi10b3BdPVwiJzAuNXJlbSdcIlxuICAgICAgICBbc3R5bGUub3V0bGluZV09XCInbm9uZSdcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIidub25lJ1wiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nXT1cIicwLjJyZW0gMS42cmVtJ1wiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInByaW1hcnlDb2xvclwiXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0ZXJ0aWFyeUNvbG9yXCJcbiAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJzYwMCdcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgPlxuICAgICAgICBDb25maXJtXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|