tnx-shared 5.2.28 → 5.2.29

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.
Files changed (85) hide show
  1. package/assets/docker/docker-entrypoint.sh +1 -1
  2. package/classes/base/list-component-base.d.ts +19 -5
  3. package/classes/base/list-component-base.d.ts.map +1 -1
  4. package/classes/environment-schema.d.ts +23 -20
  5. package/classes/environment-schema.d.ts.map +1 -1
  6. package/classes/public-function.d.ts +1 -0
  7. package/classes/public-function.d.ts.map +1 -1
  8. package/components/chat/chat-box/chat-box.component.d.ts.map +1 -1
  9. package/components/common-app-component/common-app-component.d.ts +1 -3
  10. package/components/common-app-component/common-app-component.d.ts.map +1 -1
  11. package/components/crud/advance-search/advance-search.component.d.ts +6 -6
  12. package/components/crud/advance-search/advance-search.component.d.ts.map +1 -1
  13. package/components/crud/crud-form/crud-form.component.d.ts +6 -0
  14. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  15. package/components/dropdown/dropdown.component.d.ts +5 -3
  16. package/components/dropdown/dropdown.component.d.ts.map +1 -1
  17. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  18. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
  19. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
  20. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts.map +1 -1
  21. package/components/tn-tinymce/tn-tinymce.component.d.ts +2 -0
  22. package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
  23. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -0
  24. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  25. package/directives/primeng/tn-table.directive.d.ts +7 -6
  26. package/directives/primeng/tn-table.directive.d.ts.map +1 -1
  27. package/esm2020/classes/base/list-component-base.mjs +56 -32
  28. package/esm2020/classes/environment-schema.mjs +10 -1
  29. package/esm2020/classes/public-function.mjs +3 -1
  30. package/esm2020/components/add-news/add-news.component.mjs +3 -3
  31. package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +2 -2
  32. package/esm2020/components/chat/chat-box/chat-box.component.mjs +3 -4
  33. package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +2 -2
  34. package/esm2020/components/common-app-component/common-app-component.mjs +57 -57
  35. package/esm2020/components/common-dashboard/common-dashboard.component.mjs +3 -3
  36. package/esm2020/components/crud/advance-search/advance-search.component.mjs +28 -19
  37. package/esm2020/components/crud/crud-form/crud-form.component.mjs +12 -4
  38. package/esm2020/components/crud/crud-list/crud-list.component.mjs +3 -3
  39. package/esm2020/components/crud/tree-table/tree-table.component.mjs +3 -3
  40. package/esm2020/components/dropdown/dropdown.component.mjs +29 -24
  41. package/esm2020/components/entity-permission/entity-permission.component.mjs +3 -3
  42. package/esm2020/components/entity-picker/entity-picker-box/entity-picker-box.component.mjs +3 -3
  43. package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +3 -3
  44. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +3 -3
  45. package/esm2020/components/main-list/main-list.component.mjs +3 -3
  46. package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +8 -3
  47. package/esm2020/components/radio-button-list/radio-button-list.component.mjs +3 -3
  48. package/esm2020/components/report-queue/report-queue.component.mjs +2 -2
  49. package/esm2020/components/settings/settings.component.mjs +3 -3
  50. package/esm2020/components/tn-app-help/tn-app-help.component.mjs +3 -3
  51. package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +3 -3
  52. package/esm2020/components/tn-custom-scrollbar/tn-custom-scrollbar.component.mjs +5 -4
  53. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +7 -3
  54. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +3 -3
  55. package/esm2020/components/user-picker/user-picker.component.mjs +2 -2
  56. package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +3 -3
  57. package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +3 -3
  58. package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +6 -3
  59. package/esm2020/congviec/congviec/congviec.component.mjs +3 -3
  60. package/esm2020/directives/primeng/tn-table.directive.mjs +28 -13
  61. package/esm2020/services/common.service.mjs +11 -3
  62. package/esm2020/services/environment.service.mjs +48 -7
  63. package/esm2020/services/permission.service.mjs +12 -15
  64. package/esm2020/services/position.service.mjs +2 -2
  65. package/esm2020/services/signalr.service.mjs +3 -3
  66. package/esm2020/services/tn-client.service.mjs +30 -25
  67. package/esm2020/tnx-shared.module.mjs +14 -8
  68. package/fesm2015/tnx-shared.mjs +587 -445
  69. package/fesm2015/tnx-shared.mjs.map +1 -1
  70. package/fesm2020/tnx-shared.mjs +587 -445
  71. package/fesm2020/tnx-shared.mjs.map +1 -1
  72. package/package.json +2 -2
  73. package/services/common.service.d.ts +6 -0
  74. package/services/common.service.d.ts.map +1 -1
  75. package/services/environment.service.d.ts +32 -23
  76. package/services/environment.service.d.ts.map +1 -1
  77. package/services/permission.service.d.ts +5 -0
  78. package/services/permission.service.d.ts.map +1 -1
  79. package/services/position.service.d.ts.map +1 -1
  80. package/services/signalr.service.d.ts +1 -1
  81. package/services/signalr.service.d.ts.map +1 -1
  82. package/services/tn-client.service.d.ts +3 -1
  83. package/services/tn-client.service.d.ts.map +1 -1
  84. package/tnx-shared.module.d.ts +12 -11
  85. package/tnx-shared.module.d.ts.map +1 -1
@@ -30,10 +30,10 @@ export class MainListComponent extends ComponentBase {
30
30
  }
31
31
  }
32
32
  MainListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MainListComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
33
- MainListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MainListComponent, selector: "main-list", inputs: { title: "title", fitTitle: "fitTitle", hiddenLeftToolbar: "hiddenLeftToolbar", hiddenRightToolbar: "hiddenRightToolbar", showScrollBar: "showScrollBar", showScrollHorizontal: "showScrollHorizontal" }, queries: [{ propertyName: "children", predicate: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"custom-card card card-w-title flex-container-fit-child\">\r\n <div class=\"ui-helper-clearfix crud-list-header-area\">\r\n <div *ngIf=\"templateContent['searchCustom']\" class=\"p-grid ui-fluid custom-p-col custom-search-area\">\r\n <div class=\"p-col-12 main-container-search\">\r\n <div class=\"p-grid main-container-search-inner\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateContent['searchCustom']; context: {$implicit: this}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid ui-fluid custom-p-col page-title-area\">\r\n <div class=\"main-title\" [class.fit-title]=\"fitTitle\">\r\n <h1>\r\n {{title}}\r\n </h1>\r\n </div>\r\n <div class=\"paginator-table after-title\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['afterTitle']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fit-content crud-list-body-area\">\r\n <div class=\"crud-list-body-area-inner\" style=\"overflow: unset;\">\r\n <div class=\"flex-container-fit-child\" style=\"overflow: unset;\">\r\n <div class=\"p-grid crudListToolbar\">\r\n <ng-container>\r\n <div *ngIf=\"!hiddenLeftToolbar\" class=\"p-col-12 button-group function-topbar custom-toolbar\"\r\n [ngClass]=\"hiddenRightToolbar ? 'p-md-12 p-lg-12' : 'p-md-7 p-lg-8'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateContent['leftToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!hiddenRightToolbar\" class=\"p-col-12 advance-search-container\"\r\n [ngClass]=\"hiddenLeftToolbar ? 'p-md-12 p-lg-12' : 'p-md-5 p-lg-4'\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['rightToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"templateContent['topGrid']\" class=\"extend-content-top-grid\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['topGrid']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n <div class=\"container-table fit-content\" [class.--table-responsive]=\"responsive\">\r\n <div class=\"container-table-inner\">\r\n <tn-custom-scrollbar *ngIf=\"showScrollBar\" #scrollbar\r\n [showScrollHorizontal]=\"showScrollHorizontal\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"!showScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-border-line --top\"></div>\r\n <div class=\"table-border-line --right\"></div>\r\n <div class=\"table-border-line --bottom\"></div>\r\n <div class=\"table-border-line --left\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".container-table{display:flex;overflow:hidden;flex-direction:column}.container-table .container-table-inner{display:flex;position:relative;height:auto;max-height:100%;min-height:60px}.container-table-inner>tn-custom-scrollbar{width:100%}.cell-checkbox{text-align:center}.pick-color-row{inset:0;margin:auto;position:absolute;display:flex;flex-wrap:wrap;width:1.4em;height:1.4em;border:1px solid #d1d1d1;border-radius:2px;cursor:pointer}.pick-color-row>div{flex:0 0 50%;background:#84d140;border:1px solid #fff}.pick-color-row>div:nth-child(2){background:#fc6868}.pick-color-row>div:nth-child(3){background:#fbc02d}.pick-color-row>div:nth-child(4){background:#7dc5ff}.cell-header-function{display:flex;align-items:center}.cell-header-function>span{text-align:center;flex:1 1}.cell-header-function button{width:24px;height:24px;padding:0;margin:0}.group-icon{font-weight:400;color:#256aa2}.group-icon i{font-size:.8em;margin-right:5px}.center{text-align:center!important}.row-card{position:absolute;left:0;top:0;width:5px;height:100%}.column-function{min-width:100px;padding:0}.custom-search-area{margin:-.5em -1em .5em;padding-left:.5em;padding-right:.5em;background-color:#f2f2f2}.main-container-search-inner{margin-bottom:-.5em}.main-title>h1{font-size:1.2em}.filter-row>th:not(.sticky):not(.chkbox){padding:3px!important}.container-text-workflow{display:flex;align-items:center;justify-content:center}.container-text-workflow .link-or-action{color:#2196f3;cursor:pointer}.container-text-workflow .content{flex:1 1}.btnReload{height:2rem;width:2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,calc(-50% - 1px))}.toggle-showfull{color:#00f;cursor:pointer;font-size:.8rem;white-space:nowrap;font-weight:700}.col-share-permission>div:not(:last-child){margin-bottom:5px}.advance-search-container{display:flex;justify-content:flex-end}::ng-deep crud-list advance-search{display:block;flex:1;max-width:400px}::ng-deep crud-list .ps__rail-x,::ng-deep crud-list .ps__rail-y{z-index:5}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter{z-index:999}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter .fixed-filter{z-index:10;position:fixed;min-width:200px}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th .container-icon-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}::ng-deep crud-list .check-all-custom{position:absolute;width:0;height:0}::ng-deep crud-list .cell-header-filter{position:relative}::ng-deep crud-list .cell-header-filter .tn-dropdown{height:32px}::ng-deep crud-list .cell-header-filter tn-mask .p-inputtext{width:100%}::ng-deep crud-list .cell-header-filter .filter-box{display:flex;min-width:0px;background-color:#fff;border-radius:3px}::ng-deep crud-list .cell-header-filter .filter-box>div{flex:1;border:1px solid #ced4da;border-right:none;border-radius:3px 0 0 3px;outline:none;overflow:hidden}::ng-deep crud-list .cell-header-filter .filter-box>span{cursor:pointer;min-width:unset;flex-basis:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:#f5f6f8;color:#6c757d;border:1px solid #ced4da;outline:none}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear{border-radius:0 3px 3px 0}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear.dirty{color:#008eff}::ng-deep crud-list .cell-header-filter .filter-box input{padding-left:5px;padding-right:5px;border:none;box-shadow:none!important}::ng-deep crud-list .cell-header-filter .filter-box:not(.no-transition){transition:min-width .1s}::ng-deep crud-list .cell-header-filter .filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter .p-multiselect-label.p-placeholder{padding-left:.5rem;padding-right:.5rem}::ng-deep crud-list .cell-header-filter:focus-within,::ng-deep crud-list .cell-header-filter.focus-within{z-index:10!important}::ng-deep crud-list .cell-header-filter:focus-within .filter-boolean-box .p-button,::ng-deep crud-list .cell-header-filter.focus-within .filter-boolean-box .p-button{z-index:10}::ng-deep crud-list .cell-header-filter:focus-within .filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .filter-box>div{box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box{position:absolute;top:calc(50% - 16px);min-width:250px;z-index:2;box-shadow:5px 0 15px 1px #00000045}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>div{flex:1;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>span.action-clear,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>span.action-clear{display:flex}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter{min-width:140px}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter:focus-within:nth-last-child(2) .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within:nth-last-child(2) .short-filter-box{left:50%;transform:translate(-50%)}::ng-deep crud-list .cell-header-filter:last-child .filter-box{right:3px}::ng-deep crud-list .table-border-line{position:absolute;z-index:5;background-color:#eee}::ng-deep crud-list .table-border-line.--left,::ng-deep crud-list .table-border-line.--right{top:0;bottom:0;width:1px}::ng-deep crud-list .table-border-line.--top,::ng-deep crud-list .table-border-line.--bottom{left:0;right:0;height:1px}::ng-deep crud-list .table-border-line.--left{left:0}::ng-deep crud-list .table-border-line.--right{right:0}::ng-deep crud-list .table-border-line.--top{top:0}::ng-deep crud-list .table-border-line.--bottom{bottom:0}::ng-deep crud-list .filter-boolean-box{text-align:center}::ng-deep crud-list .filter-boolean-box .p-selectbutton{white-space:nowrap}::ng-deep crud-list .custom-search-area crud-form{width:100%}::ng-deep crud-list>p-contextmenu{display:none}@media (max-width: 640px){::ng-deep crud-list .--table-responsive .p-datatable-wrapper{padding:1px}}\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: "component", type: i2.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }] });
33
+ MainListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MainListComponent, selector: "main-list", inputs: { title: "title", fitTitle: "fitTitle", hiddenLeftToolbar: "hiddenLeftToolbar", hiddenRightToolbar: "hiddenRightToolbar", showScrollBar: "showScrollBar", showScrollHorizontal: "showScrollHorizontal" }, queries: [{ propertyName: "children", predicate: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"custom-card card card-w-title flex-container-fit-child\">\r\n <div class=\"ui-helper-clearfix crud-list-header-area\">\r\n <div *ngIf=\"templateContent['searchCustom']\" class=\"grid ui-fluid custom-p-col custom-search-area\">\r\n <div class=\"col-12 main-container-search\">\r\n <div class=\"grid main-container-search-inner\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateContent['searchCustom']; context: {$implicit: this}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid ui-fluid custom-p-col page-title-area\">\r\n <div class=\"main-title\" [class.fit-title]=\"fitTitle\">\r\n <h1>\r\n {{title}}\r\n </h1>\r\n </div>\r\n <div class=\"paginator-table after-title\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['afterTitle']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fit-content crud-list-body-area\">\r\n <div class=\"crud-list-body-area-inner\" style=\"overflow: unset;\">\r\n <div class=\"flex-container-fit-child\" style=\"overflow: unset;\">\r\n <div class=\"grid crudListToolbar\">\r\n <ng-container>\r\n <div *ngIf=\"!hiddenLeftToolbar\" class=\"col-12 button-group function-topbar custom-toolbar\"\r\n [ngClass]=\"hiddenRightToolbar ? 'md:col-12 p-lg-12' : 'md:col-7 p-lg-8'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateContent['leftToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!hiddenRightToolbar\" class=\"col-12 advance-search-container\"\r\n [ngClass]=\"hiddenLeftToolbar ? 'md:col-12 p-lg-12' : 'md:col-5 p-lg-4'\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['rightToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"templateContent['topGrid']\" class=\"extend-content-top-grid\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['topGrid']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n <div class=\"container-table fit-content\" [class.--table-responsive]=\"responsive\">\r\n <div class=\"container-table-inner\">\r\n <tn-custom-scrollbar *ngIf=\"showScrollBar\" #scrollbar\r\n [showScrollHorizontal]=\"showScrollHorizontal\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"!showScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-border-line --top\"></div>\r\n <div class=\"table-border-line --right\"></div>\r\n <div class=\"table-border-line --bottom\"></div>\r\n <div class=\"table-border-line --left\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".container-table{display:flex;overflow:hidden;flex-direction:column}.container-table .container-table-inner{display:flex;position:relative;height:auto;max-height:100%;min-height:60px}.container-table-inner>tn-custom-scrollbar{width:100%}.cell-checkbox{text-align:center}.pick-color-row{inset:0;margin:auto;position:absolute;display:flex;flex-wrap:wrap;width:1.4em;height:1.4em;border:1px solid #d1d1d1;border-radius:2px;cursor:pointer}.pick-color-row>div{flex:0 0 50%;background:#84d140;border:1px solid #fff}.pick-color-row>div:nth-child(2){background:#fc6868}.pick-color-row>div:nth-child(3){background:#fbc02d}.pick-color-row>div:nth-child(4){background:#7dc5ff}.cell-header-function{display:flex;align-items:center}.cell-header-function>span{text-align:center;flex:1 1}.cell-header-function button{width:24px;height:24px;padding:0;margin:0}.group-icon{font-weight:400;color:#256aa2}.group-icon i{font-size:.8em;margin-right:5px}.center{text-align:center!important}.row-card{position:absolute;left:0;top:0;width:5px;height:100%}.column-function{min-width:100px;padding:0}.custom-search-area{margin:-.5em -1em .5em;padding-left:.5em;padding-right:.5em;background-color:#f2f2f2}.main-container-search-inner{margin-bottom:-.5em}.main-title>h1{font-size:1.2em}.filter-row>th:not(.sticky):not(.chkbox){padding:3px!important}.container-text-workflow{display:flex;align-items:center;justify-content:center}.container-text-workflow .link-or-action{color:#2196f3;cursor:pointer}.container-text-workflow .content{flex:1 1}.btnReload{height:2rem;width:2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,calc(-50% - 1px))}.toggle-showfull{color:#00f;cursor:pointer;font-size:.8rem;white-space:nowrap;font-weight:700}.col-share-permission>div:not(:last-child){margin-bottom:5px}.advance-search-container{display:flex;justify-content:flex-end}::ng-deep crud-list advance-search{display:block;flex:1;max-width:400px}::ng-deep crud-list .ps__rail-x,::ng-deep crud-list .ps__rail-y{z-index:5}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter{z-index:999}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter .fixed-filter{z-index:10;position:fixed;min-width:200px}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th .container-icon-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}::ng-deep crud-list .check-all-custom{position:absolute;width:0;height:0}::ng-deep crud-list .cell-header-filter{position:relative}::ng-deep crud-list .cell-header-filter .tn-dropdown{height:32px}::ng-deep crud-list .cell-header-filter tn-mask .p-inputtext{width:100%}::ng-deep crud-list .cell-header-filter .filter-box{display:flex;min-width:0px;background-color:#fff;border-radius:3px}::ng-deep crud-list .cell-header-filter .filter-box>div{flex:1;border:1px solid #ced4da;border-right:none;border-radius:3px 0 0 3px;outline:none;overflow:hidden}::ng-deep crud-list .cell-header-filter .filter-box>span{cursor:pointer;min-width:unset;flex-basis:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:#f5f6f8;color:#6c757d;border:1px solid #ced4da;outline:none}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear{border-radius:0 3px 3px 0}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear.dirty{color:#008eff}::ng-deep crud-list .cell-header-filter .filter-box input{padding-left:5px;padding-right:5px;border:none;box-shadow:none!important}::ng-deep crud-list .cell-header-filter .filter-box:not(.no-transition){transition:min-width .1s}::ng-deep crud-list .cell-header-filter .filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter .p-multiselect-label.p-placeholder{padding-left:.5rem;padding-right:.5rem}::ng-deep crud-list .cell-header-filter:focus-within,::ng-deep crud-list .cell-header-filter.focus-within{z-index:10!important}::ng-deep crud-list .cell-header-filter:focus-within .filter-boolean-box .p-button,::ng-deep crud-list .cell-header-filter.focus-within .filter-boolean-box .p-button{z-index:10}::ng-deep crud-list .cell-header-filter:focus-within .filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .filter-box>div{box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box{position:absolute;top:calc(50% - 16px);min-width:250px;z-index:2;box-shadow:5px 0 15px 1px #00000045}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>div{flex:1;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>span.action-clear,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>span.action-clear{display:flex}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter{min-width:140px}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter:focus-within:nth-last-child(2) .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within:nth-last-child(2) .short-filter-box{left:50%;transform:translate(-50%)}::ng-deep crud-list .cell-header-filter:last-child .filter-box{right:3px}::ng-deep crud-list .table-border-line{position:absolute;z-index:5;background-color:#eee}::ng-deep crud-list .table-border-line.--left,::ng-deep crud-list .table-border-line.--right{top:0;bottom:0;width:1px}::ng-deep crud-list .table-border-line.--top,::ng-deep crud-list .table-border-line.--bottom{left:0;right:0;height:1px}::ng-deep crud-list .table-border-line.--left{left:0}::ng-deep crud-list .table-border-line.--right{right:0}::ng-deep crud-list .table-border-line.--top{top:0}::ng-deep crud-list .table-border-line.--bottom{bottom:0}::ng-deep crud-list .filter-boolean-box{text-align:center}::ng-deep crud-list .filter-boolean-box .p-selectbutton{white-space:nowrap}::ng-deep crud-list .custom-search-area crud-form{width:100%}::ng-deep crud-list>p-contextmenu{display:none}@media (max-width: 640px){::ng-deep crud-list .--table-responsive .p-datatable-wrapper{padding:1px}}\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: "component", type: i2.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }] });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MainListComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'main-list', template: "<div #container class=\"custom-card card card-w-title flex-container-fit-child\">\r\n <div class=\"ui-helper-clearfix crud-list-header-area\">\r\n <div *ngIf=\"templateContent['searchCustom']\" class=\"p-grid ui-fluid custom-p-col custom-search-area\">\r\n <div class=\"p-col-12 main-container-search\">\r\n <div class=\"p-grid main-container-search-inner\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateContent['searchCustom']; context: {$implicit: this}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid ui-fluid custom-p-col page-title-area\">\r\n <div class=\"main-title\" [class.fit-title]=\"fitTitle\">\r\n <h1>\r\n {{title}}\r\n </h1>\r\n </div>\r\n <div class=\"paginator-table after-title\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['afterTitle']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fit-content crud-list-body-area\">\r\n <div class=\"crud-list-body-area-inner\" style=\"overflow: unset;\">\r\n <div class=\"flex-container-fit-child\" style=\"overflow: unset;\">\r\n <div class=\"p-grid crudListToolbar\">\r\n <ng-container>\r\n <div *ngIf=\"!hiddenLeftToolbar\" class=\"p-col-12 button-group function-topbar custom-toolbar\"\r\n [ngClass]=\"hiddenRightToolbar ? 'p-md-12 p-lg-12' : 'p-md-7 p-lg-8'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateContent['leftToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!hiddenRightToolbar\" class=\"p-col-12 advance-search-container\"\r\n [ngClass]=\"hiddenLeftToolbar ? 'p-md-12 p-lg-12' : 'p-md-5 p-lg-4'\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['rightToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"templateContent['topGrid']\" class=\"extend-content-top-grid\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['topGrid']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n <div class=\"container-table fit-content\" [class.--table-responsive]=\"responsive\">\r\n <div class=\"container-table-inner\">\r\n <tn-custom-scrollbar *ngIf=\"showScrollBar\" #scrollbar\r\n [showScrollHorizontal]=\"showScrollHorizontal\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"!showScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-border-line --top\"></div>\r\n <div class=\"table-border-line --right\"></div>\r\n <div class=\"table-border-line --bottom\"></div>\r\n <div class=\"table-border-line --left\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".container-table{display:flex;overflow:hidden;flex-direction:column}.container-table .container-table-inner{display:flex;position:relative;height:auto;max-height:100%;min-height:60px}.container-table-inner>tn-custom-scrollbar{width:100%}.cell-checkbox{text-align:center}.pick-color-row{inset:0;margin:auto;position:absolute;display:flex;flex-wrap:wrap;width:1.4em;height:1.4em;border:1px solid #d1d1d1;border-radius:2px;cursor:pointer}.pick-color-row>div{flex:0 0 50%;background:#84d140;border:1px solid #fff}.pick-color-row>div:nth-child(2){background:#fc6868}.pick-color-row>div:nth-child(3){background:#fbc02d}.pick-color-row>div:nth-child(4){background:#7dc5ff}.cell-header-function{display:flex;align-items:center}.cell-header-function>span{text-align:center;flex:1 1}.cell-header-function button{width:24px;height:24px;padding:0;margin:0}.group-icon{font-weight:400;color:#256aa2}.group-icon i{font-size:.8em;margin-right:5px}.center{text-align:center!important}.row-card{position:absolute;left:0;top:0;width:5px;height:100%}.column-function{min-width:100px;padding:0}.custom-search-area{margin:-.5em -1em .5em;padding-left:.5em;padding-right:.5em;background-color:#f2f2f2}.main-container-search-inner{margin-bottom:-.5em}.main-title>h1{font-size:1.2em}.filter-row>th:not(.sticky):not(.chkbox){padding:3px!important}.container-text-workflow{display:flex;align-items:center;justify-content:center}.container-text-workflow .link-or-action{color:#2196f3;cursor:pointer}.container-text-workflow .content{flex:1 1}.btnReload{height:2rem;width:2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,calc(-50% - 1px))}.toggle-showfull{color:#00f;cursor:pointer;font-size:.8rem;white-space:nowrap;font-weight:700}.col-share-permission>div:not(:last-child){margin-bottom:5px}.advance-search-container{display:flex;justify-content:flex-end}::ng-deep crud-list advance-search{display:block;flex:1;max-width:400px}::ng-deep crud-list .ps__rail-x,::ng-deep crud-list .ps__rail-y{z-index:5}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter{z-index:999}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter .fixed-filter{z-index:10;position:fixed;min-width:200px}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th .container-icon-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}::ng-deep crud-list .check-all-custom{position:absolute;width:0;height:0}::ng-deep crud-list .cell-header-filter{position:relative}::ng-deep crud-list .cell-header-filter .tn-dropdown{height:32px}::ng-deep crud-list .cell-header-filter tn-mask .p-inputtext{width:100%}::ng-deep crud-list .cell-header-filter .filter-box{display:flex;min-width:0px;background-color:#fff;border-radius:3px}::ng-deep crud-list .cell-header-filter .filter-box>div{flex:1;border:1px solid #ced4da;border-right:none;border-radius:3px 0 0 3px;outline:none;overflow:hidden}::ng-deep crud-list .cell-header-filter .filter-box>span{cursor:pointer;min-width:unset;flex-basis:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:#f5f6f8;color:#6c757d;border:1px solid #ced4da;outline:none}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear{border-radius:0 3px 3px 0}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear.dirty{color:#008eff}::ng-deep crud-list .cell-header-filter .filter-box input{padding-left:5px;padding-right:5px;border:none;box-shadow:none!important}::ng-deep crud-list .cell-header-filter .filter-box:not(.no-transition){transition:min-width .1s}::ng-deep crud-list .cell-header-filter .filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter .p-multiselect-label.p-placeholder{padding-left:.5rem;padding-right:.5rem}::ng-deep crud-list .cell-header-filter:focus-within,::ng-deep crud-list .cell-header-filter.focus-within{z-index:10!important}::ng-deep crud-list .cell-header-filter:focus-within .filter-boolean-box .p-button,::ng-deep crud-list .cell-header-filter.focus-within .filter-boolean-box .p-button{z-index:10}::ng-deep crud-list .cell-header-filter:focus-within .filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .filter-box>div{box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box{position:absolute;top:calc(50% - 16px);min-width:250px;z-index:2;box-shadow:5px 0 15px 1px #00000045}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>div{flex:1;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>span.action-clear,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>span.action-clear{display:flex}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter{min-width:140px}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter:focus-within:nth-last-child(2) .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within:nth-last-child(2) .short-filter-box{left:50%;transform:translate(-50%)}::ng-deep crud-list .cell-header-filter:last-child .filter-box{right:3px}::ng-deep crud-list .table-border-line{position:absolute;z-index:5;background-color:#eee}::ng-deep crud-list .table-border-line.--left,::ng-deep crud-list .table-border-line.--right{top:0;bottom:0;width:1px}::ng-deep crud-list .table-border-line.--top,::ng-deep crud-list .table-border-line.--bottom{left:0;right:0;height:1px}::ng-deep crud-list .table-border-line.--left{left:0}::ng-deep crud-list .table-border-line.--right{right:0}::ng-deep crud-list .table-border-line.--top{top:0}::ng-deep crud-list .table-border-line.--bottom{bottom:0}::ng-deep crud-list .filter-boolean-box{text-align:center}::ng-deep crud-list .filter-boolean-box .p-selectbutton{white-space:nowrap}::ng-deep crud-list .custom-search-area crud-form{width:100%}::ng-deep crud-list>p-contextmenu{display:none}@media (max-width: 640px){::ng-deep crud-list .--table-responsive .p-datatable-wrapper{padding:1px}}\n"] }]
36
+ args: [{ selector: 'main-list', template: "<div #container class=\"custom-card card card-w-title flex-container-fit-child\">\r\n <div class=\"ui-helper-clearfix crud-list-header-area\">\r\n <div *ngIf=\"templateContent['searchCustom']\" class=\"grid ui-fluid custom-p-col custom-search-area\">\r\n <div class=\"col-12 main-container-search\">\r\n <div class=\"grid main-container-search-inner\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateContent['searchCustom']; context: {$implicit: this}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid ui-fluid custom-p-col page-title-area\">\r\n <div class=\"main-title\" [class.fit-title]=\"fitTitle\">\r\n <h1>\r\n {{title}}\r\n </h1>\r\n </div>\r\n <div class=\"paginator-table after-title\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['afterTitle']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fit-content crud-list-body-area\">\r\n <div class=\"crud-list-body-area-inner\" style=\"overflow: unset;\">\r\n <div class=\"flex-container-fit-child\" style=\"overflow: unset;\">\r\n <div class=\"grid crudListToolbar\">\r\n <ng-container>\r\n <div *ngIf=\"!hiddenLeftToolbar\" class=\"col-12 button-group function-topbar custom-toolbar\"\r\n [ngClass]=\"hiddenRightToolbar ? 'md:col-12 p-lg-12' : 'md:col-7 p-lg-8'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateContent['leftToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!hiddenRightToolbar\" class=\"col-12 advance-search-container\"\r\n [ngClass]=\"hiddenLeftToolbar ? 'md:col-12 p-lg-12' : 'md:col-5 p-lg-4'\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['rightToolbar']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"templateContent['topGrid']\" class=\"extend-content-top-grid\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['topGrid']; context: {$implicit: this}\">\r\n </ng-container>\r\n </div>\r\n <div class=\"container-table fit-content\" [class.--table-responsive]=\"responsive\">\r\n <div class=\"container-table-inner\">\r\n <tn-custom-scrollbar *ngIf=\"showScrollBar\" #scrollbar\r\n [showScrollHorizontal]=\"showScrollHorizontal\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"!showScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"templateContent['content']\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-border-line --top\"></div>\r\n <div class=\"table-border-line --right\"></div>\r\n <div class=\"table-border-line --bottom\"></div>\r\n <div class=\"table-border-line --left\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".container-table{display:flex;overflow:hidden;flex-direction:column}.container-table .container-table-inner{display:flex;position:relative;height:auto;max-height:100%;min-height:60px}.container-table-inner>tn-custom-scrollbar{width:100%}.cell-checkbox{text-align:center}.pick-color-row{inset:0;margin:auto;position:absolute;display:flex;flex-wrap:wrap;width:1.4em;height:1.4em;border:1px solid #d1d1d1;border-radius:2px;cursor:pointer}.pick-color-row>div{flex:0 0 50%;background:#84d140;border:1px solid #fff}.pick-color-row>div:nth-child(2){background:#fc6868}.pick-color-row>div:nth-child(3){background:#fbc02d}.pick-color-row>div:nth-child(4){background:#7dc5ff}.cell-header-function{display:flex;align-items:center}.cell-header-function>span{text-align:center;flex:1 1}.cell-header-function button{width:24px;height:24px;padding:0;margin:0}.group-icon{font-weight:400;color:#256aa2}.group-icon i{font-size:.8em;margin-right:5px}.center{text-align:center!important}.row-card{position:absolute;left:0;top:0;width:5px;height:100%}.column-function{min-width:100px;padding:0}.custom-search-area{margin:-.5em -1em .5em;padding-left:.5em;padding-right:.5em;background-color:#f2f2f2}.main-container-search-inner{margin-bottom:-.5em}.main-title>h1{font-size:1.2em}.filter-row>th:not(.sticky):not(.chkbox){padding:3px!important}.container-text-workflow{display:flex;align-items:center;justify-content:center}.container-text-workflow .link-or-action{color:#2196f3;cursor:pointer}.container-text-workflow .content{flex:1 1}.btnReload{height:2rem;width:2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,calc(-50% - 1px))}.toggle-showfull{color:#00f;cursor:pointer;font-size:.8rem;white-space:nowrap;font-weight:700}.col-share-permission>div:not(:last-child){margin-bottom:5px}.advance-search-container{display:flex;justify-content:flex-end}::ng-deep crud-list advance-search{display:block;flex:1;max-width:400px}::ng-deep crud-list .ps__rail-x,::ng-deep crud-list .ps__rail-y{z-index:5}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter{z-index:999}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter .fixed-filter{z-index:10;position:fixed;min-width:200px}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th .container-icon-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}::ng-deep crud-list .check-all-custom{position:absolute;width:0;height:0}::ng-deep crud-list .cell-header-filter{position:relative}::ng-deep crud-list .cell-header-filter .tn-dropdown{height:32px}::ng-deep crud-list .cell-header-filter tn-mask .p-inputtext{width:100%}::ng-deep crud-list .cell-header-filter .filter-box{display:flex;min-width:0px;background-color:#fff;border-radius:3px}::ng-deep crud-list .cell-header-filter .filter-box>div{flex:1;border:1px solid #ced4da;border-right:none;border-radius:3px 0 0 3px;outline:none;overflow:hidden}::ng-deep crud-list .cell-header-filter .filter-box>span{cursor:pointer;min-width:unset;flex-basis:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:#f5f6f8;color:#6c757d;border:1px solid #ced4da;outline:none}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear{border-radius:0 3px 3px 0}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear.dirty{color:#008eff}::ng-deep crud-list .cell-header-filter .filter-box input{padding-left:5px;padding-right:5px;border:none;box-shadow:none!important}::ng-deep crud-list .cell-header-filter .filter-box:not(.no-transition){transition:min-width .1s}::ng-deep crud-list .cell-header-filter .filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter .p-multiselect-label.p-placeholder{padding-left:.5rem;padding-right:.5rem}::ng-deep crud-list .cell-header-filter:focus-within,::ng-deep crud-list .cell-header-filter.focus-within{z-index:10!important}::ng-deep crud-list .cell-header-filter:focus-within .filter-boolean-box .p-button,::ng-deep crud-list .cell-header-filter.focus-within .filter-boolean-box .p-button{z-index:10}::ng-deep crud-list .cell-header-filter:focus-within .filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .filter-box>div{box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box{position:absolute;top:calc(50% - 16px);min-width:250px;z-index:2;box-shadow:5px 0 15px 1px #00000045}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>div{flex:1;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3;z-index:0}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>span.action-clear,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>span.action-clear{display:flex}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter{min-width:140px}::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter>div,::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter:focus-within:nth-last-child(2) .short-filter-box,::ng-deep crud-list .cell-header-filter.focus-within:nth-last-child(2) .short-filter-box{left:50%;transform:translate(-50%)}::ng-deep crud-list .cell-header-filter:last-child .filter-box{right:3px}::ng-deep crud-list .table-border-line{position:absolute;z-index:5;background-color:#eee}::ng-deep crud-list .table-border-line.--left,::ng-deep crud-list .table-border-line.--right{top:0;bottom:0;width:1px}::ng-deep crud-list .table-border-line.--top,::ng-deep crud-list .table-border-line.--bottom{left:0;right:0;height:1px}::ng-deep crud-list .table-border-line.--left{left:0}::ng-deep crud-list .table-border-line.--right{right:0}::ng-deep crud-list .table-border-line.--top{top:0}::ng-deep crud-list .table-border-line.--bottom{bottom:0}::ng-deep crud-list .filter-boolean-box{text-align:center}::ng-deep crud-list .filter-boolean-box .p-selectbutton{white-space:nowrap}::ng-deep crud-list .custom-search-area crud-form{width:100%}::ng-deep crud-list>p-contextmenu{display:none}@media (max-width: 640px){::ng-deep crud-list .--table-responsive .p-datatable-wrapper{padding:1px}}\n"] }]
37
37
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { title: [{
38
38
  type: Input
39
39
  }], fitTitle: [{
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
50
50
  type: ContentChildren,
51
51
  args: [TemplateRef]
52
52
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvbWFpbi1saXN0L21haW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21haW4tbGlzdC9tYWluLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQVksS0FBSyxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFPbEUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFVaEQsWUFDSSxTQUFtQjtRQUVuQixLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFYWixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRXRDLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzFCLGVBQVUsR0FBRyxJQUFJLENBQUM7SUFLbEIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUztTQUNwRixDQUFDO1FBQ0YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2pELElBQUksUUFBUSxFQUFFO2dCQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQzs7OEdBOUJRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRSQU9ULFdBQVcsb0RDZmhDLDQwSEFtRU07MkZEM0RPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxXQUFXOytGQUtaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ3dCLFFBQVE7c0JBQXJDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbmplY3RvciwgSW5wdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbWFpbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWluLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFpbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW5MaXN0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZml0VGl0bGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgaGlkZGVuTGVmdFRvb2xiYXIgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGhpZGRlblJpZ2h0VG9vbGJhciA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2hvd1Njcm9sbEJhciA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBzaG93U2Nyb2xsSG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZikgY2hpbGRyZW46IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAgIHRlbXBsYXRlQ29udGVudDogYW55ID0ge307XHJcbiAgICByZXNwb25zaXZlID0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlTmFtZXMgPSBbXHJcbiAgICAgICAgICAgICdzZWFyY2hDdXN0b20nLCAnYWZ0ZXJUaXRsZScsICdsZWZ0VG9vbGJhcicsICdyaWdodFRvb2xiYXInLCAndG9wR3JpZCcsICdjb250ZW50J1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGVtcGxhdGVOYW1lcy5mb3JFYWNoKHRlbXBsYXRlTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVOYW1lKTtcclxuICAgICAgICAgICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlQ29udGVudFt0ZW1wbGF0ZU5hbWVdID0gdGVtcGxhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZmluZFRlbXBsYXRlKHRlbXBsYXRlTmFtZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb21tb25TZXJ2aWNlLmZpbmRUZW1wbGF0ZUZyb21MaXN0KHRoaXMuY2hpbGRyZW4sIHRlbXBsYXRlTmFtZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY3VzdG9tLWNhcmQgY2FyZCBjYXJkLXctdGl0bGUgZmxleC1jb250YWluZXItZml0LWNoaWxkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktaGVscGVyLWNsZWFyZml4IGNydWQtbGlzdC1oZWFkZXItYXJlYVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3NlYXJjaEN1c3RvbSddXCIgY2xhc3M9XCJwLWdyaWQgdWktZmx1aWQgY3VzdG9tLXAtY29sIGN1c3RvbS1zZWFyY2gtYXJlYVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgbWFpbi1jb250YWluZXItc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIG1haW4tY29udGFpbmVyLXNlYXJjaC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3NlYXJjaEN1c3RvbSddOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHVpLWZsdWlkIGN1c3RvbS1wLWNvbCBwYWdlLXRpdGxlLWFyZWFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdGl0bGVcIiBbY2xhc3MuZml0LXRpdGxlXT1cImZpdFRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICA8aDE+XHJcbiAgICAgICAgICAgICAgICAgICAge3t0aXRsZX19XHJcbiAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRvci10YWJsZSBhZnRlci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29udGVudFsnYWZ0ZXJUaXRsZSddOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZml0LWNvbnRlbnQgY3J1ZC1saXN0LWJvZHktYXJlYVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcnVkLWxpc3QtYm9keS1hcmVhLWlubmVyXCIgc3R5bGU9XCJvdmVyZmxvdzogdW5zZXQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lci1maXQtY2hpbGRcIiBzdHlsZT1cIm92ZXJmbG93OiB1bnNldDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgY3J1ZExpc3RUb29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFoaWRkZW5MZWZ0VG9vbGJhclwiIGNsYXNzPVwicC1jb2wtMTIgYnV0dG9uLWdyb3VwIGZ1bmN0aW9uLXRvcGJhciBjdXN0b20tdG9vbGJhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJoaWRkZW5SaWdodFRvb2xiYXIgPyAncC1tZC0xMiBwLWxnLTEyJyA6ICdwLW1kLTcgcC1sZy04J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb250ZW50WydsZWZ0VG9vbGJhciddOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZGVuUmlnaHRUb29sYmFyXCIgY2xhc3M9XCJwLWNvbC0xMiBhZHZhbmNlLXNlYXJjaC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJoaWRkZW5MZWZ0VG9vbGJhciA/ICdwLW1kLTEyIHAtbGctMTInIDogJ3AtbWQtNSBwLWxnLTQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3JpZ2h0VG9vbGJhciddOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlQ29udGVudFsndG9wR3JpZCddXCIgY2xhc3M9XCJleHRlbmQtY29udGVudC10b3AtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3RvcEdyaWQnXTsgY29udGV4dDogeyRpbXBsaWNpdDogdGhpc31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci10YWJsZSBmaXQtY29udGVudFwiIFtjbGFzcy4tLXRhYmxlLXJlc3BvbnNpdmVdPVwicmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdGFibGUtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRuLWN1c3RvbS1zY3JvbGxiYXIgKm5nSWY9XCJzaG93U2Nyb2xsQmFyXCIgI3Njcm9sbGJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTY3JvbGxIb3Jpem9udGFsXT1cInNob3dTY3JvbGxIb3Jpem9udGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb250ZW50Wydjb250ZW50J11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RuLWN1c3RvbS1zY3JvbGxiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd1Njcm9sbEJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29udGVudFsnY29udGVudCddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9yZGVyLWxpbmUgLS10b3BcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvcmRlci1saW5lIC0tcmlnaHRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvcmRlci1saW5lIC0tYm90dG9tXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib3JkZXItbGluZSAtLWxlZnRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvbWFpbi1saXN0L21haW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21haW4tbGlzdC9tYWluLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQVksS0FBSyxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFPbEUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFVaEQsWUFDSSxTQUFtQjtRQUVuQixLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFYWixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRXRDLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzFCLGVBQVUsR0FBRyxJQUFJLENBQUM7SUFLbEIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUztTQUNwRixDQUFDO1FBQ0YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2pELElBQUksUUFBUSxFQUFFO2dCQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQzs7OEdBOUJRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRSQU9ULFdBQVcsb0RDZmhDLHMwSEFtRU07MkZEM0RPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxXQUFXOytGQUtaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ3dCLFFBQVE7c0JBQXJDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbmplY3RvciwgSW5wdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbWFpbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWluLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFpbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW5MaXN0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZml0VGl0bGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgaGlkZGVuTGVmdFRvb2xiYXIgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGhpZGRlblJpZ2h0VG9vbGJhciA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2hvd1Njcm9sbEJhciA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBzaG93U2Nyb2xsSG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZikgY2hpbGRyZW46IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAgIHRlbXBsYXRlQ29udGVudDogYW55ID0ge307XHJcbiAgICByZXNwb25zaXZlID0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlTmFtZXMgPSBbXHJcbiAgICAgICAgICAgICdzZWFyY2hDdXN0b20nLCAnYWZ0ZXJUaXRsZScsICdsZWZ0VG9vbGJhcicsICdyaWdodFRvb2xiYXInLCAndG9wR3JpZCcsICdjb250ZW50J1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGVtcGxhdGVOYW1lcy5mb3JFYWNoKHRlbXBsYXRlTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVOYW1lKTtcclxuICAgICAgICAgICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlQ29udGVudFt0ZW1wbGF0ZU5hbWVdID0gdGVtcGxhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZmluZFRlbXBsYXRlKHRlbXBsYXRlTmFtZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb21tb25TZXJ2aWNlLmZpbmRUZW1wbGF0ZUZyb21MaXN0KHRoaXMuY2hpbGRyZW4sIHRlbXBsYXRlTmFtZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY3VzdG9tLWNhcmQgY2FyZCBjYXJkLXctdGl0bGUgZmxleC1jb250YWluZXItZml0LWNoaWxkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktaGVscGVyLWNsZWFyZml4IGNydWQtbGlzdC1oZWFkZXItYXJlYVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3NlYXJjaEN1c3RvbSddXCIgY2xhc3M9XCJncmlkIHVpLWZsdWlkIGN1c3RvbS1wLWNvbCBjdXN0b20tc2VhcmNoLWFyZWFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYWluLWNvbnRhaW5lci1zZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIG1haW4tY29udGFpbmVyLXNlYXJjaC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3NlYXJjaEN1c3RvbSddOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCB1aS1mbHVpZCBjdXN0b20tcC1jb2wgcGFnZS10aXRsZS1hcmVhXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXRpdGxlXCIgW2NsYXNzLmZpdC10aXRsZV09XCJmaXRUaXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0b3ItdGFibGUgYWZ0ZXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ2FmdGVyVGl0bGUnXTsgY29udGV4dDogeyRpbXBsaWNpdDogdGhpc31cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpdC1jb250ZW50IGNydWQtbGlzdC1ib2R5LWFyZWFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3J1ZC1saXN0LWJvZHktYXJlYS1pbm5lclwiIHN0eWxlPVwib3ZlcmZsb3c6IHVuc2V0O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250YWluZXItZml0LWNoaWxkXCIgc3R5bGU9XCJvdmVyZmxvdzogdW5zZXQ7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBjcnVkTGlzdFRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGRlbkxlZnRUb29sYmFyXCIgY2xhc3M9XCJjb2wtMTIgYnV0dG9uLWdyb3VwIGZ1bmN0aW9uLXRvcGJhciBjdXN0b20tdG9vbGJhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJoaWRkZW5SaWdodFRvb2xiYXIgPyAnbWQ6Y29sLTEyIHAtbGctMTInIDogJ21kOmNvbC03IHAtbGctOCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29udGVudFsnbGVmdFRvb2xiYXInXTsgY29udGV4dDogeyRpbXBsaWNpdDogdGhpc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGRlblJpZ2h0VG9vbGJhclwiIGNsYXNzPVwiY29sLTEyIGFkdmFuY2Utc2VhcmNoLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhpZGRlbkxlZnRUb29sYmFyID8gJ21kOmNvbC0xMiBwLWxnLTEyJyA6ICdtZDpjb2wtNSBwLWxnLTQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3JpZ2h0VG9vbGJhciddOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlQ29udGVudFsndG9wR3JpZCddXCIgY2xhc3M9XCJleHRlbmQtY29udGVudC10b3AtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbnRlbnRbJ3RvcEdyaWQnXTsgY29udGV4dDogeyRpbXBsaWNpdDogdGhpc31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci10YWJsZSBmaXQtY29udGVudFwiIFtjbGFzcy4tLXRhYmxlLXJlc3BvbnNpdmVdPVwicmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdGFibGUtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRuLWN1c3RvbS1zY3JvbGxiYXIgKm5nSWY9XCJzaG93U2Nyb2xsQmFyXCIgI3Njcm9sbGJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTY3JvbGxIb3Jpem9udGFsXT1cInNob3dTY3JvbGxIb3Jpem9udGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb250ZW50Wydjb250ZW50J11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RuLWN1c3RvbS1zY3JvbGxiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd1Njcm9sbEJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29udGVudFsnY29udGVudCddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9yZGVyLWxpbmUgLS10b3BcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvcmRlci1saW5lIC0tcmlnaHRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvcmRlci1saW5lIC0tYm90dG9tXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib3JkZXItbGluZSAtLWxlZnRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -72,6 +72,11 @@ export class QueryBuilderRuleComponent {
72
72
  }
73
73
  }
74
74
  this.customTemplate = this._componentService.dicTemplate;
75
+ if (this.customTemplate) {
76
+ this.queryBuilderUserPicker = this.customTemplate['queryBuilderUserPicker'];
77
+ this.queryBuilderCoCauPicker = this.customTemplate['queryBuilderCoCauPicker'];
78
+ this.queryBuilderAutocompletePicker = this.customTemplate['queryBuilderAutocompletePicker'];
79
+ }
75
80
  }
76
81
  setFuncGetValue() {
77
82
  if (this.controlType == 'custom') {
@@ -168,10 +173,10 @@ export class QueryBuilderRuleComponent {
168
173
  }
169
174
  }
170
175
  QueryBuilderRuleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: QueryBuilderRuleComponent, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component });
171
- QueryBuilderRuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: QueryBuilderRuleComponent, selector: "query-builder-rule", inputs: { dataSourceFields: "dataSourceFields", operators: "operators", controlValue: "controlValue", query: "query", templateFieldPicker: "templateFieldPicker" }, outputs: { onRemove: "onRemove" }, ngImport: i0, template: "<div class=\"tn__group-or-rule-container rule-container\">\r\n <div class=\"tn__group-or-rule rule\">\r\n <div class=\"tn__rule-body\">\r\n <ng-container *ngIf=\"templateFieldPicker\">\r\n <div class=\"tn__rule-field\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateFieldPicker; context: {$implicit: query, handleChangedField: setDatasourceOperators}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateFieldPicker\">\r\n <ng-container *ngTemplateOutlet=\"fieldPicker; context: {$implicit: query}\"></ng-container>\r\n </ng-container>\r\n <div class=\"tn__rule-operator\">\r\n <p-dropdown appendTo=\"body\" [options]=\"operators\" optionLabel=\"ten\" optionValue=\"id\"\r\n placeholder=\"Ch\u1ECDn to\u00E1n t\u1EED\" [(ngModel)]=\"query.compareType\" (onChange)=\"handleChangeOperator()\">\r\n </p-dropdown>\r\n </div>\r\n <div *ngIf=\"!changingControl\" class=\"tn__rule-value\">\r\n <ng-container *ngIf=\"control\">\r\n <ng-container [ngSwitch]=\"controlType\">\r\n <ng-container *ngSwitchCase=\"'textbox'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: false}\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'custom'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: disabled}\">\r\n </ng-template>\r\n </ng-container>\r\n <!-- <p-multiSelect *ngSwitchCase=\"'dropdown'\" [placeholder]=\"control.placeholder\"\r\n [appendTo]=\"'body'\" [options]=\"control.dataSource\" [disabled]=\"disabled\" optionLabel=\"ten\"\r\n optionValue=\"id\" [(ngModel)]=\"query.value\">\r\n </p-multiSelect> -->\r\n <dropdown *ngSwitchCase=\"'dropdown'\" [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [itemSelectedStyleClass]=\"'min'\" [(value)]=\"query.value\">\r\n </dropdown>\r\n <div *ngSwitchCase=\"'datetime'\" class=\"datetime-value-container\">\r\n <p-checkbox [binary]=\"true\" [label]=\"'T\u00F9y bi\u1EBFn'\" [(ngModel)]=\"custom\"></p-checkbox>\r\n <datetime-picker *ngIf=\"!custom\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </datetime-picker>\r\n <input *ngIf=\"custom\" pInputText placeholder=\"VD: [now] + 1d - 2h + 3m - 4s\"\r\n [(ngModel)]=\"query.value\" />\r\n </div>\r\n\r\n <tn-mask *ngSwitchCase=\"'number'\" [disabled]=\"disabled\" [maskType]=\"control.maskType\"\r\n [placeholder]=\"control.placeholder\" [(ngModel)]=\"query.value\">\r\n </tn-mask>\r\n <ng-container *ngSwitchCase=\"'user'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderUserPicker']; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderCoCauPicker']; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'role'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'groupuser'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'chucVu'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete-picker'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <!-- <user-picker *ngSwitchCase=\"'user'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\" [multiple]=\"control.multiple\">\r\n </user-picker>\r\n <cocautochuc-picker-list *ngSwitchCase=\"'cocautochuc'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list> \r\n <autocomplete-picker *ngSwitchCase=\"'role'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'chucVu'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'autocomplete-picker'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </autocomplete-picker> -->\r\n <app-autocomplete-datasource *ngSwitchCase=\"'autocomplete'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\" [suggestions]=\"control.dataSource\">\r\n </app-autocomplete-datasource>\r\n <ng-container *ngSwitchDefault>\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!control\">\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </div>\r\n <after-view-checked *ngIf=\"changingControl\" (loaded)=\"handleLoaded()\"></after-view-checked>\r\n </div>\r\n <div class=\"tn__rule-action\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" (click)=\"removeGroup()\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #fieldPicker let-query>\r\n <ng-container *ngIf=\"controlType == 'custom'\">\r\n <input type=\"text\" [class]=\"'tn__rule-field'\" pInputText placeholder=\"Tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\"\r\n [(ngModel)]=\"query.fieldValue\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"controlType != 'custom'\">\r\n <p-dropdown [appendTo]=\"'body'\" [options]=\"dataSourceFields\" [class]=\"'tn__rule-field'\" optionLabel=\"ten\"\r\n optionValue=\"id\" placeholder=\"Ch\u1ECDn tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\" [(ngModel)]=\"query.field\"\r\n (onChange)=\"handleChangeField($event)\">\r\n </p-dropdown>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #textBoxValue let-query>\r\n <input [disabled]=\"disabled\" type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [(ngModel)]=\"query.value\" />\r\n</ng-template>", styles: ["::ng-deep query-builder-rule .tn__rule-body{display:flex;width:calc(100% - 34px);align-items:center}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:5px}::ng-deep query-builder-rule .tn__rule-body>*:last-child{margin-right:0}::ng-deep query-builder-rule .tn__rule-field{height:26px}::ng-deep query-builder-rule .tn__rule-value{min-height:26px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value{width:calc(50% - 80px);flex:0 0 calc(50% - 80px)}::ng-deep query-builder-rule .tn__rule-field.p-dropdown,::ng-deep query-builder-rule .tn__rule-field tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-field .p-dropdown,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete,::ng-deep query-builder-rule .tn__rule-field .p-multiselect,::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .p-calendar,::ng-deep query-builder-rule .tn__rule-value.p-dropdown,::ng-deep query-builder-rule .tn__rule-value tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-value .p-dropdown,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete,::ng-deep query-builder-rule .tn__rule-value .p-multiselect,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .p-calendar{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .custom-autocomplete-button,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .custom-autocomplete-button{padding:2px 12px;min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-dropdown,::ng-deep query-builder-rule .tn__rule-field .tn-dropdown.p-multiselect.p-component,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown.p-multiselect.p-component{min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-autocomplete .p-autocomplete-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-autocomplete .p-autocomplete-dropdown{height:26px;width:26px}::ng-deep query-builder-rule .tn__rule-field .p-calendar .p-button.p-button-icon-only,::ng-deep query-builder-rule .tn__rule-value .p-calendar .p-button.p-button-icon-only{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token{padding:0 .5rem;font-size:.9rem;margin:1px 2px}::ng-deep query-builder-rule .tn__rule-operator{width:145px;flex:0 0 145px;height:26px}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown .p-inputtext{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-action{flex:0 0 auto;white-space:nowrap}::ng-deep query-builder-rule .tn__rule-action button{height:26px!important;width:26px!important;margin-left:2px!important;margin-right:6px!important}::ng-deep query-builder-rule .datetime-value-container{display:flex;align-items:center}::ng-deep query-builder-rule .datetime-value-container p-checkbox{flex:0 0 auto;margin-right:5px}@media (max-width: 640px){::ng-deep query-builder-rule .tn__rule-body{flex-direction:column;padding-right:5px}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:0;margin-bottom:5px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value,::ng-deep query-builder-rule .tn__rule-operator{width:100%;flex:1 1 auto}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "maxItemDisplay", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "autofocusSelectedItem", "modifyOptionsWhenFilter", "delayFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i8.InputText, selector: "[pInputText]" }, { kind: "component", type: i9.AfterViewCheckedComponent, selector: "after-view-checked", inputs: ["renderKey"], outputs: ["loaded", "loading", "unloading", "reRender"] }, { kind: "component", type: i10.DatetimePickerComponent, selector: "datetime-picker", inputs: ["control", "disabled"], outputs: ["onInit", "onSelect", "onChanged", "onFocus", "onBlur", "onClose"] }, { kind: "component", type: i11.DropdownComponent, selector: "dropdown", inputs: ["showClear", "disableDisplayFieldServerSearch", "filter", "control", "defaultLabel", "appendTo", "dataSource", "value", "itemSelectedStyleClass"], outputs: ["onInit", "onChanged", "onCollapse", "onExpand", "onDropdownClick", "onShow", "onShowSmartEvent", "onHide", "onHideSmartEvent", "onFocus", "onBlur", "onReady", "onDataSourceLoaded", "valueChange", "adjustValue"] }, { kind: "component", type: i12.MaskComponent, selector: "tn-mask", inputs: ["maskType", "placeholder", "disabled", "suffix", "prefix", "min", "max", "decimalPlaces", "viewMode", "inputStyleClass", "autoFormat"], outputs: ["onInit", "onFocus", "onBlur", "onChanged"] }, { kind: "component", type: i13.AutocompleteDatasourceComponent, selector: "app-autocomplete-datasource", inputs: ["suggestions", "control"], outputs: ["onInit", "onValueChanged"] }] });
176
+ QueryBuilderRuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: QueryBuilderRuleComponent, selector: "query-builder-rule", inputs: { dataSourceFields: "dataSourceFields", operators: "operators", controlValue: "controlValue", query: "query", templateFieldPicker: "templateFieldPicker" }, outputs: { onRemove: "onRemove" }, ngImport: i0, template: "<div class=\"tn__group-or-rule-container rule-container\">\r\n <div class=\"tn__group-or-rule rule\">\r\n <div class=\"tn__rule-body\">\r\n <ng-container *ngIf=\"templateFieldPicker\">\r\n <div class=\"tn__rule-field\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateFieldPicker; context: {$implicit: query, handleChangedField: setDatasourceOperators}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateFieldPicker\">\r\n <ng-container *ngTemplateOutlet=\"fieldPicker; context: {$implicit: query}\"></ng-container>\r\n </ng-container>\r\n <div class=\"tn__rule-operator\">\r\n <p-dropdown appendTo=\"body\" [options]=\"operators\" optionLabel=\"ten\" optionValue=\"id\"\r\n placeholder=\"Ch\u1ECDn to\u00E1n t\u1EED\" [(ngModel)]=\"query.compareType\" (onChange)=\"handleChangeOperator()\">\r\n </p-dropdown>\r\n </div>\r\n <div *ngIf=\"!changingControl\" class=\"tn__rule-value\">\r\n <ng-container *ngIf=\"control\">\r\n <ng-container [ngSwitch]=\"controlType\">\r\n <ng-container *ngSwitchCase=\"'textbox'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: false}\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'custom'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: disabled}\">\r\n </ng-template>\r\n </ng-container>\r\n <!-- <p-multiSelect *ngSwitchCase=\"'dropdown'\" [placeholder]=\"control.placeholder\"\r\n [appendTo]=\"'body'\" [options]=\"control.dataSource\" [disabled]=\"disabled\" optionLabel=\"ten\"\r\n optionValue=\"id\" [(ngModel)]=\"query.value\">\r\n </p-multiSelect> -->\r\n <dropdown *ngSwitchCase=\"'dropdown'\" [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [itemSelectedStyleClass]=\"'min'\" [(value)]=\"query.value\">\r\n </dropdown>\r\n <div *ngSwitchCase=\"'datetime'\" class=\"datetime-value-container\">\r\n <p-checkbox [binary]=\"true\" [label]=\"'T\u00F9y bi\u1EBFn'\" [(ngModel)]=\"custom\"></p-checkbox>\r\n <datetime-picker *ngIf=\"!custom\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </datetime-picker>\r\n <input *ngIf=\"custom\" pInputText placeholder=\"VD: [now] + 1d - 2h + 3m - 4s\"\r\n [(ngModel)]=\"query.value\" />\r\n </div>\r\n\r\n <tn-mask *ngSwitchCase=\"'number'\" [disabled]=\"disabled\" [maskType]=\"control.maskType\"\r\n [placeholder]=\"control.placeholder\" [(ngModel)]=\"query.value\">\r\n </tn-mask>\r\n <ng-container *ngSwitchCase=\"'user'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderUserPicker; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderCoCauPicker; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'role'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'groupuser'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'chucVu'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete-picker'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <!-- <user-picker *ngSwitchCase=\"'user'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\" [multiple]=\"control.multiple\">\r\n </user-picker>\r\n <cocautochuc-picker-list *ngSwitchCase=\"'cocautochuc'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list> \r\n <autocomplete-picker *ngSwitchCase=\"'role'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'chucVu'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'autocomplete-picker'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </autocomplete-picker> -->\r\n <app-autocomplete-datasource *ngSwitchCase=\"'autocomplete'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\" [suggestions]=\"control.dataSource\">\r\n </app-autocomplete-datasource>\r\n <ng-container *ngSwitchDefault>\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!control\">\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </div>\r\n <after-view-checked *ngIf=\"changingControl\" (loaded)=\"handleLoaded()\"></after-view-checked>\r\n </div>\r\n <div class=\"tn__rule-action\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" (click)=\"removeGroup()\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #fieldPicker let-query>\r\n <ng-container *ngIf=\"controlType == 'custom'\">\r\n <input type=\"text\" [class]=\"'tn__rule-field'\" pInputText placeholder=\"Tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\"\r\n [(ngModel)]=\"query.fieldValue\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"controlType != 'custom'\">\r\n <p-dropdown [appendTo]=\"'body'\" [options]=\"dataSourceFields\" [class]=\"'tn__rule-field'\" optionLabel=\"ten\"\r\n optionValue=\"id\" placeholder=\"Ch\u1ECDn tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\" [(ngModel)]=\"query.field\"\r\n (onChange)=\"handleChangeField($event)\">\r\n </p-dropdown>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #textBoxValue let-query>\r\n <input [disabled]=\"disabled\" type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [(ngModel)]=\"query.value\" />\r\n</ng-template>", styles: ["::ng-deep query-builder-rule .tn__rule-body{display:flex;width:calc(100% - 34px);align-items:center}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:5px}::ng-deep query-builder-rule .tn__rule-body>*:last-child{margin-right:0}::ng-deep query-builder-rule .tn__rule-field{height:26px}::ng-deep query-builder-rule .tn__rule-value{min-height:26px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value{width:calc(50% - 80px);flex:0 0 calc(50% - 80px)}::ng-deep query-builder-rule .tn__rule-field.p-dropdown,::ng-deep query-builder-rule .tn__rule-field tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-field .p-dropdown,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete,::ng-deep query-builder-rule .tn__rule-field .p-multiselect,::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .p-calendar,::ng-deep query-builder-rule .tn__rule-value.p-dropdown,::ng-deep query-builder-rule .tn__rule-value tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-value .p-dropdown,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete,::ng-deep query-builder-rule .tn__rule-value .p-multiselect,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .p-calendar{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .custom-autocomplete-button,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .custom-autocomplete-button{padding:2px 12px;min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-dropdown,::ng-deep query-builder-rule .tn__rule-field .tn-dropdown.p-multiselect.p-component,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown.p-multiselect.p-component{min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-autocomplete .p-autocomplete-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-autocomplete .p-autocomplete-dropdown{height:26px;width:26px}::ng-deep query-builder-rule .tn__rule-field .p-calendar .p-button.p-button-icon-only,::ng-deep query-builder-rule .tn__rule-value .p-calendar .p-button.p-button-icon-only{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token{padding:0 .5rem;font-size:.9rem;margin:1px 2px}::ng-deep query-builder-rule .tn__rule-operator{width:145px;flex:0 0 145px;height:26px}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown .p-inputtext{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-action{flex:0 0 auto;white-space:nowrap}::ng-deep query-builder-rule .tn__rule-action button{height:26px!important;width:26px!important;margin-left:2px!important;margin-right:6px!important}::ng-deep query-builder-rule .datetime-value-container{display:flex;align-items:center}::ng-deep query-builder-rule .datetime-value-container p-checkbox{flex:0 0 auto;margin-right:5px}@media (max-width: 640px){::ng-deep query-builder-rule .tn__rule-body{flex-direction:column;padding-right:5px}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:0;margin-bottom:5px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value,::ng-deep query-builder-rule .tn__rule-operator{width:100%;flex:1 1 auto}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "maxItemDisplay", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "autofocusSelectedItem", "modifyOptionsWhenFilter", "delayFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i8.InputText, selector: "[pInputText]" }, { kind: "component", type: i9.AfterViewCheckedComponent, selector: "after-view-checked", inputs: ["renderKey"], outputs: ["loaded", "loading", "unloading", "reRender"] }, { kind: "component", type: i10.DatetimePickerComponent, selector: "datetime-picker", inputs: ["control", "disabled"], outputs: ["onInit", "onSelect", "onChanged", "onFocus", "onBlur", "onClose"] }, { kind: "component", type: i11.DropdownComponent, selector: "dropdown", inputs: ["showClear", "disableDisplayFieldServerSearch", "filter", "control", "defaultLabel", "appendTo", "dataSource", "value", "itemSelectedStyleClass"], outputs: ["onInit", "onChanged", "onCollapse", "onExpand", "onDropdownClick", "onShow", "onShowSmartEvent", "onHide", "onHideSmartEvent", "onFocus", "onBlur", "onReady", "onDataSourceLoaded", "valueChange", "adjustValue"] }, { kind: "component", type: i12.MaskComponent, selector: "tn-mask", inputs: ["maskType", "placeholder", "disabled", "suffix", "prefix", "min", "max", "decimalPlaces", "viewMode", "inputStyleClass", "autoFormat"], outputs: ["onInit", "onFocus", "onBlur", "onChanged"] }, { kind: "component", type: i13.AutocompleteDatasourceComponent, selector: "app-autocomplete-datasource", inputs: ["suggestions", "control"], outputs: ["onInit", "onValueChanged"] }] });
172
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: QueryBuilderRuleComponent, decorators: [{
173
178
  type: Component,
174
- args: [{ selector: 'query-builder-rule', template: "<div class=\"tn__group-or-rule-container rule-container\">\r\n <div class=\"tn__group-or-rule rule\">\r\n <div class=\"tn__rule-body\">\r\n <ng-container *ngIf=\"templateFieldPicker\">\r\n <div class=\"tn__rule-field\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateFieldPicker; context: {$implicit: query, handleChangedField: setDatasourceOperators}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateFieldPicker\">\r\n <ng-container *ngTemplateOutlet=\"fieldPicker; context: {$implicit: query}\"></ng-container>\r\n </ng-container>\r\n <div class=\"tn__rule-operator\">\r\n <p-dropdown appendTo=\"body\" [options]=\"operators\" optionLabel=\"ten\" optionValue=\"id\"\r\n placeholder=\"Ch\u1ECDn to\u00E1n t\u1EED\" [(ngModel)]=\"query.compareType\" (onChange)=\"handleChangeOperator()\">\r\n </p-dropdown>\r\n </div>\r\n <div *ngIf=\"!changingControl\" class=\"tn__rule-value\">\r\n <ng-container *ngIf=\"control\">\r\n <ng-container [ngSwitch]=\"controlType\">\r\n <ng-container *ngSwitchCase=\"'textbox'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: false}\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'custom'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: disabled}\">\r\n </ng-template>\r\n </ng-container>\r\n <!-- <p-multiSelect *ngSwitchCase=\"'dropdown'\" [placeholder]=\"control.placeholder\"\r\n [appendTo]=\"'body'\" [options]=\"control.dataSource\" [disabled]=\"disabled\" optionLabel=\"ten\"\r\n optionValue=\"id\" [(ngModel)]=\"query.value\">\r\n </p-multiSelect> -->\r\n <dropdown *ngSwitchCase=\"'dropdown'\" [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [itemSelectedStyleClass]=\"'min'\" [(value)]=\"query.value\">\r\n </dropdown>\r\n <div *ngSwitchCase=\"'datetime'\" class=\"datetime-value-container\">\r\n <p-checkbox [binary]=\"true\" [label]=\"'T\u00F9y bi\u1EBFn'\" [(ngModel)]=\"custom\"></p-checkbox>\r\n <datetime-picker *ngIf=\"!custom\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </datetime-picker>\r\n <input *ngIf=\"custom\" pInputText placeholder=\"VD: [now] + 1d - 2h + 3m - 4s\"\r\n [(ngModel)]=\"query.value\" />\r\n </div>\r\n\r\n <tn-mask *ngSwitchCase=\"'number'\" [disabled]=\"disabled\" [maskType]=\"control.maskType\"\r\n [placeholder]=\"control.placeholder\" [(ngModel)]=\"query.value\">\r\n </tn-mask>\r\n <ng-container *ngSwitchCase=\"'user'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderUserPicker']; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderCoCauPicker']; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'role'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'groupuser'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'chucVu'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete-picker'\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate['queryBuilderAutocompletePicker']; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <!-- <user-picker *ngSwitchCase=\"'user'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\" [multiple]=\"control.multiple\">\r\n </user-picker>\r\n <cocautochuc-picker-list *ngSwitchCase=\"'cocautochuc'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list> \r\n <autocomplete-picker *ngSwitchCase=\"'role'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'chucVu'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'autocomplete-picker'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </autocomplete-picker> -->\r\n <app-autocomplete-datasource *ngSwitchCase=\"'autocomplete'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\" [suggestions]=\"control.dataSource\">\r\n </app-autocomplete-datasource>\r\n <ng-container *ngSwitchDefault>\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!control\">\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </div>\r\n <after-view-checked *ngIf=\"changingControl\" (loaded)=\"handleLoaded()\"></after-view-checked>\r\n </div>\r\n <div class=\"tn__rule-action\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" (click)=\"removeGroup()\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #fieldPicker let-query>\r\n <ng-container *ngIf=\"controlType == 'custom'\">\r\n <input type=\"text\" [class]=\"'tn__rule-field'\" pInputText placeholder=\"Tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\"\r\n [(ngModel)]=\"query.fieldValue\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"controlType != 'custom'\">\r\n <p-dropdown [appendTo]=\"'body'\" [options]=\"dataSourceFields\" [class]=\"'tn__rule-field'\" optionLabel=\"ten\"\r\n optionValue=\"id\" placeholder=\"Ch\u1ECDn tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\" [(ngModel)]=\"query.field\"\r\n (onChange)=\"handleChangeField($event)\">\r\n </p-dropdown>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #textBoxValue let-query>\r\n <input [disabled]=\"disabled\" type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [(ngModel)]=\"query.value\" />\r\n</ng-template>", styles: ["::ng-deep query-builder-rule .tn__rule-body{display:flex;width:calc(100% - 34px);align-items:center}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:5px}::ng-deep query-builder-rule .tn__rule-body>*:last-child{margin-right:0}::ng-deep query-builder-rule .tn__rule-field{height:26px}::ng-deep query-builder-rule .tn__rule-value{min-height:26px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value{width:calc(50% - 80px);flex:0 0 calc(50% - 80px)}::ng-deep query-builder-rule .tn__rule-field.p-dropdown,::ng-deep query-builder-rule .tn__rule-field tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-field .p-dropdown,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete,::ng-deep query-builder-rule .tn__rule-field .p-multiselect,::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .p-calendar,::ng-deep query-builder-rule .tn__rule-value.p-dropdown,::ng-deep query-builder-rule .tn__rule-value tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-value .p-dropdown,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete,::ng-deep query-builder-rule .tn__rule-value .p-multiselect,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .p-calendar{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .custom-autocomplete-button,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .custom-autocomplete-button{padding:2px 12px;min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-dropdown,::ng-deep query-builder-rule .tn__rule-field .tn-dropdown.p-multiselect.p-component,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown.p-multiselect.p-component{min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-autocomplete .p-autocomplete-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-autocomplete .p-autocomplete-dropdown{height:26px;width:26px}::ng-deep query-builder-rule .tn__rule-field .p-calendar .p-button.p-button-icon-only,::ng-deep query-builder-rule .tn__rule-value .p-calendar .p-button.p-button-icon-only{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token{padding:0 .5rem;font-size:.9rem;margin:1px 2px}::ng-deep query-builder-rule .tn__rule-operator{width:145px;flex:0 0 145px;height:26px}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown .p-inputtext{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-action{flex:0 0 auto;white-space:nowrap}::ng-deep query-builder-rule .tn__rule-action button{height:26px!important;width:26px!important;margin-left:2px!important;margin-right:6px!important}::ng-deep query-builder-rule .datetime-value-container{display:flex;align-items:center}::ng-deep query-builder-rule .datetime-value-container p-checkbox{flex:0 0 auto;margin-right:5px}@media (max-width: 640px){::ng-deep query-builder-rule .tn__rule-body{flex-direction:column;padding-right:5px}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:0;margin-bottom:5px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value,::ng-deep query-builder-rule .tn__rule-operator{width:100%;flex:1 1 auto}}\n"] }]
179
+ args: [{ selector: 'query-builder-rule', template: "<div class=\"tn__group-or-rule-container rule-container\">\r\n <div class=\"tn__group-or-rule rule\">\r\n <div class=\"tn__rule-body\">\r\n <ng-container *ngIf=\"templateFieldPicker\">\r\n <div class=\"tn__rule-field\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateFieldPicker; context: {$implicit: query, handleChangedField: setDatasourceOperators}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateFieldPicker\">\r\n <ng-container *ngTemplateOutlet=\"fieldPicker; context: {$implicit: query}\"></ng-container>\r\n </ng-container>\r\n <div class=\"tn__rule-operator\">\r\n <p-dropdown appendTo=\"body\" [options]=\"operators\" optionLabel=\"ten\" optionValue=\"id\"\r\n placeholder=\"Ch\u1ECDn to\u00E1n t\u1EED\" [(ngModel)]=\"query.compareType\" (onChange)=\"handleChangeOperator()\">\r\n </p-dropdown>\r\n </div>\r\n <div *ngIf=\"!changingControl\" class=\"tn__rule-value\">\r\n <ng-container *ngIf=\"control\">\r\n <ng-container [ngSwitch]=\"controlType\">\r\n <ng-container *ngSwitchCase=\"'textbox'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: false}\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'custom'\">\r\n <ng-template\r\n *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query, _disabled: disabled}\">\r\n </ng-template>\r\n </ng-container>\r\n <!-- <p-multiSelect *ngSwitchCase=\"'dropdown'\" [placeholder]=\"control.placeholder\"\r\n [appendTo]=\"'body'\" [options]=\"control.dataSource\" [disabled]=\"disabled\" optionLabel=\"ten\"\r\n optionValue=\"id\" [(ngModel)]=\"query.value\">\r\n </p-multiSelect> -->\r\n <dropdown *ngSwitchCase=\"'dropdown'\" [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [itemSelectedStyleClass]=\"'min'\" [(value)]=\"query.value\">\r\n </dropdown>\r\n <div *ngSwitchCase=\"'datetime'\" class=\"datetime-value-container\">\r\n <p-checkbox [binary]=\"true\" [label]=\"'T\u00F9y bi\u1EBFn'\" [(ngModel)]=\"custom\"></p-checkbox>\r\n <datetime-picker *ngIf=\"!custom\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </datetime-picker>\r\n <input *ngIf=\"custom\" pInputText placeholder=\"VD: [now] + 1d - 2h + 3m - 4s\"\r\n [(ngModel)]=\"query.value\" />\r\n </div>\r\n\r\n <tn-mask *ngSwitchCase=\"'number'\" [disabled]=\"disabled\" [maskType]=\"control.maskType\"\r\n [placeholder]=\"control.placeholder\" [(ngModel)]=\"query.value\">\r\n </tn-mask>\r\n <ng-container *ngSwitchCase=\"'user'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderUserPicker; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderCoCauPicker; context: {\r\n $implicit: control, disabled: disabled, query: query, multiple: control.multiple\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'role'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'groupuser'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'chucVu'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete-picker'\">\r\n <ng-container *ngTemplateOutlet=\"queryBuilderAutocompletePicker; context: {\r\n $implicit: control, disabled: disabled, query: query\r\n }\"></ng-container>\r\n </ng-container>\r\n <!-- <user-picker *ngSwitchCase=\"'user'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\" [multiple]=\"control.multiple\">\r\n </user-picker>\r\n <cocautochuc-picker-list *ngSwitchCase=\"'cocautochuc'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list> \r\n <autocomplete-picker *ngSwitchCase=\"'role'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'chucVu'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'autocomplete-picker'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </autocomplete-picker> -->\r\n <app-autocomplete-datasource *ngSwitchCase=\"'autocomplete'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\" [suggestions]=\"control.dataSource\">\r\n </app-autocomplete-datasource>\r\n <ng-container *ngSwitchDefault>\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!control\">\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </div>\r\n <after-view-checked *ngIf=\"changingControl\" (loaded)=\"handleLoaded()\"></after-view-checked>\r\n </div>\r\n <div class=\"tn__rule-action\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" (click)=\"removeGroup()\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #fieldPicker let-query>\r\n <ng-container *ngIf=\"controlType == 'custom'\">\r\n <input type=\"text\" [class]=\"'tn__rule-field'\" pInputText placeholder=\"Tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\"\r\n [(ngModel)]=\"query.fieldValue\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"controlType != 'custom'\">\r\n <p-dropdown [appendTo]=\"'body'\" [options]=\"dataSourceFields\" [class]=\"'tn__rule-field'\" optionLabel=\"ten\"\r\n optionValue=\"id\" placeholder=\"Ch\u1ECDn tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\" [(ngModel)]=\"query.field\"\r\n (onChange)=\"handleChangeField($event)\">\r\n </p-dropdown>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #textBoxValue let-query>\r\n <input [disabled]=\"disabled\" type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [(ngModel)]=\"query.value\" />\r\n</ng-template>", styles: ["::ng-deep query-builder-rule .tn__rule-body{display:flex;width:calc(100% - 34px);align-items:center}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:5px}::ng-deep query-builder-rule .tn__rule-body>*:last-child{margin-right:0}::ng-deep query-builder-rule .tn__rule-field{height:26px}::ng-deep query-builder-rule .tn__rule-value{min-height:26px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value{width:calc(50% - 80px);flex:0 0 calc(50% - 80px)}::ng-deep query-builder-rule .tn__rule-field.p-dropdown,::ng-deep query-builder-rule .tn__rule-field tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-field .p-dropdown,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete,::ng-deep query-builder-rule .tn__rule-field .p-multiselect,::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .p-calendar,::ng-deep query-builder-rule .tn__rule-value.p-dropdown,::ng-deep query-builder-rule .tn__rule-value tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-value .p-dropdown,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete,::ng-deep query-builder-rule .tn__rule-value .p-multiselect,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .p-calendar{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .custom-autocomplete-button,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .custom-autocomplete-button{padding:2px 12px;min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-dropdown,::ng-deep query-builder-rule .tn__rule-field .tn-dropdown.p-multiselect.p-component,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown.p-multiselect.p-component{min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-autocomplete .p-autocomplete-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-autocomplete .p-autocomplete-dropdown{height:26px;width:26px}::ng-deep query-builder-rule .tn__rule-field .p-calendar .p-button.p-button-icon-only,::ng-deep query-builder-rule .tn__rule-value .p-calendar .p-button.p-button-icon-only{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token{padding:0 .5rem;font-size:.9rem;margin:1px 2px}::ng-deep query-builder-rule .tn__rule-operator{width:145px;flex:0 0 145px;height:26px}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown{width:100%;height:100%}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown .p-inputtext{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-action{flex:0 0 auto;white-space:nowrap}::ng-deep query-builder-rule .tn__rule-action button{height:26px!important;width:26px!important;margin-left:2px!important;margin-right:6px!important}::ng-deep query-builder-rule .datetime-value-container{display:flex;align-items:center}::ng-deep query-builder-rule .datetime-value-container p-checkbox{flex:0 0 auto;margin-right:5px}@media (max-width: 640px){::ng-deep query-builder-rule .tn__rule-body{flex-direction:column;padding-right:5px}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:0;margin-bottom:5px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value,::ng-deep query-builder-rule .tn__rule-operator{width:100%;flex:1 1 auto}}\n"] }]
175
180
  }], ctorParameters: function () { return [{ type: i1.ComponentService }]; }, propDecorators: { dataSourceFields: [{
176
181
  type: Input
177
182
  }], operators: [{
@@ -185,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
185
190
  }], onRemove: [{
186
191
  type: Output
187
192
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvcXVlcnktYnVpbGRlcnMvcXVlcnktYnVpbGRlci1ydWxlL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXJ5LWJ1aWxkZXJzL3F1ZXJ5LWJ1aWxkZXItcnVsZS9xdWVyeS1idWlsZGVyLXJ1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFtQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU2pELE1BQU0sT0FBTyx5QkFBeUI7SUEyQmxDLFlBQ1ksaUJBQW1DO1FBQW5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUExQnRDLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUN0QyxvRUFBb0U7UUFDM0QsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQVVyQixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFJaEUsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2Ysb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcsWUFBWSxDQUFDO1FBQ25DLHdCQUFtQixHQUFHLE1BQU0sQ0FBQztRQUM3QixtQkFBYyxHQUVWLEVBQUUs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R0FBRyxJQUFJLENBQUM7U0FDM0I7O1lBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsWUFBWTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDNUMsdURBQXVEO1FBQ3ZELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQzs7c0hBeEtRLHlCQUF5QjswR0FBekIseUJBQXlCLGlRQ1p0QyxzblNBbUljOzJGRHZIRCx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksb0JBQW9CO3VHQU1yQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFTyxZQUFZO3NCQUF4QixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzVmFsaWREYXRlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnZpcm9ubWVudC1zY2hlbWEnO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hLCBGb3JtQ29udHJvbEJhc2UsIEZvcm1TY2hlbWFCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVlcnlSdWxlIH0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3F1ZXJ5LWJ1aWxkZXItcnVsZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJSdWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhU291cmNlRmllbGRzOiBhbnlbXSA9IFtdO1xyXG4gICAgLy8gRGFuaCBzw6FjaCBjw6FjIG9wZXJhdG9yIGPhu5EgxJHhu4tuaCwgZMO5bmcgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIGN1c3RvbSBmb3JtXHJcbiAgICBASW5wdXQoKSBvcGVyYXRvcnM6IGFueVtdID0gW107XHJcbiAgICAvLyBjb250cm9sIHZhbHVlIGPhu5EgxJHhu4tuaCwgZMO5bmcgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIGN1c3RvbSBmb3JtXHJcbiAgICBASW5wdXQoKSBzZXQgY29udHJvbFZhbHVlKHZhbHVlOiBGb3JtQ29udHJvbEJhc2UpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFR5cGUgPSAnYXV0b2NvbXBsZXRlJztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgcXVlcnk6IFF1ZXJ5UnVsZTtcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmllbGRQaWNrZXI6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBpdGVtRmllbGQ6IGFueTtcclxuICAgIGNvbnRyb2w6IEZvcm1TY2hlbWFCYXNlIHwgYW55O1xyXG4gICAgY29udHJvbFR5cGU6IHN0cmluZztcclxuICAgIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcclxuICAgIGN1c3RvbSA9IGZhbHNlO1xyXG4gICAgY2hhbmdpbmdDb250cm9sID0gZmFsc2U7XHJcbiAgICBjdXN0b21UeXBlRmllbGROYW1lID0gJ2ZpZWxkVmFsdWUnO1xyXG4gICAgY3VzdG9tVHlwZVNlcGFyYXRvciA9ICdfX19fJztcclxuICAgIGN1c3RvbVRlbXBsYXRlOiB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIH0gPSB7fTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9jb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5xdWVyeS52YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5xdWVyeSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnkuY29udHJvbCA9IHRoaXMuY29udHJvbDtcclxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnkudmFsdWVcclxuICAgICAgICAgICAgICAgIHx8IHRoaXMucXVlcnkuY29tcGFyZVR5cGUgPT0gT3BlcmF0b3IuaXNDdXJyZW50VXNlclxyXG4gICAgICAgICAgICAgICAgfHwgdGhpcy5xdWVyeS5jb21wYXJlVHlwZSA9PSBPcGVyYXRvci5pc0N1cnJlbnRDYW5Cb1xyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIC8vIFRyb25nIHRyxrDhu51uZyBo4bujcCBvcGVyYXRvciBraMO0bmcgdHJ1eeG7gW4gdOG7qyBiw6puIG5nb8OgaSB2w6BvIHRow6wgbeG7m2kgc2V0IGzhuqFpXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3BlcmF0b3JzIHx8IHRoaXMub3BlcmF0b3JzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhc291cmNlT3BlcmF0b3JzKHRoaXMucXVlcnkuZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VPcGVyYXRvcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RnVuY0dldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGlmIChvcmlnaW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5W3RoaXMuY3VzdG9tVHlwZUZpZWxkTmFtZV0gPSBvcmlnaW5WYWx1ZVsnZmllbGQnXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5LnZhbHVlID0gb3JpZ2luVmFsdWVbJ3ZhbHVlJ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXgpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUZpZWxkICE9IG51bGwgJiYgdGhpcy5pdGVtRmllbGQuY29udHJvbFR5cGUgPT0gJ2RhdGV0aW1lJyAmJiB0aGlzLnF1ZXJ5LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNWYWxpZERhdGUobmV3IERhdGUodGhpcy5xdWVyeS52YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlID0gdGhpcy5fY29tcG9uZW50U2VydmljZS5kaWNUZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRGdW5jR2V0VmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgICAgdGhpcy5xdWVyeS5mdW5jR2V0VmFsdWUgPSAoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiBpdGVtW3RoaXMuY3VzdG9tVHlwZUZpZWxkTmFtZV0sXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnkuZnVuY0dldFZhbHVlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHRoaXMucXVlcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZUZpZWxkKGV2dCkge1xyXG4gICAgICAgIHRoaXMucXVlcnkudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2hhbmdpbmdDb250cm9sID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldERhdGFzb3VyY2VPcGVyYXRvcnMoZXZ0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhc291cmNlT3BlcmF0b3JzKGZpZWxkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZUZpZWxkcykge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1GaWVsZCA9IHRoaXMuZGF0YVNvdXJjZUZpZWxkcy5maW5kKHAgPT4gcC5pZCA9PSBmaWVsZCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1GaWVsZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdG9ycyA9IHRoaXMuaXRlbUZpZWxkLm9wZXJhdG9ycztcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRDb250cm9sKHRoaXMuaXRlbUZpZWxkKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1PcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzLmZpbmQocSA9PiBxLmlkID09IHRoaXMucXVlcnkuY29tcGFyZVR5cGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtT3BlcmF0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRvcnMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeS5jb21wYXJlVHlwZSA9IHRoaXMub3BlcmF0b3JzWzBdLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZU9wZXJhdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5LmNvbXBhcmVUeXBlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtT3BlcmF0b3IuY29udHJvbFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q29udHJvbChpdGVtT3BlcmF0b3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbU9wZXJhdG9yLl9kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeS52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdG9ycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeS5jb21wYXJlVHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXRGdW5jR2V0VmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2hhbmdlT3BlcmF0b3IoKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbU9wZXJhdG9yID0gdGhpcy5vcGVyYXRvcnMuZmluZChxID0+IHEuaWQgPT0gdGhpcy5xdWVyeS5jb21wYXJlVHlwZSk7XHJcbiAgICAgICAgaWYgKGl0ZW1PcGVyYXRvciA9PSBudWxsKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGl0ZW1PcGVyYXRvci5jb250cm9sVHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29udHJvbChpdGVtT3BlcmF0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbUZpZWxkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRDb250cm9sKHRoaXMuaXRlbUZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbU9wZXJhdG9yLl9kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5xdWVyeS52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgdGhpcy5kaXNhYmxlZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlc2V0Q29udHJvbChpdGVtT3BlcmF0b3IpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xUeXBlID0gaXRlbU9wZXJhdG9yLmNvbnRyb2xUeXBlO1xyXG4gICAgICAgIC8vIEhvbGQgbOG6oWkgZ2nDoSB0cuG7iyBjb21wb25lbnQgY8WpIChGaXggbOG7l2kgY+G7p2EgZHJvcGRvd24pXHJcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250cm9sID0geyAuLi5pdGVtT3BlcmF0b3IuY29udHJvbCwgX2NvbXBvbmVudDogY29tcG9uZW50IH07XHJcbiAgICAgICAgdGhpcy5xdWVyeS5jb250cm9sID0gdGhpcy5jb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUxvYWRlZCgpIHtcclxuICAgICAgICB0aGlzLmNoYW5naW5nQ29udHJvbCA9IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0bl9fZ3JvdXAtb3ItcnVsZS1jb250YWluZXIgcnVsZS1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0bl9fZ3JvdXAtb3ItcnVsZSBydWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRuX19ydWxlLWJvZHlcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlRmllbGRQaWNrZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0bl9fcnVsZS1maWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUZpZWxkUGlja2VyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBxdWVyeSwgaGFuZGxlQ2hhbmdlZEZpZWxkOiBzZXREYXRhc291cmNlT3BlcmF0b3JzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRlbXBsYXRlRmllbGRQaWNrZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFBpY2tlcjsgY29udGV4dDogeyRpbXBsaWNpdDogcXVlcnl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG5fX3J1bGUtb3BlcmF0b3JcIj5cclxuICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wZXJhdG9yc1wiIG9wdGlvbkxhYmVsPVwidGVuXCIgb3B0aW9uVmFsdWU9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDaOG7jW4gdG/DoW4gdOG7rVwiIFsobmdNb2RlbCldPVwicXVlcnkuY29tcGFyZVR5cGVcIiAob25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlT3BlcmF0b3IoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjaGFuZ2luZ0NvbnRyb2xcIiBjbGFzcz1cInRuX19ydWxlLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbnRyb2xUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Ym94J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0Qm94VmFsdWU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHF1ZXJ5LCBfZGlzYWJsZWQ6IGZhbHNlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXN0b20nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRCb3hWYWx1ZTsgY29udGV4dDogeyRpbXBsaWNpdDogcXVlcnksIF9kaXNhYmxlZDogZGlzYWJsZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8cC1tdWx0aVNlbGVjdCAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiIFtwbGFjZWhvbGRlcl09XCJjb250cm9sLnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIiBbb3B0aW9uc109XCJjb250cm9sLmRhdGFTb3VyY2VcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBvcHRpb25MYWJlbD1cInRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImlkXCIgWyhuZ01vZGVsKV09XCJxdWVyeS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHJvcGRvd24gKm5nU3dpdGNoQ2FzZT1cIidkcm9wZG93bidcIiBbY29udHJvbF09XCJjb250cm9sXCIgW2RhdGFTb3VyY2VdPVwiY29udHJvbC5kYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2VsZWN0ZWRTdHlsZUNsYXNzXT1cIidtaW4nXCIgWyh2YWx1ZSldPVwicXVlcnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGV0aW1lJ1wiIGNsYXNzPVwiZGF0ZXRpbWUtdmFsdWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1jaGVja2JveCBbYmluYXJ5XT1cInRydWVcIiBbbGFiZWxdPVwiJ1TDuXkgYmnhur9uJ1wiIFsobmdNb2RlbCldPVwiY3VzdG9tXCI+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRhdGV0aW1lLXBpY2tlciAqbmdJZj1cIiFjdXN0b21cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RhdGV0aW1lLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImN1c3RvbVwiIHBJbnB1dFRleHQgcGxhY2Vob2xkZXI9XCJWRDogW25vd10gKyAxZCAtIDJoICsgM20gLSA0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeS52YWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRuLW1hc2sgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW21hc2tUeXBlXT1cImNvbnRyb2wubWFza1R5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnRyb2wucGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdG4tbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGVtcGxhdGVbJ3F1ZXJ5QnVpbGRlclVzZXJQaWNrZXInXTsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29udHJvbCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBxdWVyeTogcXVlcnksIG11bHRpcGxlOiBjb250cm9sLm11bHRpcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29jYXV0b2NodWMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGVtcGxhdGVbJ3F1ZXJ5QnVpbGRlckNvQ2F1UGlja2VyJ107IGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbnRyb2wsIGRpc2FibGVkOiBkaXNhYmxlZCwgcXVlcnk6IHF1ZXJ5LCBtdWx0aXBsZTogY29udHJvbC5tdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JvbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGVtcGxhdGVbJ3F1ZXJ5QnVpbGRlckF1dG9jb21wbGV0ZVBpY2tlciddOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb250cm9sLCBkaXNhYmxlZDogZGlzYWJsZWQsIHF1ZXJ5OiBxdWVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwdXNlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UZW1wbGF0ZVsncXVlcnlCdWlsZGVyQXV0b2NvbXBsZXRlUGlja2VyJ107IGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbnRyb2wsIGRpc2FibGVkOiBkaXNhYmxlZCwgcXVlcnk6IHF1ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2h1Y1Z1J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVRlbXBsYXRlWydxdWVyeUJ1aWxkZXJBdXRvY29tcGxldGVQaWNrZXInXTsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29udHJvbCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBxdWVyeTogcXVlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhdXRvY29tcGxldGUtcGlja2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVRlbXBsYXRlWydxdWVyeUJ1aWxkZXJBdXRvY29tcGxldGVQaWNrZXInXTsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29udHJvbCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBxdWVyeTogcXVlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHVzZXItcGlja2VyICpuZ1N3aXRjaENhc2U9XCIndXNlcidcIiBbY29udHJvbF09XCJjb250cm9sXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIiBbbXVsdGlwbGVdPVwiY29udHJvbC5tdWx0aXBsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VzZXItcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29jYXV0b2NodWMtcGlja2VyLWxpc3QgKm5nU3dpdGNoQ2FzZT1cIidjb2NhdXRvY2h1YydcIiBbY29udHJvbF09XCJjb250cm9sXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jb2NhdXRvY2h1Yy1waWNrZXItbGlzdD4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhdXRvY29tcGxldGUtcGlja2VyICpuZ1N3aXRjaENhc2U9XCIncm9sZSdcIiBbY29udHJvbF09XCJjb250cm9sXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hdXRvY29tcGxldGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXV0b2NvbXBsZXRlLXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwdXNlcidcIiBbY29udHJvbF09XCJjb250cm9sXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hdXRvY29tcGxldGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXV0b2NvbXBsZXRlLXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ2NodWNWdSdcIiBbY29udHJvbF09XCJjb250cm9sXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hdXRvY29tcGxldGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXV0b2NvbXBsZXRlLXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ2F1dG9jb21wbGV0ZS1waWNrZXInXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXV0b2NvbXBsZXRlLXBpY2tlcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlLWRhdGFzb3VyY2UgKm5nU3dpdGNoQ2FzZT1cIidhdXRvY29tcGxldGUnXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCIgW3N1Z2dlc3Rpb25zXT1cImNvbnRyb2wuZGF0YVNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdXRvY29tcGxldGUtZGF0YXNvdXJjZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBwbGFjZWhvbGRlcj1cIkdpw6EgdHLhu4tcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IHBsYWNlaG9sZGVyPVwiR2nDoSB0cuG7i1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFmdGVyLXZpZXctY2hlY2tlZCAqbmdJZj1cImNoYW5naW5nQ29udHJvbFwiIChsb2FkZWQpPVwiaGFuZGxlTG9hZGVkKClcIj48L2FmdGVyLXZpZXctY2hlY2tlZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG5fX3J1bGUtYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gaWNvbj1cInBpIHBpLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiWMOzYVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIChjbGljayk9XCJyZW1vdmVHcm91cCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjZmllbGRQaWNrZXIgbGV0LXF1ZXJ5PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2xUeXBlID09ICdjdXN0b20nXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2NsYXNzXT1cIid0bl9fcnVsZS1maWVsZCdcIiBwSW5wdXRUZXh0IHBsYWNlaG9sZGVyPVwiVHLGsOG7nW5nIGThu68gbGnhu4d1XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeS5maWVsZFZhbHVlXCIgLz5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2xUeXBlICE9ICdjdXN0b20nXCI+XHJcbiAgICAgICAgPHAtZHJvcGRvd24gW2FwcGVuZFRvXT1cIidib2R5J1wiIFtvcHRpb25zXT1cImRhdGFTb3VyY2VGaWVsZHNcIiBbY2xhc3NdPVwiJ3RuX19ydWxlLWZpZWxkJ1wiIG9wdGlvbkxhYmVsPVwidGVuXCJcclxuICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJpZFwiIHBsYWNlaG9sZGVyPVwiQ2jhu41uIHRyxrDhu51uZyBk4buvIGxp4buHdVwiIFsobmdNb2RlbCldPVwicXVlcnkuZmllbGRcIlxyXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlRmllbGQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvcC1kcm9wZG93bj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RleHRCb3hWYWx1ZSBsZXQtcXVlcnk+XHJcbiAgICA8aW5wdXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IHBsYWNlaG9sZGVyPVwiR2nDoSB0cuG7i1wiIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIiAvPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvcXVlcnktYnVpbGRlcnMvcXVlcnktYnVpbGRlci1ydWxlL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXJ5LWJ1aWxkZXJzL3F1ZXJ5LWJ1aWxkZXItcnVsZS9xdWVyeS1idWlsZGVyLXJ1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFtQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU2pELE1BQU0sT0FBTyx5QkFBeUI7SUErQmxDLFlBQ1ksaUJBQW1DO1FBQW5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUE5QnRDLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUN0QyxvRUFBb0U7UUFDM0QsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQVVyQixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFJaEUsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2Ysb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcsWUFBWSxDQUFDO1FBQ25DLHdCQUFtQixHQUFHLE1BQU0sQ0FBQztRQUM3QixtQkFBYyxHQUVWLEVBQUUs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U0FBUztzQkFBakIsS0FBSztnQkFFTyxZQUFZO3NCQUF4QixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzVmFsaWREYXRlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnZpcm9ubWVudC1zY2hlbWEnO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hLCBGb3JtQ29udHJvbEJhc2UsIEZvcm1TY2hlbWFCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVlcnlSdWxlIH0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3F1ZXJ5LWJ1aWxkZXItcnVsZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJSdWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhU291cmNlRmllbGRzOiBhbnlbXSA9IFtdO1xyXG4gICAgLy8gRGFuaCBzw6FjaCBjw6FjIG9wZXJhdG9yIGPhu5EgxJHhu4tuaCwgZMO5bmcgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIGN1c3RvbSBmb3JtXHJcbiAgICBASW5wdXQoKSBvcGVyYXRvcnM6IGFueVtdID0gW107XHJcbiAgICAvLyBjb250cm9sIHZhbHVlIGPhu5EgxJHhu4tuaCwgZMO5bmcgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIGN1c3RvbSBmb3JtXHJcbiAgICBASW5wdXQoKSBzZXQgY29udHJvbFZhbHVlKHZhbHVlOiBGb3JtQ29udHJvbEJhc2UpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFR5cGUgPSAnYXV0b2NvbXBsZXRlJztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgcXVlcnk6IFF1ZXJ5UnVsZTtcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmllbGRQaWNrZXI6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBpdGVtRmllbGQ6IGFueTtcclxuICAgIGNvbnRyb2w6IEZvcm1TY2hlbWFCYXNlIHwgYW55O1xyXG4gICAgY29udHJvbFR5cGU6IHN0cmluZztcclxuICAgIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcclxuICAgIGN1c3RvbSA9IGZhbHNlO1xyXG4gICAgY2hhbmdpbmdDb250cm9sID0gZmFsc2U7XHJcbiAgICBjdXN0b21UeXBlRmllbGROYW1lID0gJ2ZpZWxkVmFsdWUnO1xyXG4gICAgY3VzdG9tVHlwZVNlcGFyYXRvciA9ICdfX19fJztcclxuICAgIGN1c3RvbVRlbXBsYXRlOiB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIH0gPSB7fTtcclxuICAgIHF1ZXJ5QnVpbGRlclVzZXJQaWNrZXI6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBxdWVyeUJ1aWxkZXJDb0NhdVBpY2tlcjogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHF1ZXJ5QnVpbGRlckF1dG9jb21wbGV0ZVBpY2tlcjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjb25zdCBvcmlnaW5WYWx1ZSA9IHRoaXMucXVlcnkudmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlcnkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5LmNvbnRyb2wgPSB0aGlzLmNvbnRyb2w7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5LnZhbHVlXHJcbiAgICAgICAgICAgICAgICB8fCB0aGlzLnF1ZXJ5LmNvbXBhcmVUeXBlID09IE9wZXJhdG9yLmlzQ3VycmVudFVzZXJcclxuICAgICAgICAgICAgICAgIHx8IHRoaXMucXVlcnkuY29tcGFyZVR5cGUgPT0gT3BlcmF0b3IuaXNDdXJyZW50Q2FuQm9cclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUcm9uZyB0csaw4budbmcgaOG7o3Agb3BlcmF0b3Iga2jDtG5nIHRydXnhu4FuIHThu6sgYsOqbiBuZ2/DoGkgdsOgbyB0aMOsIG3hu5tpIHNldCBs4bqhaVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wZXJhdG9ycyB8fCB0aGlzLm9wZXJhdG9ycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YXNvdXJjZU9wZXJhdG9ycyh0aGlzLnF1ZXJ5LmZpZWxkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlT3BlcmF0b3IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb250cm9sVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldEZ1bmNHZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICBpZiAob3JpZ2luVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVt0aGlzLmN1c3RvbVR5cGVGaWVsZE5hbWVdID0gb3JpZ2luVmFsdWVbJ2ZpZWxkJ107XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeS52YWx1ZSA9IG9yaWdpblZhbHVlWyd2YWx1ZSddO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGV4KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLml0ZW1GaWVsZCAhPSBudWxsICYmIHRoaXMuaXRlbUZpZWxkLmNvbnRyb2xUeXBlID09ICdkYXRldGltZScgJiYgdGhpcy5xdWVyeS52YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWREYXRlKG5ldyBEYXRlKHRoaXMucXVlcnkudmFsdWUpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b20gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b20gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZSA9IHRoaXMuX2NvbXBvbmVudFNlcnZpY2UuZGljVGVtcGxhdGU7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJVc2VyUGlja2VyID0gdGhpcy5jdXN0b21UZW1wbGF0ZVsncXVlcnlCdWlsZGVyVXNlclBpY2tlciddO1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlckNvQ2F1UGlja2VyID0gdGhpcy5jdXN0b21UZW1wbGF0ZVsncXVlcnlCdWlsZGVyQ29DYXVQaWNrZXInXTtcclxuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJBdXRvY29tcGxldGVQaWNrZXIgPSB0aGlzLmN1c3RvbVRlbXBsYXRlWydxdWVyeUJ1aWxkZXJBdXRvY29tcGxldGVQaWNrZXInXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RnVuY0dldFZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnkuZnVuY0dldFZhbHVlID0gKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogaXRlbVt0aGlzLmN1c3RvbVR5cGVGaWVsZE5hbWVdLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5LmZ1bmNHZXRWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUdyb3VwKCkge1xyXG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdCh0aGlzLnF1ZXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDaGFuZ2VGaWVsZChldnQpIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5LnZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNoYW5naW5nQ29udHJvbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhc291cmNlT3BlcmF0b3JzKGV2dC52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGF0YXNvdXJjZU9wZXJhdG9ycyhmaWVsZCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VGaWVsZHMpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRmllbGQgPSB0aGlzLmRhdGFTb3VyY2VGaWVsZHMuZmluZChwID0+IHAuaWQgPT0gZmllbGQpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtRmllbGQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSB0aGlzLml0ZW1GaWVsZC5vcGVyYXRvcnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q29udHJvbCh0aGlzLml0ZW1GaWVsZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtT3BlcmF0b3IgPSB0aGlzLm9wZXJhdG9ycy5maW5kKHEgPT4gcS5pZCA9PSB0aGlzLnF1ZXJ5LmNvbXBhcmVUeXBlKTtcclxuICAgICAgICAgICAgICAgIGlmICghaXRlbU9wZXJhdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0b3JzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnkuY29tcGFyZVR5cGUgPSB0aGlzLm9wZXJhdG9yc1swXS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VPcGVyYXRvcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeS5jb21wYXJlVHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbU9wZXJhdG9yLmNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldENvbnRyb2woaXRlbU9wZXJhdG9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1PcGVyYXRvci5fZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnkudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xUeXBlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMucXVlcnkuY29tcGFyZVR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0RnVuY0dldFZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZU9wZXJhdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1PcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzLmZpbmQocSA9PiBxLmlkID09IHRoaXMucXVlcnkuY29tcGFyZVR5cGUpO1xyXG4gICAgICAgIGlmIChpdGVtT3BlcmF0b3IgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgICAgIGlmIChpdGVtT3BlcmF0b3IuY29udHJvbFR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldENvbnRyb2woaXRlbU9wZXJhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1GaWVsZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q29udHJvbCh0aGlzLml0ZW1GaWVsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW1PcGVyYXRvci5fZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnkudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHRoaXMuZGlzYWJsZWQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXNldENvbnRyb2woaXRlbU9wZXJhdG9yKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sVHlwZSA9IGl0ZW1PcGVyYXRvci5jb250cm9sVHlwZTtcclxuICAgICAgICAvLyBIb2xkIGzhuqFpIGdpw6EgdHLhu4sgY29tcG9uZW50IGPFqSAoRml4IGzhu5dpIGPhu6dhIGRyb3Bkb3duKVxyXG4gICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgY29tcG9uZW50ID0gdGhpcy5jb250cm9sLl9jb21wb25lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udHJvbCA9IHsgLi4uaXRlbU9wZXJhdG9yLmNvbnRyb2wsIF9jb21wb25lbnQ6IGNvbXBvbmVudCB9O1xyXG4gICAgICAgIHRoaXMucXVlcnkuY29udHJvbCA9IHRoaXMuY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVMb2FkZWQoKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2luZ0NvbnRyb2wgPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidG5fX2dyb3VwLW9yLXJ1bGUtY29udGFpbmVyIHJ1bGUtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG5fX2dyb3VwLW9yLXJ1bGUgcnVsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0bl9fcnVsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZUZpZWxkUGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG5fX3J1bGUtZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVGaWVsZFBpY2tlcjsgY29udGV4dDogeyRpbXBsaWNpdDogcXVlcnksIGhhbmRsZUNoYW5nZWRGaWVsZDogc2V0RGF0YXNvdXJjZU9wZXJhdG9yc31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZW1wbGF0ZUZpZWxkUGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRQaWNrZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHF1ZXJ5fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRuX19ydWxlLW9wZXJhdG9yXCI+XHJcbiAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJvcGVyYXRvcnNcIiBvcHRpb25MYWJlbD1cInRlblwiIG9wdGlvblZhbHVlPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ2jhu41uIHRvw6FuIHThu61cIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LmNvbXBhcmVUeXBlXCIgKG9uQ2hhbmdlKT1cImhhbmRsZUNoYW5nZU9wZXJhdG9yKClcIj5cclxuICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2hhbmdpbmdDb250cm9sXCIgY2xhc3M9XCJ0bl9fcnVsZS12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb250cm9sVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGV4dEJveFZhbHVlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBxdWVyeSwgX2Rpc2FibGVkOiBmYWxzZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VzdG9tJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0Qm94VmFsdWU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHF1ZXJ5LCBfZGlzYWJsZWQ6IGRpc2FibGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHAtbXVsdGlTZWxlY3QgKm5nU3dpdGNoQ2FzZT1cIidkcm9wZG93bidcIiBbcGxhY2Vob2xkZXJdPVwiY29udHJvbC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCIgW29wdGlvbnNdPVwiY29udHJvbC5kYXRhU291cmNlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgb3B0aW9uTGFiZWw9XCJ0ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJpZFwiIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRyb3Bkb3duICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtkYXRhU291cmNlXT1cImNvbnRyb2wuZGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNlbGVjdGVkU3R5bGVDbGFzc109XCInbWluJ1wiIFsodmFsdWUpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidkYXRldGltZSdcIiBjbGFzcz1cImRhdGV0aW1lLXZhbHVlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggW2JpbmFyeV09XCJ0cnVlXCIgW2xhYmVsXT1cIidUw7l5IGJp4bq/bidcIiBbKG5nTW9kZWwpXT1cImN1c3RvbVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkYXRldGltZS1waWNrZXIgKm5nSWY9XCIhY3VzdG9tXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgWyhuZ01vZGVsKV09XCJxdWVyeS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kYXRldGltZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJjdXN0b21cIiBwSW5wdXRUZXh0IHBsYWNlaG9sZGVyPVwiVkQ6IFtub3ddICsgMWQgLSAyaCArIDNtIC0gNHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkudmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0bi1tYXNrICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFttYXNrVHlwZV09XCJjb250cm9sLm1hc2tUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb250cm9sLnBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJxdWVyeS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RuLW1hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1ZXJ5QnVpbGRlclVzZXJQaWNrZXI7IGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbnRyb2wsIGRpc2FibGVkOiBkaXNhYmxlZCwgcXVlcnk6IHF1ZXJ5LCBtdWx0aXBsZTogY29udHJvbC5tdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvY2F1dG9jaHVjJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1ZXJ5QnVpbGRlckNvQ2F1UGlja2VyOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb250cm9sLCBkaXNhYmxlZDogZGlzYWJsZWQsIHF1ZXJ5OiBxdWVyeSwgbXVsdGlwbGU6IGNvbnRyb2wubXVsdGlwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyb2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1ZXJ5QnVpbGRlckF1dG9jb21wbGV0ZVBpY2tlcjsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29udHJvbCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBxdWVyeTogcXVlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncm91cHVzZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicXVlcnlCdWlsZGVyQXV0b2NvbXBsZXRlUGlja2VyOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb250cm9sLCBkaXNhYmxlZDogZGlzYWJsZWQsIHF1ZXJ5OiBxdWVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NodWNWdSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJxdWVyeUJ1aWxkZXJBdXRvY29tcGxldGVQaWNrZXI7IGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbnRyb2wsIGRpc2FibGVkOiBkaXNhYmxlZCwgcXVlcnk6IHF1ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYXV0b2NvbXBsZXRlLXBpY2tlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJxdWVyeUJ1aWxkZXJBdXRvY29tcGxldGVQaWNrZXI7IGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbnRyb2wsIGRpc2FibGVkOiBkaXNhYmxlZCwgcXVlcnk6IHF1ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx1c2VyLXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXInXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCIgW211bHRpcGxlXT1cImNvbnRyb2wubXVsdGlwbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91c2VyLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvY2F1dG9jaHVjLXBpY2tlci1saXN0ICpuZ1N3aXRjaENhc2U9XCInY29jYXV0b2NodWMnXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY29jYXV0b2NodWMtcGlja2VyLWxpc3Q+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXV0b2NvbXBsZXRlLXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ3JvbGUnXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXV0b2NvbXBsZXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF1dG9jb21wbGV0ZS1waWNrZXIgKm5nU3dpdGNoQ2FzZT1cIidncm91cHVzZXInXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXV0b2NvbXBsZXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF1dG9jb21wbGV0ZS1waWNrZXIgKm5nU3dpdGNoQ2FzZT1cIidjaHVjVnUnXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXV0b2NvbXBsZXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF1dG9jb21wbGV0ZS1waWNrZXIgKm5nU3dpdGNoQ2FzZT1cIidhdXRvY29tcGxldGUtcGlja2VyJ1wiIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgWyhuZ01vZGVsKV09XCJxdWVyeS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F1dG9jb21wbGV0ZS1waWNrZXI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZS1kYXRhc291cmNlICpuZ1N3aXRjaENhc2U9XCInYXV0b2NvbXBsZXRlJ1wiIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgWyhuZ01vZGVsKV09XCJxdWVyeS52YWx1ZVwiIFtzdWdnZXN0aW9uc109XCJjb250cm9sLmRhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtYXV0b2NvbXBsZXRlLWRhdGFzb3VyY2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgcGxhY2Vob2xkZXI9XCJHacOhIHRy4buLXCIgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBwbGFjZWhvbGRlcj1cIkdpw6EgdHLhu4tcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhZnRlci12aWV3LWNoZWNrZWQgKm5nSWY9XCJjaGFuZ2luZ0NvbnRyb2xcIiAobG9hZGVkKT1cImhhbmRsZUxvYWRlZCgpXCI+PC9hZnRlci12aWV3LWNoZWNrZWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRuX19ydWxlLWFjdGlvblwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIljDs2FcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwicmVtb3ZlR3JvdXAoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGUgI2ZpZWxkUGlja2VyIGxldC1xdWVyeT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sVHlwZSA9PSAnY3VzdG9tJ1wiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtjbGFzc109XCIndG5fX3J1bGUtZmllbGQnXCIgcElucHV0VGV4dCBwbGFjZWhvbGRlcj1cIlRyxrDhu51uZyBk4buvIGxp4buHdVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlcnkuZmllbGRWYWx1ZVwiIC8+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sVHlwZSAhPSAnY3VzdG9tJ1wiPlxyXG4gICAgICAgIDxwLWRyb3Bkb3duIFthcHBlbmRUb109XCInYm9keSdcIiBbb3B0aW9uc109XCJkYXRhU291cmNlRmllbGRzXCIgW2NsYXNzXT1cIid0bl9fcnVsZS1maWVsZCdcIiBvcHRpb25MYWJlbD1cInRlblwiXHJcbiAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiaWRcIiBwbGFjZWhvbGRlcj1cIkNo4buNbiB0csaw4budbmcgZOG7ryBsaeG7h3VcIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LmZpZWxkXCJcclxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZUNoYW5nZUZpZWxkKCRldmVudClcIj5cclxuICAgICAgICA8L3AtZHJvcGRvd24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0Qm94VmFsdWUgbGV0LXF1ZXJ5PlxyXG4gICAgPGlucHV0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBwbGFjZWhvbGRlcj1cIkdpw6EgdHLhu4tcIiBbKG5nTW9kZWwpXT1cInF1ZXJ5LnZhbHVlXCIgLz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=