verben-ng-ui 0.0.8 → 0.1.0

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.
@@ -20,6 +20,8 @@ export class DataViewComponent {
20
20
  cardIcon = 'list-view';
21
21
  cardClass = '';
22
22
  tableClass = '';
23
+ searchKey = 'search';
24
+ searchValue = '';
23
25
  viewState = {
24
26
  isSearch: true,
25
27
  isColumn: true,
@@ -27,7 +29,8 @@ export class DataViewComponent {
27
29
  isSort: true,
28
30
  isExport: true,
29
31
  isSelect: true,
30
- isCreate: true
32
+ isCreate: true,
33
+ isToggle: true
31
34
  };
32
35
  searchTemplate;
33
36
  columnTemplate;
@@ -45,16 +48,22 @@ export class DataViewComponent {
45
48
  showExportChild = false;
46
49
  create = false;
47
50
  showSelected = false;
51
+ isTableView = false;
48
52
  viewChange = new EventEmitter();
49
53
  stateChange = new EventEmitter();
50
- isTableView = false;
54
+ onSearchChange = new EventEmitter();
51
55
  ngOnInit() { }
52
56
  toggleView() {
53
57
  this.isTableView = !this.isTableView;
54
58
  this.viewChange.emit(this.isTableView);
55
59
  }
56
60
  onSearch(event) {
57
- this.stateChange.emit({ key: 'search', value: event.target.value });
61
+ this.searchValue = event.target.value;
62
+ console.log({ key: this.searchKey, value: event.target.value });
63
+ this.onSearchChange.emit({ key: this.searchKey, value: this.searchValue });
64
+ }
65
+ onClearSearch() {
66
+ this.searchValue = "";
58
67
  }
59
68
  toggleChildView(viewType) {
60
69
  switch (viewType) {
@@ -120,11 +129,11 @@ export class DataViewComponent {
120
129
  }
121
130
  }
122
131
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
123
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", viewState: "viewState", searchTemplate: "searchTemplate", columnTemplate: "columnTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showExportChild: "showExportChild", create: "create", showSelected: "showSelected" }, outputs: { viewChange: "viewChange", stateChange: "stateChange" }, ngImport: i0, template: "<div\n class=\"toolbar flex gap justify-between items-center\"\n [style.margin]=\"'0px 35px'\"\n>\n <div class=\"flex items-center gap\">\n <div class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verbena-input\n [type]=\"'text'\"\n [placeHolder]=\"'Search...'\"\n (input)=\"onSearch($event)\"\n [borderRadius]=\"'10px'\"\n [border]=\"'0'\"\n />\n </div>\n </div>\n\n <div class=\"flex items-center relative gap\" [style.margin-left]=\"'10px'\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"showColumnChild = false\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showColumnChild\"\n select=\"[column-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"showFilterChild = false\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"showSortChild = false\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"showExportChild = false\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n \n <div [appOutSideClick]=\"create\"\n (outSideClick)=\"create = false\" *ngIf=\"viewState.isCreate\">\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n \n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"create\"\n select=\"[create-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.flex{display:flex}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{width:30%}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:80px;left:0}.relative{position:relative}.z-10{z-index:100000000000}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i3.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "customErrorMessages"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass"] }, { kind: "directive", type: i5.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }] });
132
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", columnTemplate: "columnTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showExportChild: "showExportChild", create: "create", showSelected: "showSelected", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, ngImport: i0, template: "<div\n class=\"toolbar flex gap justify-between items-center\"\n [style.margin]=\"'0px 35px'\"\n>\n <div class=\"flex items-center gap\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verbena-input\n [type]=\"'text'\"\n [placeHolder]=\"'Search...'\"\n (input)=\"onSearch($event)\"\n [bgColor]=\"'transparent'\"\n [border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length>0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center relative gap\" [style.margin-left]=\"'10px'\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"showColumnChild = false\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showColumnChild\"\n select=\"[column-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"showFilterChild = false\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"showSortChild = false\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"showExportChild = false\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n \n <div [appOutSideClick]=\"create\"\n (outSideClick)=\"create = false\" *ngIf=\"viewState.isCreate\">\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n \n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"create\"\n select=\"[create-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.flex{display:flex}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;background-color:#f9f9f9;border-radius:10px}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:80px;left:0}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;right:10px;cursor:pointer;top:13px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i3.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "customErrorMessages"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass"] }, { kind: "directive", type: i5.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }] });
124
133
  }
125
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataViewComponent, decorators: [{
126
135
  type: Component,
127
- args: [{ selector: 'verben-data-view', template: "<div\n class=\"toolbar flex gap justify-between items-center\"\n [style.margin]=\"'0px 35px'\"\n>\n <div class=\"flex items-center gap\">\n <div class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verbena-input\n [type]=\"'text'\"\n [placeHolder]=\"'Search...'\"\n (input)=\"onSearch($event)\"\n [borderRadius]=\"'10px'\"\n [border]=\"'0'\"\n />\n </div>\n </div>\n\n <div class=\"flex items-center relative gap\" [style.margin-left]=\"'10px'\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"showColumnChild = false\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showColumnChild\"\n select=\"[column-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"showFilterChild = false\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"showSortChild = false\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"showExportChild = false\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n \n <div [appOutSideClick]=\"create\"\n (outSideClick)=\"create = false\" *ngIf=\"viewState.isCreate\">\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n \n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"create\"\n select=\"[create-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.flex{display:flex}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{width:30%}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:80px;left:0}.relative{position:relative}.z-10{z-index:100000000000}\n"] }]
136
+ args: [{ selector: 'verben-data-view', template: "<div\n class=\"toolbar flex gap justify-between items-center\"\n [style.margin]=\"'0px 35px'\"\n>\n <div class=\"flex items-center gap\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verbena-input\n [type]=\"'text'\"\n [placeHolder]=\"'Search...'\"\n (input)=\"onSearch($event)\"\n [bgColor]=\"'transparent'\"\n [border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length>0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center relative gap\" [style.margin-left]=\"'10px'\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"showColumnChild = false\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showColumnChild\"\n select=\"[column-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"showFilterChild = false\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"showSortChild = false\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"showExportChild = false\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n \n <div [appOutSideClick]=\"create\"\n (outSideClick)=\"create = false\" *ngIf=\"viewState.isCreate\">\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n \n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"create\"\n select=\"[create-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n <div [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.flex{display:flex}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;background-color:#f9f9f9;border-radius:10px}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:80px;left:0}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;right:10px;cursor:pointer;top:13px}\n"] }]
128
137
  }], propDecorators: { buttonClass: [{
129
138
  type: Input
130
139
  }], iconClass: [{
@@ -153,6 +162,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
153
162
  type: Input
154
163
  }], tableClass: [{
155
164
  type: Input
165
+ }], searchKey: [{
166
+ type: Input
167
+ }], searchValue: [{
168
+ type: Input
156
169
  }], viewState: [{
157
170
  type: Input
158
171
  }], searchTemplate: [{
@@ -187,9 +200,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
187
200
  type: Input
188
201
  }], showSelected: [{
189
202
  type: Input
203
+ }], isTableView: [{
204
+ type: Input
190
205
  }], viewChange: [{
191
206
  type: Output
192
207
  }], stateChange: [{
193
208
  type: Output
209
+ }], onSearchChange: [{
210
+ type: Output
194
211
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWlCdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixXQUFXLENBQVU7SUFDckIsU0FBUyxDQUFVO0lBQ25CLGVBQWUsR0FBVSxFQUFFLENBQUE7SUFDM0IsaUJBQWlCLEdBQVMsRUFBRSxDQUFBO0lBQzVCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixlQUFlLEdBQVMsRUFBRSxDQUFBO0lBQzFCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixpQkFBaUIsR0FBUyxFQUFFLENBQUE7SUFDNUIsTUFBTSxHQUFTLENBQUMsQ0FBQTtJQUNoQixpQkFBaUIsR0FBUSxFQUFFLENBQUE7SUFDM0IsU0FBUyxHQUFXLFFBQVEsQ0FBQztJQUM3QixRQUFRLEdBQVcsV0FBVyxDQUFDO0lBQy9CLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixTQUFTLEdBQWM7UUFDOUIsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFDLElBQUk7S0FD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ZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQVVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0UsZUFBZTtzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmludGVyZmFjZSBWaWV3U3RhdGUge1xuICBpc1NlYXJjaD86IGJvb2xlYW47XG4gIGlzQ29sdW1uPzogYm9vbGVhbjtcbiAgaXNGaWx0ZXI/OiBib29sZWFuO1xuICBpc1NvcnQ/OiBib29sZWFuO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIGlzU2VsZWN0PzogYm9vbGVhbjtcbiAgaXNDcmVhdGU/OmJvb2xlYW5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFjdGl2ZUljb25DbGFzcz86IHN0cmluZz1cIlwiXG4gIEBJbnB1dCgpIGNvbHVtbkN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgZmlsdGVyQ3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBzb3J0Q3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBleHBvcnRDdXN0b21DbGFzcz86c3RyaW5nPScnXG4gIEBJbnB1dCgpIHNlbGVjdEN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgekluZGV4PzpudW1iZXI9NVxuICBASW5wdXQoKSBjcmVhdGVDdXN0b21DbGFzczpzdHJpbmc9JydcbiAgQElucHV0KCkgdGFibGVJY29uOiBzdHJpbmcgPSAnZ3JpZC0zJztcbiAgQElucHV0KCkgY2FyZEljb246IHN0cmluZyA9ICdsaXN0LXZpZXcnO1xuICBASW5wdXQoKSBjYXJkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdmlld1N0YXRlOiBWaWV3U3RhdGUgPSB7XG4gICAgaXNTZWFyY2g6IHRydWUsXG4gICAgaXNDb2x1bW46IHRydWUsXG4gICAgaXNGaWx0ZXI6IHRydWUsXG4gICAgaXNTb3J0OiB0cnVlLFxuICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgIGlzU2VsZWN0OiB0cnVlLFxuICAgIGlzQ3JlYXRlOnRydWVcbiAgfTtcblxuICBASW5wdXQoKSBzZWFyY2hUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNvbHVtblRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgZmlsdGVyVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBzb3J0VGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBleHBvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNyZWF0ZVRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRDb2x1bW5Db3VudD86IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHNlbGVjdGVkU29ydENvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBzZWxlY3RlZEZpbHRlclRhYmxlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGlucHV0V2lkdGg6IHN0cmluZz1cIjM1MHB4XCI7XG4gIEBJbnB1dCgpc2hvd0NvbHVtbkNoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTb3J0Q2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0ZpbHRlckNoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBAT3V0cHV0KCkgdmlld0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogYm9vbGVhbiB9PigpO1xuXG4gIGlzVGFibGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHRvZ2dsZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5pc1RhYmxlVmlldyA9ICF0aGlzLmlzVGFibGVWaWV3O1xuICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHRoaXMuaXNUYWJsZVZpZXcpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh7IGtleTogJ3NlYXJjaCcsIHZhbHVlOiBldmVudC50YXJnZXQudmFsdWUgfSk7XG4gIH1cblxuICB0b2dnbGVDaGlsZFZpZXcodmlld1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHN3aXRjaCAodmlld1R5cGUpIHtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHRoaXMuc2hvd0NvbHVtbkNoaWxkID0gIXRoaXMuc2hvd0NvbHVtbkNoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnY29sdW1uJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyQ2hpbGQgPSAhdGhpcy5zaG93RmlsdGVyQ2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdmaWx0ZXInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzb3J0JzpcbiAgICAgICAgdGhpcy5zaG93U29ydENoaWxkID0gIXRoaXMuc2hvd1NvcnRDaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ3NvcnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICB0aGlzLnNob3dTZWxlY3RlZCA9ICF0aGlzLnNob3dTZWxlY3RlZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ3NlbGVjdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4cG9ydCc6XG4gICAgICAgIHRoaXMuc2hvd0V4cG9ydENoaWxkID0gIXRoaXMuc2hvd0V4cG9ydENoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnZXhwb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICAgIHRoaXMuY3JlYXRlID0gIXRoaXMuY3JlYXRlO1xuICAgICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdjcmVhdGUnKTtcbiAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHsga2V5OiB2aWV3VHlwZSwgdmFsdWU6IHRoaXMuZ2V0Q2hpbGRWaWV3U3RhdGUodmlld1R5cGUpIH0pO1xuICB9XG5cbiAgLy8gUmVzZXQgb3RoZXIgY2hpbGQgdmlld3Mgd2hlbiBvbmUgaXMgdG9nZ2xlZFxuICByZXNldENoaWxkVmlld3NFeGNlcHQodmlld1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2NvbHVtbicpIHRoaXMuc2hvd0NvbHVtbkNoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnZmlsdGVyJykgdGhpcy5zaG93RmlsdGVyQ2hpbGQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdzb3J0JykgdGhpcy5zaG93U29ydENoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnc2VsZWN0JykgdGhpcy5zaG93U2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdleHBvcnQnKSB0aGlzLnNob3dFeHBvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2NyZWF0ZScpIHRoaXMuY3JlYXRlID0gZmFsc2U7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgc3RhdGUgb2YgYSBzcGVjaWZpYyBjaGlsZCB2aWV3XG4gIGdldENoaWxkVmlld1N0YXRlKHZpZXdUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93Q29sdW1uQ2hpbGQ7XG4gICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RmlsdGVyQ2hpbGQ7XG4gICAgICBjYXNlICdzb3J0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1NvcnRDaGlsZDtcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dTZWxlY3RlZDtcbiAgICAgIGNhc2UgJ2V4cG9ydCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dFeHBvcnRDaGlsZDtcbiAgICAgICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInRvb2xiYXIgZmxleCBnYXAganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiXG4gIFtzdHlsZS5tYXJnaW5dPVwiJzBweCAzNXB4J1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVWaWV3KClcIiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIFtpY29uXT1cInRhYmxlSWNvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpc1RhYmxlVmlldyA/IGFjdGl2ZUljb25DbGFzcyA6IGljb25DbGFzc1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgW2ljb25dPVwiY2FyZEljb25cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImlzVGFibGVWaWV3ID8gYWN0aXZlSWNvbkNsYXNzIDogaWNvbkNsYXNzXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMjVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjVcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLndpZHRoXT1cImlucHV0V2lkdGhcIlxuICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWFyY2hcIlxuICAgID5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInU2VhcmNoLi4uJ1wiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW2JvcmRlclJhZGl1c109XCInMTBweCdcIlxuICAgICAgICBbYm9yZGVyXT1cIicwJ1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcmVsYXRpdmUgZ2FwXCIgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cIicxMHB4J1wiPlxuICAgIDwhLS0gQ29sdW1uIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93Q29sdW1uQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJzaG93Q29sdW1uQ2hpbGQgPSBmYWxzZVwiXG4gICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc0NvbHVtbiAmJiBpc1RhYmxlVmlld1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRDb2x1bW5cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbHVtbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgICBjb2x1bW5DdXN0b21DbGFzcyA/IGNvbHVtbkN1c3RvbUNsYXNzIDogJydcbiAgICAgICAgICBdXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0Q5RDlEOTQwJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnY29sdW1uJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ2NvbHVtbidcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgID5Db2x1bW5zIDxzdXA+KHt7IHNlbGVjdGVkQ29sdW1uQ291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dDb2x1bW5DaGlsZFwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbY29sdW1uLWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFthcHBPdXRTaWRlQ2xpY2tdPVwic2hvd0ZpbHRlckNoaWxkXCJcbiAgICAgIChvdXRTaWRlQ2xpY2spPVwic2hvd0ZpbHRlckNoaWxkID0gZmFsc2VcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNGaWx0ZXJcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RmlsdGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaWx0ZXI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgJ2ZsZXggZ2FwIHRleHQteHMgaXRlbXMtY2VudGVyIHBkIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXInLFxuICAgICAgICBmaWx0ZXJDdXN0b21DbGFzcyA/IGZpbHRlckN1c3RvbUNsYXNzIDogJydcbiAgICAgIF1cIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdmaWx0ZXInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInZmlsdGVyJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPkZpbHRlciA8c3VwPih7eyBzZWxlY3RlZEZpbHRlclRhYmxlQ291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJDaGlsZFwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbZmlsdGVyLWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFNvcnQgU2VjdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dTb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJzaG93U29ydENoaWxkID0gZmFsc2VcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTb3J0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRTb3J0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTb3J0PlxuICAgICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgIHNvcnRDdXN0b21DbGFzcyA/IHNvcnRDdXN0b21DbGFzcyA6ICcnXG4gICAgICBdXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0Q5RDlEOTQwJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnc29ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzb3J0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPlNvcnQgPHN1cD4oe3sgc2VsZWN0ZWRTb3J0Q291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dTb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW3NvcnQtY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRXhwb3J0IFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RXhwb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJzaG93RXhwb3J0Q2hpbGQgPSBmYWxzZVwiXG4gICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc0V4cG9ydFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cG9ydFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFeHBvcnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEV4cG9ydD5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgIGV4cG9ydEN1c3RvbUNsYXNzID8gZXhwb3J0Q3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgXVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyNEOUQ5RDk0MCdcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2V4cG9ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidleHBvcnQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIEV4cG9ydFxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dFeHBvcnRDaGlsZFwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbZXhwb3J0LWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFNlbGVjdCBTZWN0aW9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWxlY3RcIj5cbiAgICAgIDxzcGFuXG4gICAgICBbbmdDbGFzc109XCJbXG4gICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICBzZWxlY3RDdXN0b21DbGFzcyA/IHNlbGVjdEN1c3RvbUNsYXNzIDogJydcbiAgICBdXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyNEOUQ5RDk0MCdcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdzZWxlY3QnKVwiXG4gICAgICA+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzZWxlY3QnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8c3Bhbj5TZWxlY3Q8L3NwYW4+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCI2XCIgW2ljb25dPVwiJ2NoZXZyb24tZG93bidcIj48L3ZlcmJlbi1zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENyZWF0ZSBCdXR0b24gLS0+XG4gICAgIFxuICAgIDxkaXYgICBbYXBwT3V0U2lkZUNsaWNrXT1cImNyZWF0ZVwiXG4gICAgKG91dFNpZGVDbGljayk9XCJjcmVhdGUgPSBmYWxzZVwiICpuZ0lmPVwidmlld1N0YXRlLmlzQ3JlYXRlXCI+XG4gICAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIlxuICAgICAgICBbYmdDb2xvcl09XCInI0ZGRTY4MSdcIlxuICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiY3JlYXRlQ3VzdG9tQ2xhc3NcIlxuICAgICAgICBbcGRdPVwiJzZweCdcIlxuICAgICAgICBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCJcbiAgICAgICAgW3RleHRDb2xvcl09XCInIzAwMCdcIlxuICAgICAgICBbc3ZnXT1cIidhZGQnXCJcbiAgICAgICAgW3N2Z1Bvc2l0aW9uXT1cIidyaWdodCdcIlxuICAgICAgICBbdGV4dF09XCInQ3JlYXRlIE5ldydcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdjcmVhdGUnKVwiXG4gICAgICA+XG4gICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyZWF0ZVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRDcmVhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENyZWF0ZT5cbiAgICAgIFxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGVcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW2NyZWF0ZS1jb250ZW50XVwiXG4gICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEdyaWQgYW5kIExpc3QgVmlldyBIYW5kbGluZyAtLT5cbjxkaXYgKm5nSWY9XCJpc1RhYmxlVmlldzsgZWxzZSBsaXN0Vmlld1RlbXBsYXRlXCI+XG4gIDxkaXYgW2NsYXNzXT1cInRhYmxlQ2xhc3NcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGFibGUtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2xpc3RWaWV3VGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzXT1cImNhcmRDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjYXJkLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWtCdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixXQUFXLENBQVU7SUFDckIsU0FBUyxDQUFVO0lBQ25CLGVBQWUsR0FBVSxFQUFFLENBQUE7SUFDM0IsaUJBQWlCLEdBQVMsRUFBRSxDQUFBO0lBQzVCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixlQUFlLEdBQVMsRUFBRSxDQUFBO0lBQzFCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixpQkFBaUIsR0FBUyxFQUFFLENBQUE7SUFDNUIsTUFBTSxHQUFTLENBQUMsQ0FBQTtJQUNoQixpQkFBaUIsR0FBUSxFQUFFLENBQUE7SUFDM0IsU0FBUyxHQUFXLFFBQVEsQ0FBQztJQUM3QixRQUFRLEdBQVcsV0FBVyxDQUFDO0lBQy9CLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixTQUFTLEdBQVEsUUFBUSxDQUFDO0lBQzFCLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFjO1FBQzlCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBQyxJQUFJO1FBQ2IsUUFBUSxFQUFDLElBQUk7S0FDZCxDQUFDO0lBRU8sY0FBYyxDQUFRO0lBQ3RCLGNBQWMsQ0FBUTtJQUN0QixjQUFjLENBQVE7SUFDdEIsWUFBWSxDQUFRO0lBQ3BCLGNBQWMsQ0FBUTtJQUN0QixjQUFjLENBQVE7SUFDdEIsbUJBQW1CLEdBQVksQ0FBQyxDQUFDO0lBQ2pDLGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUM5Qix3QkFBd0IsR0FBVyxDQUFDLENBQUM7SUFDckMsVUFBVSxHQUFTLE9BQU8sQ0FBQztJQUM1QixlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2hDLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFDeEIsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzVCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3pDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQztJQUNsRSxjQUFjLEdBQUMsSUFBSSxZQUFZLEVBQWtDLENBQUE7SUFDM0UsUUFBUSxLQUFVLENBQUM7SUFFbkIsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUgsYUFBYTtRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUMsRUFBRSxDQUFBO0lBQ3BCLENBQUM7SUFDQyxlQUFlLENBQUMsUUFBZ0I7UUFDOUIsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNqQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckMsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckMsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ04sS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07UUFDWixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMscUJBQXFCLENBQUMsUUFBZ0I7UUFDcEMsSUFBSSxRQUFRLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hELElBQUksUUFBUSxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUN4RCxJQUFJLFFBQVEsS0FBSyxNQUFNO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDcEQsSUFBSSxRQUFRLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JELElBQUksUUFBUSxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUN4RCxJQUFJLFFBQVEsS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDakQsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxpQkFBaUIsQ0FBQyxRQUFnQjtRQUNoQyxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzVCLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDM0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QixLQUFLLFFBQVE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO3VHQTFIVSxpQkFBaUI7MkZBQWpCLGlCQUFpQiwrdUNDeEI5Qixtck9BZ09BOzsyRkR4TWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQVdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0UsZUFBZTtzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmludGVyZmFjZSBWaWV3U3RhdGUge1xuICBpc1NlYXJjaD86IGJvb2xlYW47XG4gIGlzQ29sdW1uPzogYm9vbGVhbjtcbiAgaXNGaWx0ZXI/OiBib29sZWFuO1xuICBpc1NvcnQ/OiBib29sZWFuO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIGlzU2VsZWN0PzogYm9vbGVhbjtcbiAgaXNDcmVhdGU/OmJvb2xlYW5cbiAgaXNUb2dnbGU/OmJvb2xlYW5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFjdGl2ZUljb25DbGFzcz86IHN0cmluZz1cIlwiXG4gIEBJbnB1dCgpIGNvbHVtbkN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgZmlsdGVyQ3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBzb3J0Q3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBleHBvcnRDdXN0b21DbGFzcz86c3RyaW5nPScnXG4gIEBJbnB1dCgpIHNlbGVjdEN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgekluZGV4PzpudW1iZXI9NVxuICBASW5wdXQoKSBjcmVhdGVDdXN0b21DbGFzczpzdHJpbmc9JydcbiAgQElucHV0KCkgdGFibGVJY29uOiBzdHJpbmcgPSAnZ3JpZC0zJztcbiAgQElucHV0KCkgY2FyZEljb246IHN0cmluZyA9ICdsaXN0LXZpZXcnO1xuICBASW5wdXQoKSBjYXJkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VhcmNoS2V5OnN0cmluZz0nc2VhcmNoJztcbiAgQElucHV0KCkgc2VhcmNoVmFsdWU6c3RyaW5nPScnO1xuICBASW5wdXQoKSB2aWV3U3RhdGU6IFZpZXdTdGF0ZSA9IHtcbiAgICBpc1NlYXJjaDogdHJ1ZSxcbiAgICBpc0NvbHVtbjogdHJ1ZSxcbiAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICBpc1NvcnQ6IHRydWUsXG4gICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgaXNTZWxlY3Q6IHRydWUsXG4gICAgaXNDcmVhdGU6dHJ1ZSxcbiAgICBpc1RvZ2dsZTp0cnVlXG4gIH07XG5cbiAgQElucHV0KCkgc2VhcmNoVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGZpbHRlclRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgc29ydFRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgZXhwb3J0VGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBjcmVhdGVUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ29sdW1uQ291bnQ/OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBzZWxlY3RlZFNvcnRDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBpbnB1dFdpZHRoOiBzdHJpbmc9XCIzNTBweFwiO1xuICBASW5wdXQoKXNob3dDb2x1bW5DaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93U29ydENoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RXhwb3J0Q2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3JlYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1RhYmxlVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgdmlld0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogYm9vbGVhbiB9PigpO1xuICBAT3V0cHV0KCkgb25TZWFyY2hDaGFuZ2U9bmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KClcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHRvZ2dsZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5pc1RhYmxlVmlldyA9ICF0aGlzLmlzVGFibGVWaWV3O1xuICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHRoaXMuaXNUYWJsZVZpZXcpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6YW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZT1ldmVudC50YXJnZXQudmFsdWVcbiAgICBjb25zb2xlLmxvZyh7a2V5OnRoaXMuc2VhcmNoS2V5LCB2YWx1ZTpldmVudC50YXJnZXQudmFsdWV9KTtcbiAgICB0aGlzLm9uU2VhcmNoQ2hhbmdlLmVtaXQoe2tleTp0aGlzLnNlYXJjaEtleSwgdmFsdWU6dGhpcy5zZWFyY2hWYWx1ZX0pO1xuICB9XG4gIFxub25DbGVhclNlYXJjaCgpe1xuIHRoaXMuc2VhcmNoVmFsdWU9XCJcIlxufVxuICB0b2dnbGVDaGlsZFZpZXcodmlld1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHN3aXRjaCAodmlld1R5cGUpIHtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHRoaXMuc2hvd0NvbHVtbkNoaWxkID0gIXRoaXMuc2hvd0NvbHVtbkNoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnY29sdW1uJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyQ2hpbGQgPSAhdGhpcy5zaG93RmlsdGVyQ2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdmaWx0ZXInKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzb3J0JzpcbiAgICAgICAgdGhpcy5zaG93U29ydENoaWxkID0gIXRoaXMuc2hvd1NvcnRDaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ3NvcnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICB0aGlzLnNob3dTZWxlY3RlZCA9ICF0aGlzLnNob3dTZWxlY3RlZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ3NlbGVjdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4cG9ydCc6XG4gICAgICAgIHRoaXMuc2hvd0V4cG9ydENoaWxkID0gIXRoaXMuc2hvd0V4cG9ydENoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnZXhwb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICAgIHRoaXMuY3JlYXRlID0gIXRoaXMuY3JlYXRlO1xuICAgICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdjcmVhdGUnKTtcbiAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHsga2V5OiB2aWV3VHlwZSwgdmFsdWU6IHRoaXMuZ2V0Q2hpbGRWaWV3U3RhdGUodmlld1R5cGUpIH0pO1xuICB9XG5cbiAgLy8gUmVzZXQgb3RoZXIgY2hpbGQgdmlld3Mgd2hlbiBvbmUgaXMgdG9nZ2xlZFxuICByZXNldENoaWxkVmlld3NFeGNlcHQodmlld1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2NvbHVtbicpIHRoaXMuc2hvd0NvbHVtbkNoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnZmlsdGVyJykgdGhpcy5zaG93RmlsdGVyQ2hpbGQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdzb3J0JykgdGhpcy5zaG93U29ydENoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnc2VsZWN0JykgdGhpcy5zaG93U2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdleHBvcnQnKSB0aGlzLnNob3dFeHBvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2NyZWF0ZScpIHRoaXMuY3JlYXRlID0gZmFsc2U7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgc3RhdGUgb2YgYSBzcGVjaWZpYyBjaGlsZCB2aWV3XG4gIGdldENoaWxkVmlld1N0YXRlKHZpZXdUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93Q29sdW1uQ2hpbGQ7XG4gICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RmlsdGVyQ2hpbGQ7XG4gICAgICBjYXNlICdzb3J0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1NvcnRDaGlsZDtcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dTZWxlY3RlZDtcbiAgICAgIGNhc2UgJ2V4cG9ydCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dFeHBvcnRDaGlsZDtcbiAgICAgICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInRvb2xiYXIgZmxleCBnYXAganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiXG4gIFtzdHlsZS5tYXJnaW5dPVwiJzBweCAzNXB4J1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXBcIj5cbiAgICA8ZGl2ICpuZ0lmPVwidmlld1N0YXRlLmlzVG9nZ2xlXCIgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVZpZXcoKVwiIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCI+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgW2ljb25dPVwidGFibGVJY29uXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIiFpc1RhYmxlVmlld1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiIWlzVGFibGVWaWV3ID8gYWN0aXZlSWNvbkNsYXNzIDogaWNvbkNsYXNzXCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBbaWNvbl09XCJjYXJkSWNvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc1RhYmxlVmlld1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXNUYWJsZVZpZXcgPyBhY3RpdmVJY29uQ2xhc3MgOiBpY29uQ2xhc3NcIlxuICAgICAgICAgIFt3aWR0aF09XCIyNVwiXG5cbiAgICAgICAgICBbaGVpZ2h0XT1cIjI1XCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICAgIDxkaXZcbiAgICAgIFtzdHlsZS53aWR0aF09XCJpbnB1dFdpZHRoXCJcbiAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzU2VhcmNoXCJcbiAgICA+XG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1NlYXJjaC4uLidcIlxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICBbYmdDb2xvcl09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW2JvcmRlcl09XCInMCdcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgLz5cbiAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAqbmdJZj1cInNlYXJjaFZhbHVlLmxlbmd0aD4wXCJcbiAgICAgICAgICBbaWNvbl09XCInY2xvc2UnXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgIGNsYXNzPVwiY2xvc2UtaWNvbi1jbGFzc1wiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciByZWxhdGl2ZSBnYXBcIiBbc3R5bGUubWFyZ2luLWxlZnRdPVwiJzEwcHgnXCI+XG4gICAgPCEtLSBDb2x1bW4gU2VjdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dDb2x1bW5DaGlsZFwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cInNob3dDb2x1bW5DaGlsZCA9IGZhbHNlXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzQ29sdW1uICYmIGlzVGFibGVWaWV3XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENvbHVtblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sdW1uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgIGNvbHVtbkN1c3RvbUNsYXNzID8gY29sdW1uQ3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgICAgIF1cIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdjb2x1bW4nKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInY29sdW1uJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPkNvbHVtbnMgPHN1cD4oe3sgc2VsZWN0ZWRDb2x1bW5Db3VudCB9fSk8L3N1cD48L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0NvbHVtbkNoaWxkXCJcbiAgICAgICAgICAgIHNlbGVjdD1cIltjb2x1bW4tY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmlsdGVyIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJzaG93RmlsdGVyQ2hpbGQgPSBmYWxzZVwiXG4gICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc0ZpbHRlclwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRGaWx0ZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbHRlcj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgIGZpbHRlckN1c3RvbUNsYXNzID8gZmlsdGVyQ3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgXVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyNEOUQ5RDk0MCdcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2ZpbHRlcicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidmaWx0ZXInXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA+RmlsdGVyIDxzdXA+KHt7IHNlbGVjdGVkRmlsdGVyVGFibGVDb3VudCB9fSk8L3N1cD48L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlckNoaWxkXCJcbiAgICAgICAgICAgIHNlbGVjdD1cIltmaWx0ZXItY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gU29ydCBTZWN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFthcHBPdXRTaWRlQ2xpY2tdPVwic2hvd1NvcnRDaGlsZFwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cInNob3dTb3J0Q2hpbGQgPSBmYWxzZVwiXG4gICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc1NvcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3J0VGVtcGxhdGU7IGVsc2UgZGVmYXVsdFNvcnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNvcnQ+XG4gICAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgJ2ZsZXggZ2FwIHRleHQteHMgaXRlbXMtY2VudGVyIHBkIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXInLFxuICAgICAgc29ydEN1c3RvbUNsYXNzID8gc29ydEN1c3RvbUNsYXNzIDogJydcbiAgICAgIF1cIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdzb3J0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ3NvcnQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA+U29ydCA8c3VwPih7eyBzZWxlY3RlZFNvcnRDb3VudCB9fSk8L3N1cD48L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1NvcnRDaGlsZFwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbc29ydC1jb250ZW50XVwiXG4gICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBFeHBvcnQgU2VjdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dFeHBvcnRDaGlsZFwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cInNob3dFeHBvcnRDaGlsZCA9IGZhbHNlXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzRXhwb3J0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwb3J0VGVtcGxhdGU7IGVsc2UgZGVmYXVsdEV4cG9ydFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RXhwb3J0PlxuICAgICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgZXhwb3J0Q3VzdG9tQ2xhc3MgPyBleHBvcnRDdXN0b21DbGFzcyA6ICcnXG4gICAgICBdXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0Q5RDlEOTQwJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnZXhwb3J0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ2V4cG9ydCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgRXhwb3J0XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydENoaWxkXCJcbiAgICAgICAgICAgIHNlbGVjdD1cIltleHBvcnQtY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gU2VsZWN0IFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cInZpZXdTdGF0ZS5pc1NlbGVjdFwiPlxuICAgICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgIHNlbGVjdEN1c3RvbUNsYXNzID8gc2VsZWN0Q3VzdG9tQ2xhc3MgOiAnJ1xuICAgIF1cIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0Q5RDlEOTQwJ1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ3NlbGVjdCcpXCJcbiAgICAgID5cbiAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ3NlbGVjdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDxzcGFuPlNlbGVjdDwvc3Bhbj5cbiAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjZcIiBbaWNvbl09XCInY2hldnJvbi1kb3duJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ3JlYXRlIEJ1dHRvbiAtLT5cbiAgICAgXG4gICAgPGRpdiAgIFthcHBPdXRTaWRlQ2xpY2tdPVwiY3JlYXRlXCJcbiAgICAob3V0U2lkZUNsaWNrKT1cImNyZWF0ZSA9IGZhbHNlXCIgKm5nSWY9XCJ2aWV3U3RhdGUuaXNDcmVhdGVcIj5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZFwiXG4gICAgICAgIFtiZ0NvbG9yXT1cIicjRkZFNjgxJ1wiXG4gICAgICAgIFtidXR0b25DbGFzc109XCJjcmVhdGVDdXN0b21DbGFzc1wiXG4gICAgICAgIFtwZF09XCInNnB4J1wiXG4gICAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIlxuICAgICAgICBbdGV4dENvbG9yXT1cIicjMDAwJ1wiXG4gICAgICAgIFtzdmddPVwiJ2FkZCdcIlxuICAgICAgICBbc3ZnUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXG4gICAgICAgIFt0ZXh0XT1cIidDcmVhdGUgTmV3J1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NyZWF0ZScpXCJcbiAgICAgID5cbiAgICAgIDwvdmVyYmVuYS1idXR0b24+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENyZWF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q3JlYXRlPlxuICAgICAgXG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cImNyZWF0ZVwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbY3JlYXRlLWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gR3JpZCBhbmQgTGlzdCBWaWV3IEhhbmRsaW5nIC0tPlxuPGRpdiAqbmdJZj1cImlzVGFibGVWaWV3OyBlbHNlIGxpc3RWaWV3VGVtcGxhdGVcIj5cbiAgPGRpdiBbY2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbGlzdFZpZXdUZW1wbGF0ZT5cbiAgPGRpdiBbY2xhc3NdPVwiY2FyZENsYXNzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NhcmQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -18,11 +18,14 @@ export class VerbenDialogueComponent {
18
18
  padding = '10px';
19
19
  borderRadius = '10px';
20
20
  dialogueBgColor = '#fff';
21
- closeIcon = 'close';
22
21
  closeIconClass = 'closeIconClass';
23
22
  boxShadow = 'box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1)';
24
23
  enableTransition = true;
25
24
  modalData;
25
+ // New inputs for drawer mode
26
+ mode = 'dialogue';
27
+ position = 'right';
28
+ drawerWidth = '500px';
26
29
  openModal = new EventEmitter();
27
30
  closeModal = new EventEmitter();
28
31
  ngOnChanges() {
@@ -48,11 +51,11 @@ export class VerbenDialogueComponent {
48
51
  this.closeModal.emit(this.modalData);
49
52
  }
50
53
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: VerbenDialogueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: VerbenDialogueComponent, selector: "verben-dialogue", inputs: { headerTemplate: "headerTemplate", bodyTemplate: "bodyTemplate", footerTemplate: "footerTemplate", showCloseIcon: "showCloseIcon", dismissOutsideClick: "dismissOutsideClick", closeOnEscape: "closeOnEscape", isVisible: "isVisible", size: "size", backdropColor: "backdropColor", customClass: "customClass", disableFooter: "disableFooter", margin: "margin", padding: "padding", borderRadius: "borderRadius", dialogueBgColor: "dialogueBgColor", closeIcon: "closeIcon", closeIconClass: "closeIconClass", boxShadow: "boxShadow", enableTransition: "enableTransition", modalData: "modalData" }, outputs: { openModal: "openModal", closeModal: "closeModal" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)", "document:click": "onOutsideClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isVisible\" class=\"modal-wrapper fixed inset-0 flex justify-center items-center\"\n [ngStyle]=\"{'background-color': backdropColor}\" [ngClass]=\"{ 'fade-in': enableTransition, 'no-animation': !enableTransition }\">\n <div\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.background-color]=\"dialogueBgColor\"\n [style.border-radius]=\"borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n class=\"modal-content relative rounded-lg shadow-lg p-4\"\n [ngClass]=\"customClass\"\n [ngClass]=\"{\n 'max-w-sm': size === 'small',\n 'max-w-md': size === 'medium',\n 'max-w-lg': size === 'large'\n }\"\n >\n <!-- Close icon -->\n \n <verben-svg *ngIf=\"showCloseIcon\"\n [class]=\"closeIconClass\"\n (click)=\"onClose()\" icon=\"close\" [width]=\"20\" [height]=\"20\" fill=\"white\" stroke=\"#000\"></verben-svg>\n \n <!-- Modal Header -->\n <div class=\"modal-header text-lg font-semibold mb-4\">\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Body -->\n <div class=\"modal-body mb-4\">\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Footer -->\n <div *ngIf=\"!disableFooter\" class=\"modal-footer flex justify-end space-x-2\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".modal-wrapper{display:flex;justify-content:center;align-items:center;position:fixed;inset:0;z-index:1000;background-color:#00000080;transition:opacity .3s ease-in-out;opacity:1}.modal-wrapper.fade-in{opacity:1}.modal-wrapper.fade-out{opacity:0}.no-animation{transition:none}.closeIconClass{position:absolute;top:0;right:0;cursor:pointer}.modal-content{position:relative;max-width:600px;width:100%}.max-w-sm{max-width:400px}.max-w-md{max-width:600px}.max-w-lg{max-width:800px}@media (max-width: 768px){.modal-content{width:100%;max-width:none;margin:0 1rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }] });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: VerbenDialogueComponent, selector: "verben-dialogue", inputs: { headerTemplate: "headerTemplate", bodyTemplate: "bodyTemplate", footerTemplate: "footerTemplate", showCloseIcon: "showCloseIcon", dismissOutsideClick: "dismissOutsideClick", closeOnEscape: "closeOnEscape", isVisible: "isVisible", size: "size", backdropColor: "backdropColor", customClass: "customClass", disableFooter: "disableFooter", margin: "margin", padding: "padding", borderRadius: "borderRadius", dialogueBgColor: "dialogueBgColor", closeIconClass: "closeIconClass", boxShadow: "boxShadow", enableTransition: "enableTransition", modalData: "modalData", mode: "mode", position: "position", drawerWidth: "drawerWidth" }, outputs: { openModal: "openModal", closeModal: "closeModal" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)", "document:click": "onOutsideClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"modal-wrapper fixed inset-0 flex justify-center items-center\"\n [ngClass]=\"{\n 'visible opacity-100': isVisible,\n 'invisible opacity-0': !isVisible,\n 'justify-start': mode === 'drawer' && position === 'left',\n 'justify-end': mode === 'drawer' && position === 'right'\n }\"\n [ngStyle]=\"{ 'background-color': backdropColor, 'transition': 'opacity 0.3s ease' }\"\n>\n <div\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.background-color]=\"dialogueBgColor\"\n [style.border-radius]=\"mode==='dialogue' && borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n [class]=\"customClass\"\n [ngStyle]=\"{'max-width':mode==='drawer'&&drawerWidth}\"\n [ngClass]=\"{\n 'modal-content p-4': mode === 'dialogue',\n 'max-w-sm': size === 'small' && mode === 'dialogue',\n 'max-w-md': size === 'medium' && mode === 'dialogue',\n 'max-w-lg': size === 'large' && mode === 'dialogue',\n 'drawer-left': mode === 'drawer' && position === 'left',\n 'drawer-right': mode === 'drawer' && position === 'right',\n 'drawer-show-left': mode === 'drawer' && position === 'left' && isVisible,\n 'drawer-show-right': mode === 'drawer' && position === 'right' && isVisible\n }\"\n >\n <!-- Close Icon -->\n <verben-svg\n *ngIf=\"showCloseIcon\"\n [class]=\"closeIconClass\"\n (click)=\"onClose()\"\n icon=\"close\"\n [width]=\"20\"\n [height]=\"20\"\n fill=\"white\"\n stroke=\"#000\"\n ></verben-svg>\n\n <!-- Modal Header -->\n <div class=\"modal-header text-lg font-semibold mb-4\">\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Body -->\n <div class=\"modal-body mb-4\">\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Footer -->\n <div *ngIf=\"!disableFooter\" class=\"modal-footer flex justify-end space-x-2\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".modal-wrapper{display:flex;justify-content:center;align-items:center;position:fixed;inset:0;z-index:1000;background-color:#00000080;transition:.3s ease-in-out}.modal-wrapper.visible{visibility:visible}.modal-wrapper.invisible{visibility:hidden;transition:.3s ease,visibility 0s .3s}.pos-left{position:fixed;top:0;left:0;height:100vh}.modal-wrapper.fade-in{opacity:1}.modal-wrapper.fade-out{opacity:0}.no-animation{transition:none}.closeIconClass{position:absolute;top:0;right:0;cursor:pointer}.modal-content{position:relative;max-width:600px;width:100%}.drawer-left,.drawer-right{position:fixed;top:0;height:100%;width:100%;background-color:#fff;overflow-y:auto;transition:.4s ease-in-out}.drawer-left{left:0;transform:translate(-100%)}.drawer-right{right:0;transform:translate(100%)}.drawer-show-left,.drawer-show-right{transform:translate(0)}.max-w-sm{max-width:400px}.max-w-md{max-width:600px}.max-w-lg{max-width:800px}@media (max-width: 768px){.modal-content{width:100%;max-width:none;margin:0 1rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }] });
52
55
  }
53
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: VerbenDialogueComponent, decorators: [{
54
57
  type: Component,
55
- args: [{ selector: 'verben-dialogue', template: "<div *ngIf=\"isVisible\" class=\"modal-wrapper fixed inset-0 flex justify-center items-center\"\n [ngStyle]=\"{'background-color': backdropColor}\" [ngClass]=\"{ 'fade-in': enableTransition, 'no-animation': !enableTransition }\">\n <div\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.background-color]=\"dialogueBgColor\"\n [style.border-radius]=\"borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n class=\"modal-content relative rounded-lg shadow-lg p-4\"\n [ngClass]=\"customClass\"\n [ngClass]=\"{\n 'max-w-sm': size === 'small',\n 'max-w-md': size === 'medium',\n 'max-w-lg': size === 'large'\n }\"\n >\n <!-- Close icon -->\n \n <verben-svg *ngIf=\"showCloseIcon\"\n [class]=\"closeIconClass\"\n (click)=\"onClose()\" icon=\"close\" [width]=\"20\" [height]=\"20\" fill=\"white\" stroke=\"#000\"></verben-svg>\n \n <!-- Modal Header -->\n <div class=\"modal-header text-lg font-semibold mb-4\">\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Body -->\n <div class=\"modal-body mb-4\">\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Footer -->\n <div *ngIf=\"!disableFooter\" class=\"modal-footer flex justify-end space-x-2\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".modal-wrapper{display:flex;justify-content:center;align-items:center;position:fixed;inset:0;z-index:1000;background-color:#00000080;transition:opacity .3s ease-in-out;opacity:1}.modal-wrapper.fade-in{opacity:1}.modal-wrapper.fade-out{opacity:0}.no-animation{transition:none}.closeIconClass{position:absolute;top:0;right:0;cursor:pointer}.modal-content{position:relative;max-width:600px;width:100%}.max-w-sm{max-width:400px}.max-w-md{max-width:600px}.max-w-lg{max-width:800px}@media (max-width: 768px){.modal-content{width:100%;max-width:none;margin:0 1rem}}\n"] }]
58
+ args: [{ selector: 'verben-dialogue', template: "<div\n class=\"modal-wrapper fixed inset-0 flex justify-center items-center\"\n [ngClass]=\"{\n 'visible opacity-100': isVisible,\n 'invisible opacity-0': !isVisible,\n 'justify-start': mode === 'drawer' && position === 'left',\n 'justify-end': mode === 'drawer' && position === 'right'\n }\"\n [ngStyle]=\"{ 'background-color': backdropColor, 'transition': 'opacity 0.3s ease' }\"\n>\n <div\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.background-color]=\"dialogueBgColor\"\n [style.border-radius]=\"mode==='dialogue' && borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n [class]=\"customClass\"\n [ngStyle]=\"{'max-width':mode==='drawer'&&drawerWidth}\"\n [ngClass]=\"{\n 'modal-content p-4': mode === 'dialogue',\n 'max-w-sm': size === 'small' && mode === 'dialogue',\n 'max-w-md': size === 'medium' && mode === 'dialogue',\n 'max-w-lg': size === 'large' && mode === 'dialogue',\n 'drawer-left': mode === 'drawer' && position === 'left',\n 'drawer-right': mode === 'drawer' && position === 'right',\n 'drawer-show-left': mode === 'drawer' && position === 'left' && isVisible,\n 'drawer-show-right': mode === 'drawer' && position === 'right' && isVisible\n }\"\n >\n <!-- Close Icon -->\n <verben-svg\n *ngIf=\"showCloseIcon\"\n [class]=\"closeIconClass\"\n (click)=\"onClose()\"\n icon=\"close\"\n [width]=\"20\"\n [height]=\"20\"\n fill=\"white\"\n stroke=\"#000\"\n ></verben-svg>\n\n <!-- Modal Header -->\n <div class=\"modal-header text-lg font-semibold mb-4\">\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Body -->\n <div class=\"modal-body mb-4\">\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Footer -->\n <div *ngIf=\"!disableFooter\" class=\"modal-footer flex justify-end space-x-2\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".modal-wrapper{display:flex;justify-content:center;align-items:center;position:fixed;inset:0;z-index:1000;background-color:#00000080;transition:.3s ease-in-out}.modal-wrapper.visible{visibility:visible}.modal-wrapper.invisible{visibility:hidden;transition:.3s ease,visibility 0s .3s}.pos-left{position:fixed;top:0;left:0;height:100vh}.modal-wrapper.fade-in{opacity:1}.modal-wrapper.fade-out{opacity:0}.no-animation{transition:none}.closeIconClass{position:absolute;top:0;right:0;cursor:pointer}.modal-content{position:relative;max-width:600px;width:100%}.drawer-left,.drawer-right{position:fixed;top:0;height:100%;width:100%;background-color:#fff;overflow-y:auto;transition:.4s ease-in-out}.drawer-left{left:0;transform:translate(-100%)}.drawer-right{right:0;transform:translate(100%)}.drawer-show-left,.drawer-show-right{transform:translate(0)}.max-w-sm{max-width:400px}.max-w-md{max-width:600px}.max-w-lg{max-width:800px}@media (max-width: 768px){.modal-content{width:100%;max-width:none;margin:0 1rem}}\n"] }]
56
59
  }], propDecorators: { headerTemplate: [{
57
60
  type: Input
58
61
  }], bodyTemplate: [{
@@ -83,8 +86,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
83
86
  type: Input
84
87
  }], dialogueBgColor: [{
85
88
  type: Input
86
- }], closeIcon: [{
87
- type: Input
88
89
  }], closeIconClass: [{
89
90
  type: Input
90
91
  }], boxShadow: [{
@@ -93,6 +94,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
93
94
  type: Input
94
95
  }], modalData: [{
95
96
  type: Input
97
+ }], mode: [{
98
+ type: Input
99
+ }], position: [{
100
+ type: Input
101
+ }], drawerWidth: [{
102
+ type: Input
96
103
  }], openModal: [{
97
104
  type: Output
98
105
  }], closeModal: [{
@@ -104,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
104
111
  type: HostListener,
105
112
  args: ['document:click', ['$event']]
106
113
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyYmVuLWRpYWxvZ3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvdmVyYmVuLWRpYWxvZ3VlL3ZlcmJlbi1kaWFsb2d1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmJlbi1kaWFsb2d1ZS92ZXJiZW4tZGlhbG9ndWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7Ozs7QUFPdkIsTUFBTSxPQUFPLHVCQUF1QjtJQUN6QixjQUFjLEdBQTRCLElBQUksQ0FBQztJQUMvQyxZQUFZLEdBQTRCLElBQUksQ0FBQztJQUM3QyxjQUFjLEdBQTRCLElBQUksQ0FBQztJQUMvQyxhQUFhLEdBQVksSUFBSSxDQUFDO0lBQzlCLG1CQUFtQixHQUFZLElBQUksQ0FBQztJQUNwQyxhQUFhLEdBQVksSUFBSSxDQUFDO0lBQzlCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsSUFBSSxHQUFpQyxPQUFPLENBQUM7SUFDN0MsYUFBYSxHQUFXLFdBQVcsQ0FBQztJQUNwQyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUNwQixPQUFPLEdBQVcsTUFBTSxDQUFDO0lBQ3pCLFlBQVksR0FBVyxNQUFNLENBQUM7SUFDOUIsZUFBZSxHQUFXLE1BQU0sQ0FBQztJQUNqQyxTQUFTLEdBQVcsT0FBTyxDQUFDO0lBQzVCLGNBQWMsR0FBVyxnQkFBZ0IsQ0FBQztJQUMxQyxTQUFTLEdBQVcsMkNBQTJDLENBQUM7SUFDaEUsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDO0lBQ2hDLFNBQVMsQ0FBTTtJQUVkLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3BDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRS9DLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFpQjtRQUM5QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDM0MsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDO3VHQW5EVSx1QkFBdUI7MkZBQXZCLHVCQUF1QiwyMUJDZHBDLDJuREE0Q0E7OzJGRDlCYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUtsQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFTUCxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkQsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tZGlhbG9ndWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyYmVuLWRpYWxvZ3VlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVyYmVuLWRpYWxvZ3VlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVmVyYmVuRGlhbG9ndWVDb21wb25lbnQge1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc2hvd0Nsb3NlSWNvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc21pc3NPdXRzaWRlQ2xpY2s6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjbG9zZU9uRXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnc21hbGwnO1xuICBASW5wdXQoKSBiYWNrZHJvcENvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMDVkJztcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlRm9vdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1hcmdpbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhZGRpbmc6IHN0cmluZyA9ICcxMHB4JztcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMTBweCc7XG4gIEBJbnB1dCgpIGRpYWxvZ3VlQmdDb2xvcjogc3RyaW5nID0gJyNmZmYnO1xuICBASW5wdXQoKSBjbG9zZUljb246IHN0cmluZyA9ICdjbG9zZSc7XG4gIEBJbnB1dCgpIGNsb3NlSWNvbkNsYXNzOiBzdHJpbmcgPSAnY2xvc2VJY29uQ2xhc3MnO1xuICBASW5wdXQoKSBib3hTaGFkb3c6IHN0cmluZyA9ICdib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKSc7XG4gIEBJbnB1dCgpIGVuYWJsZVRyYW5zaXRpb246IGJvb2xlYW4gPXRydWU7XG4gIEBJbnB1dCgpIG1vZGFsRGF0YTogYW55OyAgXG5cbiAgQE91dHB1dCgpIG9wZW5Nb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgdGhpcy5vcGVuTW9kYWwuZW1pdCh0aGlzLm1vZGFsRGF0YSk7IFxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGUgJiYgdGhpcy5pc1Zpc2libGUpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25PdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNtaXNzT3V0c2lkZUNsaWNrICYmIHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtd3JhcHBlcicpKSB7XG4gICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlTW9kYWwuZW1pdCh0aGlzLm1vZGFsRGF0YSk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJpc1Zpc2libGVcIiBjbGFzcz1cIm1vZGFsLXdyYXBwZXIgZml4ZWQgaW5zZXQtMCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiXG4gICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGJhY2tkcm9wQ29sb3J9XCIgW25nQ2xhc3NdPVwieyAnZmFkZS1pbic6IGVuYWJsZVRyYW5zaXRpb24sICduby1hbmltYXRpb24nOiAhZW5hYmxlVHJhbnNpdGlvbiB9XCI+XG4gIDxkaXZcbiAgICBbc3R5bGUucGFkZGluZ109XCJwYWRkaW5nXCJcbiAgICBbc3R5bGUubWFyZ2luXT1cIm1hcmdpblwiXG4gICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZGlhbG9ndWVCZ0NvbG9yXCJcbiAgICBbc3R5bGUuYm9yZGVyLXJhZGl1c109XCJib3JkZXJSYWRpdXNcIlxuICAgIFtzdHlsZS5ib3gtc2hhZG93XT1cImJveFNoYWRvd1wiXG4gICAgY2xhc3M9XCJtb2RhbC1jb250ZW50IHJlbGF0aXZlIHJvdW5kZWQtbGcgc2hhZG93LWxnIHAtNFwiXG4gICAgW25nQ2xhc3NdPVwiY3VzdG9tQ2xhc3NcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdtYXgtdy1zbSc6IHNpemUgPT09ICdzbWFsbCcsXG4gICAgICAnbWF4LXctbWQnOiBzaXplID09PSAnbWVkaXVtJyxcbiAgICAgICdtYXgtdy1sZyc6IHNpemUgPT09ICdsYXJnZSdcbiAgICB9XCJcbiAgPlxuICAgIDwhLS0gQ2xvc2UgaWNvbiAtLT5cbiBcbiAgICA8dmVyYmVuLXN2ZyAgICpuZ0lmPVwic2hvd0Nsb3NlSWNvblwiXG4gICBbY2xhc3NdPVwiY2xvc2VJY29uQ2xhc3NcIlxuICAgIChjbGljayk9XCJvbkNsb3NlKClcIiBpY29uPVwiY2xvc2VcIiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCIgZmlsbD1cIndoaXRlXCIgc3Ryb2tlPVwiIzAwMFwiPjwvdmVyYmVuLXN2Zz5cbiAgIFxuICAgIDwhLS0gTW9kYWwgSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgdGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNb2RhbCBCb2R5IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IG1iLTRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJib2R5VGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1vZGFsIEZvb3RlciAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRpc2FibGVGb290ZXJcIiBjbGFzcz1cIm1vZGFsLWZvb3RlciBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyYmVuLWRpYWxvZ3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvdmVyYmVuLWRpYWxvZ3VlL3ZlcmJlbi1kaWFsb2d1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmJlbi1kaWFsb2d1ZS92ZXJiZW4tZGlhbG9ndWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7Ozs7QUFPdkIsTUFBTSxPQUFPLHVCQUF1QjtJQUN6QixjQUFjLEdBQTRCLElBQUksQ0FBQztJQUMvQyxZQUFZLEdBQTRCLElBQUksQ0FBQztJQUM3QyxjQUFjLEdBQTRCLElBQUksQ0FBQztJQUMvQyxhQUFhLEdBQVksSUFBSSxDQUFDO0lBQzlCLG1CQUFtQixHQUFZLElBQUksQ0FBQztJQUNwQyxhQUFhLEdBQVksSUFBSSxDQUFDO0lBQzlCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsSUFBSSxHQUFpQyxPQUFPLENBQUM7SUFDN0MsYUFBYSxHQUFXLFdBQVcsQ0FBQztJQUNwQyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUNwQixPQUFPLEdBQVcsTUFBTSxDQUFDO0lBQ3pCLFlBQVksR0FBVyxNQUFNLENBQUM7SUFDOUIsZUFBZSxHQUFXLE1BQU0sQ0FBQztJQUNqQyxjQUFjLEdBQVcsZ0JBQWdCLENBQUM7SUFDMUMsU0FBUyxHQUFXLDJDQUEyQyxDQUFDO0lBQ2hFLGdCQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxTQUFTLENBQU07SUFFeEIsNkJBQTZCO0lBQ3BCLElBQUksR0FBMEIsVUFBVSxDQUFDO0lBQ3pDLFFBQVEsR0FBcUIsT0FBTyxDQUFDO0lBQ3JDLFdBQVcsR0FBVyxPQUFPLENBQUM7SUFDN0IsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFL0MsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUlELGdCQUFnQixDQUFDLEtBQW9CO1FBQ25DLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBR0QsY0FBYyxDQUFDLEtBQWlCO1FBQzlCLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztZQUMzQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7dUdBdkRVLHVCQUF1QjsyRkFBdkIsdUJBQXVCLG00QkNkcEMsK3ZFQStEQTs7MkZEakRhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxpQkFBaUI7OEJBS2xCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQVVQLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFuRCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbi1kaWFsb2d1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJiZW4tZGlhbG9ndWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJiZW4tZGlhbG9ndWUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJiZW5EaWFsb2d1ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGJvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzaG93Q2xvc2VJY29uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzbWlzc091dHNpZGVDbGljazogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGNsb3NlT25Fc2NhcGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdzbWFsbCc7XG4gIEBJbnB1dCgpIGJhY2tkcm9wQ29sb3I6IHN0cmluZyA9ICcjMDAwMDAwNWQnO1xuICBASW5wdXQoKSBjdXN0b21DbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRpc2FibGVGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWFyZ2luOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGFkZGluZzogc3RyaW5nID0gJzEwcHgnO1xuICBASW5wdXQoKSBib3JkZXJSYWRpdXM6IHN0cmluZyA9ICcxMHB4JztcbiAgQElucHV0KCkgZGlhbG9ndWVCZ0NvbG9yOiBzdHJpbmcgPSAnI2ZmZic7XG4gIEBJbnB1dCgpIGNsb3NlSWNvbkNsYXNzOiBzdHJpbmcgPSAnY2xvc2VJY29uQ2xhc3MnO1xuICBASW5wdXQoKSBib3hTaGFkb3c6IHN0cmluZyA9ICdib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKSc7XG4gIEBJbnB1dCgpIGVuYWJsZVRyYW5zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBtb2RhbERhdGE6IGFueTtcblxuICAvLyBOZXcgaW5wdXRzIGZvciBkcmF3ZXIgbW9kZVxuICBASW5wdXQoKSBtb2RlOiAnZGlhbG9ndWUnIHwgJ2RyYXdlcicgPSAnZGlhbG9ndWUnO1xuICBASW5wdXQoKSBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCc7XG4gIEBJbnB1dCgpIGRyYXdlcldpZHRoOiBzdHJpbmcgPSAnNTAwcHgnO1xuICBAT3V0cHV0KCkgb3Blbk1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLm9wZW5Nb2RhbC5lbWl0KHRoaXMubW9kYWxEYXRhKTtcbiAgICB9XG4gIH1cbiAgXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbkVzY2FwZSAmJiB0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbk91dHNpZGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc21pc3NPdXRzaWRlQ2xpY2sgJiYgdGhpcy5pc1Zpc2libGUpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC13cmFwcGVyJykpIHtcbiAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KHRoaXMubW9kYWxEYXRhKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm1vZGFsLXdyYXBwZXIgZml4ZWQgaW5zZXQtMCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAndmlzaWJsZSBvcGFjaXR5LTEwMCc6IGlzVmlzaWJsZSxcbiAgICAnaW52aXNpYmxlIG9wYWNpdHktMCc6ICFpc1Zpc2libGUsXG4gICAgJ2p1c3RpZnktc3RhcnQnOiBtb2RlID09PSAnZHJhd2VyJyAmJiBwb3NpdGlvbiA9PT0gJ2xlZnQnLFxuICAgICdqdXN0aWZ5LWVuZCc6IG1vZGUgPT09ICdkcmF3ZXInICYmIHBvc2l0aW9uID09PSAncmlnaHQnXG4gIH1cIlxuICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogYmFja2Ryb3BDb2xvciwgJ3RyYW5zaXRpb24nOiAnb3BhY2l0eSAwLjNzIGVhc2UnIH1cIlxuPlxuICA8ZGl2XG4gICAgW3N0eWxlLnBhZGRpbmddPVwicGFkZGluZ1wiXG4gICAgW3N0eWxlLm1hcmdpbl09XCJtYXJnaW5cIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImRpYWxvZ3VlQmdDb2xvclwiXG4gICAgW3N0eWxlLmJvcmRlci1yYWRpdXNdPVwibW9kZT09PSdkaWFsb2d1ZScgJiYgYm9yZGVyUmFkaXVzXCJcbiAgICBbc3R5bGUuYm94LXNoYWRvd109XCJib3hTaGFkb3dcIlxuICAgIFtjbGFzc109XCJjdXN0b21DbGFzc1wiXG4gICAgW25nU3R5bGVdPVwieydtYXgtd2lkdGgnOm1vZGU9PT0nZHJhd2VyJyYmZHJhd2VyV2lkdGh9XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnbW9kYWwtY29udGVudCBwLTQnOiBtb2RlID09PSAnZGlhbG9ndWUnLFxuICAgICAgJ21heC13LXNtJzogc2l6ZSA9PT0gJ3NtYWxsJyAmJiBtb2RlID09PSAnZGlhbG9ndWUnLFxuICAgICAgJ21heC13LW1kJzogc2l6ZSA9PT0gJ21lZGl1bScgJiYgbW9kZSA9PT0gJ2RpYWxvZ3VlJyxcbiAgICAgICdtYXgtdy1sZyc6IHNpemUgPT09ICdsYXJnZScgJiYgbW9kZSA9PT0gJ2RpYWxvZ3VlJyxcbiAgICAgICdkcmF3ZXItbGVmdCc6IG1vZGUgPT09ICdkcmF3ZXInICYmIHBvc2l0aW9uID09PSAnbGVmdCcsXG4gICAgICAnZHJhd2VyLXJpZ2h0JzogbW9kZSA9PT0gJ2RyYXdlcicgJiYgcG9zaXRpb24gPT09ICdyaWdodCcsXG4gICAgICAnZHJhd2VyLXNob3ctbGVmdCc6IG1vZGUgPT09ICdkcmF3ZXInICYmIHBvc2l0aW9uID09PSAnbGVmdCcgJiYgaXNWaXNpYmxlLFxuICAgICAgJ2RyYXdlci1zaG93LXJpZ2h0JzogbW9kZSA9PT0gJ2RyYXdlcicgJiYgcG9zaXRpb24gPT09ICdyaWdodCcgJiYgaXNWaXNpYmxlXG4gICAgfVwiXG4gID5cbiAgICA8IS0tIENsb3NlIEljb24gLS0+XG4gICAgPHZlcmJlbi1zdmdcbiAgICAgICpuZ0lmPVwic2hvd0Nsb3NlSWNvblwiXG4gICAgICBbY2xhc3NdPVwiY2xvc2VJY29uQ2xhc3NcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgW3dpZHRoXT1cIjIwXCJcbiAgICAgIFtoZWlnaHRdPVwiMjBcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgIHN0cm9rZT1cIiMwMDBcIlxuICAgID48L3ZlcmJlbi1zdmc+XG5cbiAgICA8IS0tIE1vZGFsIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTW9kYWwgQm9keSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtYi00XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYm9keVRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNb2RhbCBGb290ZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFkaXNhYmxlRm9vdGVyXCIgY2xhc3M9XCJtb2RhbC1mb290ZXIgZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19