@adins/ucviewgeneric 4.0.0-research.1 → 4.0.0-research.4

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.
@@ -750,8 +750,8 @@ export class UcviewgenericComponent {
750
750
  }
751
751
  return value;
752
752
  }
753
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.HttpClient }, { token: i3.TranslateService }, { token: i4.CookieService }, { token: i5.NgxRouterService }], target: i0.ɵɵFactoryTarget.Component });
754
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UcviewgenericComponent, selector: "lib-ucviewgeneric", inputs: { viewGenericObj: "viewGenericObj", gridViewObj: "gridViewObj", refresh: "refresh" }, outputs: { callback: "callback" }, ngImport: i0, template: "<!-- DO NOT BEAUTIFY / PRETTIFY THIS FILE - will cause the label cannot be highlighted/selected for copy -->\n<span hidden attr.version=\"3.4.18-canary.0\"></span>\n<section id=\"horizontal-form-layouts\">\n\t<div class=\"row text-left\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div [ngClass]=\"IsCard ? 'card' : ''\" *ngIf=\"isReady\">\n\t\t\t\t<!-- <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\n\t\t\t\t\t<h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\n\t\t\t\t\t\t\t[panel]=\"ss.subSectionId\" [legacy]=\"false\" (collapse)=\"onCollapse($event)\">\n\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t<div class=\"form-body border-top border-bottom\" [id]='ss.subSectionId' [(ngbCollapse)]=\"isCollapsed\">\n\t\t\t\t\t\t\t<div class=\"p-3\">\n\t\t\t\t\t\t\t\t<div class=\"form-group row\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let mi of ss?.mainInfo\">\n\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"isVisible(mi?.conditions, i)\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'col-xxl-2 col-xl-3 col-lg-4 col-md-6 col-xs-12 py-2': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type != 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{mi.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngFor=\"let case of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{case.result.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-12\" [ngClass]=\"{ 'text-left': mi.position == 'left',\n\t\t\t\t\t\t\t\t\t\t\t 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #emptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'blank'\"></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type != 'blank'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #nonEmptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'text'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'currency'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision :\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'0.2' :'en-US' }} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'date'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | ucdate: (mi?.dateFormat) ? mi?.dateFormat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'dd-MMM-yyyy' }} </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'link'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"!mi?.isFullpath\" class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][mi.property]\" [routerLink]=\"genRouterLink(mi.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[target]=\"mi.target\" [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\" class=\"d-block text-truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 270px\" [title]=\"viewInfoObjList[i][mi.property]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target, mi)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'callback'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</textarea>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'boolean'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- <label\n\t\t\t\t\t\t\t\t\t\t\t *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ mi.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngFor=\"let cs of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate *ngIf=\"cs.result.type == 'text'\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'decimal'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ viewInfoObjList[i][cs.result.property] | number: cs.result.precision ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.precision : '0.2' :'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.IsPrcnt\">&nbsp;%</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'date'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][cs.result.property] | ucdate: 'dd-MMM-yyyy'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'link'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control item-field\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][cs.result.property]\" [target]=\"cs.result.target\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[routerLink]=\"genRouterLink(cs.result.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'boolean'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'true' || viewInfoObjList[i][cs.result.property] == true\">Yes</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'false' || viewInfoObjList[i][cs.result.property] == false\">No</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ cs.result.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'callback'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #textCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"a-link\" href=\"javascript:void(0);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #iconCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'a-link p-0' : cs.result.anchor]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"font-medium-3 mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.tooltip }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"grid-view pb-3\" *ngIf=\"gridViewObj.gridViews.length > 0\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let gridView of inputGridViewObjs; let i = index\">\n\t\t\t\t\t\t\t\t\t<lib-ucSubsection\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"gridViewObj.gridViews[i].subsection && gridViewObj.gridViews[i].subsection !== ''\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"'grid-subsection-id'+i\" [title]=\"gridViewObj.gridViews[i].subsection\"\n\t\t\t\t\t\t\t\t\t\t[panel]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t\t\t\t<div class=\"form-body\" [id]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t\t<!-- <lib-ucgridview [gridInput]=\"gridView\" (callback)=\"gridEvent($event)\" (isRefresh)=\"GetGridViewData(gridViewObj.gridViews[i], gridView)\"></lib-ucgridview>-->\n\t\t\t\t\t\t\t\t\t\t<lib-uctable [gridObj]=\"gridView\" [standalone]=\"false\" (callback)=\"gridEvent($event)\"\n\t\t\t\t\t\t\t\t\t\t\t[classPadding]=\"'px-0'\"></lib-uctable>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>", styles: [".label-field{color:var(--gray-font-2, #A1A3A5);font-size:12px!important;font-weight:500}.item-field{color:var(--Black_1, #3A4060);font-size:14px!important}.label-control{padding:0!important}.label-control>a{color:var(--blue, #246CFE)}.a-link{color:var(--blue, #246CFE);font-size:14px!important}@media (min-width: 1366px){.col-xxl-2{flex:0 0 20%;max-width:20%}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.UcDatePipe, name: "ucdate" }] });
753
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.HttpClient }, { token: i3.TranslateService }, { token: i4.CookieService }, { token: i5.NgxRouterService }], target: i0.ɵɵFactoryTarget.Component });
754
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UcviewgenericComponent, selector: "lib-ucviewgeneric", inputs: { viewGenericObj: "viewGenericObj", gridViewObj: "gridViewObj", refresh: "refresh" }, outputs: { callback: "callback" }, ngImport: i0, template: "<!-- DO NOT BEAUTIFY / PRETTIFY THIS FILE - will cause the label cannot be highlighted/selected for copy -->\n<span hidden attr.version=\"3.4.18-canary.0\"></span>\n<section id=\"horizontal-form-layouts\">\n\t<div class=\"row text-left\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div [ngClass]=\"IsCard ? 'card' : ''\" *ngIf=\"isReady\">\n\t\t\t\t<!-- <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\n\t\t\t\t\t<h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\n\t\t\t\t\t\t\t[panel]=\"ss.subSectionId\" [legacy]=\"false\" (collapse)=\"onCollapse($event)\">\n\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t<div class=\"form-body border-top border-bottom\" [id]='ss.subSectionId' [(ngbCollapse)]=\"isCollapsed\">\n\t\t\t\t\t\t\t<div class=\"p-3\">\n\t\t\t\t\t\t\t\t<div class=\"form-group row\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let mi of ss?.mainInfo\">\n\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"isVisible(mi?.conditions, i)\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'col-xxl-2 col-xl-3 col-lg-4 col-md-6 col-xs-12 py-2': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type != 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{mi.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngFor=\"let case of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{case.result.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-12\" [ngClass]=\"{ 'text-left': mi.position == 'left',\n\t\t\t\t\t\t\t\t\t\t\t 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #emptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'blank'\"></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type != 'blank'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #nonEmptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'text'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'currency'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision :\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'0.2' :'en-US' }} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'date'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | ucdate: (mi?.dateFormat) ? mi?.dateFormat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'dd-MMM-yyyy' }} </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'link'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"!mi?.isFullpath\" class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][mi.property]\" [routerLink]=\"genRouterLink(mi.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[target]=\"mi.target\" [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\" class=\"d-block text-truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 270px\" [title]=\"viewInfoObjList[i][mi.property]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target, mi)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'callback'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</textarea>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'boolean'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- <label\n\t\t\t\t\t\t\t\t\t\t\t *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ mi.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngFor=\"let cs of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate *ngIf=\"cs.result.type == 'text'\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'decimal'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ viewInfoObjList[i][cs.result.property] | number: cs.result.precision ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.precision : '0.2' :'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.IsPrcnt\">&nbsp;%</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'date'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][cs.result.property] | ucdate: 'dd-MMM-yyyy'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'link'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control item-field\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][cs.result.property]\" [target]=\"cs.result.target\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[routerLink]=\"genRouterLink(cs.result.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'boolean'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'true' || viewInfoObjList[i][cs.result.property] == true\">Yes</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'false' || viewInfoObjList[i][cs.result.property] == false\">No</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ cs.result.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'callback'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #textCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"a-link\" href=\"javascript:void(0);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #iconCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'a-link p-0' : cs.result.anchor]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"font-medium-3 mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.tooltip }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"grid-view pb-3\" *ngIf=\"gridViewObj.gridViews.length > 0\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let gridView of inputGridViewObjs; let i = index\">\n\t\t\t\t\t\t\t\t\t<lib-ucSubsection\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"gridViewObj.gridViews[i].subsection && gridViewObj.gridViews[i].subsection !== ''\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"'grid-subsection-id'+i\" [title]=\"gridViewObj.gridViews[i].subsection\"\n\t\t\t\t\t\t\t\t\t\t[panel]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t\t\t\t<div class=\"form-body\" [id]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t\t<!-- <lib-ucgridview [gridInput]=\"gridView\" (callback)=\"gridEvent($event)\" (isRefresh)=\"GetGridViewData(gridViewObj.gridViews[i], gridView)\"></lib-ucgridview>-->\n\t\t\t\t\t\t\t\t\t\t<lib-uctable [gridObj]=\"gridView\" [standalone]=\"false\" (callback)=\"gridEvent($event)\"\n\t\t\t\t\t\t\t\t\t\t\t[classPadding]=\"'px-0'\"></lib-uctable>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>", styles: [".label-field{color:var(--gray-font-2, #A1A3A5);font-size:12px!important;font-weight:500}.item-field{color:var(--Black_1, #3A4060);font-size:14px!important}.label-control{padding:0!important}.label-control>a{color:var(--blue, #246CFE)}.a-link{color:var(--blue, #246CFE);font-size:14px!important}@media (min-width: 1366px){.col-xxl-2{flex:0 0 20%;max-width:20%}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.UcDatePipe, name: "ucdate" }] });
755
755
  }
756
756
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericComponent, decorators: [{
757
757
  type: Component,
@@ -765,4 +765,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
765
765
  }], callback: [{
766
766
  type: Output
767
767
  }] } });
768
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3ZpZXdnZW5lcmljL3NyYy9saWIvdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3ZpZXdnZW5lcmljL3NyYy9saWIvdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sc0JBQXNCO0lBZ0J2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbkJELGNBQWMsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFELFdBQVcsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM3QyxPQUFPLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFDNUQsUUFBUSxHQUFzQixJ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Q0FBQTthQUNoQjtTQUNGO1FBRUQsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEMsS0FBSyxHQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixLQUFLLEdBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQztTQUN6QztRQUVELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO1lBQ3RDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDWjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsySEE5MUJVLHNCQUFzQjsrR0FBdEIsc0JBQXNCLDBMQ2pCbkMsZzFoQkF3TlU7OzRGRHZNRyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1CO3dOQUtwQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpc0Rldk1vZGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFVjVmlld0dlbmVyaWNPYmogfSBmcm9tIFwiLi9tb2RlbC91Yy12aWV3LWdlbmVyaWMtb2JqLm1vZGVsXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZVwiO1xuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSBcImNyeXB0by1qc1wiO1xuaW1wb3J0IHsgR3JpZFZpZXdPYmogfSBmcm9tIFwiLi9tb2RlbC9ncmlkLXZpZXctb2JqLm1vZGVsXCI7XG5pbXBvcnQgeyBJbnB1dEdyaWRPYmogfSBmcm9tIFwiLi9tb2RlbC9pbnB1dC1ncmlkLW9iai5tb2RlbFwiO1xuaW1wb3J0IHsgTmd4Um91dGVyU2VydmljZSB9IGZyb20gJ0BhZGlucy9mZS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImxpYi11Y3ZpZXdnZW5lcmljXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFsnLi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVjdmlld2dlbmVyaWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB2aWV3R2VuZXJpY09iajogVWNWaWV3R2VuZXJpY09iaiA9IG5ldyBVY1ZpZXdHZW5lcmljT2JqKCk7XG4gIEBJbnB1dCgpIGdyaWRWaWV3T2JqOiBHcmlkVmlld09iaiA9IG5ldyBHcmlkVmlld09iaigpO1xuICBASW5wdXQoKSByZWZyZXNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgVXNlckFjY2VzczogYW55O1xuICBpbnB1dEdyaWRWaWV3T2JqczogQXJyYXk8SW5wdXRHcmlkT2JqPiA9IG5ldyBBcnJheTxJbnB1dEdyaWRPYmo+KCk7XG4gIHZpZXdMaXN0OiBhbnkgPSBcIlwiO1xuICBnZXRMaXN0OiBhbnk7XG4gIHZpZXdJbmZvT2JqTGlzdDogYW55O1xuICBpc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XG4gIElzQ2FyZDogYm9vbGVhbiA9IHRydWU7XG4gIGlzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ3hSb3V0ZXI6IE5neFJvdXRlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5Vc2VyQWNjZXNzID0gSlNPTi5wYXJzZShcbiAgICAgIHRoaXMuR2V0Q29va2llKHRoaXMuY29va2llU2VydmljZSwgXCJVc2VyQWNjZXNzXCIpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmdldExpc3QgPSB0aGlzLm5neFJvdXRlci5nZXRRdWVyeVBhcmFtcyhwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKFwiZW5cIik7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmdcIikgfHwgXCJlblwiKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEVYUEVSSU1FTlRBTCBCYXNlVmlldyBBUElcbiAgICAvLyBUT0RPOiByZW1vdmUgYWZ0ZXIgc3RhYmxlXG4gICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmouRXhwZXJpbWVudGFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmouRXhwZXJpbWVudGFsID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIEVORCBFWFBFUklNRU5UQUxcblxuICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgdGhpcy5DaGVja0lzQ2FyZCgpO1xuXG4gICAgdGhpcy5yZWZyZXNoLnN1YnNjcmliZShpc1VwZGF0ZSA9PiB7XG4gICAgICBpZiAoIWlzVXBkYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUmVmcmVzaCB2aWV3IGNvbnRlbnRcbiAgICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgICB0aGlzLnJlZnJlc2guZW1pdChmYWxzZSk7XG4gICAgfSlcbiAgfVxuXG4gIG9uQ29sbGFwc2UoZXYpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gISFldj8uaXNDb2xsYXBzZWQ7XG4gIH1cblxuICBwcml2YXRlIENoZWNrSXNDYXJkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmouSXNDYXJkID09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5Jc0NhcmQgPT0gbnVsbFxuICAgIClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLklzQ2FyZCA9IHRoaXMudmlld0dlbmVyaWNPYmouSXNDYXJkO1xuICB9XG5cbiAgaW5pdGlhdGVGb3JtKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmouZGF0YUlucHV0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudmlld0dlbmVyaWNPYmouZGF0YUlucHV0KS5sZW5ndGggIT09IDBcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlndXJhdGlvbih7IC4uLnRoaXMudmlld0dlbmVyaWNPYmouZGF0YUlucHV0IH0pO1xuICAgICAgdGhpcy5ncmlkVmlld09iai5ncmlkVmlld3MgPSB0aGlzLnZpZXdHZW5lcmljT2JqLmRhdGFJbnB1dC5zdWJzZWN0aW9uWzBdPy5ncmlkVmlld3MgfHwgW107XG4gICAgICB0aGlzLmluaXRpYWxpemVHcmlkVmlld3MoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdldEpTT04odGhpcy52aWV3R2VuZXJpY09iai52aWV3SW5wdXQpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5zZXRDb25maWd1cmF0aW9uKGRhdGEpO1xuICAgIH0pO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUdyaWRWaWV3cygpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUdyaWRWaWV3cygpIHtcbiAgICBpZiAodGhpcy5ncmlkVmlld09iaiAmJiB0aGlzLmdyaWRWaWV3T2JqLmdyaWRWaWV3cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRWaWV3T2JqLmdyaWRWaWV3cy5tYXAoYXN5bmMgKGdyaWRWaWV3KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dEdyaWRPYmogPSBuZXcgSW5wdXRHcmlkT2JqKCk7XG4gICAgICBpbnB1dEdyaWRPYmouZGF0YUlucHV0ID0gZ3JpZFZpZXcudGFibGVJbnB1dDtcbiAgICAgIGlucHV0R3JpZE9iai5yZXN1bHREYXRhID0geyBEYXRhOiBbXSB9O1xuICAgICAgaW5wdXRHcmlkT2JqLmlzU3Vic2VjdGlvbiA9IGdyaWRWaWV3LmlzU3Vic2VjdGlvbiB8fCBmYWxzZTtcbiAgICAgIGlucHV0R3JpZE9iai51c2VQYWdpbmF0aW9uID0gZ3JpZFZpZXcudXNlUGFnaW5hdGlvbiB8fCB0cnVlO1xuICAgICAgaW5wdXRHcmlkT2JqLnRpdGxlID0gZ3JpZFZpZXcudGl0bGUgfHwgXCJcIjtcbiAgICAgIGF3YWl0IHRoaXMuR2V0R3JpZFZpZXdEYXRhKGdyaWRWaWV3LmdldERhdGEsIGlucHV0R3JpZE9iaik7XG4gICAgICB0aGlzLmlucHV0R3JpZFZpZXdPYmpzLnB1c2goaW5wdXRHcmlkT2JqKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEVudmlyb25tZW50KGVudmkpIHtcbiAgICBjb25zdCBmaWx0ZXJlZEVudmlzID0gdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmZpbHRlcihcbiAgICAgICh2KSA9PiB2LmVudmlyb25tZW50ID09IGVudmlcbiAgICApO1xuICAgIHJldHVybiBmaWx0ZXJlZEVudmlzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEVudmlzWzBdIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIEdldEdyaWRWaWV3RGF0YShtZXRhOiBhbnksIGlucHV0R3JpZE9iajogSW5wdXRHcmlkT2JqKSB7XG4gICAgbGV0IHRlbXBsTGlzdERhdGEgPSBbXTtcbiAgICBjb25zdCBlbnZpVXJsID0gbWV0YS5lbnZpcm9ubWVudCAmJiB0aGlzLmdldEVudmlyb25tZW50KG1ldGEuZW52aXJvbm1lbnQpO1xuICAgIGF3YWl0IHRoaXMuaHR0cFxuICAgICAgLnBvc3QoZW52aVVybCA/IGVudmlVcmwudXJsICsgbWV0YS5hcGlQYXRoIDogbWV0YS5hcGlQYXRoLCBtZXRhLnJlcU9iailcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRlbXBsTGlzdERhdGEgPSByZXNwb25zZVttZXRhLmN1c3RvbU9iak5hbWUgfHwgXCJSZXR1cm5PYmplY3RcIl07XG4gICAgICAgIGlucHV0R3JpZE9iai5hcGlVcmwgPSBtZXRhLmFwaVBhdGg7XG4gICAgICAgIGlucHV0R3JpZE9iai5yZXN1bHREYXRhW1wiRGF0YVwiXSA9IG5ldyBBcnJheSgpO1xuICAgICAgICBpbnB1dEdyaWRPYmoucmVzdWx0RGF0YS5EYXRhID0gdGVtcGxMaXN0RGF0YTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ3JpZEV2ZW50KGV2KSB7XG4gICAgdGhpcy5jYWxsYmFja0Z1bmN0aW9uKGV2LlJvd09iaiwgZXYuS2V5KTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oZGF0YSkge1xuICAgIHRoaXMudmlld0xpc3QgPSBkYXRhO1xuICAgIHRoaXMudmlld0luZm9PYmpMaXN0ID0gW107XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGorKykge1xuICAgICAgdGhpcy52aWV3SW5mb09iakxpc3QucHVzaChqKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcgIT0gbnVsbCAmJlxuICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcubmFtZSAhPSBcIlwiXG4gICAgICApIHtcbiAgICAgICAgbGV0IHF1ZXJ5T2JqOiBhbnk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdHZW5lcmljT2JqLndoZXJlVmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcud2hlcmVRdWVyeSA9ICg8YW55PihcbiAgICAgICAgICAgIE9iamVjdFxuICAgICAgICAgICkpLnZhbHVlcyh0aGlzLmdldExpc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID1cbiAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoud2hlcmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIlxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9XG4gICAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICtcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvUGF0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID1cbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPVxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRVhQRVJJTUVOVEFMIEJhc2VWaWV3IEFQSVxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgYWZ0ZXIgc3RhYmxlXG4gICAgICAgIGlmICh0aGlzLnZpZXdHZW5lcmljT2JqLkV4cGVyaW1lbnRhbCkge1xuICAgICAgICAgIGNvbnN0IF9lbnZpcm9ubWVudFVybCA9IHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50LnN1YnN0cmluZygwLCB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudC5sZW5ndGgtMyk7XG4gICAgICAgICAgY29uc3QgX3FyeVZpZXcgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcubmFtZTtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSBgJHtfZW52aXJvbm1lbnRVcmx9L3YxL0Jhc2VWaWV3LyR7X3FyeVZpZXd9YFxuICAgICAgICB9XG4gICAgICAgIC8vIEVORCBFWFBFUklNRU5UQUxcblxuICAgICAgICBxdWVyeU9iaiA9IHtcbiAgICAgICAgICBxdWVyeXN0cmluZzogdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdCh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGgsIHF1ZXJ5T2JqKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZVtcIkRhdGFcIl1bMF07XG5cbiAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICBsZXQgeSA9IDA7XG4gICAgICAgICAgICAgICAgeSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mby5sZW5ndGg7XG4gICAgICAgICAgICAgICAgeSsrXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wcm9wZXJ0eUxpc3QgIT1cbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucHJvcGVydHlMaXN0Lmxlbmd0aCAhPVxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucHJvcGVydHlMaXN0O1xuICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCB6ID0gMDsgeiA8IHByb3BlcnR5TGlzdC5sZW5ndGg7IHorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25jYXQgPVxuICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCArXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W3pdLnByZWZpeCArXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W3pdLnByb3BlcnR5XSArXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W3pdLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jb25jYXQgPSBjb25jYXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9zd2l0Y2ggY2FzZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcInN3aXRjaFwiKSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgeiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHogPCB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHorK1xuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBFbXB0eSA9IG5ldyBBcnJheTxib29sZWFuPigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5IaWRkZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGhpZGVJZkVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlSWZFbXB0eSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlSWZFbXB0eSAhPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAudHlwZSAhPSBcImNvbmNhdFwiXG4gICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdC5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdC5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdC5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gIT0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGUgY29uY2F0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3QgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVzdWx0LnByb3BlcnR5TGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2F0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W2FdLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TGlzdFthXS5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAhPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5pbmNsdWRlcyh0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlSWZFbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0uSGlkZGVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0hpZGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAvL2NvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcGVydHlMaXN0ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDBcbiAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2F0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0uc3VmZml4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2VbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgICAgICAgICAgICAgIF0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIiAmJlxuICAgICAgICAgICAgICAgICAgKHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdCAhPSBudWxsKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRlbXBMaW5rID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3RbXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGhcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgIGlmICh0ZW1wTGluayAhPSB1bmRlZmluZWQgJiYgdGVtcExpbmsgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aCA9IHRlbXBMaW5rO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIiAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmxlbmd0aCAhPSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgeiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHogPCB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB6KytcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmVudmlyb25tZW50ID09XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzW3pdLmVudmlyb25tZW50XG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0Z1bGxwYXRoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZnVsbHBhdGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzW3pdLnVybCArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIlxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmlzRnVsbHBhdGggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5mdWxscGF0aCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIlxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZW52aXJvbm1lbnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IFwiXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGxldCB6ID0gMDtcbiAgICAgICAgICAgICAgeiA8IHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgIHorK1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZW52aXJvbm1lbnQgPT1cbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHNbel0uZW52aXJvbm1lbnRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID1cbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50c1t6XS51cmwgK1xuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvUGF0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9XG4gICAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICtcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvUGF0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID1cbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPVxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVxT2JqID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnJlcU9iaiB8fCB0aGlzLmdldExpc3Q7XG4gICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucmVxT2JqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5yZXFPYmpcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXFPYmpba2V5XSA9IHRoaXMuZ2V0TGlzdFt2YWx1ZSBhcyBzdHJpbmddIHx8IHRoaXMudmlld0dlbmVyaWNPYmouZGljdHNbdmFsdWUgYXMgc3RyaW5nXTtcbiAgICAgICAgICAgIGlmIChyZXFPYmpba2V5XSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmVxT2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGgsIHJlcU9iaikuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucmVzT2JqTmFtZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5yZXNPYmpOYW1lID09PSBcIlwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldID1cbiAgICAgICAgICAgICAgICByZXNwb25zZVt0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucmVzT2JqTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRKU09OKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBHZXRDb29raWUoY29va2llU2VydmljZTogQ29va2llU2VydmljZSwga2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWUgPSBjb29raWVTZXJ2aWNlLmdldChrZXkpO1xuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUudHJpbSgpID09IFwiXCIpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IF9rZXkgPSB0aGlzLnZpZXdHZW5lcmljT2JqPy5lbnZpcm9ubWVudD8uQ2hpcHBlcktleUNvb2tpZSA/PyBcIkFkSW5zRk9VMTIzNDU2NzhcIjtcbiAgICByZXR1cm4gdGhpcy5EZWNyeXB0U3RyaW5nKHZhbHVlLCBfa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgRGVjcnlwdFN0cmluZyhjaGlwcGVyVGV4dDogc3RyaW5nLCBjaGlwcGVyS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoXG4gICAgICBjaGlwcGVyS2V5ID09IHVuZGVmaW5lZCB8fFxuICAgICAgY2hpcHBlcktleS50cmltKCkgPT0gXCJcIiB8fFxuICAgICAgY2hpcHBlclRleHQgPT0gdW5kZWZpbmVkIHx8XG4gICAgICBjaGlwcGVyVGV4dC50cmltKCkgPT0gXCJcIlxuICAgIClcbiAgICAgIHJldHVybiBjaGlwcGVyVGV4dDtcbiAgICBsZXQgY2hpcHBlcktleUFyciA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGNoaXBwZXJLZXkpO1xuICAgIGxldCBpdiA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XG4gICAgbGV0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNoaXBwZXJUZXh0LCBjaGlwcGVyS2V5QXJyLCB7XG4gICAgICBpdjogaXYsXG4gICAgfSk7XG4gICAgbGV0IHBsYWluVGV4dCA9IGRlY3J5cHRlZC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XG4gICAgcmV0dXJuIHBsYWluVGV4dDtcbiAgfVxuXG4gIGdlbkFjdGlvbih2aWV3T2JqLCBwYXJhbSkge1xuICAgIGxldCBhcnJMaXN0OiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgdmlld09ialtwYXJhbVtpXS50eXBlXSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgdmlld09ialtwYXJhbVtpXS5wcm9wZXJ0eV0gIT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgYXJyTGlzdFtwYXJhbVtpXS50eXBlXSA9IHZpZXdPYmpbcGFyYW1baV0ucHJvcGVydHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyTGlzdFtwYXJhbVtpXS50eXBlXSA9IHBhcmFtW2ldLnByb3BlcnR5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCBzdGF0ZSBvZiBkYXRhIHRvIHJvdXRlciBzZXJ2aWNlXG4gICAgaWYgKCFpc0Rldk1vZGUoKSAmJiAodGhpcy52aWV3R2VuZXJpY09iaj8uZW52aXJvbm1lbnQ/LnVzZVNhZmVVcmwgPz8gZmFsc2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ3hSb3V0ZXIuY3JlYXRlUXVlcnlQYXJhbXMoYXJyTGlzdCk7XG4gICAgfVxuICAgIHJldHVybiBhcnJMaXN0O1xuICB9XG5cbiAgZ2VuUm91dGVyTGluayh1cmxMaW5rOiBzdHJpbmcpIHtcbiAgICBsZXQgdGVtcExpbmsgPSB1cmxMaW5rO1xuICAgIGlmIChcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3RbdXJsTGlua10gIT0gbnVsbFxuICAgICkge1xuICAgICAgdGVtcExpbmsgPSB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt1cmxMaW5rXTtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBMaW5rO1xuICB9XG5cbiAgcmVkaXJlY3RGdWxsUGF0aChmdWxscGF0aDogc3RyaW5nLCBwYXJhbTogT2JqZWN0LCB0YXJnZXQ6IHN0cmluZywgaXRlbTogYW55KSB7XG4gICAgbGV0IHF1ZXJ5UGFyYW0gPSBcIlwiO1xuICAgIGxldCBfZnVsbHBhdGggPSBmdWxscGF0aCB8fCBcIlwiO1xuICAgIFxuICAgIGlmIChfZnVsbHBhdGggPT0gXCJcIikge1xuICAgICAgX2Z1bGxwYXRoID0gdGhpcy5nZW5GdWxscGF0aChpdGVtLmVudmlyb25tZW50LCBpdGVtLnBhdGgpXG4gICAgfVxuXG4gICAgY29uc3QgTGlzdE9iaiA9IE9iamVjdC5rZXlzKHBhcmFtKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IExpc3RPYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChxdWVyeVBhcmFtICE9IFwiXCIpIHtcbiAgICAgICAgcXVlcnlQYXJhbSA9IHF1ZXJ5UGFyYW0gKyBcIiZcIiArIExpc3RPYmpbaV0gKyBcIj1cIiArIHBhcmFtW0xpc3RPYmpbaV1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbSA9IExpc3RPYmpbaV0gKyBcIj1cIiArIHBhcmFtW0xpc3RPYmpbaV1dO1xuICAgICAgfVxuICAgIH1cbiAgICB3aW5kb3cub3BlbihfZnVsbHBhdGggKyBcIj9cIiArIHF1ZXJ5UGFyYW0sIHRhcmdldCk7XG4gIH1cblxuICBnZW5GdWxscGF0aChlbnZpcm9ubWVudDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBfZW52aSA9IHRoaXMuZ2V0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpO1xuICAgIGlmIChfZW52aSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVudmlyb25tZW50ICsgcGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gX2VudmkudXJsICsgcGF0aDtcbiAgfVxuXG4gIGNhbGxiYWNrRnVuY3Rpb24oaXRlbSwga2V5OiBzdHJpbmcgPSBcIlwiKSB7XG4gICAgbGV0IENCT2JqID0ge1xuICAgICAgVmlld09iajogaXRlbSxcbiAgICAgIEtleToga2V5LFxuICAgIH07XG4gICAgdGhpcy5jYWxsYmFjay5lbWl0KENCT2JqKTtcbiAgfVxuXG4gIGlzVmlzaWJsZShjb25kTGlzdCwgaTogbnVtYmVyKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKGNvbmRMaXN0ID09PSB1bmRlZmluZWQpIHJldHVybiByZXN1bHQ7XG4gICAgY29uc3QgX3RlbXAgPSB7XG4gICAgICAuLi50aGlzLnZpZXdHZW5lcmljT2JqLmRpY3RzLFxuICAgICAgZGljdHM6IHsuLi50aGlzLnZpZXdHZW5lcmljT2JqLmRpY3RzfSxcbiAgICAgIHZpZXdEYXRhOiB7Li4udGhpcy52aWV3SW5mb09iakxpc3RbaV19XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBBcnJheS5pc0FycmF5KGNvbmRMaXN0KSA/IGNvbmRMaXN0IDogW2NvbmRMaXN0XTtcbiAgICBmb3IgKGNvbnN0IGNyaXRlcmlhIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJlc3RyaWN0aW9uID0gY3JpdGVyaWE/LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBjb21wYXJlVmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoX3RlbXAsIGNyaXRlcmlhPy52YWx1ZSk7XG4gICAgICBjb25zdCBjcml0VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoX3RlbXAsIGNyaXRlcmlhPy5wcm9wZXJ0eSk7XG5cbiAgICAgIGlmIChyZXN0cmljdGlvbiA9PT0gJ0VRJykge1xuICAgICAgICBpZiAoY3JpdFZhbHVlID09PSBjb21wYXJlVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3RyaWN0aW9uID09PSAnTkVRJykge1xuICAgICAgICBpZiAoY3JpdFZhbHVlICE9PSBjb21wYXJlVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3RyaWN0aW9uID09PSAnR1QnKSB7XG4gICAgICAgIGlmIChjcml0VmFsdWUgPiBjb21wYXJlVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3RyaWN0aW9uID09PSAnR1RFJykge1xuICAgICAgICBpZiAoY3JpdFZhbHVlID49IGNvbXBhcmVWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdHJpY3Rpb24gPT09ICdMVCcpIHtcbiAgICAgICAgaWYgKGNyaXRWYWx1ZSA8IGNvbXBhcmVWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdHJpY3Rpb24gPT09ICdMVEUnKSB7XG4gICAgICAgIGlmIChjcml0VmFsdWUgPD0gY29tcGFyZVZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyZXN0cmljdGlvbiA9PT0gJ0lOJykge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnBhcnNlVmFsdWUoX3RlbXAsIGNyaXRlcmlhLnZhbHVlKSBhcyBzdHJpbmc7XG4gICAgICAgIGlmICh2YWx1ZXMuaW5jbHVkZXMoY3JpdFZhbHVlKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdHJpY3Rpb24gPT09ICdOT1RJTicpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5wYXJzZVZhbHVlKF90ZW1wLCBjcml0ZXJpYS52YWx1ZSkgYXMgc3RyaW5nO1xuICAgICAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyhjcml0VmFsdWUpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3dpdGNoQ2FzZShpdGVtLCBjb25kTGlzdCkge1xuICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRMaXN0LmNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiRVFcIikge1xuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT1cbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJORVFcIikge1xuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT1cbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJHVFwiKSB7XG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPiB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdURVwiKSB7XG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+PVxuICAgICAgICAgICAgY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxUXCIpIHtcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDwgY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA8IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRFXCIpIHtcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDw9XG4gICAgICAgICAgICBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDw9IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiSU5cIikge1xuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeCkgPT4geCA9PSBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldXG4gICAgICAgICAgICApID49IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeCkgPT4geCA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXVxuICAgICAgICAgICAgKSA+PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTklOXCIpIHtcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHgpID0+IHggPT0gaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XVxuICAgICAgICAgICAgKSA9PSAtMVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZS5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh4KSA9PiB4ID09IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdXG4gICAgICAgICAgICApID09IC0xXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpc051bWJlcih2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IGFueVtdKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDEgJiYgdmFsdWVbMF0gPT09IFwiMFwiKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFpc05hTihOdW1iZXIodmFsdWUpKTtcbiAgfTtcblxuICBwcml2YXRlIGlzQm9vbGVhbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAodmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCIgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJmYWxzZVwiKTtcbiAgfTtcblxuIHByaXZhdGUgcGFyc2VWYWx1ZShvYmplY3Q6IGFueSwgcHJvcGVydHk6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHByb3BlcnR5ID09PSBcIlwiKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5ID09PSBcIltdXCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHkgIT09IFwiXCIgJiYgdGhpcy5pc051bWJlcihwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4ocHJvcGVydHkpKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHkudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHByb3BlcnR5LnNwbGl0KFwiLlwiKTtcbiAgICBsZXQgdmFsdWUgPSBvYmplY3Q7XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IFwiXCIgJiYgdGhpcy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gIHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9ICB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwibnVsbFwiKSB7XG4gICAgICB2YWx1ZSA9IFwiXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iLCI8IS0tIERPIE5PVCBCRUFVVElGWSAvIFBSRVRUSUZZIFRISVMgRklMRSAtIHdpbGwgY2F1c2UgdGhlIGxhYmVsIGNhbm5vdCBiZSBoaWdobGlnaHRlZC9zZWxlY3RlZCBmb3IgY29weSAtLT5cbjxzcGFuIGhpZGRlbiBhdHRyLnZlcnNpb249XCIzLjQuMTgtY2FuYXJ5LjBcIj48L3NwYW4+XG48c2VjdGlvbiBpZD1cImhvcml6b250YWwtZm9ybS1sYXlvdXRzXCI+XG5cdDxkaXYgY2xhc3M9XCJyb3cgdGV4dC1sZWZ0XCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuXHRcdFx0PGRpdiBbbmdDbGFzc109XCJJc0NhcmQgPyAnY2FyZCcgOiAnJ1wiICpuZ0lmPVwiaXNSZWFkeVwiPlxuXHRcdFx0XHQ8IS0tIDxkaXYgY2xhc3M9XCJwbC0zIG1iLTIgbXQtMlwiICpuZ0lmPVwidmlld0xpc3Q/LnRpdGxlICE9ICcnXCI+XG5cdFx0XHRcdFx0PGg0IGNsYXNzPVwiY2FyZC10aXRsZSB1Y1NlYXJjaC10aXRsZVwiIGlkPVwiaG9yei1sYXlvdXQtY29sb3JlZC1jb250cm9sc1wiIHRyYW5zbGF0ZT57e3ZpZXdMaXN0LnRpdGxlfX08L2g0PlxuXHRcdFx0XHQ8L2Rpdj4gLS0+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiAqbmdGb3I9XCJsZXQgc3Mgb2Ygdmlld0xpc3Q/LnN1YnNlY3Rpb247bGV0IGkgPSBpbmRleDtcIj5cblx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0PGxpYi11Y1N1YnNlY3Rpb24gKm5nSWY9XCJzcy5zdWJzZWN0aW9uICE9ICcnXCIgW2lkXT1cInNzLnN1YlNlY3Rpb25JZCArICdpZCdcIiBbdGl0bGVdPVwic3Muc3ViU2VjdGlvblRpdGxlXCJcblx0XHRcdFx0XHRcdFx0W3BhbmVsXT1cInNzLnN1YlNlY3Rpb25JZFwiIFtsZWdhY3ldPVwiZmFsc2VcIiAoY29sbGFwc2UpPVwib25Db2xsYXBzZSgkZXZlbnQpXCI+XG5cdFx0XHRcdFx0XHQ8L2xpYi11Y1N1YnNlY3Rpb24+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ib2R5IGJvcmRlci10b3AgYm9yZGVyLWJvdHRvbVwiIFtpZF09J3NzLnN1YlNlY3Rpb25JZCcgWyhuZ2JDb2xsYXBzZSldPVwiaXNDb2xsYXBzZWRcIj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInAtM1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWkgb2Ygc3M/Lm1haW5JbmZvXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpc1Zpc2libGUobWk/LmNvbmRpdGlvbnMsIGkpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7ICdjb2wteHhsLTIgY29sLXhsLTMgY29sLWxnLTQgY29sLW1kLTYgY29sLXhzLTEyIHB5LTInOiBtaS5pc0hpZGUgPT0gdW5kZWZpbmVkIHx8ICFtaS5pc0hpZGUgfHwgKHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gIT0gJycgJiYgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSBudWxsKX1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJtaS5pc0hpZGUgPT0gdW5kZWZpbmVkIHx8ICFtaS5pc0hpZGUgfHwgKHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gIT0gJycgJiYgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSBudWxsKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nSWY9XCJtaS50eXBlICE9ICdzd2l0Y2gnXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBsYWJlbC1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc0xhYmVsICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzTGFiZWwgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+e3ttaS5sYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdJZj1cIm1pLnR5cGUgPT0gJ3N3aXRjaCdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBjYXNlIG9mIG1pPy5jYXNlXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwic3dpdGNoQ2FzZSh2aWV3SW5mb09iakxpc3RbaV0sY2FzZSlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBsYWJlbC1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwibWkuY3VzdG9tQ2xhc3NMYWJlbCAhPSB1bmRlZmluZWQgPyBtaS5jdXN0b21DbGFzc0xhYmVsIDogJydcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT57e2Nhc2UucmVzdWx0LmxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwidmlld0luZm9PYmpMaXN0W2ldICE9IHVuZGVmaW5lZFwiIGNsYXNzPVwiY29sLW1kLTEyXCIgW25nQ2xhc3NdPVwieyAndGV4dC1sZWZ0JzogbWkucG9zaXRpb24gPT0gJ2xlZnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAndGV4dC1yaWdodCc6IG1pLnBvc2l0aW9uID09ICdyaWdodCcsICd0ZXh0LWNlbnRlcic6IG1pLnBvc2l0aW9uID09ICdjZW50ZXInIH1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCIobWkudHlwZSA9PSAnYm9vbGVhbicgJiYgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSBudWxsKSB8fCAodmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSAnJyAmJiB2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldICE9IG51bGwpIHx8IG1pLnR5cGUgPT0gJ3N3aXRjaCcgfHwgbWkudHlwZSA9PSdjb25jYXQnOyB0aGVuIG5vbkVtcHR5TGFiZWwgZWxzZSBlbXB0eUxhYmVsXCI+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjZW1wdHlMYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCAqbmdJZj1cIm1pLnR5cGUgPT0gJ2JsYW5rJ1wiPjwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgKm5nSWY9XCJtaS50eXBlICE9ICdibGFuaydcIiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgbGFiZWwtZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT4tPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjbm9uRW1wdHlMYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWkudHlwZSA9PSAndGV4dCdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJ2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldICE9ICcnICYmIHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gIT0gbnVsbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJsYWJlbC1jb250cm9sIGJyZWFrd29yZCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gPT0gJycgfHwgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSA9PSBudWxsXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImxhYmVsLWNvbnRyb2wgbGFiZWwtZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+LVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsICpuZ0lmPVwibWkudHlwZSA9PSAnY3VycmVuY3knXCIgY2xhc3M9XCJsYWJlbC1jb250cm9sIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT57eyB2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldIHwgbnVtYmVyOiBtaT8ucHJlY2lzaW9uID8gbWk/LnByZWNpc2lvbiA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcwLjInIDonZW4tVVMnIH19IDxzcGFuICpuZ0lmPVwibWk/LklzUHJjbnRcIj4mbmJzcDslPC9zcGFuPiA8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsICpuZ0lmPVwibWkudHlwZSA9PSAnZGF0ZSdcIiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgaXRlbS1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfCB1Y2RhdGU6IChtaT8uZGF0ZUZvcm1hdCkgPyBtaT8uZGF0ZUZvcm1hdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdkZC1NTU0teXl5eScgfX0gPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCAqbmdJZj1cIm1pLnR5cGUgPT0gJ2xpbmsnXCIgY2xhc3M9XCJsYWJlbC1jb250cm9sIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiIHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgKm5nSWY9XCIhbWk/LmlzRnVsbHBhdGhcIiBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZVwiIHN0eWxlPVwibWF4LXdpZHRoOiAyNzBweFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV1cIiBbcm91dGVyTGlua109XCJnZW5Sb3V0ZXJMaW5rKG1pLnBhdGgpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdGFyZ2V0XT1cIm1pLnRhcmdldFwiIFtxdWVyeVBhcmFtc109XCJnZW5BY3Rpb24odmlld0luZm9PYmpMaXN0W2ldLCBtaS5wYXJhbSlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIihtaS5pc0N1cnJlbmN5ICE9IHVuZGVmaW5lZCAmJiBtaS5pc0N1cnJlbmN5KVwiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldIHwgbnVtYmVyOicuMic6J2VuLVVTJyB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIihtaS5pc0N1cnJlbmN5ID09IHVuZGVmaW5lZCB8fCAhbWkuaXNDdXJyZW5jeSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSAqbmdJZj1cIm1pPy5pc0Z1bGxwYXRoXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJtYXgtd2lkdGg6IDI3MHB4XCIgW3RpdGxlXT1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJyZWRpcmVjdEZ1bGxQYXRoKG1pLmZ1bGxwYXRoLCBnZW5BY3Rpb24odmlld0luZm9PYmpMaXN0W2ldLCBtaS5wYXJhbSksIG1pLnRhcmdldCwgbWkpXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCIobWkuaXNDdXJyZW5jeSAhPSB1bmRlZmluZWQgJiYgbWkuaXNDdXJyZW5jeSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSB8IG51bWJlcjonLjInOidlbi1VUycgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCIobWkuaXNDdXJyZW5jeSA9PSB1bmRlZmluZWQgfHwgIW1pLmlzQ3VycmVuY3kpXCI+e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgKm5nSWY9XCJtaS50eXBlID09ICdjYWxsYmFjaydcIiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgbGFiZWwtZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiIHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiY2FsbGJhY2tGdW5jdGlvbih2aWV3SW5mb09iakxpc3RbaV0sIG1pLmtleSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfX08L2E+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHRhcmVhICpuZ0lmPVwibWkudHlwZSA9PSAndGV4dGFyZWEnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByZWFkb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT57eyB2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldIH19PC90ZXh0YXJlYT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWkudHlwZSA9PSAnYm9vbGVhbidcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiIHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gPT0gdHJ1ZVwiPlllczwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWNvbnRyb2wgaXRlbS1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJ2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldID09IGZhbHNlXCI+Tm88L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDxsYWJlbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAqbmdJZj1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gPT0gJycgfHwgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSA9PSBudWxsXCI+LTwvbGFiZWw+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJtaS50eXBlID09ICdjb25jYXQnXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWNvbnRyb2wgYnJlYWt3b3JkIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+e3sgbWkuY29uY2F0IH19PC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWkudHlwZSA9PSAnc3dpdGNoJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdGb3I9XCJsZXQgY3Mgb2YgbWk/LmNhc2VcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInN3aXRjaENhc2Uodmlld0luZm9PYmpMaXN0W2ldLGNzKSAmJiAhY3MuSGlkZGVuXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgYnJlYWt3b3JkIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZSAqbmdJZj1cImNzLnJlc3VsdC50eXBlID09ICd0ZXh0J1wiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnZGVjaW1hbCdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBicmVha3dvcmQgaXRlbS1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwibWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSAhPSB1bmRlZmluZWQgPyBtaS5jdXN0b21DbGFzc1Byb3BlcnR5IDogJydcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyB2aWV3SW5mb09iakxpc3RbaV1bY3MucmVzdWx0LnByb3BlcnR5XSB8IG51bWJlcjogY3MucmVzdWx0LnByZWNpc2lvbiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjcy5yZXN1bHQucHJlY2lzaW9uIDogJzAuMicgOidlbi1VUycgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQuSXNQcmNudFwiPiZuYnNwOyU8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNzLnJlc3VsdC50eXBlID09ICdkYXRlJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYWJlbC1jb250cm9sIGJyZWFrd29yZCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIHwgdWNkYXRlOiAnZGQtTU1NLXl5eXknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnbGluaydcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibGFiZWwtY29udHJvbCBpdGVtLWZpZWxkXCIgdHJhbnNsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZVwiIHN0eWxlPVwibWF4LXdpZHRoOiAyNzBweFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cInZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldXCIgW3RhcmdldF09XCJjcy5yZXN1bHQudGFyZ2V0XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcm91dGVyTGlua109XCJnZW5Sb3V0ZXJMaW5rKGNzLnJlc3VsdC5wYXRoKVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3F1ZXJ5UGFyYW1zXT1cImdlbkFjdGlvbih2aWV3SW5mb09iakxpc3RbaV0sY3MucmVzdWx0LnBhcmFtKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiKG1pLmlzQ3VycmVuY3kgIT0gdW5kZWZpbmVkICYmIG1pLmlzQ3VycmVuY3kpXCI+e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIHwgbnVtYmVyOicuMic6J2VuLVVTJyB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIihtaS5pc0N1cnJlbmN5ID09IHVuZGVmaW5lZCB8fCAhbWkuaXNDdXJyZW5jeSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlld0luZm9PYmpMaXN0W2ldW2NzLnJlc3VsdC5wcm9wZXJ0eV0gfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiY3MucmVzdWx0LnR5cGUgPT0gJ2Jvb2xlYW4nXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWNvbnRyb2wgYnJlYWt3b3JkIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwidmlld0luZm9PYmpMaXN0W2ldW2NzLnJlc3VsdC5wcm9wZXJ0eV0gPT0gJ3RydWUnIHx8IHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldID09IHRydWVcIj5ZZXM8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwidmlld0luZm9PYmpMaXN0W2ldW2NzLnJlc3VsdC5wcm9wZXJ0eV0gPT0gJ2ZhbHNlJyB8fCB2aWV3SW5mb09iakxpc3RbaV1bY3MucmVzdWx0LnByb3BlcnR5XSA9PSBmYWxzZVwiPk5vPC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnY29uY2F0J1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYWJlbC1jb250cm9sIGJyZWFrd29yZCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IGNzLnJlc3VsdC5jb25jYXQgfX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnY2FsbGJhY2snXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJjcy5yZXN1bHQuaXNUZXh0ICE9IHVuZGVmaW5lZCAmJiBjcy5yZXN1bHQuaXNUZXh0OyB0aGVuIHRleHRDYWxsYmFjayBlbHNlIGljb25DYWxsYmFja1wiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICN0ZXh0Q2FsbGJhY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImEtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImNhbGxiYWNrRnVuY3Rpb24odmlld0luZm9PYmpMaXN0W2ldLCBjcy5yZXN1bHQua2V5KVwiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIH19PC9hPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICNpY29uQ2FsbGJhY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBbbmdDbGFzc109XCJbY3MucmVzdWx0LnRvb2x0aXAgIT0gdW5kZWZpbmVkICYmIGNzLnJlc3VsdC50b29sdGlwICE9ICcnID8gJ3Rvb2x0aXBzJyA6ICcnLCBjcy5yZXN1bHQuYW5jaG9yID09IHVuZGVmaW5lZCB8fCBjcy5yZXN1bHQuYW5jaG9yID09ICcnID8gJ2EtbGluayBwLTAnIDogY3MucmVzdWx0LmFuY2hvcl1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiY2FsbGJhY2tGdW5jdGlvbih2aWV3SW5mb09iakxpc3RbaV0sIGNzLnJlc3VsdC5rZXkpXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiZm9udC1tZWRpdW0tMyBtci0yXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCIgY3MucmVzdWx0Lmljb24gPT0gdW5kZWZpbmVkIHx8IGNzLnJlc3VsdC5pY29uID09ICcnID8gJ2Z0LWVkaXQtMicgOiBjcy5yZXN1bHQuaWNvbiBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9pPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNzLnJlc3VsdC50b29sdGlwICE9IHVuZGVmaW5lZCAmJiBjcy5yZXN1bHQudG9vbHRpcCAhPSAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwiY3MucmVzdWx0LnRvb2x0aXAgIT0gdW5kZWZpbmVkICYmIGNzLnJlc3VsdC50b29sdGlwICE9ICcnID8gJ3Rvb2x0aXBzdGV4dCcgOiAnJ1wiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3MucmVzdWx0LnRvb2x0aXAgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZ3JpZC12aWV3IHBiLTNcIiAqbmdJZj1cImdyaWRWaWV3T2JqLmdyaWRWaWV3cy5sZW5ndGggPiAwXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgZ3JpZFZpZXcgb2YgaW5wdXRHcmlkVmlld09ianM7IGxldCBpID0gaW5kZXhcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItdWNTdWJzZWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZ3JpZFZpZXdPYmouZ3JpZFZpZXdzW2ldLnN1YnNlY3Rpb24gJiYgZ3JpZFZpZXdPYmouZ3JpZFZpZXdzW2ldLnN1YnNlY3Rpb24gIT09ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W2lkXT1cIidncmlkLXN1YnNlY3Rpb24taWQnK2lcIiBbdGl0bGVdPVwiZ3JpZFZpZXdPYmouZ3JpZFZpZXdzW2ldLnN1YnNlY3Rpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcGFuZWxdPVwiJ2dyaWQtc3Vic2VjdGlvbi1wYW5lbC0nK2lcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDwvbGliLXVjU3Vic2VjdGlvbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWJvZHlcIiBbaWRdPVwiJ2dyaWQtc3Vic2VjdGlvbi1wYW5lbC0nK2lcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSAgICAgICAgICAgICAgICAgICAgPGxpYi11Y2dyaWR2aWV3IFtncmlkSW5wdXRdPVwiZ3JpZFZpZXdcIiAoY2FsbGJhY2spPVwiZ3JpZEV2ZW50KCRldmVudClcIiAoaXNSZWZyZXNoKT1cIkdldEdyaWRWaWV3RGF0YShncmlkVmlld09iai5ncmlkVmlld3NbaV0sIGdyaWRWaWV3KVwiPjwvbGliLXVjZ3JpZHZpZXc+LS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxsaWItdWN0YWJsZSBbZ3JpZE9ial09XCJncmlkVmlld1wiIFtzdGFuZGFsb25lXT1cImZhbHNlXCIgKGNhbGxiYWNrKT1cImdyaWRFdmVudCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbY2xhc3NQYWRkaW5nXT1cIidweC0wJ1wiPjwvbGliLXVjdGFibGU+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L3NlY3Rpb24+Il19
768
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3ZpZXdnZW5lcmljL3NyYy9saWIvdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3ZpZXdnZW5lcmljL3NyYy9saWIvdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sc0JBQXNCO0lBZ0J2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbkJELGNBQWMsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFELFdBQVcsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM3QyxPQUFPLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFDNUQsUUFBUSxHQUFzQixJ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Q0FBQTthQUNoQjtTQUNGO1FBRUQsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEMsS0FBSyxHQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixLQUFLLEdBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQztTQUN6QztRQUVELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO1lBQ3RDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDWjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0E5MUJVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDBMQ2pCbkMsZzFoQkF3TlU7OzRGRHZNRyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1CO3dOQUtwQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpc0Rldk1vZGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFVjVmlld0dlbmVyaWNPYmogfSBmcm9tIFwiLi9tb2RlbC91Yy12aWV3LWdlbmVyaWMtb2JqLm1vZGVsXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZVwiO1xuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSBcImNyeXB0by1qc1wiO1xuaW1wb3J0IHsgR3JpZFZpZXdPYmogfSBmcm9tIFwiLi9tb2RlbC9ncmlkLXZpZXctb2JqLm1vZGVsXCI7XG5pbXBvcnQgeyBJbnB1dEdyaWRPYmogfSBmcm9tIFwiLi9tb2RlbC9pbnB1dC1ncmlkLW9iai5tb2RlbFwiO1xuaW1wb3J0IHsgTmd4Um91dGVyU2VydmljZSB9IGZyb20gJ0BhZGlucy9mZS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImxpYi11Y3ZpZXdnZW5lcmljXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFsnLi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVjdmlld2dlbmVyaWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB2aWV3R2VuZXJpY09iajogVWNWaWV3R2VuZXJpY09iaiA9IG5ldyBVY1ZpZXdHZW5lcmljT2JqKCk7XG4gIEBJbnB1dCgpIGdyaWRWaWV3T2JqOiBHcmlkVmlld09iaiA9IG5ldyBHcmlkVmlld09iaigpO1xuICBASW5wdXQoKSByZWZyZXNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgVXNlckFjY2VzczogYW55O1xuICBpbnB1dEdyaWRWaWV3T2JqczogQXJyYXk8SW5wdXRHcmlkT2JqPiA9IG5ldyBBcnJheTxJbnB1dEdyaWRPYmo+KCk7XG4gIHZpZXdMaXN0OiBhbnkgPSBcIlwiO1xuICBnZXRMaXN0OiBhbnk7XG4gIHZpZXdJbmZvT2JqTGlzdDogYW55O1xuICBpc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XG4gIElzQ2FyZDogYm9vbGVhbiA9IHRydWU7XG4gIGlzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ3hSb3V0ZXI6IE5neFJvdXRlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5Vc2VyQWNjZXNzID0gSlNPTi5wYXJzZShcbiAgICAgIHRoaXMuR2V0Q29va2llKHRoaXMuY29va2llU2VydmljZSwgXCJVc2VyQWNjZXNzXCIpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmdldExpc3QgPSB0aGlzLm5neFJvdXRlci5nZXRRdWVyeVBhcmFtcyhwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKFwiZW5cIik7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmdcIikgfHwgXCJlblwiKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEVYUEVSSU1FTlRBTCBCYXNlVmlldyBBUElcbiAgICAvLyBUT0RPOiByZW1vdmUgYWZ0ZXIgc3RhYmxlXG4gICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmouRXhwZXJpbWVudGFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmouRXhwZXJpbWVudGFsID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIEVORCBFWFBFUklNRU5UQUxcblxuICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgdGhpcy5DaGVja0lzQ2FyZCgpO1xuXG4gICAgdGhpcy5yZWZyZXNoLnN1YnNjcmliZShpc1VwZGF0ZSA9PiB7XG4gICAgICBpZiAoIWlzVXBkYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUmVmcmVzaCB2aWV3IGNvbnRlbnRcbiAgICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgICB0aGlzLnJlZnJlc2guZW1pdChmYWxzZSk7XG4gICAgfSlcbiAgfVxuXG4gIG9uQ29sbGFwc2UoZXYpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gISFldj8uaXNDb2xsYXBzZWQ7XG4gIH1cblxuICBwcml2YXRlIENoZWNrSXNDYXJkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmouSXNDYXJkID09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5Jc0NhcmQgPT0gbnVsbFxuICAgIClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLklzQ2FyZCA9IHRoaXMudmlld0dlbmVyaWNPYmouSXNDYXJkO1xuICB9XG5cbiAgaW5pdGlhdGVGb3JtKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmouZGF0YUlucHV0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudmlld0dlbmVyaWNPYmouZGF0YUlucHV0KS5sZW5ndGggIT09IDBcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlndXJhdGlvbih7IC4uLnRoaXMudmlld0dlbmVyaWNPYmouZGF0YUlucHV0IH0pO1xuICAgICAgdGhpcy5ncmlkVmlld09iai5ncmlkVmlld3MgPSB0aGlzLnZpZXdHZW5lcmljT2JqLmRhdGFJbnB1dC5zdWJzZWN0aW9uWzBdPy5ncmlkVmlld3MgfHwgW107XG4gICAgICB0aGlzLmluaXRpYWxpemVHcmlkVmlld3MoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdldEpTT04odGhpcy52aWV3R2VuZXJpY09iai52aWV3SW5wdXQpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5zZXRDb25maWd1cmF0aW9uKGRhdGEpO1xuICAgIH0pO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUdyaWRWaWV3cygpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUdyaWRWaWV3cygpIHtcbiAgICBpZiAodGhpcy5ncmlkVmlld09iaiAmJiB0aGlzLmdyaWRWaWV3T2JqLmdyaWRWaWV3cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRWaWV3T2JqLmdyaWRWaWV3cy5tYXAoYXN5bmMgKGdyaWRWaWV3KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dEdyaWRPYmogPSBuZXcgSW5wdXRHcmlkT2JqKCk7XG4gICAgICBpbnB1dEdyaWRPYmouZGF0YUlucHV0ID0gZ3JpZFZpZXcudGFibGVJbnB1dDtcbiAgICAgIGlucHV0R3JpZE9iai5yZXN1bHREYXRhID0geyBEYXRhOiBbXSB9O1xuICAgICAgaW5wdXRHcmlkT2JqLmlzU3Vic2VjdGlvbiA9IGdyaWRWaWV3LmlzU3Vic2VjdGlvbiB8fCBmYWxzZTtcbiAgICAgIGlucHV0R3JpZE9iai51c2VQYWdpbmF0aW9uID0gZ3JpZFZpZXcudXNlUGFnaW5hdGlvbiB8fCB0cnVlO1xuICAgICAgaW5wdXRHcmlkT2JqLnRpdGxlID0gZ3JpZFZpZXcudGl0bGUgfHwgXCJcIjtcbiAgICAgIGF3YWl0IHRoaXMuR2V0R3JpZFZpZXdEYXRhKGdyaWRWaWV3LmdldERhdGEsIGlucHV0R3JpZE9iaik7XG4gICAgICB0aGlzLmlucHV0R3JpZFZpZXdPYmpzLnB1c2goaW5wdXRHcmlkT2JqKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEVudmlyb25tZW50KGVudmkpIHtcbiAgICBjb25zdCBmaWx0ZXJlZEVudmlzID0gdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmZpbHRlcihcbiAgICAgICh2KSA9PiB2LmVudmlyb25tZW50ID09IGVudmlcbiAgICApO1xuICAgIHJldHVybiBmaWx0ZXJlZEVudmlzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEVudmlzWzBdIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIEdldEdyaWRWaWV3RGF0YShtZXRhOiBhbnksIGlucHV0R3JpZE9iajogSW5wdXRHcmlkT2JqKSB7XG4gICAgbGV0IHRlbXBsTGlzdERhdGEgPSBbXTtcbiAgICBjb25zdCBlbnZpVXJsID0gbWV0YS5lbnZpcm9ubWVudCAmJiB0aGlzLmdldEVudmlyb25tZW50KG1ldGEuZW52aXJvbm1lbnQpO1xuICAgIGF3YWl0IHRoaXMuaHR0cFxuICAgICAgLnBvc3QoZW52aVVybCA/IGVudmlVcmwudXJsICsgbWV0YS5hcGlQYXRoIDogbWV0YS5hcGlQYXRoLCBtZXRhLnJlcU9iailcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRlbXBsTGlzdERhdGEgPSByZXNwb25zZVttZXRhLmN1c3RvbU9iak5hbWUgfHwgXCJSZXR1cm5PYmplY3RcIl07XG4gICAgICAgIGlucHV0R3JpZE9iai5hcGlVcmwgPSBtZXRhLmFwaVBhdGg7XG4gICAgICAgIGlucHV0R3JpZE9iai5yZXN1bHREYXRhW1wiRGF0YVwiXSA9IG5ldyBBcnJheSgpO1xuICAgICAgICBpbnB1dEdyaWRPYmoucmVzdWx0RGF0YS5EYXRhID0gdGVtcGxMaXN0RGF0YTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ3JpZEV2ZW50KGV2KSB7XG4gICAgdGhpcy5jYWxsYmFja0Z1bmN0aW9uKGV2LlJvd09iaiwgZXYuS2V5KTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oZGF0YSkge1xuICAgIHRoaXMudmlld0xpc3QgPSBkYXRhO1xuICAgIHRoaXMudmlld0luZm9PYmpMaXN0ID0gW107XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGorKykge1xuICAgICAgdGhpcy52aWV3SW5mb09iakxpc3QucHVzaChqKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcgIT0gbnVsbCAmJlxuICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcubmFtZSAhPSBcIlwiXG4gICAgICApIHtcbiAgICAgICAgbGV0IHF1ZXJ5T2JqOiBhbnk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdHZW5lcmljT2JqLndoZXJlVmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcud2hlcmVRdWVyeSA9ICg8YW55PihcbiAgICAgICAgICAgIE9iamVjdFxuICAgICAgICAgICkpLnZhbHVlcyh0aGlzLmdldExpc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID1cbiAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoud2hlcmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIlxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9XG4gICAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICtcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvUGF0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID1cbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPVxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRVhQRVJJTUVOVEFMIEJhc2VWaWV3IEFQSVxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgYWZ0ZXIgc3RhYmxlXG4gICAgICAgIGlmICh0aGlzLnZpZXdHZW5lcmljT2JqLkV4cGVyaW1lbnRhbCkge1xuICAgICAgICAgIGNvbnN0IF9lbnZpcm9ubWVudFVybCA9IHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50LnN1YnN0cmluZygwLCB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudC5sZW5ndGgtMyk7XG4gICAgICAgICAgY29uc3QgX3FyeVZpZXcgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcubmFtZTtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSBgJHtfZW52aXJvbm1lbnRVcmx9L3YxL0Jhc2VWaWV3LyR7X3FyeVZpZXd9YFxuICAgICAgICB9XG4gICAgICAgIC8vIEVORCBFWFBFUklNRU5UQUxcblxuICAgICAgICBxdWVyeU9iaiA9IHtcbiAgICAgICAgICBxdWVyeXN0cmluZzogdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdCh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGgsIHF1ZXJ5T2JqKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZVtcIkRhdGFcIl1bMF07XG5cbiAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICBsZXQgeSA9IDA7XG4gICAgICAgICAgICAgICAgeSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mby5sZW5ndGg7XG4gICAgICAgICAgICAgICAgeSsrXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wcm9wZXJ0eUxpc3QgIT1cbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucHJvcGVydHlMaXN0Lmxlbmd0aCAhPVxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucHJvcGVydHlMaXN0O1xuICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCB6ID0gMDsgeiA8IHByb3BlcnR5TGlzdC5sZW5ndGg7IHorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25jYXQgPVxuICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCArXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W3pdLnByZWZpeCArXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W3pdLnByb3BlcnR5XSArXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W3pdLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jb25jYXQgPSBjb25jYXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9zd2l0Y2ggY2FzZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcInN3aXRjaFwiKSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgeiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHogPCB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHorK1xuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBFbXB0eSA9IG5ldyBBcnJheTxib29sZWFuPigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5IaWRkZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGhpZGVJZkVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlSWZFbXB0eSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlSWZFbXB0eSAhPSBudWxsXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAudHlwZSAhPSBcImNvbmNhdFwiXG4gICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdC5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdC5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdC5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gIT0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGUgY29uY2F0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3QgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVzdWx0LnByb3BlcnR5TGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2F0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W2FdLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TGlzdFthXS5wcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAhPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5pbmNsdWRlcyh0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlSWZFbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0uSGlkZGVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0hpZGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAvL2NvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcGVydHlMaXN0ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDBcbiAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUxpc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2F0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUxpc3RbYV0uc3VmZml4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2VbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgICAgICAgICAgICAgIF0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIiAmJlxuICAgICAgICAgICAgICAgICAgKHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdCAhPSBudWxsKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRlbXBMaW5rID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3RbXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGhcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgIGlmICh0ZW1wTGluayAhPSB1bmRlZmluZWQgJiYgdGVtcExpbmsgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aCA9IHRlbXBMaW5rO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIiAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmxlbmd0aCAhPSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgeiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHogPCB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB6KytcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmVudmlyb25tZW50ID09XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzW3pdLmVudmlyb25tZW50XG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0Z1bGxwYXRoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZnVsbHBhdGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzW3pdLnVybCArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIlxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmlzRnVsbHBhdGggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5mdWxscGF0aCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIlxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZW52aXJvbm1lbnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IFwiXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGxldCB6ID0gMDtcbiAgICAgICAgICAgICAgeiA8IHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgIHorK1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZW52aXJvbm1lbnQgPT1cbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHNbel0uZW52aXJvbm1lbnRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID1cbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50c1t6XS51cmwgK1xuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvUGF0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9XG4gICAgICAgICAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICtcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvUGF0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID1cbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPVxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVxT2JqID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnJlcU9iaiB8fCB0aGlzLmdldExpc3Q7XG4gICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucmVxT2JqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5yZXFPYmpcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXFPYmpba2V5XSA9IHRoaXMuZ2V0TGlzdFt2YWx1ZSBhcyBzdHJpbmddIHx8IHRoaXMudmlld0dlbmVyaWNPYmouZGljdHNbdmFsdWUgYXMgc3RyaW5nXTtcbiAgICAgICAgICAgIGlmIChyZXFPYmpba2V5XSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmVxT2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGgsIHJlcU9iaikuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucmVzT2JqTmFtZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5yZXNPYmpOYW1lID09PSBcIlwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldID1cbiAgICAgICAgICAgICAgICByZXNwb25zZVt0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucmVzT2JqTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRKU09OKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBHZXRDb29raWUoY29va2llU2VydmljZTogQ29va2llU2VydmljZSwga2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWUgPSBjb29raWVTZXJ2aWNlLmdldChrZXkpO1xuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUudHJpbSgpID09IFwiXCIpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IF9rZXkgPSB0aGlzLnZpZXdHZW5lcmljT2JqPy5lbnZpcm9ubWVudD8uQ2hpcHBlcktleUNvb2tpZSA/PyBcIkFkSW5zRk9VMTIzNDU2NzhcIjtcbiAgICByZXR1cm4gdGhpcy5EZWNyeXB0U3RyaW5nKHZhbHVlLCBfa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgRGVjcnlwdFN0cmluZyhjaGlwcGVyVGV4dDogc3RyaW5nLCBjaGlwcGVyS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoXG4gICAgICBjaGlwcGVyS2V5ID09IHVuZGVmaW5lZCB8fFxuICAgICAgY2hpcHBlcktleS50cmltKCkgPT0gXCJcIiB8fFxuICAgICAgY2hpcHBlclRleHQgPT0gdW5kZWZpbmVkIHx8XG4gICAgICBjaGlwcGVyVGV4dC50cmltKCkgPT0gXCJcIlxuICAgIClcbiAgICAgIHJldHVybiBjaGlwcGVyVGV4dDtcbiAgICBsZXQgY2hpcHBlcktleUFyciA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGNoaXBwZXJLZXkpO1xuICAgIGxldCBpdiA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XG4gICAgbGV0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNoaXBwZXJUZXh0LCBjaGlwcGVyS2V5QXJyLCB7XG4gICAgICBpdjogaXYsXG4gICAgfSk7XG4gICAgbGV0IHBsYWluVGV4dCA9IGRlY3J5cHRlZC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XG4gICAgcmV0dXJuIHBsYWluVGV4dDtcbiAgfVxuXG4gIGdlbkFjdGlvbih2aWV3T2JqLCBwYXJhbSkge1xuICAgIGxldCBhcnJMaXN0OiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgdmlld09ialtwYXJhbVtpXS50eXBlXSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgdmlld09ialtwYXJhbVtpXS5wcm9wZXJ0eV0gIT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgYXJyTGlzdFtwYXJhbVtpXS50eXBlXSA9IHZpZXdPYmpbcGFyYW1baV0ucHJvcGVydHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyTGlzdFtwYXJhbVtpXS50eXBlXSA9IHBhcmFtW2ldLnByb3BlcnR5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCBzdGF0ZSBvZiBkYXRhIHRvIHJvdXRlciBzZXJ2aWNlXG4gICAgaWYgKCFpc0Rldk1vZGUoKSAmJiAodGhpcy52aWV3R2VuZXJpY09iaj8uZW52aXJvbm1lbnQ/LnVzZVNhZmVVcmwgPz8gZmFsc2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ3hSb3V0ZXIuY3JlYXRlUXVlcnlQYXJhbXMoYXJyTGlzdCk7XG4gICAgfVxuICAgIHJldHVybiBhcnJMaXN0O1xuICB9XG5cbiAgZ2VuUm91dGVyTGluayh1cmxMaW5rOiBzdHJpbmcpIHtcbiAgICBsZXQgdGVtcExpbmsgPSB1cmxMaW5rO1xuICAgIGlmIChcbiAgICAgIHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3RbdXJsTGlua10gIT0gbnVsbFxuICAgICkge1xuICAgICAgdGVtcExpbmsgPSB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt1cmxMaW5rXTtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBMaW5rO1xuICB9XG5cbiAgcmVkaXJlY3RGdWxsUGF0aChmdWxscGF0aDogc3RyaW5nLCBwYXJhbTogT2JqZWN0LCB0YXJnZXQ6IHN0cmluZywgaXRlbTogYW55KSB7XG4gICAgbGV0IHF1ZXJ5UGFyYW0gPSBcIlwiO1xuICAgIGxldCBfZnVsbHBhdGggPSBmdWxscGF0aCB8fCBcIlwiO1xuICAgIFxuICAgIGlmIChfZnVsbHBhdGggPT0gXCJcIikge1xuICAgICAgX2Z1bGxwYXRoID0gdGhpcy5nZW5GdWxscGF0aChpdGVtLmVudmlyb25tZW50LCBpdGVtLnBhdGgpXG4gICAgfVxuXG4gICAgY29uc3QgTGlzdE9iaiA9IE9iamVjdC5rZXlzKHBhcmFtKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IExpc3RPYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChxdWVyeVBhcmFtICE9IFwiXCIpIHtcbiAgICAgICAgcXVlcnlQYXJhbSA9IHF1ZXJ5UGFyYW0gKyBcIiZcIiArIExpc3RPYmpbaV0gKyBcIj1cIiArIHBhcmFtW0xpc3RPYmpbaV1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbSA9IExpc3RPYmpbaV0gKyBcIj1cIiArIHBhcmFtW0xpc3RPYmpbaV1dO1xuICAgICAgfVxuICAgIH1cbiAgICB3aW5kb3cub3BlbihfZnVsbHBhdGggKyBcIj9cIiArIHF1ZXJ5UGFyYW0sIHRhcmdldCk7XG4gIH1cblxuICBnZW5GdWxscGF0aChlbnZpcm9ubWVudDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBfZW52aSA9IHRoaXMuZ2V0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpO1xuICAgIGlmIChfZW52aSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVudmlyb25tZW50ICsgcGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gX2VudmkudXJsICsgcGF0aDtcbiAgfVxuXG4gIGNhbGxiYWNrRnVuY3Rpb24oaXRlbSwga2V5OiBzdHJpbmcgPSBcIlwiKSB7XG4gICAgbGV0IENCT2JqID0ge1xuICAgICAgVmlld09iajogaXRlbSxcbiAgICAgIEtleToga2V5LFxuICAgIH07XG4gICAgdGhpcy5jYWxsYmFjay5lbWl0KENCT2JqKTtcbiAgfVxuXG4gIGlzVmlzaWJsZShjb25kTGlzdCwgaTogbnVtYmVyKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKGNvbmRMaXN0ID09PSB1bmRlZmluZWQpIHJldHVybiByZXN1bHQ7XG4gICAgY29uc3QgX3RlbXAgPSB7XG4gICAgICAuLi50aGlzLnZpZXdHZW5lcmljT2JqLmRpY3RzLFxuICAgICAgZGljdHM6IHsuLi50aGlzLnZpZXdHZW5lcmljT2JqLmRpY3RzfSxcbiAgICAgIHZpZXdEYXRhOiB7Li4udGhpcy52aWV3SW5mb09iakxpc3RbaV19XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBBcnJheS5pc0FycmF5KGNvbmRMaXN0KSA/IGNvbmRMaXN0IDogW2NvbmRMaXN0XTtcbiAgICBmb3IgKGNvbnN0IGNyaXRlcmlhIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJlc3RyaWN0aW9uID0gY3JpdGVyaWE/LnJlc3RyaWN0aW9uLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBjb21wYXJlVmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoX3RlbXAsIGNyaXRlcmlhPy52YWx1ZSk7XG4gICAgICBjb25zdCBjcml0VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoX3RlbXAsIGNyaXRlcmlhPy5wcm9wZXJ0eSk7XG5cbiAgICAgIGlmIChyZXN0cmljdGlvbiA9PT0gJ0VRJykge1xuICAgICAgICBpZiAoY3JpdFZhbHVlID09PSBjb21wYXJlVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3RyaWN0aW9uID09PSAnTkVRJykge1xuICAgICAgICBpZiAoY3JpdFZhbHVlICE9PSBjb21wYXJlVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3RyaWN0aW9uID09PSAnR1QnKSB7XG4gICAgICAgIGlmIChjcml0VmFsdWUgPiBjb21wYXJlVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3RyaWN0aW9uID09PSAnR1RFJykge1xuICAgICAgICBpZiAoY3JpdFZhbHVlID49IGNvbXBhcmVWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdHJpY3Rpb24gPT09ICdMVCcpIHtcbiAgICAgICAgaWYgKGNyaXRWYWx1ZSA8IGNvbXBhcmVWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdHJpY3Rpb24gPT09ICdMVEUnKSB7XG4gICAgICAgIGlmIChjcml0VmFsdWUgPD0gY29tcGFyZVZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyZXN0cmljdGlvbiA9PT0gJ0lOJykge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnBhcnNlVmFsdWUoX3RlbXAsIGNyaXRlcmlhLnZhbHVlKSBhcyBzdHJpbmc7XG4gICAgICAgIGlmICh2YWx1ZXMuaW5jbHVkZXMoY3JpdFZhbHVlKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdHJpY3Rpb24gPT09ICdOT1RJTicpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5wYXJzZVZhbHVlKF90ZW1wLCBjcml0ZXJpYS52YWx1ZSkgYXMgc3RyaW5nO1xuICAgICAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyhjcml0VmFsdWUpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3dpdGNoQ2FzZShpdGVtLCBjb25kTGlzdCkge1xuICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRMaXN0LmNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiRVFcIikge1xuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT1cbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJORVFcIikge1xuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT1cbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJHVFwiKSB7XG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPiB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdURVwiKSB7XG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+PVxuICAgICAgICAgICAgY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxUXCIpIHtcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDwgY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA8IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRFXCIpIHtcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDw9XG4gICAgICAgICAgICBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDw9IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiSU5cIikge1xuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeCkgPT4geCA9PSBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldXG4gICAgICAgICAgICApID49IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeCkgPT4geCA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXVxuICAgICAgICAgICAgKSA+PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTklOXCIpIHtcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHgpID0+IHggPT0gaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XVxuICAgICAgICAgICAgKSA9PSAtMVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZS5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh4KSA9PiB4ID09IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdXG4gICAgICAgICAgICApID09IC0xXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpc051bWJlcih2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IGFueVtdKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDEgJiYgdmFsdWVbMF0gPT09IFwiMFwiKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFpc05hTihOdW1iZXIodmFsdWUpKTtcbiAgfTtcblxuICBwcml2YXRlIGlzQm9vbGVhbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAodmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCIgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJmYWxzZVwiKTtcbiAgfTtcblxuIHByaXZhdGUgcGFyc2VWYWx1ZShvYmplY3Q6IGFueSwgcHJvcGVydHk6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHByb3BlcnR5ID09PSBcIlwiKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5ID09PSBcIltdXCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHkgIT09IFwiXCIgJiYgdGhpcy5pc051bWJlcihwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4ocHJvcGVydHkpKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHkudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHByb3BlcnR5LnNwbGl0KFwiLlwiKTtcbiAgICBsZXQgdmFsdWUgPSBvYmplY3Q7XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IFwiXCIgJiYgdGhpcy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gIHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9ICB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwibnVsbFwiKSB7XG4gICAgICB2YWx1ZSA9IFwiXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iLCI8IS0tIERPIE5PVCBCRUFVVElGWSAvIFBSRVRUSUZZIFRISVMgRklMRSAtIHdpbGwgY2F1c2UgdGhlIGxhYmVsIGNhbm5vdCBiZSBoaWdobGlnaHRlZC9zZWxlY3RlZCBmb3IgY29weSAtLT5cbjxzcGFuIGhpZGRlbiBhdHRyLnZlcnNpb249XCIzLjQuMTgtY2FuYXJ5LjBcIj48L3NwYW4+XG48c2VjdGlvbiBpZD1cImhvcml6b250YWwtZm9ybS1sYXlvdXRzXCI+XG5cdDxkaXYgY2xhc3M9XCJyb3cgdGV4dC1sZWZ0XCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuXHRcdFx0PGRpdiBbbmdDbGFzc109XCJJc0NhcmQgPyAnY2FyZCcgOiAnJ1wiICpuZ0lmPVwiaXNSZWFkeVwiPlxuXHRcdFx0XHQ8IS0tIDxkaXYgY2xhc3M9XCJwbC0zIG1iLTIgbXQtMlwiICpuZ0lmPVwidmlld0xpc3Q/LnRpdGxlICE9ICcnXCI+XG5cdFx0XHRcdFx0PGg0IGNsYXNzPVwiY2FyZC10aXRsZSB1Y1NlYXJjaC10aXRsZVwiIGlkPVwiaG9yei1sYXlvdXQtY29sb3JlZC1jb250cm9sc1wiIHRyYW5zbGF0ZT57e3ZpZXdMaXN0LnRpdGxlfX08L2g0PlxuXHRcdFx0XHQ8L2Rpdj4gLS0+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiAqbmdGb3I9XCJsZXQgc3Mgb2Ygdmlld0xpc3Q/LnN1YnNlY3Rpb247bGV0IGkgPSBpbmRleDtcIj5cblx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0PGxpYi11Y1N1YnNlY3Rpb24gKm5nSWY9XCJzcy5zdWJzZWN0aW9uICE9ICcnXCIgW2lkXT1cInNzLnN1YlNlY3Rpb25JZCArICdpZCdcIiBbdGl0bGVdPVwic3Muc3ViU2VjdGlvblRpdGxlXCJcblx0XHRcdFx0XHRcdFx0W3BhbmVsXT1cInNzLnN1YlNlY3Rpb25JZFwiIFtsZWdhY3ldPVwiZmFsc2VcIiAoY29sbGFwc2UpPVwib25Db2xsYXBzZSgkZXZlbnQpXCI+XG5cdFx0XHRcdFx0XHQ8L2xpYi11Y1N1YnNlY3Rpb24+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ib2R5IGJvcmRlci10b3AgYm9yZGVyLWJvdHRvbVwiIFtpZF09J3NzLnN1YlNlY3Rpb25JZCcgWyhuZ2JDb2xsYXBzZSldPVwiaXNDb2xsYXBzZWRcIj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInAtM1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWkgb2Ygc3M/Lm1haW5JbmZvXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpc1Zpc2libGUobWk/LmNvbmRpdGlvbnMsIGkpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7ICdjb2wteHhsLTIgY29sLXhsLTMgY29sLWxnLTQgY29sLW1kLTYgY29sLXhzLTEyIHB5LTInOiBtaS5pc0hpZGUgPT0gdW5kZWZpbmVkIHx8ICFtaS5pc0hpZGUgfHwgKHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gIT0gJycgJiYgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSBudWxsKX1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJtaS5pc0hpZGUgPT0gdW5kZWZpbmVkIHx8ICFtaS5pc0hpZGUgfHwgKHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gIT0gJycgJiYgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSBudWxsKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nSWY9XCJtaS50eXBlICE9ICdzd2l0Y2gnXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBsYWJlbC1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc0xhYmVsICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzTGFiZWwgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+e3ttaS5sYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdJZj1cIm1pLnR5cGUgPT0gJ3N3aXRjaCdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBjYXNlIG9mIG1pPy5jYXNlXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwic3dpdGNoQ2FzZSh2aWV3SW5mb09iakxpc3RbaV0sY2FzZSlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBsYWJlbC1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwibWkuY3VzdG9tQ2xhc3NMYWJlbCAhPSB1bmRlZmluZWQgPyBtaS5jdXN0b21DbGFzc0xhYmVsIDogJydcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT57e2Nhc2UucmVzdWx0LmxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwidmlld0luZm9PYmpMaXN0W2ldICE9IHVuZGVmaW5lZFwiIGNsYXNzPVwiY29sLW1kLTEyXCIgW25nQ2xhc3NdPVwieyAndGV4dC1sZWZ0JzogbWkucG9zaXRpb24gPT0gJ2xlZnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAndGV4dC1yaWdodCc6IG1pLnBvc2l0aW9uID09ICdyaWdodCcsICd0ZXh0LWNlbnRlcic6IG1pLnBvc2l0aW9uID09ICdjZW50ZXInIH1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCIobWkudHlwZSA9PSAnYm9vbGVhbicgJiYgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSBudWxsKSB8fCAodmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSAhPSAnJyAmJiB2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldICE9IG51bGwpIHx8IG1pLnR5cGUgPT0gJ3N3aXRjaCcgfHwgbWkudHlwZSA9PSdjb25jYXQnOyB0aGVuIG5vbkVtcHR5TGFiZWwgZWxzZSBlbXB0eUxhYmVsXCI+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjZW1wdHlMYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCAqbmdJZj1cIm1pLnR5cGUgPT0gJ2JsYW5rJ1wiPjwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgKm5nSWY9XCJtaS50eXBlICE9ICdibGFuaydcIiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgbGFiZWwtZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT4tPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjbm9uRW1wdHlMYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWkudHlwZSA9PSAndGV4dCdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJ2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldICE9ICcnICYmIHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gIT0gbnVsbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJsYWJlbC1jb250cm9sIGJyZWFrd29yZCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gPT0gJycgfHwgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSA9PSBudWxsXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImxhYmVsLWNvbnRyb2wgbGFiZWwtZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+LVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsICpuZ0lmPVwibWkudHlwZSA9PSAnY3VycmVuY3knXCIgY2xhc3M9XCJsYWJlbC1jb250cm9sIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT57eyB2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldIHwgbnVtYmVyOiBtaT8ucHJlY2lzaW9uID8gbWk/LnByZWNpc2lvbiA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcwLjInIDonZW4tVVMnIH19IDxzcGFuICpuZ0lmPVwibWk/LklzUHJjbnRcIj4mbmJzcDslPC9zcGFuPiA8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsICpuZ0lmPVwibWkudHlwZSA9PSAnZGF0ZSdcIiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgaXRlbS1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfCB1Y2RhdGU6IChtaT8uZGF0ZUZvcm1hdCkgPyBtaT8uZGF0ZUZvcm1hdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdkZC1NTU0teXl5eScgfX0gPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCAqbmdJZj1cIm1pLnR5cGUgPT0gJ2xpbmsnXCIgY2xhc3M9XCJsYWJlbC1jb250cm9sIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiIHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgKm5nSWY9XCIhbWk/LmlzRnVsbHBhdGhcIiBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZVwiIHN0eWxlPVwibWF4LXdpZHRoOiAyNzBweFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV1cIiBbcm91dGVyTGlua109XCJnZW5Sb3V0ZXJMaW5rKG1pLnBhdGgpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdGFyZ2V0XT1cIm1pLnRhcmdldFwiIFtxdWVyeVBhcmFtc109XCJnZW5BY3Rpb24odmlld0luZm9PYmpMaXN0W2ldLCBtaS5wYXJhbSlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIihtaS5pc0N1cnJlbmN5ICE9IHVuZGVmaW5lZCAmJiBtaS5pc0N1cnJlbmN5KVwiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldIHwgbnVtYmVyOicuMic6J2VuLVVTJyB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIihtaS5pc0N1cnJlbmN5ID09IHVuZGVmaW5lZCB8fCAhbWkuaXNDdXJyZW5jeSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSAqbmdJZj1cIm1pPy5pc0Z1bGxwYXRoXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJtYXgtd2lkdGg6IDI3MHB4XCIgW3RpdGxlXT1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJyZWRpcmVjdEZ1bGxQYXRoKG1pLmZ1bGxwYXRoLCBnZW5BY3Rpb24odmlld0luZm9PYmpMaXN0W2ldLCBtaS5wYXJhbSksIG1pLnRhcmdldCwgbWkpXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCIobWkuaXNDdXJyZW5jeSAhPSB1bmRlZmluZWQgJiYgbWkuaXNDdXJyZW5jeSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSB8IG51bWJlcjonLjInOidlbi1VUycgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCIobWkuaXNDdXJyZW5jeSA9PSB1bmRlZmluZWQgfHwgIW1pLmlzQ3VycmVuY3kpXCI+e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgKm5nSWY9XCJtaS50eXBlID09ICdjYWxsYmFjaydcIiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgbGFiZWwtZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiIHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiY2FsbGJhY2tGdW5jdGlvbih2aWV3SW5mb09iakxpc3RbaV0sIG1pLmtleSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gfX08L2E+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHRhcmVhICpuZ0lmPVwibWkudHlwZSA9PSAndGV4dGFyZWEnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByZWFkb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT57eyB2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldIH19PC90ZXh0YXJlYT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWkudHlwZSA9PSAnYm9vbGVhbidcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiIHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gPT0gdHJ1ZVwiPlllczwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWNvbnRyb2wgaXRlbS1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJ2aWV3SW5mb09iakxpc3RbaV1bbWkucHJvcGVydHldID09IGZhbHNlXCI+Tm88L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDxsYWJlbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAqbmdJZj1cInZpZXdJbmZvT2JqTGlzdFtpXVttaS5wcm9wZXJ0eV0gPT0gJycgfHwgdmlld0luZm9PYmpMaXN0W2ldW21pLnByb3BlcnR5XSA9PSBudWxsXCI+LTwvbGFiZWw+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJtaS50eXBlID09ICdjb25jYXQnXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWNvbnRyb2wgYnJlYWt3b3JkIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+e3sgbWkuY29uY2F0IH19PC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWkudHlwZSA9PSAnc3dpdGNoJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdGb3I9XCJsZXQgY3Mgb2YgbWk/LmNhc2VcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInN3aXRjaENhc2Uodmlld0luZm9PYmpMaXN0W2ldLGNzKSAmJiAhY3MuSGlkZGVuXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhYmVsLWNvbnRyb2wgYnJlYWt3b3JkIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZSAqbmdJZj1cImNzLnJlc3VsdC50eXBlID09ICd0ZXh0J1wiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnZGVjaW1hbCdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtY29udHJvbCBicmVha3dvcmQgaXRlbS1maWVsZFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwibWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSAhPSB1bmRlZmluZWQgPyBtaS5jdXN0b21DbGFzc1Byb3BlcnR5IDogJydcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyB2aWV3SW5mb09iakxpc3RbaV1bY3MucmVzdWx0LnByb3BlcnR5XSB8IG51bWJlcjogY3MucmVzdWx0LnByZWNpc2lvbiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjcy5yZXN1bHQucHJlY2lzaW9uIDogJzAuMicgOidlbi1VUycgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQuSXNQcmNudFwiPiZuYnNwOyU8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNzLnJlc3VsdC50eXBlID09ICdkYXRlJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYWJlbC1jb250cm9sIGJyZWFrd29yZCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIHwgdWNkYXRlOiAnZGQtTU1NLXl5eXknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnbGluaydcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibGFiZWwtY29udHJvbCBpdGVtLWZpZWxkXCIgdHJhbnNsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZVwiIHN0eWxlPVwibWF4LXdpZHRoOiAyNzBweFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cInZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldXCIgW3RhcmdldF09XCJjcy5yZXN1bHQudGFyZ2V0XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcm91dGVyTGlua109XCJnZW5Sb3V0ZXJMaW5rKGNzLnJlc3VsdC5wYXRoKVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3F1ZXJ5UGFyYW1zXT1cImdlbkFjdGlvbih2aWV3SW5mb09iakxpc3RbaV0sY3MucmVzdWx0LnBhcmFtKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiKG1pLmlzQ3VycmVuY3kgIT0gdW5kZWZpbmVkICYmIG1pLmlzQ3VycmVuY3kpXCI+e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIHwgbnVtYmVyOicuMic6J2VuLVVTJyB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIihtaS5pc0N1cnJlbmN5ID09IHVuZGVmaW5lZCB8fCAhbWkuaXNDdXJyZW5jeSlcIj57e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlld0luZm9PYmpMaXN0W2ldW2NzLnJlc3VsdC5wcm9wZXJ0eV0gfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiY3MucmVzdWx0LnR5cGUgPT0gJ2Jvb2xlYW4nXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWNvbnRyb2wgYnJlYWt3b3JkIGl0ZW0tZmllbGRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIm1pLmN1c3RvbUNsYXNzUHJvcGVydHkgIT0gdW5kZWZpbmVkID8gbWkuY3VzdG9tQ2xhc3NQcm9wZXJ0eSA6ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGU+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwidmlld0luZm9PYmpMaXN0W2ldW2NzLnJlc3VsdC5wcm9wZXJ0eV0gPT0gJ3RydWUnIHx8IHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldID09IHRydWVcIj5ZZXM8L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwidmlld0luZm9PYmpMaXN0W2ldW2NzLnJlc3VsdC5wcm9wZXJ0eV0gPT0gJ2ZhbHNlJyB8fCB2aWV3SW5mb09iakxpc3RbaV1bY3MucmVzdWx0LnByb3BlcnR5XSA9PSBmYWxzZVwiPk5vPC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnY29uY2F0J1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYWJlbC1jb250cm9sIGJyZWFrd29yZCBpdGVtLWZpZWxkXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJtaS5jdXN0b21DbGFzc1Byb3BlcnR5ICE9IHVuZGVmaW5lZCA/IG1pLmN1c3RvbUNsYXNzUHJvcGVydHkgOiAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlPnt7IGNzLnJlc3VsdC5jb25jYXQgfX08L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjcy5yZXN1bHQudHlwZSA9PSAnY2FsbGJhY2snXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJjcy5yZXN1bHQuaXNUZXh0ICE9IHVuZGVmaW5lZCAmJiBjcy5yZXN1bHQuaXNUZXh0OyB0aGVuIHRleHRDYWxsYmFjayBlbHNlIGljb25DYWxsYmFja1wiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICN0ZXh0Q2FsbGJhY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImEtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImNhbGxiYWNrRnVuY3Rpb24odmlld0luZm9PYmpMaXN0W2ldLCBjcy5yZXN1bHQua2V5KVwiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZpZXdJbmZvT2JqTGlzdFtpXVtjcy5yZXN1bHQucHJvcGVydHldIH19PC9hPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICNpY29uQ2FsbGJhY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBbbmdDbGFzc109XCJbY3MucmVzdWx0LnRvb2x0aXAgIT0gdW5kZWZpbmVkICYmIGNzLnJlc3VsdC50b29sdGlwICE9ICcnID8gJ3Rvb2x0aXBzJyA6ICcnLCBjcy5yZXN1bHQuYW5jaG9yID09IHVuZGVmaW5lZCB8fCBjcy5yZXN1bHQuYW5jaG9yID09ICcnID8gJ2EtbGluayBwLTAnIDogY3MucmVzdWx0LmFuY2hvcl1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiY2FsbGJhY2tGdW5jdGlvbih2aWV3SW5mb09iakxpc3RbaV0sIGNzLnJlc3VsdC5rZXkpXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiZm9udC1tZWRpdW0tMyBtci0yXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCIgY3MucmVzdWx0Lmljb24gPT0gdW5kZWZpbmVkIHx8IGNzLnJlc3VsdC5pY29uID09ICcnID8gJ2Z0LWVkaXQtMicgOiBjcy5yZXN1bHQuaWNvbiBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9pPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNzLnJlc3VsdC50b29sdGlwICE9IHVuZGVmaW5lZCAmJiBjcy5yZXN1bHQudG9vbHRpcCAhPSAnJ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwiY3MucmVzdWx0LnRvb2x0aXAgIT0gdW5kZWZpbmVkICYmIGNzLnJlc3VsdC50b29sdGlwICE9ICcnID8gJ3Rvb2x0aXBzdGV4dCcgOiAnJ1wiPnt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3MucmVzdWx0LnRvb2x0aXAgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZ3JpZC12aWV3IHBiLTNcIiAqbmdJZj1cImdyaWRWaWV3T2JqLmdyaWRWaWV3cy5sZW5ndGggPiAwXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgZ3JpZFZpZXcgb2YgaW5wdXRHcmlkVmlld09ianM7IGxldCBpID0gaW5kZXhcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItdWNTdWJzZWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZ3JpZFZpZXdPYmouZ3JpZFZpZXdzW2ldLnN1YnNlY3Rpb24gJiYgZ3JpZFZpZXdPYmouZ3JpZFZpZXdzW2ldLnN1YnNlY3Rpb24gIT09ICcnXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W2lkXT1cIidncmlkLXN1YnNlY3Rpb24taWQnK2lcIiBbdGl0bGVdPVwiZ3JpZFZpZXdPYmouZ3JpZFZpZXdzW2ldLnN1YnNlY3Rpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcGFuZWxdPVwiJ2dyaWQtc3Vic2VjdGlvbi1wYW5lbC0nK2lcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDwvbGliLXVjU3Vic2VjdGlvbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWJvZHlcIiBbaWRdPVwiJ2dyaWQtc3Vic2VjdGlvbi1wYW5lbC0nK2lcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSAgICAgICAgICAgICAgICAgICAgPGxpYi11Y2dyaWR2aWV3IFtncmlkSW5wdXRdPVwiZ3JpZFZpZXdcIiAoY2FsbGJhY2spPVwiZ3JpZEV2ZW50KCRldmVudClcIiAoaXNSZWZyZXNoKT1cIkdldEdyaWRWaWV3RGF0YShncmlkVmlld09iai5ncmlkVmlld3NbaV0sIGdyaWRWaWV3KVwiPjwvbGliLXVjZ3JpZHZpZXc+LS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxsaWItdWN0YWJsZSBbZ3JpZE9ial09XCJncmlkVmlld1wiIFtzdGFuZGFsb25lXT1cImZhbHNlXCIgKGNhbGxiYWNrKT1cImdyaWRFdmVudCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbY2xhc3NQYWRkaW5nXT1cIidweC0wJ1wiPjwvbGliLXVjdGFibGU+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L3NlY3Rpb24+Il19
@@ -2,8 +2,8 @@ import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class UcviewgenericService {
4
4
  constructor() { }
5
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, providedIn: 'root' });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, providedIn: 'root' });
7
7
  }
8
8
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, decorators: [{
9
9
  type: Injectable,
@@ -11,4 +11,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11
11
  providedIn: 'root'
12
12
  }]
13
13
  }], ctorParameters: function () { return []; } });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWN2aWV3Z2VuZXJpYy9zcmMvbGliL3Vjdmlld2dlbmVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLGdCQUFnQixDQUFDOzJIQUZOLG9CQUFvQjsrSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVjdmlld2dlbmVyaWNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWN2aWV3Z2VuZXJpYy9zcmMvbGliL3Vjdmlld2dlbmVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLGdCQUFnQixDQUFDO3dHQUZOLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVjdmlld2dlbmVyaWNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuIl19
@@ -21,8 +21,8 @@ import { UctableModule } from '@adins/uctable';
21
21
 
22
22
  class UcviewgenericService {
23
23
  constructor() { }
24
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, providedIn: 'root' });
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, providedIn: 'root' });
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericService, decorators: [{
28
28
  type: Injectable,
@@ -871,8 +871,8 @@ class UcviewgenericComponent {
871
871
  }
872
872
  return value;
873
873
  }
874
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.HttpClient }, { token: i3.TranslateService }, { token: i4.CookieService }, { token: i5.NgxRouterService }], target: i0.ɵɵFactoryTarget.Component });
875
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UcviewgenericComponent, selector: "lib-ucviewgeneric", inputs: { viewGenericObj: "viewGenericObj", gridViewObj: "gridViewObj", refresh: "refresh" }, outputs: { callback: "callback" }, ngImport: i0, template: "<!-- DO NOT BEAUTIFY / PRETTIFY THIS FILE - will cause the label cannot be highlighted/selected for copy -->\n<span hidden attr.version=\"3.4.18-canary.0\"></span>\n<section id=\"horizontal-form-layouts\">\n\t<div class=\"row text-left\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div [ngClass]=\"IsCard ? 'card' : ''\" *ngIf=\"isReady\">\n\t\t\t\t<!-- <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\n\t\t\t\t\t<h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\n\t\t\t\t\t\t\t[panel]=\"ss.subSectionId\" [legacy]=\"false\" (collapse)=\"onCollapse($event)\">\n\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t<div class=\"form-body border-top border-bottom\" [id]='ss.subSectionId' [(ngbCollapse)]=\"isCollapsed\">\n\t\t\t\t\t\t\t<div class=\"p-3\">\n\t\t\t\t\t\t\t\t<div class=\"form-group row\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let mi of ss?.mainInfo\">\n\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"isVisible(mi?.conditions, i)\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'col-xxl-2 col-xl-3 col-lg-4 col-md-6 col-xs-12 py-2': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type != 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{mi.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngFor=\"let case of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{case.result.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-12\" [ngClass]=\"{ 'text-left': mi.position == 'left',\n\t\t\t\t\t\t\t\t\t\t\t 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #emptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'blank'\"></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type != 'blank'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #nonEmptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'text'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'currency'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision :\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'0.2' :'en-US' }} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'date'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | ucdate: (mi?.dateFormat) ? mi?.dateFormat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'dd-MMM-yyyy' }} </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'link'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"!mi?.isFullpath\" class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][mi.property]\" [routerLink]=\"genRouterLink(mi.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[target]=\"mi.target\" [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\" class=\"d-block text-truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 270px\" [title]=\"viewInfoObjList[i][mi.property]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target, mi)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'callback'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</textarea>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'boolean'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- <label\n\t\t\t\t\t\t\t\t\t\t\t *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ mi.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngFor=\"let cs of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate *ngIf=\"cs.result.type == 'text'\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'decimal'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ viewInfoObjList[i][cs.result.property] | number: cs.result.precision ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.precision : '0.2' :'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.IsPrcnt\">&nbsp;%</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'date'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][cs.result.property] | ucdate: 'dd-MMM-yyyy'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'link'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control item-field\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][cs.result.property]\" [target]=\"cs.result.target\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[routerLink]=\"genRouterLink(cs.result.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'boolean'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'true' || viewInfoObjList[i][cs.result.property] == true\">Yes</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'false' || viewInfoObjList[i][cs.result.property] == false\">No</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ cs.result.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'callback'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #textCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"a-link\" href=\"javascript:void(0);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #iconCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'a-link p-0' : cs.result.anchor]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"font-medium-3 mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.tooltip }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"grid-view pb-3\" *ngIf=\"gridViewObj.gridViews.length > 0\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let gridView of inputGridViewObjs; let i = index\">\n\t\t\t\t\t\t\t\t\t<lib-ucSubsection\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"gridViewObj.gridViews[i].subsection && gridViewObj.gridViews[i].subsection !== ''\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"'grid-subsection-id'+i\" [title]=\"gridViewObj.gridViews[i].subsection\"\n\t\t\t\t\t\t\t\t\t\t[panel]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t\t\t\t<div class=\"form-body\" [id]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t\t<!-- <lib-ucgridview [gridInput]=\"gridView\" (callback)=\"gridEvent($event)\" (isRefresh)=\"GetGridViewData(gridViewObj.gridViews[i], gridView)\"></lib-ucgridview>-->\n\t\t\t\t\t\t\t\t\t\t<lib-uctable [gridObj]=\"gridView\" [standalone]=\"false\" (callback)=\"gridEvent($event)\"\n\t\t\t\t\t\t\t\t\t\t\t[classPadding]=\"'px-0'\"></lib-uctable>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>", styles: [".label-field{color:var(--gray-font-2, #A1A3A5);font-size:12px!important;font-weight:500}.item-field{color:var(--Black_1, #3A4060);font-size:14px!important}.label-control{padding:0!important}.label-control>a{color:var(--blue, #246CFE)}.a-link{color:var(--blue, #246CFE);font-size:14px!important}@media (min-width: 1366px){.col-xxl-2{flex:0 0 20%;max-width:20%}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.UcDatePipe, name: "ucdate" }] });
874
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.HttpClient }, { token: i3.TranslateService }, { token: i4.CookieService }, { token: i5.NgxRouterService }], target: i0.ɵɵFactoryTarget.Component });
875
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UcviewgenericComponent, selector: "lib-ucviewgeneric", inputs: { viewGenericObj: "viewGenericObj", gridViewObj: "gridViewObj", refresh: "refresh" }, outputs: { callback: "callback" }, ngImport: i0, template: "<!-- DO NOT BEAUTIFY / PRETTIFY THIS FILE - will cause the label cannot be highlighted/selected for copy -->\n<span hidden attr.version=\"3.4.18-canary.0\"></span>\n<section id=\"horizontal-form-layouts\">\n\t<div class=\"row text-left\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div [ngClass]=\"IsCard ? 'card' : ''\" *ngIf=\"isReady\">\n\t\t\t\t<!-- <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\n\t\t\t\t\t<h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\n\t\t\t\t\t\t\t[panel]=\"ss.subSectionId\" [legacy]=\"false\" (collapse)=\"onCollapse($event)\">\n\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t<div class=\"form-body border-top border-bottom\" [id]='ss.subSectionId' [(ngbCollapse)]=\"isCollapsed\">\n\t\t\t\t\t\t\t<div class=\"p-3\">\n\t\t\t\t\t\t\t\t<div class=\"form-group row\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let mi of ss?.mainInfo\">\n\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"isVisible(mi?.conditions, i)\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'col-xxl-2 col-xl-3 col-lg-4 col-md-6 col-xs-12 py-2': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type != 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{mi.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngFor=\"let case of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{case.result.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-12\" [ngClass]=\"{ 'text-left': mi.position == 'left',\n\t\t\t\t\t\t\t\t\t\t\t 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #emptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'blank'\"></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type != 'blank'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #nonEmptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'text'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'currency'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision :\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'0.2' :'en-US' }} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'date'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | ucdate: (mi?.dateFormat) ? mi?.dateFormat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'dd-MMM-yyyy' }} </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'link'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"!mi?.isFullpath\" class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][mi.property]\" [routerLink]=\"genRouterLink(mi.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[target]=\"mi.target\" [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\" class=\"d-block text-truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 270px\" [title]=\"viewInfoObjList[i][mi.property]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target, mi)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'callback'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</textarea>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'boolean'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- <label\n\t\t\t\t\t\t\t\t\t\t\t *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ mi.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngFor=\"let cs of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate *ngIf=\"cs.result.type == 'text'\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'decimal'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ viewInfoObjList[i][cs.result.property] | number: cs.result.precision ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.precision : '0.2' :'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.IsPrcnt\">&nbsp;%</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'date'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][cs.result.property] | ucdate: 'dd-MMM-yyyy'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'link'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control item-field\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][cs.result.property]\" [target]=\"cs.result.target\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[routerLink]=\"genRouterLink(cs.result.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'boolean'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'true' || viewInfoObjList[i][cs.result.property] == true\">Yes</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'false' || viewInfoObjList[i][cs.result.property] == false\">No</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ cs.result.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'callback'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #textCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"a-link\" href=\"javascript:void(0);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #iconCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'a-link p-0' : cs.result.anchor]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"font-medium-3 mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.tooltip }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"grid-view pb-3\" *ngIf=\"gridViewObj.gridViews.length > 0\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let gridView of inputGridViewObjs; let i = index\">\n\t\t\t\t\t\t\t\t\t<lib-ucSubsection\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"gridViewObj.gridViews[i].subsection && gridViewObj.gridViews[i].subsection !== ''\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"'grid-subsection-id'+i\" [title]=\"gridViewObj.gridViews[i].subsection\"\n\t\t\t\t\t\t\t\t\t\t[panel]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t\t\t\t<div class=\"form-body\" [id]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t\t<!-- <lib-ucgridview [gridInput]=\"gridView\" (callback)=\"gridEvent($event)\" (isRefresh)=\"GetGridViewData(gridViewObj.gridViews[i], gridView)\"></lib-ucgridview>-->\n\t\t\t\t\t\t\t\t\t\t<lib-uctable [gridObj]=\"gridView\" [standalone]=\"false\" (callback)=\"gridEvent($event)\"\n\t\t\t\t\t\t\t\t\t\t\t[classPadding]=\"'px-0'\"></lib-uctable>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>", styles: [".label-field{color:var(--gray-font-2, #A1A3A5);font-size:12px!important;font-weight:500}.item-field{color:var(--Black_1, #3A4060);font-size:14px!important}.label-control{padding:0!important}.label-control>a{color:var(--blue, #246CFE)}.a-link{color:var(--blue, #246CFE);font-size:14px!important}@media (min-width: 1366px){.col-xxl-2{flex:0 0 20%;max-width:20%}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.UcDatePipe, name: "ucdate" }] });
876
876
  }
877
877
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UcviewgenericComponent, decorators: [{
878
878
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"adins-ucviewgeneric.mjs","sources":["../../../projects/ucviewgeneric/src/lib/ucviewgeneric.service.ts","../../../projects/ucviewgeneric/src/lib/model/uc-view-generic-obj.model.ts","../../../projects/ucviewgeneric/src/lib/model/grid-view-obj.model.ts","../../../projects/ucviewgeneric/src/lib/model/input-grid-obj.model.ts","../../../projects/ucviewgeneric/src/lib/ucviewgeneric.component.ts","../../../projects/ucviewgeneric/src/lib/ucviewgeneric.component.html","../../../projects/ucviewgeneric/src/lib/ucviewgeneric.module.ts","../../../projects/ucviewgeneric/src/public-api.ts","../../../projects/ucviewgeneric/src/adins-ucviewgeneric.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UcviewgenericService {\n\n constructor() { }\n}\n","\nexport class UcViewGenericObj {\n viewInput: string;\n viewEnvironment: string;\n navigationConst: any;\n ddlEnvironments: Array<EnviObj>;\n listEnvironments: Array<EnvisObj>;\n whereValue: Array<WhereValueObj>;\n IsCard: boolean = true;\n dataInput: any;\n dicts: Record<string, any>;\n environment: any;\n\n //EXPERIMENTAL BaseView API\n Experimental: boolean = false;\n\n constructor() {\n this.viewInput = \"\";\n this.viewEnvironment = \"\";\n this.ddlEnvironments = new Array<EnviObj>();\n this.listEnvironments = new Array<EnvisObj>();\n this.whereValue = new Array<WhereValueObj>();\n this.IsCard = true;\n this.dicts = {};\n this.Experimental = false;\n this.environment = {};\n }\n}\n\nexport class EnviObj {\n name: string;\n environment: string;\n\n constructor() {\n this.name = \"\";\n this.environment = \"\";\n }\n}\n\nexport class WhereValueObj {\n property: string;\n value: any;\n\n constructor() {\n this.property = \"\";\n }\n}\n\nexport class EnvisObj {\n environment: string;\n url: string;\n\n constructor() {\n this.environment = \"\";\n this.url = \"\";\n }\n}","export class GridViewObj {\n gridViews: GridViewInput[];\n constructor() {\n this.gridViews = [];\n }\n}\nexport class GridViewInput {\n subsection?: string;\n isSubsection: boolean;\n usePagination: boolean;\n title: string;\n getData: {\n environment: string;\n apiPath: string;\n customObjName: string;\n reqObj: any;\n };\n tableInput: {\n isSeq: boolean;\n headerList: any;\n bodyList: any;\n };\n}\n","import { UCSearchComponent } from \"@adins/ucsearch\";\n\nexport class InputGridObj {\n resultData: any;\n searchComp: UCSearchComponent;\n apiUrl: string;\n deleteUrl: string;\n pageNow: number;\n pageSize: number;\n pagingJson: string;\n navigationConst: any;\n switchValue: Array<SwitchValueObj>;\n addGridList: Array<InputAddGridObj>;\n dataInput: any;\n classPadding: string;\n usePagination: boolean;\n isSubsection: boolean;\n title: string;\n\n constructor() {\n this.apiUrl = \"\";\n this.deleteUrl = \"\";\n this.pageNow = 0;\n this.pageSize = 0;\n this.pagingJson = \"\";\n this.switchValue = new Array<SwitchValueObj>();\n this.addGridList = new Array<InputAddGridObj>();\n this.classPadding = \"\";\n }\n}\n\nexport class SwitchValueObj {\n property: string;\n value: any;\n\n constructor() {\n this.property = \"\";\n }\n}\n\nexport class InputAddGridObj {\n AddGridLabel: string;\n AddGridProperty: string;\n\n constructor() {\n this.AddGridLabel = \"\";\n this.AddGridProperty = \"\";\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, isDevMode } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { UcViewGenericObj } from \"./model/uc-view-generic-obj.model\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CookieService } from \"ngx-cookie\";\nimport * as CryptoJS from \"crypto-js\";\nimport { GridViewObj } from \"./model/grid-view-obj.model\";\nimport { InputGridObj } from \"./model/input-grid-obj.model\";\nimport { NgxRouterService } from '@adins/fe-core';\n\n@Component({\n selector: \"lib-ucviewgeneric\",\n templateUrl: \"./ucviewgeneric.component.html\",\n styleUrls: ['./ucviewgeneric.component.scss'],\n})\nexport class UcviewgenericComponent implements OnInit {\n @Input() viewGenericObj: UcViewGenericObj = new UcViewGenericObj();\n @Input() gridViewObj: GridViewObj = new GridViewObj();\n @Input() refresh: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() callback: EventEmitter<any> = new EventEmitter();\n\n UserAccess: any;\n inputGridViewObjs: Array<InputGridObj> = new Array<InputGridObj>();\n viewList: any = \"\";\n getList: any;\n viewInfoObjList: any;\n isReady: boolean = false;\n IsCard: boolean = true;\n isCollapsed: boolean = false;\n\n constructor(\n private route: ActivatedRoute,\n private http: HttpClient,\n private translateService: TranslateService,\n private cookieService: CookieService,\n private ngxRouter: NgxRouterService\n ) {\n this.UserAccess = JSON.parse(\n this.GetCookie(this.cookieService, \"UserAccess\")\n );\n this.route.queryParams.subscribe((params) => {\n this.getList = this.ngxRouter.getQueryParams(params);\n });\n\n this.translateService.setDefaultLang(\"en\");\n this.translateService.use(localStorage.getItem(\"lang\") || \"en\");\n }\n\n ngOnInit() {\n // EXPERIMENTAL BaseView API\n // TODO: remove after stable\n if (this.viewGenericObj.Experimental === undefined) {\n this.viewGenericObj.Experimental = false;\n }\n // END EXPERIMENTAL\n\n this.initiateForm();\n this.CheckIsCard();\n\n this.refresh.subscribe(isUpdate => {\n if (!isUpdate) {\n return;\n }\n\n // Refresh view content\n this.initiateForm();\n this.refresh.emit(false);\n })\n }\n\n onCollapse(ev) {\n this.isCollapsed = !!ev?.isCollapsed;\n }\n\n private CheckIsCard() {\n if (\n this.viewGenericObj.IsCard == undefined ||\n this.viewGenericObj.IsCard == null\n )\n return;\n this.IsCard = this.viewGenericObj.IsCard;\n }\n\n initiateForm() {\n if (\n this.viewGenericObj.dataInput !== undefined &&\n Object.keys(this.viewGenericObj.dataInput).length !== 0\n ) {\n this.setConfiguration({ ...this.viewGenericObj.dataInput });\n this.gridViewObj.gridViews = this.viewGenericObj.dataInput.subsection[0]?.gridViews || [];\n this.initializeGridViews();\n return;\n }\n\n this.getJSON(this.viewGenericObj.viewInput).subscribe((data) => {\n this.setConfiguration(data);\n });\n this.initializeGridViews();\n }\n\n initializeGridViews() {\n if (this.gridViewObj && this.gridViewObj.gridViews.length === 0) {\n return;\n }\n\n this.gridViewObj.gridViews.map(async (gridView) => {\n const inputGridObj = new InputGridObj();\n inputGridObj.dataInput = gridView.tableInput;\n inputGridObj.resultData = { Data: [] };\n inputGridObj.isSubsection = gridView.isSubsection || false;\n inputGridObj.usePagination = gridView.usePagination || true;\n inputGridObj.title = gridView.title || \"\";\n await this.GetGridViewData(gridView.getData, inputGridObj);\n this.inputGridViewObjs.push(inputGridObj);\n });\n }\n\n getEnvironment(envi) {\n const filteredEnvis = this.viewGenericObj.listEnvironments.filter(\n (v) => v.environment == envi\n );\n return filteredEnvis.length > 0 ? filteredEnvis[0] : null;\n }\n\n async GetGridViewData(meta: any, inputGridObj: InputGridObj) {\n let templListData = [];\n const enviUrl = meta.environment && this.getEnvironment(meta.environment);\n await this.http\n .post(enviUrl ? enviUrl.url + meta.apiPath : meta.apiPath, meta.reqObj)\n .toPromise()\n .then((response) => {\n templListData = response[meta.customObjName || \"ReturnObject\"];\n inputGridObj.apiUrl = meta.apiPath;\n inputGridObj.resultData[\"Data\"] = new Array();\n inputGridObj.resultData.Data = templListData;\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n gridEvent(ev) {\n this.callbackFunction(ev.RowObj, ev.Key);\n }\n\n setConfiguration(data) {\n this.viewList = data;\n this.viewInfoObjList = [];\n\n for (let j = 0; j < this.viewList.subsection.length; j++) {\n this.viewInfoObjList.push(j);\n }\n\n for (let i = 0; i < this.viewList.subsection.length; i++) {\n if (\n this.viewList.subsection[i].querystring != null &&\n this.viewList.subsection[i].querystring.name != \"\"\n ) {\n let queryObj: any;\n if (this.viewGenericObj.whereValue.length == 0) {\n this.viewList.subsection[i].querystring.whereQuery = (<any>(\n Object\n )).values(this.getList);\n } else {\n this.viewList.subsection[i].querystring.whereQuery =\n this.viewGenericObj.whereValue;\n }\n\n if (\n this.viewList.subsection[i].mainInfoPath != undefined &&\n this.viewList.subsection[i].mainInfoPath != \"\"\n ) {\n if (\n this.viewGenericObj.viewEnvironment != undefined &&\n this.viewGenericObj.viewEnvironment != \"\"\n ) {\n this.viewList.subsection[i].fullpath =\n this.viewGenericObj.viewEnvironment +\n this.viewList.subsection[i].mainInfoPath;\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n\n // EXPERIMENTAL BaseView API\n // TODO: remove after stable\n if (this.viewGenericObj.Experimental) {\n const _environmentUrl = this.viewGenericObj.viewEnvironment.substring(0, this.viewGenericObj.viewEnvironment.length-3);\n const _qryView = this.viewList.subsection[i].querystring.name;\n this.viewList.subsection[i].fullpath = `${_environmentUrl}/v1/BaseView/${_qryView}`\n }\n // END EXPERIMENTAL\n\n queryObj = {\n querystring: this.viewList.subsection[i].querystring,\n };\n this.http\n .post(this.viewList.subsection[i].fullpath, queryObj)\n .subscribe(\n (response) => {\n this.viewInfoObjList[i] = response[\"Data\"][0];\n\n for (\n let y = 0;\n y < this.viewList.subsection[i].mainInfo.length;\n y++\n ) {\n if (\n this.viewList.subsection[i].mainInfo[y].propertyList !=\n undefined &&\n this.viewList.subsection[i].mainInfo[y].propertyList.length !=\n 0\n ) {\n const propertyList =\n this.viewList.subsection[i].mainInfo[y].propertyList;\n let concat = \"\";\n for (let z = 0; z < propertyList.length; z++) {\n concat =\n concat +\n propertyList[z].prefix +\n this.viewInfoObjList[i][propertyList[z].property] +\n propertyList[z].suffix;\n }\n this.viewList.subsection[i].mainInfo[y].concat = concat;\n }\n\n //switch case\n if (this.viewList.subsection[i].mainInfo[y].type == \"switch\") {\n for (\n let z = 0;\n z < this.viewList.subsection[i].mainInfo[y].case.length;\n z++\n ) {\n let Empty = new Array<boolean>();\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden =\n false;\n //check hideIfEmpty\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .hideIfEmpty != undefined &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .hideIfEmpty != null\n ) {\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .type != \"concat\"\n ) {\n Empty.push(\n this.viewInfoObjList[i][\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.property\n ] != undefined &&\n this.viewInfoObjList[i][\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.property\n ] != null &&\n this.viewInfoObjList[i][\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.property\n ] != \"\"\n ? false\n : true\n );\n } else {\n // type concat\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList != undefined &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList.length != 0\n ) {\n const propertyList =\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.propertyList;\n let concat = \"\";\n for (let a = 0; a < propertyList.length; a++) {\n concat =\n concat +\n propertyList[a].prefix +\n this.viewInfoObjList[i][\n propertyList[a].property\n ] +\n propertyList[a].suffix;\n Empty.push(\n this.viewInfoObjList[i][\n propertyList[a].property\n ] != undefined &&\n this.viewInfoObjList[i][\n propertyList[a].property\n ] != null &&\n this.viewInfoObjList[i][\n propertyList[a].property\n ] != \"\"\n ? false\n : true\n );\n }\n this.viewList.subsection[i].mainInfo[y].case[\n z\n ].result.concat = concat;\n }\n }\n\n if (\n Empty.includes(true) &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .hideIfEmpty\n ) {\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden =\n true;\n this.viewList.subsection[i].mainInfo[y].isHide = true;\n }\n } else {\n //concat\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList != undefined &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList.length != 0\n ) {\n const propertyList =\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList;\n let concat = \"\";\n for (let a = 0; a < propertyList.length; a++) {\n concat =\n concat +\n propertyList[a].prefix +\n this.viewInfoObjList[i][propertyList[a].property] +\n propertyList[a].suffix;\n }\n this.viewList.subsection[i].mainInfo[y].case[\n z\n ].result.concat = concat;\n }\n }\n }\n }\n\n if (\n this.viewList.subsection[i].mainInfo[y].type == \"link\" &&\n (this.viewGenericObj.navigationConst != undefined ||\n this.viewGenericObj.navigationConst != null)\n ) {\n let tempLink =\n this.viewGenericObj.navigationConst[\n this.viewList.subsection[i].mainInfo[y].path\n ];\n if (tempLink != undefined && tempLink != null) {\n this.viewList.subsection[i].mainInfo[y].path = tempLink;\n }\n }\n if (\n this.viewList.subsection[i].mainInfo[y].type == \"link\" &&\n this.viewGenericObj.listEnvironments != undefined &&\n this.viewGenericObj.listEnvironments.length != 0\n ) {\n for (\n let z = 0;\n z < this.viewGenericObj.listEnvironments.length;\n z++\n ) {\n if (\n this.viewList.subsection[i].mainInfo[y].environment ==\n this.viewGenericObj.listEnvironments[z].environment\n ) {\n this.viewList.subsection[i].mainInfo[y].isFullpath = true;\n this.viewList.subsection[i].mainInfo[y].fullpath =\n this.viewGenericObj.listEnvironments[z].url +\n this.viewList.subsection[i].mainInfo[y].path;\n break;\n }\n }\n } else if (\n this.viewList.subsection[i].mainInfo[y].type == \"link\"\n ) {\n this.viewList.subsection[i].mainInfo[y].isFullpath = false;\n this.viewList.subsection[i].mainInfo[y].fullpath =\n this.viewList.subsection[i].mainInfo[y].path;\n }\n }\n this.isReady = true;\n },\n (error) => {\n console.log(error);\n }\n );\n } else {\n if (\n this.viewList.subsection[i].mainInfoPath != undefined &&\n this.viewList.subsection[i].mainInfoPath != \"\"\n ) {\n if (\n this.viewList.subsection[i].environment != undefined &&\n this.viewList.subsection[i].mainInfoPath != \"\"\n ) {\n for (\n let z = 0;\n z < this.viewGenericObj.listEnvironments.length;\n z++\n ) {\n if (\n this.viewList.subsection[i].environment ==\n this.viewGenericObj.listEnvironments[z].environment\n ) {\n this.viewList.subsection[i].fullpath =\n this.viewGenericObj.listEnvironments[z].url +\n this.viewList.subsection[i].mainInfoPath;\n break;\n }\n }\n } else if (\n this.viewGenericObj.viewEnvironment != undefined &&\n this.viewGenericObj.viewEnvironment != \"\"\n ) {\n this.viewList.subsection[i].fullpath =\n this.viewGenericObj.viewEnvironment +\n this.viewList.subsection[i].mainInfoPath;\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n\n const reqObj = this.viewList.subsection[i].reqObj || this.getList;\n if (this.viewList.subsection[i].reqObj !== undefined) {\n for (const [key, value] of Object.entries(\n this.viewList.subsection[i].reqObj\n )) {\n reqObj[key] = this.getList[value as string] || this.viewGenericObj.dicts[value as string];\n if (reqObj[key] == undefined) {\n reqObj[key] = value;\n }\n }\n }\n\n this.http.post(this.viewList.subsection[i].fullpath, reqObj).subscribe(\n (response) => {\n if (\n this.viewList.subsection[i].resObjName === undefined ||\n this.viewList.subsection[i].resObjName === \"\"\n ) {\n this.viewInfoObjList[i] = response;\n } else {\n this.viewInfoObjList[i] =\n response[this.viewList.subsection[i].resObjName];\n }\n this.isReady = true;\n },\n (error) => {\n console.log(error);\n }\n );\n }\n }\n }\n\n public getJSON(url: string): Observable<any> {\n return this.http.get(url);\n }\n\n private GetCookie(cookieService: CookieService, key: string) {\n let value = cookieService.get(key);\n if (value == undefined || value.trim() == \"\") return null;\n const _key = this.viewGenericObj?.environment?.ChipperKeyCookie ?? \"AdInsFOU12345678\";\n return this.DecryptString(value, _key);\n }\n\n private DecryptString(chipperText: string, chipperKey: string) {\n if (\n chipperKey == undefined ||\n chipperKey.trim() == \"\" ||\n chipperText == undefined ||\n chipperText.trim() == \"\"\n )\n return chipperText;\n let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\n let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\n let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, {\n iv: iv,\n });\n let plainText = decrypted.toString(CryptoJS.enc.Utf8);\n return plainText;\n }\n\n genAction(viewObj, param) {\n let arrList: any = {};\n\n for (let i = 0; i < param.length; i++) {\n if (\n viewObj[param[i].type] != undefined ||\n viewObj[param[i].property] != undefined\n ) {\n arrList[param[i].type] = viewObj[param[i].property];\n } else {\n arrList[param[i].type] = param[i].property;\n }\n }\n\n // Set state of data to router service\n if (!isDevMode() && (this.viewGenericObj?.environment?.useSafeUrl ?? false)) {\n return this.ngxRouter.createQueryParams(arrList);\n }\n return arrList;\n }\n\n genRouterLink(urlLink: string) {\n let tempLink = urlLink;\n if (\n this.viewGenericObj.navigationConst != undefined &&\n this.viewGenericObj.navigationConst[urlLink] != null\n ) {\n tempLink = this.viewGenericObj.navigationConst[urlLink];\n }\n return tempLink;\n }\n\n redirectFullPath(fullpath: string, param: Object, target: string, item: any) {\n let queryParam = \"\";\n let _fullpath = fullpath || \"\";\n \n if (_fullpath == \"\") {\n _fullpath = this.genFullpath(item.environment, item.path)\n }\n\n const ListObj = Object.keys(param);\n for (let i = 0; i < ListObj.length; i++) {\n if (queryParam != \"\") {\n queryParam = queryParam + \"&\" + ListObj[i] + \"=\" + param[ListObj[i]];\n } else {\n queryParam = ListObj[i] + \"=\" + param[ListObj[i]];\n }\n }\n window.open(_fullpath + \"?\" + queryParam, target);\n }\n\n genFullpath(environment: string, path: string) {\n const _envi = this.getEnvironment(environment);\n if (_envi === null) {\n return environment + path;\n }\n\n return _envi.url + path;\n }\n\n callbackFunction(item, key: string = \"\") {\n let CBObj = {\n ViewObj: item,\n Key: key,\n };\n this.callback.emit(CBObj);\n }\n\n isVisible(condList, i: number) {\n let result = true;\n if (condList === undefined) return result;\n const _temp = {\n ...this.viewGenericObj.dicts,\n dicts: {...this.viewGenericObj.dicts},\n viewData: {...this.viewInfoObjList[i]}\n };\n\n const conditions = Array.isArray(condList) ? condList : [condList];\n for (const criteria of conditions) {\n const restriction = criteria?.restriction.toUpperCase();\n const compareValue = this.parseValue(_temp, criteria?.value);\n const critValue = this.parseValue(_temp, criteria?.property);\n\n if (restriction === 'EQ') {\n if (critValue === compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'NEQ') {\n if (critValue !== compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'GT') {\n if (critValue > compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'GTE') {\n if (critValue >= compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'LT') {\n if (critValue < compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'LTE') {\n if (critValue <= compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'IN') {\n const values = this.parseValue(_temp, criteria.value) as string;\n if (values.includes(critValue)) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'NOTIN') {\n const values = this.parseValue(_temp, criteria.value) as string;\n if (!values.includes(critValue)) {\n result = true;\n } else {\n result = false;\n break;\n }\n }\n }\n \n return result;\n }\n\n switchCase(item, condList) {\n let condition = false;\n if (!item) return false;\n for (let i = 0; i < condList.conditions.length; i++) {\n if (condList.conditions[i].restriction == \"EQ\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] ==\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] == this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"NEQ\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] !=\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] != this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"GT\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] > condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] > this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"GTE\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] >=\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] >= this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"LT\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] < condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] < this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"LTE\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] <=\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] <= this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"IN\") {\n if (condList.conditions[i].isUser != true) {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == item[condList.conditions[i].property]\n ) >= 0\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == this.UserAccess[\"UserName\"]\n ) >= 0\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"NIN\") {\n if (condList.conditions[i].isUser != true) {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == item[condList.conditions[i].property]\n ) == -1\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == this.UserAccess[\"UserName\"]\n ) == -1\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n }\n }\n return condition;\n }\n\n private isNumber(value: string | boolean | any[]) {\n if (value === null || value === undefined) return false;\n if (value === true || value === false) return false;\n if (value.length > 1 && value[0] === \"0\") return false;\n if (Array.isArray(value)) return false;\n return !isNaN(Number(value));\n };\n\n private isBoolean(value: string) {\n return typeof value === \"string\" && (value.toLowerCase() === \"true\" || value.toLowerCase() === \"false\");\n };\n\n private parseValue(object: any, property: string): any {\n if (property === \"\") {\n return property;\n }\n\n if (property === \"[]\") {\n return [];\n }\n\n if (property !== \"\" && this.isNumber(property)) {\n return parseFloat(property);\n }\n\n if (this.isBoolean(property)) {\n return property.toLowerCase() === \"true\";\n }\n\n if (typeof property === 'boolean') {\n return property;\n }\n\n const properties = property.split(\".\");\n let value = object;\n\n for (const prop of properties) {\n if (value.hasOwnProperty(prop)) {\n value = value[prop];\n } else {\n return property\n }\n }\n\n if (value !== \"\" && this.isNumber(value)) {\n value = parseFloat(value);\n }\n \n if (this.isBoolean(value)) {\n value = value.toLowerCase() === \"true\";\n }\n\n if (value === null || value === \"null\") {\n value = \"\";\n }\n\n return value;\n }\n}\n","<!-- DO NOT BEAUTIFY / PRETTIFY THIS FILE - will cause the label cannot be highlighted/selected for copy -->\n<span hidden attr.version=\"3.4.18-canary.0\"></span>\n<section id=\"horizontal-form-layouts\">\n\t<div class=\"row text-left\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div [ngClass]=\"IsCard ? 'card' : ''\" *ngIf=\"isReady\">\n\t\t\t\t<!-- <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\n\t\t\t\t\t<h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\n\t\t\t\t\t\t\t[panel]=\"ss.subSectionId\" [legacy]=\"false\" (collapse)=\"onCollapse($event)\">\n\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t<div class=\"form-body border-top border-bottom\" [id]='ss.subSectionId' [(ngbCollapse)]=\"isCollapsed\">\n\t\t\t\t\t\t\t<div class=\"p-3\">\n\t\t\t\t\t\t\t\t<div class=\"form-group row\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let mi of ss?.mainInfo\">\n\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"isVisible(mi?.conditions, i)\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'col-xxl-2 col-xl-3 col-lg-4 col-md-6 col-xs-12 py-2': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type != 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{mi.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngFor=\"let case of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{case.result.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-12\" [ngClass]=\"{ 'text-left': mi.position == 'left',\n\t\t\t\t\t\t\t\t\t\t\t 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #emptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'blank'\"></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type != 'blank'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #nonEmptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'text'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'currency'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision :\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'0.2' :'en-US' }} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'date'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | ucdate: (mi?.dateFormat) ? mi?.dateFormat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'dd-MMM-yyyy' }} </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'link'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"!mi?.isFullpath\" class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][mi.property]\" [routerLink]=\"genRouterLink(mi.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[target]=\"mi.target\" [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\" class=\"d-block text-truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 270px\" [title]=\"viewInfoObjList[i][mi.property]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target, mi)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'callback'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</textarea>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'boolean'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- <label\n\t\t\t\t\t\t\t\t\t\t\t *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ mi.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngFor=\"let cs of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate *ngIf=\"cs.result.type == 'text'\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'decimal'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ viewInfoObjList[i][cs.result.property] | number: cs.result.precision ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.precision : '0.2' :'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.IsPrcnt\">&nbsp;%</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'date'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][cs.result.property] | ucdate: 'dd-MMM-yyyy'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'link'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control item-field\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][cs.result.property]\" [target]=\"cs.result.target\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[routerLink]=\"genRouterLink(cs.result.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'boolean'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'true' || viewInfoObjList[i][cs.result.property] == true\">Yes</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'false' || viewInfoObjList[i][cs.result.property] == false\">No</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ cs.result.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'callback'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #textCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"a-link\" href=\"javascript:void(0);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #iconCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'a-link p-0' : cs.result.anchor]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"font-medium-3 mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.tooltip }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"grid-view pb-3\" *ngIf=\"gridViewObj.gridViews.length > 0\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let gridView of inputGridViewObjs; let i = index\">\n\t\t\t\t\t\t\t\t\t<lib-ucSubsection\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"gridViewObj.gridViews[i].subsection && gridViewObj.gridViews[i].subsection !== ''\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"'grid-subsection-id'+i\" [title]=\"gridViewObj.gridViews[i].subsection\"\n\t\t\t\t\t\t\t\t\t\t[panel]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t\t\t\t<div class=\"form-body\" [id]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t\t<!-- <lib-ucgridview [gridInput]=\"gridView\" (callback)=\"gridEvent($event)\" (isRefresh)=\"GetGridViewData(gridViewObj.gridViews[i], gridView)\"></lib-ucgridview>-->\n\t\t\t\t\t\t\t\t\t\t<lib-uctable [gridObj]=\"gridView\" [standalone]=\"false\" (callback)=\"gridEvent($event)\"\n\t\t\t\t\t\t\t\t\t\t\t[classPadding]=\"'px-0'\"></lib-uctable>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>","import { NgModule } from \"@angular/core\";\nimport { UcviewgenericComponent } from \"./ucviewgeneric.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\nimport { UcSubsectionModule } from \"@adins/uc-subsection\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { UcgridviewModule } from \"@adins/ucgridview\";\nimport { UctableModule } from '@adins/uctable';\nimport {NgbCollapseModule} from '@ng-bootstrap/ng-bootstrap';\nimport { UcdatepipeModule } from \"@adins/ucdatepipe\";\n\n@NgModule({\n declarations: [UcviewgenericComponent],\n imports: [\n CommonModule,\n RouterModule,\n UcSubsectionModule,\n UcgridviewModule,\n UctableModule,\n NgbCollapseModule,\n UcdatepipeModule,\n TranslateModule.forChild(),\n ],\n exports: [UcviewgenericComponent],\n})\nexport class UcviewgenericModule {}\n","/*\n * Public API Surface of ucviewgeneric\n */\n\nexport * from './lib/ucviewgeneric.service';\nexport * from './lib/ucviewgeneric.component';\nexport * from './lib/ucviewgeneric.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adins-ucviewgeneric.mjs","sources":["../../../projects/ucviewgeneric/src/lib/ucviewgeneric.service.ts","../../../projects/ucviewgeneric/src/lib/model/uc-view-generic-obj.model.ts","../../../projects/ucviewgeneric/src/lib/model/grid-view-obj.model.ts","../../../projects/ucviewgeneric/src/lib/model/input-grid-obj.model.ts","../../../projects/ucviewgeneric/src/lib/ucviewgeneric.component.ts","../../../projects/ucviewgeneric/src/lib/ucviewgeneric.component.html","../../../projects/ucviewgeneric/src/lib/ucviewgeneric.module.ts","../../../projects/ucviewgeneric/src/public-api.ts","../../../projects/ucviewgeneric/src/adins-ucviewgeneric.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UcviewgenericService {\n\n constructor() { }\n}\n","\nexport class UcViewGenericObj {\n viewInput: string;\n viewEnvironment: string;\n navigationConst: any;\n ddlEnvironments: Array<EnviObj>;\n listEnvironments: Array<EnvisObj>;\n whereValue: Array<WhereValueObj>;\n IsCard: boolean = true;\n dataInput: any;\n dicts: Record<string, any>;\n environment: any;\n\n //EXPERIMENTAL BaseView API\n Experimental: boolean = false;\n\n constructor() {\n this.viewInput = \"\";\n this.viewEnvironment = \"\";\n this.ddlEnvironments = new Array<EnviObj>();\n this.listEnvironments = new Array<EnvisObj>();\n this.whereValue = new Array<WhereValueObj>();\n this.IsCard = true;\n this.dicts = {};\n this.Experimental = false;\n this.environment = {};\n }\n}\n\nexport class EnviObj {\n name: string;\n environment: string;\n\n constructor() {\n this.name = \"\";\n this.environment = \"\";\n }\n}\n\nexport class WhereValueObj {\n property: string;\n value: any;\n\n constructor() {\n this.property = \"\";\n }\n}\n\nexport class EnvisObj {\n environment: string;\n url: string;\n\n constructor() {\n this.environment = \"\";\n this.url = \"\";\n }\n}","export class GridViewObj {\n gridViews: GridViewInput[];\n constructor() {\n this.gridViews = [];\n }\n}\nexport class GridViewInput {\n subsection?: string;\n isSubsection: boolean;\n usePagination: boolean;\n title: string;\n getData: {\n environment: string;\n apiPath: string;\n customObjName: string;\n reqObj: any;\n };\n tableInput: {\n isSeq: boolean;\n headerList: any;\n bodyList: any;\n };\n}\n","import { UCSearchComponent } from \"@adins/ucsearch\";\n\nexport class InputGridObj {\n resultData: any;\n searchComp: UCSearchComponent;\n apiUrl: string;\n deleteUrl: string;\n pageNow: number;\n pageSize: number;\n pagingJson: string;\n navigationConst: any;\n switchValue: Array<SwitchValueObj>;\n addGridList: Array<InputAddGridObj>;\n dataInput: any;\n classPadding: string;\n usePagination: boolean;\n isSubsection: boolean;\n title: string;\n\n constructor() {\n this.apiUrl = \"\";\n this.deleteUrl = \"\";\n this.pageNow = 0;\n this.pageSize = 0;\n this.pagingJson = \"\";\n this.switchValue = new Array<SwitchValueObj>();\n this.addGridList = new Array<InputAddGridObj>();\n this.classPadding = \"\";\n }\n}\n\nexport class SwitchValueObj {\n property: string;\n value: any;\n\n constructor() {\n this.property = \"\";\n }\n}\n\nexport class InputAddGridObj {\n AddGridLabel: string;\n AddGridProperty: string;\n\n constructor() {\n this.AddGridLabel = \"\";\n this.AddGridProperty = \"\";\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, isDevMode } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { UcViewGenericObj } from \"./model/uc-view-generic-obj.model\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CookieService } from \"ngx-cookie\";\nimport * as CryptoJS from \"crypto-js\";\nimport { GridViewObj } from \"./model/grid-view-obj.model\";\nimport { InputGridObj } from \"./model/input-grid-obj.model\";\nimport { NgxRouterService } from '@adins/fe-core';\n\n@Component({\n selector: \"lib-ucviewgeneric\",\n templateUrl: \"./ucviewgeneric.component.html\",\n styleUrls: ['./ucviewgeneric.component.scss'],\n})\nexport class UcviewgenericComponent implements OnInit {\n @Input() viewGenericObj: UcViewGenericObj = new UcViewGenericObj();\n @Input() gridViewObj: GridViewObj = new GridViewObj();\n @Input() refresh: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() callback: EventEmitter<any> = new EventEmitter();\n\n UserAccess: any;\n inputGridViewObjs: Array<InputGridObj> = new Array<InputGridObj>();\n viewList: any = \"\";\n getList: any;\n viewInfoObjList: any;\n isReady: boolean = false;\n IsCard: boolean = true;\n isCollapsed: boolean = false;\n\n constructor(\n private route: ActivatedRoute,\n private http: HttpClient,\n private translateService: TranslateService,\n private cookieService: CookieService,\n private ngxRouter: NgxRouterService\n ) {\n this.UserAccess = JSON.parse(\n this.GetCookie(this.cookieService, \"UserAccess\")\n );\n this.route.queryParams.subscribe((params) => {\n this.getList = this.ngxRouter.getQueryParams(params);\n });\n\n this.translateService.setDefaultLang(\"en\");\n this.translateService.use(localStorage.getItem(\"lang\") || \"en\");\n }\n\n ngOnInit() {\n // EXPERIMENTAL BaseView API\n // TODO: remove after stable\n if (this.viewGenericObj.Experimental === undefined) {\n this.viewGenericObj.Experimental = false;\n }\n // END EXPERIMENTAL\n\n this.initiateForm();\n this.CheckIsCard();\n\n this.refresh.subscribe(isUpdate => {\n if (!isUpdate) {\n return;\n }\n\n // Refresh view content\n this.initiateForm();\n this.refresh.emit(false);\n })\n }\n\n onCollapse(ev) {\n this.isCollapsed = !!ev?.isCollapsed;\n }\n\n private CheckIsCard() {\n if (\n this.viewGenericObj.IsCard == undefined ||\n this.viewGenericObj.IsCard == null\n )\n return;\n this.IsCard = this.viewGenericObj.IsCard;\n }\n\n initiateForm() {\n if (\n this.viewGenericObj.dataInput !== undefined &&\n Object.keys(this.viewGenericObj.dataInput).length !== 0\n ) {\n this.setConfiguration({ ...this.viewGenericObj.dataInput });\n this.gridViewObj.gridViews = this.viewGenericObj.dataInput.subsection[0]?.gridViews || [];\n this.initializeGridViews();\n return;\n }\n\n this.getJSON(this.viewGenericObj.viewInput).subscribe((data) => {\n this.setConfiguration(data);\n });\n this.initializeGridViews();\n }\n\n initializeGridViews() {\n if (this.gridViewObj && this.gridViewObj.gridViews.length === 0) {\n return;\n }\n\n this.gridViewObj.gridViews.map(async (gridView) => {\n const inputGridObj = new InputGridObj();\n inputGridObj.dataInput = gridView.tableInput;\n inputGridObj.resultData = { Data: [] };\n inputGridObj.isSubsection = gridView.isSubsection || false;\n inputGridObj.usePagination = gridView.usePagination || true;\n inputGridObj.title = gridView.title || \"\";\n await this.GetGridViewData(gridView.getData, inputGridObj);\n this.inputGridViewObjs.push(inputGridObj);\n });\n }\n\n getEnvironment(envi) {\n const filteredEnvis = this.viewGenericObj.listEnvironments.filter(\n (v) => v.environment == envi\n );\n return filteredEnvis.length > 0 ? filteredEnvis[0] : null;\n }\n\n async GetGridViewData(meta: any, inputGridObj: InputGridObj) {\n let templListData = [];\n const enviUrl = meta.environment && this.getEnvironment(meta.environment);\n await this.http\n .post(enviUrl ? enviUrl.url + meta.apiPath : meta.apiPath, meta.reqObj)\n .toPromise()\n .then((response) => {\n templListData = response[meta.customObjName || \"ReturnObject\"];\n inputGridObj.apiUrl = meta.apiPath;\n inputGridObj.resultData[\"Data\"] = new Array();\n inputGridObj.resultData.Data = templListData;\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n gridEvent(ev) {\n this.callbackFunction(ev.RowObj, ev.Key);\n }\n\n setConfiguration(data) {\n this.viewList = data;\n this.viewInfoObjList = [];\n\n for (let j = 0; j < this.viewList.subsection.length; j++) {\n this.viewInfoObjList.push(j);\n }\n\n for (let i = 0; i < this.viewList.subsection.length; i++) {\n if (\n this.viewList.subsection[i].querystring != null &&\n this.viewList.subsection[i].querystring.name != \"\"\n ) {\n let queryObj: any;\n if (this.viewGenericObj.whereValue.length == 0) {\n this.viewList.subsection[i].querystring.whereQuery = (<any>(\n Object\n )).values(this.getList);\n } else {\n this.viewList.subsection[i].querystring.whereQuery =\n this.viewGenericObj.whereValue;\n }\n\n if (\n this.viewList.subsection[i].mainInfoPath != undefined &&\n this.viewList.subsection[i].mainInfoPath != \"\"\n ) {\n if (\n this.viewGenericObj.viewEnvironment != undefined &&\n this.viewGenericObj.viewEnvironment != \"\"\n ) {\n this.viewList.subsection[i].fullpath =\n this.viewGenericObj.viewEnvironment +\n this.viewList.subsection[i].mainInfoPath;\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n\n // EXPERIMENTAL BaseView API\n // TODO: remove after stable\n if (this.viewGenericObj.Experimental) {\n const _environmentUrl = this.viewGenericObj.viewEnvironment.substring(0, this.viewGenericObj.viewEnvironment.length-3);\n const _qryView = this.viewList.subsection[i].querystring.name;\n this.viewList.subsection[i].fullpath = `${_environmentUrl}/v1/BaseView/${_qryView}`\n }\n // END EXPERIMENTAL\n\n queryObj = {\n querystring: this.viewList.subsection[i].querystring,\n };\n this.http\n .post(this.viewList.subsection[i].fullpath, queryObj)\n .subscribe(\n (response) => {\n this.viewInfoObjList[i] = response[\"Data\"][0];\n\n for (\n let y = 0;\n y < this.viewList.subsection[i].mainInfo.length;\n y++\n ) {\n if (\n this.viewList.subsection[i].mainInfo[y].propertyList !=\n undefined &&\n this.viewList.subsection[i].mainInfo[y].propertyList.length !=\n 0\n ) {\n const propertyList =\n this.viewList.subsection[i].mainInfo[y].propertyList;\n let concat = \"\";\n for (let z = 0; z < propertyList.length; z++) {\n concat =\n concat +\n propertyList[z].prefix +\n this.viewInfoObjList[i][propertyList[z].property] +\n propertyList[z].suffix;\n }\n this.viewList.subsection[i].mainInfo[y].concat = concat;\n }\n\n //switch case\n if (this.viewList.subsection[i].mainInfo[y].type == \"switch\") {\n for (\n let z = 0;\n z < this.viewList.subsection[i].mainInfo[y].case.length;\n z++\n ) {\n let Empty = new Array<boolean>();\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden =\n false;\n //check hideIfEmpty\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .hideIfEmpty != undefined &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .hideIfEmpty != null\n ) {\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .type != \"concat\"\n ) {\n Empty.push(\n this.viewInfoObjList[i][\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.property\n ] != undefined &&\n this.viewInfoObjList[i][\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.property\n ] != null &&\n this.viewInfoObjList[i][\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.property\n ] != \"\"\n ? false\n : true\n );\n } else {\n // type concat\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList != undefined &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList.length != 0\n ) {\n const propertyList =\n this.viewList.subsection[i].mainInfo[y].case[z]\n .result.propertyList;\n let concat = \"\";\n for (let a = 0; a < propertyList.length; a++) {\n concat =\n concat +\n propertyList[a].prefix +\n this.viewInfoObjList[i][\n propertyList[a].property\n ] +\n propertyList[a].suffix;\n Empty.push(\n this.viewInfoObjList[i][\n propertyList[a].property\n ] != undefined &&\n this.viewInfoObjList[i][\n propertyList[a].property\n ] != null &&\n this.viewInfoObjList[i][\n propertyList[a].property\n ] != \"\"\n ? false\n : true\n );\n }\n this.viewList.subsection[i].mainInfo[y].case[\n z\n ].result.concat = concat;\n }\n }\n\n if (\n Empty.includes(true) &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .hideIfEmpty\n ) {\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden =\n true;\n this.viewList.subsection[i].mainInfo[y].isHide = true;\n }\n } else {\n //concat\n if (\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList != undefined &&\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList.length != 0\n ) {\n const propertyList =\n this.viewList.subsection[i].mainInfo[y].case[z].result\n .propertyList;\n let concat = \"\";\n for (let a = 0; a < propertyList.length; a++) {\n concat =\n concat +\n propertyList[a].prefix +\n this.viewInfoObjList[i][propertyList[a].property] +\n propertyList[a].suffix;\n }\n this.viewList.subsection[i].mainInfo[y].case[\n z\n ].result.concat = concat;\n }\n }\n }\n }\n\n if (\n this.viewList.subsection[i].mainInfo[y].type == \"link\" &&\n (this.viewGenericObj.navigationConst != undefined ||\n this.viewGenericObj.navigationConst != null)\n ) {\n let tempLink =\n this.viewGenericObj.navigationConst[\n this.viewList.subsection[i].mainInfo[y].path\n ];\n if (tempLink != undefined && tempLink != null) {\n this.viewList.subsection[i].mainInfo[y].path = tempLink;\n }\n }\n if (\n this.viewList.subsection[i].mainInfo[y].type == \"link\" &&\n this.viewGenericObj.listEnvironments != undefined &&\n this.viewGenericObj.listEnvironments.length != 0\n ) {\n for (\n let z = 0;\n z < this.viewGenericObj.listEnvironments.length;\n z++\n ) {\n if (\n this.viewList.subsection[i].mainInfo[y].environment ==\n this.viewGenericObj.listEnvironments[z].environment\n ) {\n this.viewList.subsection[i].mainInfo[y].isFullpath = true;\n this.viewList.subsection[i].mainInfo[y].fullpath =\n this.viewGenericObj.listEnvironments[z].url +\n this.viewList.subsection[i].mainInfo[y].path;\n break;\n }\n }\n } else if (\n this.viewList.subsection[i].mainInfo[y].type == \"link\"\n ) {\n this.viewList.subsection[i].mainInfo[y].isFullpath = false;\n this.viewList.subsection[i].mainInfo[y].fullpath =\n this.viewList.subsection[i].mainInfo[y].path;\n }\n }\n this.isReady = true;\n },\n (error) => {\n console.log(error);\n }\n );\n } else {\n if (\n this.viewList.subsection[i].mainInfoPath != undefined &&\n this.viewList.subsection[i].mainInfoPath != \"\"\n ) {\n if (\n this.viewList.subsection[i].environment != undefined &&\n this.viewList.subsection[i].mainInfoPath != \"\"\n ) {\n for (\n let z = 0;\n z < this.viewGenericObj.listEnvironments.length;\n z++\n ) {\n if (\n this.viewList.subsection[i].environment ==\n this.viewGenericObj.listEnvironments[z].environment\n ) {\n this.viewList.subsection[i].fullpath =\n this.viewGenericObj.listEnvironments[z].url +\n this.viewList.subsection[i].mainInfoPath;\n break;\n }\n }\n } else if (\n this.viewGenericObj.viewEnvironment != undefined &&\n this.viewGenericObj.viewEnvironment != \"\"\n ) {\n this.viewList.subsection[i].fullpath =\n this.viewGenericObj.viewEnvironment +\n this.viewList.subsection[i].mainInfoPath;\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n } else {\n this.viewList.subsection[i].fullpath =\n this.viewList.subsection[i].mainInfoUrl;\n }\n\n const reqObj = this.viewList.subsection[i].reqObj || this.getList;\n if (this.viewList.subsection[i].reqObj !== undefined) {\n for (const [key, value] of Object.entries(\n this.viewList.subsection[i].reqObj\n )) {\n reqObj[key] = this.getList[value as string] || this.viewGenericObj.dicts[value as string];\n if (reqObj[key] == undefined) {\n reqObj[key] = value;\n }\n }\n }\n\n this.http.post(this.viewList.subsection[i].fullpath, reqObj).subscribe(\n (response) => {\n if (\n this.viewList.subsection[i].resObjName === undefined ||\n this.viewList.subsection[i].resObjName === \"\"\n ) {\n this.viewInfoObjList[i] = response;\n } else {\n this.viewInfoObjList[i] =\n response[this.viewList.subsection[i].resObjName];\n }\n this.isReady = true;\n },\n (error) => {\n console.log(error);\n }\n );\n }\n }\n }\n\n public getJSON(url: string): Observable<any> {\n return this.http.get(url);\n }\n\n private GetCookie(cookieService: CookieService, key: string) {\n let value = cookieService.get(key);\n if (value == undefined || value.trim() == \"\") return null;\n const _key = this.viewGenericObj?.environment?.ChipperKeyCookie ?? \"AdInsFOU12345678\";\n return this.DecryptString(value, _key);\n }\n\n private DecryptString(chipperText: string, chipperKey: string) {\n if (\n chipperKey == undefined ||\n chipperKey.trim() == \"\" ||\n chipperText == undefined ||\n chipperText.trim() == \"\"\n )\n return chipperText;\n let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\n let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\n let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, {\n iv: iv,\n });\n let plainText = decrypted.toString(CryptoJS.enc.Utf8);\n return plainText;\n }\n\n genAction(viewObj, param) {\n let arrList: any = {};\n\n for (let i = 0; i < param.length; i++) {\n if (\n viewObj[param[i].type] != undefined ||\n viewObj[param[i].property] != undefined\n ) {\n arrList[param[i].type] = viewObj[param[i].property];\n } else {\n arrList[param[i].type] = param[i].property;\n }\n }\n\n // Set state of data to router service\n if (!isDevMode() && (this.viewGenericObj?.environment?.useSafeUrl ?? false)) {\n return this.ngxRouter.createQueryParams(arrList);\n }\n return arrList;\n }\n\n genRouterLink(urlLink: string) {\n let tempLink = urlLink;\n if (\n this.viewGenericObj.navigationConst != undefined &&\n this.viewGenericObj.navigationConst[urlLink] != null\n ) {\n tempLink = this.viewGenericObj.navigationConst[urlLink];\n }\n return tempLink;\n }\n\n redirectFullPath(fullpath: string, param: Object, target: string, item: any) {\n let queryParam = \"\";\n let _fullpath = fullpath || \"\";\n \n if (_fullpath == \"\") {\n _fullpath = this.genFullpath(item.environment, item.path)\n }\n\n const ListObj = Object.keys(param);\n for (let i = 0; i < ListObj.length; i++) {\n if (queryParam != \"\") {\n queryParam = queryParam + \"&\" + ListObj[i] + \"=\" + param[ListObj[i]];\n } else {\n queryParam = ListObj[i] + \"=\" + param[ListObj[i]];\n }\n }\n window.open(_fullpath + \"?\" + queryParam, target);\n }\n\n genFullpath(environment: string, path: string) {\n const _envi = this.getEnvironment(environment);\n if (_envi === null) {\n return environment + path;\n }\n\n return _envi.url + path;\n }\n\n callbackFunction(item, key: string = \"\") {\n let CBObj = {\n ViewObj: item,\n Key: key,\n };\n this.callback.emit(CBObj);\n }\n\n isVisible(condList, i: number) {\n let result = true;\n if (condList === undefined) return result;\n const _temp = {\n ...this.viewGenericObj.dicts,\n dicts: {...this.viewGenericObj.dicts},\n viewData: {...this.viewInfoObjList[i]}\n };\n\n const conditions = Array.isArray(condList) ? condList : [condList];\n for (const criteria of conditions) {\n const restriction = criteria?.restriction.toUpperCase();\n const compareValue = this.parseValue(_temp, criteria?.value);\n const critValue = this.parseValue(_temp, criteria?.property);\n\n if (restriction === 'EQ') {\n if (critValue === compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'NEQ') {\n if (critValue !== compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'GT') {\n if (critValue > compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'GTE') {\n if (critValue >= compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'LT') {\n if (critValue < compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'LTE') {\n if (critValue <= compareValue) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'IN') {\n const values = this.parseValue(_temp, criteria.value) as string;\n if (values.includes(critValue)) {\n result = true;\n } else {\n result = false;\n break;\n }\n } else if (restriction === 'NOTIN') {\n const values = this.parseValue(_temp, criteria.value) as string;\n if (!values.includes(critValue)) {\n result = true;\n } else {\n result = false;\n break;\n }\n }\n }\n \n return result;\n }\n\n switchCase(item, condList) {\n let condition = false;\n if (!item) return false;\n for (let i = 0; i < condList.conditions.length; i++) {\n if (condList.conditions[i].restriction == \"EQ\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] ==\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] == this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"NEQ\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] !=\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] != this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"GT\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] > condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] > this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"GTE\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] >=\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] >= this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"LT\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] < condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] < this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"LTE\") {\n if (condList.conditions[i].isUser != true) {\n if (\n item[condList.conditions[i].property] <=\n condList.conditions[i].value\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n item[condList.conditions[i].property] <= this.UserAccess[\"UserName\"]\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"IN\") {\n if (condList.conditions[i].isUser != true) {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == item[condList.conditions[i].property]\n ) >= 0\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == this.UserAccess[\"UserName\"]\n ) >= 0\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n } else if (condList.conditions[i].restriction == \"NIN\") {\n if (condList.conditions[i].isUser != true) {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == item[condList.conditions[i].property]\n ) == -1\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n } else {\n if (\n condList.conditions[i].value.findIndex(\n (x) => x == this.UserAccess[\"UserName\"]\n ) == -1\n ) {\n condition = true;\n } else {\n condition = false;\n break;\n }\n }\n }\n }\n return condition;\n }\n\n private isNumber(value: string | boolean | any[]) {\n if (value === null || value === undefined) return false;\n if (value === true || value === false) return false;\n if (value.length > 1 && value[0] === \"0\") return false;\n if (Array.isArray(value)) return false;\n return !isNaN(Number(value));\n };\n\n private isBoolean(value: string) {\n return typeof value === \"string\" && (value.toLowerCase() === \"true\" || value.toLowerCase() === \"false\");\n };\n\n private parseValue(object: any, property: string): any {\n if (property === \"\") {\n return property;\n }\n\n if (property === \"[]\") {\n return [];\n }\n\n if (property !== \"\" && this.isNumber(property)) {\n return parseFloat(property);\n }\n\n if (this.isBoolean(property)) {\n return property.toLowerCase() === \"true\";\n }\n\n if (typeof property === 'boolean') {\n return property;\n }\n\n const properties = property.split(\".\");\n let value = object;\n\n for (const prop of properties) {\n if (value.hasOwnProperty(prop)) {\n value = value[prop];\n } else {\n return property\n }\n }\n\n if (value !== \"\" && this.isNumber(value)) {\n value = parseFloat(value);\n }\n \n if (this.isBoolean(value)) {\n value = value.toLowerCase() === \"true\";\n }\n\n if (value === null || value === \"null\") {\n value = \"\";\n }\n\n return value;\n }\n}\n","<!-- DO NOT BEAUTIFY / PRETTIFY THIS FILE - will cause the label cannot be highlighted/selected for copy -->\n<span hidden attr.version=\"3.4.18-canary.0\"></span>\n<section id=\"horizontal-form-layouts\">\n\t<div class=\"row text-left\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div [ngClass]=\"IsCard ? 'card' : ''\" *ngIf=\"isReady\">\n\t\t\t\t<!-- <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\n\t\t\t\t\t<h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\n\t\t\t\t\t\t\t[panel]=\"ss.subSectionId\" [legacy]=\"false\" (collapse)=\"onCollapse($event)\">\n\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t<div class=\"form-body border-top border-bottom\" [id]='ss.subSectionId' [(ngbCollapse)]=\"isCollapsed\">\n\t\t\t\t\t\t\t<div class=\"p-3\">\n\t\t\t\t\t\t\t\t<div class=\"form-group row\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let mi of ss?.mainInfo\">\n\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"isVisible(mi?.conditions, i)\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{ 'col-xxl-2 col-xl-3 col-lg-4 col-md-6 col-xs-12 py-2': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type != 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{mi.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"col-md-12\" *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngFor=\"let case of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{case.result.label}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-12\" [ngClass]=\"{ 'text-left': mi.position == 'left',\n\t\t\t\t\t\t\t\t\t\t\t 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #emptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'blank'\"></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type != 'blank'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #nonEmptyLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'text'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>-\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'currency'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision :\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'0.2' :'en-US' }} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'date'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] | ucdate: (mi?.dateFormat) ? mi?.dateFormat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'dd-MMM-yyyy' }} </label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'link'\" class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"!mi?.isFullpath\" class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][mi.property]\" [routerLink]=\"genRouterLink(mi.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[target]=\"mi.target\" [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\" class=\"d-block text-truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 270px\" [title]=\"viewInfoObjList[i][mi.property]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target, mi)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label *ngIf=\"mi.type == 'callback'\" class=\"label-control label-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][mi.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][mi.property] }}</textarea>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'boolean'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- <label\n\t\t\t\t\t\t\t\t\t\t\t *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ mi.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"mi.type == 'switch'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngFor=\"let cs of mi?.case\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate *ngIf=\"cs.result.type == 'text'\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'decimal'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ viewInfoObjList[i][cs.result.property] | number: cs.result.precision ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.precision : '0.2' :'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.IsPrcnt\">&nbsp;%</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'date'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ viewInfoObjList[i][cs.result.property] | ucdate: 'dd-MMM-yyyy'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'link'\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"label-control item-field\" translate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"d-block text-truncate\" style=\"max-width: 270px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[title]=\"viewInfoObjList[i][cs.result.property]\" [target]=\"cs.result.target\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[routerLink]=\"genRouterLink(cs.result.path)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'boolean'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'true' || viewInfoObjList[i][cs.result.property] == true\">Yes</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"viewInfoObjList[i][cs.result.property] == 'false' || viewInfoObjList[i][cs.result.property] == false\">No</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'concat'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"label-control breakword item-field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttranslate>{{ cs.result.concat }}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.type == 'callback'\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #textCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"a-link\" href=\"javascript:void(0);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewInfoObjList[i][cs.result.property] }}</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ng-template #iconCallback>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'a-link p-0' : cs.result.anchor]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"font-medium-3 mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcs.result.tooltip }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"grid-view pb-3\" *ngIf=\"gridViewObj.gridViews.length > 0\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let gridView of inputGridViewObjs; let i = index\">\n\t\t\t\t\t\t\t\t\t<lib-ucSubsection\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"gridViewObj.gridViews[i].subsection && gridViewObj.gridViews[i].subsection !== ''\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"'grid-subsection-id'+i\" [title]=\"gridViewObj.gridViews[i].subsection\"\n\t\t\t\t\t\t\t\t\t\t[panel]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t</lib-ucSubsection>\n\t\t\t\t\t\t\t\t\t<div class=\"form-body\" [id]=\"'grid-subsection-panel-'+i\">\n\t\t\t\t\t\t\t\t\t\t<!-- <lib-ucgridview [gridInput]=\"gridView\" (callback)=\"gridEvent($event)\" (isRefresh)=\"GetGridViewData(gridViewObj.gridViews[i], gridView)\"></lib-ucgridview>-->\n\t\t\t\t\t\t\t\t\t\t<lib-uctable [gridObj]=\"gridView\" [standalone]=\"false\" (callback)=\"gridEvent($event)\"\n\t\t\t\t\t\t\t\t\t\t\t[classPadding]=\"'px-0'\"></lib-uctable>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>","import { NgModule } from \"@angular/core\";\nimport { UcviewgenericComponent } from \"./ucviewgeneric.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\nimport { UcSubsectionModule } from \"@adins/uc-subsection\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { UcgridviewModule } from \"@adins/ucgridview\";\nimport { UctableModule } from '@adins/uctable';\nimport {NgbCollapseModule} from '@ng-bootstrap/ng-bootstrap';\nimport { UcdatepipeModule } from \"@adins/ucdatepipe\";\n\n@NgModule({\n declarations: [UcviewgenericComponent],\n imports: [\n CommonModule,\n RouterModule,\n UcSubsectionModule,\n UcgridviewModule,\n UctableModule,\n NgbCollapseModule,\n UcdatepipeModule,\n TranslateModule.forChild(),\n ],\n exports: [UcviewgenericComponent],\n})\nexport class UcviewgenericModule {}\n","/*\n * Public API Surface of ucviewgeneric\n */\n\nexport * from './lib/ucviewgeneric.service';\nexport * from './lib/ucviewgeneric.component';\nexport * from './lib/ucviewgeneric.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adins/ucviewgeneric",
3
- "version": "4.0.0-research.1",
3
+ "version": "4.0.0-research.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=13.1.2",
6
6
  "@angular/core": ">=13.1.2",