@syncfusion/ej2-angular-treegrid 31.1.21-ngcc → 31.1.21

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 (94) hide show
  1. package/CHANGELOG.md +14 -65
  2. package/esm2020/public_api.mjs +2 -0
  3. package/esm2020/src/index.mjs +9 -0
  4. package/esm2020/src/treegrid/aggregate-columns.directive.mjs +72 -0
  5. package/esm2020/src/treegrid/aggregates.directive.mjs +69 -0
  6. package/esm2020/src/treegrid/columns.directive.mjs +100 -0
  7. package/esm2020/src/treegrid/stacked-column.directive.mjs +100 -0
  8. package/esm2020/src/treegrid/treegrid-all.module.mjs +89 -0
  9. package/esm2020/src/treegrid/treegrid.component.mjs +271 -0
  10. package/esm2020/src/treegrid/treegrid.module.mjs +61 -0
  11. package/esm2020/syncfusion-ej2-angular-treegrid.mjs +5 -0
  12. package/fesm2015/syncfusion-ej2-angular-treegrid.mjs +734 -0
  13. package/fesm2015/syncfusion-ej2-angular-treegrid.mjs.map +1 -0
  14. package/fesm2020/syncfusion-ej2-angular-treegrid.mjs +734 -0
  15. package/fesm2020/syncfusion-ej2-angular-treegrid.mjs.map +1 -0
  16. package/package.json +44 -47
  17. package/src/treegrid/aggregate-columns.directive.d.ts +31 -28
  18. package/src/treegrid/aggregates.directive.d.ts +7 -2
  19. package/src/treegrid/columns.directive.d.ts +60 -77
  20. package/src/treegrid/stacked-column.directive.d.ts +60 -77
  21. package/src/treegrid/treegrid-all.module.d.ts +6 -0
  22. package/src/treegrid/treegrid.component.d.ts +23 -1
  23. package/src/treegrid/treegrid.module.d.ts +10 -0
  24. package/styles/bds-lite.css +1 -0
  25. package/styles/bds-lite.scss +1 -0
  26. package/styles/bds.css +1 -0
  27. package/styles/bds.scss +1 -0
  28. package/styles/bootstrap-dark-lite.css +1 -0
  29. package/styles/bootstrap-dark-lite.scss +1 -0
  30. package/styles/bootstrap-lite.css +1 -0
  31. package/styles/bootstrap-lite.scss +1 -0
  32. package/styles/bootstrap4-lite.css +1 -0
  33. package/styles/bootstrap4-lite.scss +1 -0
  34. package/styles/bootstrap5-dark-lite.css +1 -0
  35. package/styles/bootstrap5-dark-lite.scss +1 -0
  36. package/styles/bootstrap5-lite.css +1 -0
  37. package/styles/bootstrap5-lite.scss +1 -0
  38. package/styles/bootstrap5.3-lite.css +1 -0
  39. package/styles/bootstrap5.3-lite.scss +1 -0
  40. package/styles/bootstrap5.3.css +1 -0
  41. package/styles/bootstrap5.3.scss +1 -0
  42. package/styles/fabric-dark-lite.css +1 -0
  43. package/styles/fabric-dark-lite.scss +1 -0
  44. package/styles/fabric-lite.css +1 -0
  45. package/styles/fabric-lite.scss +1 -0
  46. package/styles/fluent-dark-lite.css +1 -0
  47. package/styles/fluent-dark-lite.scss +1 -0
  48. package/styles/fluent-lite.css +1 -0
  49. package/styles/fluent-lite.scss +1 -0
  50. package/styles/fluent2-lite.css +1 -0
  51. package/styles/fluent2-lite.scss +1 -0
  52. package/styles/fluent2.css +1 -0
  53. package/styles/fluent2.scss +1 -0
  54. package/styles/highcontrast-light-lite.css +1 -0
  55. package/styles/highcontrast-light-lite.scss +1 -0
  56. package/styles/highcontrast-lite.css +1 -0
  57. package/styles/highcontrast-lite.scss +1 -0
  58. package/styles/material-dark-lite.css +1 -0
  59. package/styles/material-dark-lite.scss +1 -0
  60. package/styles/material-lite.css +1 -0
  61. package/styles/material-lite.scss +1 -0
  62. package/styles/material3-dark-lite.css +1 -0
  63. package/styles/material3-dark-lite.scss +1 -0
  64. package/styles/material3-lite.css +1 -0
  65. package/styles/material3-lite.scss +1 -0
  66. package/styles/tailwind-dark-lite.css +1 -0
  67. package/styles/tailwind-dark-lite.scss +1 -0
  68. package/styles/tailwind-lite.css +1 -0
  69. package/styles/tailwind-lite.scss +1 -0
  70. package/styles/tailwind3-lite.css +1 -0
  71. package/styles/tailwind3-lite.scss +1 -0
  72. package/styles/tailwind3.css +1 -0
  73. package/styles/tailwind3.scss +1 -0
  74. package/styles/treegrid/bds.css +1 -0
  75. package/styles/treegrid/bds.scss +1 -0
  76. package/styles/treegrid/bootstrap5.3.css +1 -0
  77. package/styles/treegrid/bootstrap5.3.scss +1 -0
  78. package/styles/treegrid/fluent2.css +1 -0
  79. package/styles/treegrid/fluent2.scss +1 -0
  80. package/styles/treegrid/tailwind3.css +1 -0
  81. package/styles/treegrid/tailwind3.scss +1 -0
  82. package/syncfusion-ej2-angular-treegrid.d.ts +5 -0
  83. package/@syncfusion/ej2-angular-treegrid.es5.js +0 -798
  84. package/@syncfusion/ej2-angular-treegrid.es5.js.map +0 -1
  85. package/@syncfusion/ej2-angular-treegrid.js +0 -748
  86. package/@syncfusion/ej2-angular-treegrid.js.map +0 -1
  87. package/dist/ej2-angular-treegrid.umd.js +0 -979
  88. package/dist/ej2-angular-treegrid.umd.js.map +0 -1
  89. package/dist/ej2-angular-treegrid.umd.min.js +0 -11
  90. package/dist/ej2-angular-treegrid.umd.min.js.map +0 -1
  91. package/ej2-angular-treegrid.d.ts +0 -5
  92. package/ej2-angular-treegrid.metadata.json +0 -1
  93. package/license +0 -10
  94. package/postinstall/tagchange.js +0 -18
package/CHANGELOG.md CHANGED
@@ -6,66 +6,21 @@
6
6
 
7
7
  #### Bug Fixes
8
8
 
9
- - `#I558418` - Resolved data re-rendering on scrolling up in virtualization.
10
- - `#F187000` - Nested parent remains the expanded property when its root parent is collapsed in remote data with loadChildOnDemand.
11
- - `#I572093` - `onclick` event of button bound properly while creating a button component in treegrid with HtmlEncode enabled.
9
+ -`#I759266` - The `addRecord` method of the TreeGrid correctly adds a child record to the specified parent node.- `#F69767` - Fixed an issue where data was being duplicated when dragging and dropping items and refreshing in the treegrid.
12
10
 
13
- ## 25.1.38 (2024-04-02)
14
-
15
- ### Tree Grid
16
-
17
- #### Bug Fixes
18
-
19
- - `#I560767` - Resolved exception on initial rendering with column template in remote data.
20
-
21
- ## 25.1.37 (2024-03-26)
22
-
23
- ### Tree Grid
24
-
25
- #### Bug Fixes
26
-
27
- - `#F187000` - Resolved exception when the dataSource and the columns were not defined.
28
- - `#I560889` - Added dropPosition in `RowDragEventArgs` of `rowDrop` event.
29
- - `#I567688` - Resolved exception on refreshing the browser when persistence enabled.
30
-
31
- ## 25.1.35 (2024-03-15)
32
-
33
- ### Tree Grid
34
-
35
- #### Bug Fixes
36
-
37
- - `#F50891` - Fixed issue where react template disappears in tree grid column while using `useState()`.
38
-
39
- ## 23.1.36 (2022-09-15)
11
+ ## 31.1.17 (2025-09-05)
40
12
 
41
13
  ### Tree Grid
42
14
 
43
15
  #### Features
44
16
 
45
- - `#I341079` - Provided support for exporting data to PDF, CSV, and Excel formats using server-side functionality. Please find the demo [here](https://ej2.syncfusion.com/aspnetcore/TreeGrid/ServerSideExporting#/material3).
46
- - Added support for the new `fixed` mode within the `freeze` property of column settings. When a column is set as `fixed`, it will stay within the viewport during horizontal scrolling, enhancing the user experience with improved visibility and efficiency.
17
+ - Introduced sticky header support in the Tree Grid, allowing column headers to stay fixed during scrolling. This improves navigation and readability in large hierarchical data views. Explore the demo [here](https://ej2.syncfusion.com/demos/#/tailwind3/tree-grid/sticky-header.html).
47
18
 
48
- - Provided support for inline editing with virtualization enabled. Please find the demo [here](https://ej2.syncfusion.com/angular/demos/#/bootstrap5/treegrid/virtual-scrolling).
49
- - `#I323425`, `#I332700`, `#I344742`, `#I375307` - Provided support for frozen column with virtualization enabled.
50
- - `#F166825` - Provided support for infinite scrolling with observable binding.
19
+ - Enhanced support for `LoadChildOnDemand` in the Tree Grid with remote data binding and virtual scrolling. This improvement enables efficient, on-demand retrieval of child records, ensuring smoother performance when working with large hierarchical datasets.
51
20
 
52
- #### Breaking Changes
21
+ - Introduced sticky header support in the Tree Grid, allowing column headers to stay fixed during scrolling. This improves navigation and readability in large hierarchical data views. Explore the demo [here](https://ej2.syncfusion.com/angular/demos/#/tailwind3/treegrid/stickyheader).
53
22
 
54
- - Optimized the frozen columns feature in Tree Grid and thus changed the dom structure of tree grid from two table to single table architecture. Also, the following methods have been removed, and it's recommended to use the following alternatives instead.
55
-
56
- | Removed methods | Suggested to use alternative methods |
57
- |---|---|
58
- | `getMoavableRows`, `getFrozenRightRows` | `getRows` |
59
- | `getMovableRowByIndex`, `getFrozenRowByIndex`, `getFrozenRightRowByIndex` | `getRowByIndex` |
60
- | `getMovableCellFromIndex`, `getFrozenRightCellFromIndex` | `getCellFromIndex` |
61
- | `getMovableDataRows`, `getFrozenRightDataRows`, `getFrozenDataRows` | `getDataRows` |
62
- | `getAllMovableDataRows`, `getAllFrozenDataRows`, `getAllFrozenRightDataRows` | `getAllDataRows` |
63
- | `getMovableColumnHeaderByIndex`, `getFrozenRightColumnHeaderByIndex`, `getFrozenLeftColumnHeaderByIndex` | `getColumnHeaderByIndex` |
64
- | `getFrozenRightHeader`, `getMovableHeader` | `getHeaderContent` |
65
- | `getFrozenRightRowsObject`, `getMovableRwsObject` | `getRowsObject` |
66
- | `getFrozenRightHeaderTbody`, `getMovableHeaderTbody`, `getFrozenHeaderTbody` | `getContent().querySelector(‘tbody’)` |
67
- | `getFrozenLeftContentTbody`, `getFrozenRightContentTbody`, `getMovableContentTbody` | `getHeaderContent().querySelector(‘tbody’)` |
68
- | `getFrozenRightContent`, `getMovableContent` | `getContent` |
23
+ - Enhanced support for `LoadChildOnDemand` in the Tree Grid with remote data binding and virtual scrolling. This improvement enables efficient, on-demand retrieval of child records, ensuring smoother performance when working with large hierarchical datasets.
69
24
 
70
25
  ## 20.2.36 (2022-06-30)
71
26
 
@@ -167,12 +122,12 @@
167
122
 
168
123
  - Now `data`, `row` these Tree Grid selection event arguments are get array values only when we perform multi selection. Please find modified event arguments and it types from the below table,
169
124
 
170
- | `Properties` | `Type` |
171
- |---|---|
172
- | `data` | `Object or Object[]` |
173
- | `rowIndex` | `number` |
174
- | `rowIndexes` | `number[]` |
175
- | `row` | `Element or Element[]` |
125
+ `Properties` |`Type`
126
+ -----|-----
127
+ `data` | `Object or Object[]`
128
+ `rowIndex` | `number`
129
+ `rowIndexes` | `number[]`
130
+ `row` | `Element or Element[]`
176
131
 
177
132
  ## 17.4.39 (2019-12-17)
178
133
 
@@ -238,14 +193,8 @@
238
193
  #### Bug Fixes
239
194
 
240
195
  - Expanding and Collapsing records is working fine when `pageSizeMode` is set as `All`.
241
- - `expandAtLevel`, `collapseAtLevel`, `expandAll` and `collapseAll` methods are working fine when `pageSizeMode` is set as `All`.
242
-
243
-
244
- - `actionBegin`, `actionComplete` and `actionFailure` events are triggered properly.
245
- - Additional parameters that are added using the `query` property of TreeGrid are passed to the server side when a parent record is expanded.
246
-
247
-
248
- ## 19.1.54 (2021-03-30)
196
+ - `expandAtLevel`, `collapseAtLevel`, `expandAll` and `collapseAll` methods are working fine when `pageSizeMode` is set as `All`.- `actionBegin`, `actionComplete` and `actionFailure` events are triggered properly.
197
+ - Additional parameters that are added using the `query` property of TreeGrid are passed to the server side when a parent record is expanded.## 19.1.54 (2021-03-30)
249
198
 
250
199
  ### Tree Grid
251
200
 
@@ -0,0 +1,2 @@
1
+ export * from './src/index';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9pbmRleCc7Il19
@@ -0,0 +1,9 @@
1
+ export { StackedColumnDirective, StackedColumnsDirective } from './treegrid/stacked-column.directive';
2
+ export { ColumnDirective, ColumnsDirective } from './treegrid/columns.directive';
3
+ export { AggregateColumnDirective, AggregateColumnsDirective } from './treegrid/aggregate-columns.directive';
4
+ export { AggregateDirective, AggregatesDirective } from './treegrid/aggregates.directive';
5
+ export { TreeGridComponent } from './treegrid/treegrid.component';
6
+ export { TreeGridModule } from './treegrid/treegrid.module';
7
+ export { TreeGridAllModule, FilterService, PageService, SortService, ReorderService, ToolbarService, AggregateService, ResizeService, ColumnMenuService, ExcelExportService, PdfExportService, CommandColumnService, ContextMenuService, EditService, SelectionService, VirtualScrollService, DetailRowService, RowDDService, FreezeService, ColumnChooserService, LoggerService, InfiniteScrollService } from './treegrid/treegrid-all.module';
8
+ export * from '@syncfusion/ej2-treegrid';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHNCQUFzQixFQUFDLHVCQUF1QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbkcsT0FBTyxFQUFDLGVBQWUsRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzFHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaGIsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7U3RhY2tlZENvbHVtbkRpcmVjdGl2ZSxTdGFja2VkQ29sdW1uc0RpcmVjdGl2ZX0gZnJvbSAnLi90cmVlZ3JpZC9zdGFja2VkLWNvbHVtbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHtDb2x1bW5EaXJlY3RpdmUsQ29sdW1uc0RpcmVjdGl2ZX0gZnJvbSAnLi90cmVlZ3JpZC9jb2x1bW5zLmRpcmVjdGl2ZSc7XG5leHBvcnQge0FnZ3JlZ2F0ZUNvbHVtbkRpcmVjdGl2ZSxBZ2dyZWdhdGVDb2x1bW5zRGlyZWN0aXZlfSBmcm9tICcuL3RyZWVncmlkL2FnZ3JlZ2F0ZS1jb2x1bW5zLmRpcmVjdGl2ZSc7XG5leHBvcnQge0FnZ3JlZ2F0ZURpcmVjdGl2ZSxBZ2dyZWdhdGVzRGlyZWN0aXZlfSBmcm9tICcuL3RyZWVncmlkL2FnZ3JlZ2F0ZXMuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFRyZWVHcmlkQ29tcG9uZW50fSBmcm9tICcuL3RyZWVncmlkL3RyZWVncmlkLmNvbXBvbmVudCc7XG5leHBvcnQgeyBUcmVlR3JpZE1vZHVsZSB9IGZyb20gJy4vdHJlZWdyaWQvdHJlZWdyaWQubW9kdWxlJztcbmV4cG9ydCB7IFRyZWVHcmlkQWxsTW9kdWxlLCBGaWx0ZXJTZXJ2aWNlLCBQYWdlU2VydmljZSwgU29ydFNlcnZpY2UsIFJlb3JkZXJTZXJ2aWNlLCBUb29sYmFyU2VydmljZSwgQWdncmVnYXRlU2VydmljZSwgUmVzaXplU2VydmljZSwgQ29sdW1uTWVudVNlcnZpY2UsIEV4Y2VsRXhwb3J0U2VydmljZSwgUGRmRXhwb3J0U2VydmljZSwgQ29tbWFuZENvbHVtblNlcnZpY2UsIENvbnRleHRNZW51U2VydmljZSwgRWRpdFNlcnZpY2UsIFNlbGVjdGlvblNlcnZpY2UsIFZpcnR1YWxTY3JvbGxTZXJ2aWNlLCBEZXRhaWxSb3dTZXJ2aWNlLCBSb3dERFNlcnZpY2UsIEZyZWV6ZVNlcnZpY2UsIENvbHVtbkNob29zZXJTZXJ2aWNlLCBMb2dnZXJTZXJ2aWNlLCBJbmZpbml0ZVNjcm9sbFNlcnZpY2UgfSBmcm9tICcuL3RyZWVncmlkL3RyZWVncmlkLWFsbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnQHN5bmNmdXNpb24vZWoyLXRyZWVncmlkJzsiXX0=
@@ -0,0 +1,72 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, ContentChildren, ContentChild } from '@angular/core';
3
+ import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
4
+ import { Template } from '@syncfusion/ej2-angular-base';
5
+ import * as i0 from "@angular/core";
6
+ let input = ['columnName', 'customAggregate', 'field', 'footerTemplate', 'format', 'type'];
7
+ let outputs = [];
8
+ /**
9
+ * `e-aggregate->e-column` directive represent a aggregate column of the Angular TreeGrid.
10
+ * ```html
11
+ * <ejs-treegrid [dataSource]='data' allowPaging='true' allowSorting='true'>
12
+ * <e-columns>
13
+ * <e-column field='ID' width='100'></e-column>
14
+ * <e-column field='name' headerText='Name' width='100'></e-column>
15
+ * </e-columns>
16
+ * <e-aggregates>
17
+ * <e-aggregate>
18
+ * <e-columns>
19
+ * <e-column field='ID' type='Min'></e-column>
20
+ * </e-columns>
21
+ * </e-aggregate>
22
+ * </e-aggregates>
23
+ * </ejs-treegrid>
24
+ * ```
25
+ */
26
+ export class AggregateColumnDirective extends ComplexBase {
27
+ constructor(viewContainerRef) {
28
+ super();
29
+ this.viewContainerRef = viewContainerRef;
30
+ setValue('currentInstance', this, this.viewContainerRef);
31
+ this.registerEvents(outputs);
32
+ this.directivePropList = input;
33
+ }
34
+ }
35
+ AggregateColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregateColumnDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
36
+ AggregateColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AggregateColumnDirective, selector: "ejs-treegrid>e-aggregates>e-aggregate>e-columns>e-column", inputs: { columnName: "columnName", customAggregate: "customAggregate", field: "field", footerTemplate: "footerTemplate", format: "format", type: "type" }, queries: [{ propertyName: "footerTemplate", first: true, predicate: ["footerTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
37
+ __decorate([
38
+ Template()
39
+ ], AggregateColumnDirective.prototype, "footerTemplate", void 0);
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregateColumnDirective, decorators: [{
41
+ type: Directive,
42
+ args: [{
43
+ selector: 'ejs-treegrid>e-aggregates>e-aggregate>e-columns>e-column',
44
+ inputs: input,
45
+ outputs: outputs,
46
+ queries: {}
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { footerTemplate: [{
49
+ type: ContentChild,
50
+ args: ['footerTemplate']
51
+ }] } });
52
+ /**
53
+ * AggregateColumn Array Directive
54
+ * @private
55
+ */
56
+ export class AggregateColumnsDirective extends ArrayBase {
57
+ constructor() {
58
+ super('columns');
59
+ }
60
+ }
61
+ AggregateColumnsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregateColumnsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
62
+ AggregateColumnsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AggregateColumnsDirective, selector: "ejs-treegrid>e-aggregates>e-aggregate>e-columns", queries: [{ propertyName: "children", predicate: AggregateColumnDirective }], usesInheritance: true, ngImport: i0 });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregateColumnsDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: 'ejs-treegrid>e-aggregates>e-aggregate>e-columns',
67
+ queries: {
68
+ children: new ContentChildren(AggregateColumnDirective)
69
+ },
70
+ }]
71
+ }], ctorParameters: function () { return []; } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlLWNvbHVtbnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWVncmlkL2FnZ3JlZ2F0ZS1jb2x1bW5zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR3hELElBQUksS0FBSyxHQUFhLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckcsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQVNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUFxQztJQThEL0UsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUVqRCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOztxSEFuRVEsd0JBQXdCO3lHQUF4Qix3QkFBd0I7QUE0RGpDO0lBREMsUUFBUSxFQUFFO2dFQUNnQjsyRkE1RGxCLHdCQUF3QjtrQkFScEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMERBQTBEO29CQUNwRSxNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFLEVBRVI7aUJBQ0o7dUdBNkRVLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCOztBQVlsQzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsU0FBb0M7SUFDL0U7UUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckIsQ0FBQzs7c0hBSFEseUJBQXlCOzBHQUF6Qix5QkFBeUIsZ0hBSEEsd0JBQXdCOzJGQUdqRCx5QkFBeUI7a0JBTnJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlEQUFpRDtvQkFDM0QsT0FBTyxFQUFFO3dCQUNMLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQztxQkFDMUQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcblxuXG5sZXQgaW5wdXQ6IHN0cmluZ1tdID0gWydjb2x1bW5OYW1lJywgJ2N1c3RvbUFnZ3JlZ2F0ZScsICdmaWVsZCcsICdmb290ZXJUZW1wbGF0ZScsICdmb3JtYXQnLCAndHlwZSddO1xubGV0IG91dHB1dHM6IHN0cmluZ1tdID0gW107XG4vKipcbiAqIGBlLWFnZ3JlZ2F0ZS0+ZS1jb2x1bW5gIGRpcmVjdGl2ZSByZXByZXNlbnQgYSBhZ2dyZWdhdGUgY29sdW1uIG9mIHRoZSBBbmd1bGFyIFRyZWVHcmlkLiBcbiAqIGBgYGh0bWxcbiAqIDxlanMtdHJlZWdyaWQgW2RhdGFTb3VyY2VdPSdkYXRhJyBhbGxvd1BhZ2luZz0ndHJ1ZScgYWxsb3dTb3J0aW5nPSd0cnVlJz4gXG4gKiAgIDxlLWNvbHVtbnM+XG4gKiAgICAgPGUtY29sdW1uIGZpZWxkPSdJRCcgd2lkdGg9JzEwMCc+PC9lLWNvbHVtbj5cbiAqICAgICA8ZS1jb2x1bW4gZmllbGQ9J25hbWUnIGhlYWRlclRleHQ9J05hbWUnIHdpZHRoPScxMDAnPjwvZS1jb2x1bW4+XG4gKiAgIDwvZS1jb2x1bW5zPlxuICogICA8ZS1hZ2dyZWdhdGVzPlxuICogICAgIDxlLWFnZ3JlZ2F0ZT5cbiAqICAgICAgIDxlLWNvbHVtbnM+XG4gKiAgICAgICAgIDxlLWNvbHVtbiBmaWVsZD0nSUQnIHR5cGU9J01pbic+PC9lLWNvbHVtbj5cbiAqICAgICAgIDwvZS1jb2x1bW5zPlxuICogICAgICA8L2UtYWdncmVnYXRlPlxuICogICAgPC9lLWFnZ3JlZ2F0ZXM+XG4gKiA8L2Vqcy10cmVlZ3JpZD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy10cmVlZ3JpZD5lLWFnZ3JlZ2F0ZXM+ZS1hZ2dyZWdhdGU+ZS1jb2x1bW5zPmUtY29sdW1uJyxcbiAgICBpbnB1dHM6IGlucHV0LFxuICAgIG91dHB1dHM6IG91dHB1dHMsICAgIFxuICAgIHF1ZXJpZXM6IHtcblxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQWdncmVnYXRlQ29sdW1uRGlyZWN0aXZlIGV4dGVuZHMgQ29tcGxleEJhc2U8QWdncmVnYXRlQ29sdW1uRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuXG5cbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgYWdncmVnYXRlIHR5cGUocykgZm9yIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIFRvIGFwcGx5IG11bHRpcGxlIGFnZ3JlZ2F0ZXMgdG8gYSBzaW5nbGUgY29sdW1uLCBzcGVjaWZ5IHRoZSBgdHlwZWAgYXMgYW4gYXJyYXkuIFxuICAgICAqIEF2YWlsYWJsZSBhZ2dyZWdhdGUgdHlwZXMgaW5jbHVkZTogXG4gICAgICogKiBgc3VtYDogQ2FsY3VsYXRlcyB0aGUgc3VtIG9mIGFsbCB2YWx1ZXMgaW4gYSBjb2x1bW4uIFxuICAgICAqICogYGF2ZXJhZ2VgOiBDb21wdXRlcyB0aGUgYXZlcmFnZSBvZiB0aGUgY29sdW1uIHZhbHVlcy4gXG4gICAgICogKiBgbWF4YDogRmluZHMgdGhlIG1heGltdW0gdmFsdWUgaW4gYSBjb2x1bW4uIFxuICAgICAqICogYG1pbmA6IEZpbmRzIHRoZSBtaW5pbXVtIHZhbHVlIGluIGEgY29sdW1uLiBcbiAgICAgKiAqIGBjb3VudGA6IENvdW50cyB0aGUgbnVtYmVyIG9mIHJlY29yZHMuIFxuICAgICAqICogYGZhbHNlY291bnRgOiBDb3VudHMgdGhlIG51bWJlciBvZiBmYWxzZSB2YWx1ZXMuIFxuICAgICAqICogYHRydWVjb3VudGA6IENvdW50cyB0aGUgbnVtYmVyIG9mIHRydWUgdmFsdWVzLiBcbiAgICAgKiAqIGBjdXN0b21gOiBBbGxvd3MgZm9yIGEgY3VzdG9tIGFnZ3JlZ2F0ZSBmdW5jdGlvbi5cbiAgICAgKiBcbiAgICAgKiBVc2UgYGN1c3RvbWAgdG8gc3BlY2lmeSBhIGN1c3RvbSBhZ2dyZWdhdGlvbi5cbiAgICAgKiAgICAgXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgY29sdW1uIG5hbWUgdG8gZGlzcGxheSB0aGUgYWdncmVnYXRlIHZhbHVlLiBJZiBub3QgZGVmaW5lZCwgdGhlIGBmaWVsZGAgbmFtZSBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2x1bW5OYW1lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgYSBjdXN0b20gZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSBhZ2dyZWdhdGUgdmFsdWUuIFRoZSBgdHlwZWAgbXVzdCBiZSBzZXQgdG8gYGN1c3RvbWAuIFxuICAgICAqIFVzZSB0aGUgY3VzdG9tIHZhbHVlIGFzIGAke2N1c3RvbX1gIGluIHRlbXBsYXRlcy4gXG4gICAgICogKiBgVG90YWwgYWdncmVnYXRpb25gOiBUaGUgY3VzdG9tIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBlbnRpcmUgZGF0YXNldCBhbmQgdGhlIGN1cnJlbnQgYEFnZ3JlZ2F0ZUNvbHVtbmAgb2JqZWN0LiBcbiAgICAgKiAqIGBHcm91cCBhZ2dyZWdhdGlvbmA6IEl0IGlzIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IGdyb3VwIGRldGFpbHMgYW5kIHRoZSBgQWdncmVnYXRlQ29sdW1uYCBvYmplY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjdXN0b21BZ2dyZWdhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb2x1bW4gbmFtZSBvbiB3aGljaCB0byBwZXJmb3JtIHRoZSBhZ2dyZWdhdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZpZWxkOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgZm9ybWF0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNhbGN1bGF0ZWQgYWdncmVnYXRlIHZhbHVlIGJlZm9yZSBkaXNwbGF5LiBcbiAgICAgKiBTdXBwb3J0cyBib3RoIHN0YW5kYXJkIGFuZCBjdXN0b20gZm9ybWF0cyBmb3IgbnVtYmVycyBhbmQgZGF0ZXMuIFxuICAgICAqIFJlZmVyIHRvIHRoZSBTeW5jZnVzaW9uIGRvY3VtZW50YXRpb24gZm9yIFtudW1iZXJdKGh0dHBzOi8vZWoyLnN5bmNmdXNpb24uY29tL2RvY3VtZW50YXRpb24vY29tbW9uL2ludGVybmF0aW9uYWxpemF0aW9uLyNzdXBwb3J0ZWQtZm9ybWF0LXN0cmluZykgXG4gICAgICogYW5kIFtkYXRlXShodHRwczovL2VqMi5zeW5jZnVzaW9uLmNvbS9kb2N1bWVudGF0aW9uL2NvbW1vbi9pbnRlcm5hdGlvbmFsaXphdGlvbiNkYXRlLWZvcm1hdHRpbmcpIGZvcm1hdHMuXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyBhIHRlbXBsYXRlIGZvciB0aGUgZm9vdGVyIGNlbGwgb2YgdGhlIGFnZ3JlZ2F0ZSBjb2x1bW4uIFxuICAgICAqIFVzZSB0aGUgYWdncmVnYXRlIGB0eXBlYCBuYW1lcyB3aXRoaW4gdGhlIHRlbXBsYXRlIHRvIGFjY2VzcyBhZ2dyZWdhdGUgdmFsdWVzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2Zvb3RlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOlZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMob3V0cHV0cyk7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlUHJvcExpc3QgPSBpbnB1dDtcbiAgICB9XG59XG5cbi8qKlxuICogQWdncmVnYXRlQ29sdW1uIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtdHJlZWdyaWQ+ZS1hZ2dyZWdhdGVzPmUtYWdncmVnYXRlPmUtY29sdW1ucycsXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZHJlbjogbmV3IENvbnRlbnRDaGlsZHJlbihBZ2dyZWdhdGVDb2x1bW5EaXJlY3RpdmUpXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQWdncmVnYXRlQ29sdW1uc0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxBZ2dyZWdhdGVDb2x1bW5zRGlyZWN0aXZlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdjb2x1bW5zJyk7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,69 @@
1
+ import { Directive, ContentChildren, ContentChild } from '@angular/core';
2
+ import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
3
+ import { AggregateColumnsDirective } from './aggregate-columns.directive';
4
+ import * as i0 from "@angular/core";
5
+ let input = ['columns', 'showChildSummary'];
6
+ let outputs = [];
7
+ /**
8
+ * `e-aggregate` directive represent a aggregate row of the Angular TreeGrid.
9
+ * It must be contained in a TreeGrid component(`ejs-treegrid`).
10
+ * ```html
11
+ * <ejs-treegrid [dataSource]='data' allowPaging='true' allowSorting='true'>
12
+ * <e-columns>
13
+ * <e-column field='ID' width='100'></e-column>
14
+ * <e-column field='name' headerText='Name' width='100'></e-column>
15
+ * </e-columns>
16
+ * <e-aggregates>
17
+ * <e-aggregate>
18
+ * <e-columns>
19
+ * <e-column field='ID' type='Min'></e-column>
20
+ * </e-columns>
21
+ * </e-aggregate>
22
+ * </e-aggregates>
23
+ * </ejs-treegrid>
24
+ * ```
25
+ */
26
+ export class AggregateDirective extends ComplexBase {
27
+ constructor(viewContainerRef) {
28
+ super();
29
+ this.viewContainerRef = viewContainerRef;
30
+ this.tags = ['columns'];
31
+ setValue('currentInstance', this, this.viewContainerRef);
32
+ this.registerEvents(outputs);
33
+ this.directivePropList = input;
34
+ }
35
+ }
36
+ AggregateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregateDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
37
+ AggregateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AggregateDirective, selector: "ejs-treegrid>e-aggregates>e-aggregate", inputs: { columns: "columns", showChildSummary: "showChildSummary" }, queries: [{ propertyName: "childColumns", first: true, predicate: AggregateColumnsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregateDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: 'ejs-treegrid>e-aggregates>e-aggregate',
42
+ inputs: input,
43
+ outputs: outputs,
44
+ queries: {
45
+ childColumns: new ContentChild(AggregateColumnsDirective)
46
+ }
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
49
+ /**
50
+ * Aggregate Array Directive
51
+ * @private
52
+ */
53
+ export class AggregatesDirective extends ArrayBase {
54
+ constructor() {
55
+ super('aggregates');
56
+ }
57
+ }
58
+ AggregatesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregatesDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
59
+ AggregatesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AggregatesDirective, selector: "ejs-treegrid>e-aggregates", queries: [{ propertyName: "children", predicate: AggregateDirective }], usesInheritance: true, ngImport: i0 });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AggregatesDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: 'ejs-treegrid>e-aggregates',
64
+ queries: {
65
+ children: new ContentChildren(AggregateDirective)
66
+ },
67
+ }]
68
+ }], ctorParameters: function () { return []; } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJlZWdyaWQvYWdncmVnYXRlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFMUUsSUFBSSxLQUFLLEdBQWEsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUN0RCxJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQVNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUErQjtJQWVuRSxZQUFvQixnQkFBaUM7UUFDakQsS0FBSyxFQUFFLENBQUM7UUFEUSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBWDlDLFNBQUksR0FBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBYWhDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OytHQXBCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2TEFIUSx5QkFBeUI7MkZBR25ELGtCQUFrQjtrQkFSOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLFlBQVksRUFBRSxJQUFJLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQztxQkFDNUQ7aUJBQ0o7O0FBd0JEOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUE4QjtJQUNuRTtRQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDOztnSEFIUSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwwRkFITSxrQkFBa0I7MkZBRzNDLG1CQUFtQjtrQkFOL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLGtCQUFrQixDQUFDO3FCQUNwRDtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgQ29udGVudENoaWxkcmVuLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBsZXhCYXNlLCBBcnJheUJhc2UsIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5cbmltcG9ydCB7IEFnZ3JlZ2F0ZUNvbHVtbnNEaXJlY3RpdmUgfSBmcm9tICcuL2FnZ3JlZ2F0ZS1jb2x1bW5zLmRpcmVjdGl2ZSc7XG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2NvbHVtbnMnLCAnc2hvd0NoaWxkU3VtbWFyeSddO1xubGV0IG91dHB1dHM6IHN0cmluZ1tdID0gW107XG4vKipcbiAqIGBlLWFnZ3JlZ2F0ZWAgZGlyZWN0aXZlIHJlcHJlc2VudCBhIGFnZ3JlZ2F0ZSByb3cgb2YgdGhlIEFuZ3VsYXIgVHJlZUdyaWQuIFxuICogSXQgbXVzdCBiZSBjb250YWluZWQgaW4gYSBUcmVlR3JpZCBjb21wb25lbnQoYGVqcy10cmVlZ3JpZGApLiBcbiAqIGBgYGh0bWxcbiAqIDxlanMtdHJlZWdyaWQgW2RhdGFTb3VyY2VdPSdkYXRhJyBhbGxvd1BhZ2luZz0ndHJ1ZScgYWxsb3dTb3J0aW5nPSd0cnVlJz4gXG4gKiAgIDxlLWNvbHVtbnM+XG4gKiAgICAgPGUtY29sdW1uIGZpZWxkPSdJRCcgd2lkdGg9JzEwMCc+PC9lLWNvbHVtbj5cbiAqICAgICA8ZS1jb2x1bW4gZmllbGQ9J25hbWUnIGhlYWRlclRleHQ9J05hbWUnIHdpZHRoPScxMDAnPjwvZS1jb2x1bW4+XG4gKiAgIDwvZS1jb2x1bW5zPlxuICogICA8ZS1hZ2dyZWdhdGVzPlxuICogICAgIDxlLWFnZ3JlZ2F0ZT5cbiAqICAgICAgIDxlLWNvbHVtbnM+XG4gKiAgICAgICAgIDxlLWNvbHVtbiBmaWVsZD0nSUQnIHR5cGU9J01pbic+PC9lLWNvbHVtbj5cbiAqICAgICAgIDwvZS1jb2x1bW5zPlxuICogICAgICA8L2UtYWdncmVnYXRlPlxuICogICAgPC9lLWFnZ3JlZ2F0ZXM+XG4gKiA8L2Vqcy10cmVlZ3JpZD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy10cmVlZ3JpZD5lLWFnZ3JlZ2F0ZXM+ZS1hZ2dyZWdhdGUnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZENvbHVtbnM6IG5ldyBDb250ZW50Q2hpbGQoQWdncmVnYXRlQ29sdW1uc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFnZ3JlZ2F0ZURpcmVjdGl2ZSBleHRlbmRzIENvbXBsZXhCYXNlPEFnZ3JlZ2F0ZURpcmVjdGl2ZT4ge1xuICAgIHB1YmxpYyBkaXJlY3RpdmVQcm9wTGlzdDogYW55O1xuXHRcbiAgICBwdWJsaWMgY2hpbGRDb2x1bW5zOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydjb2x1bW5zJ107XG4gICAgLyoqIFxuICAgICAqIENvbmZpZ3VyZXMgdGhlIGNvbGxlY3Rpb24gb2YgYWdncmVnYXRlIGNvbHVtbnMuXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBwdWJsaWMgY29sdW1uczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBjaGlsZCBzdW1tYXJpZXMgZm9yIGVhY2ggcGFyZW50IHJvdy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0NoaWxkU3VtbWFyeTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOlZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMob3V0cHV0cyk7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlUHJvcExpc3QgPSBpbnB1dDtcbiAgICB9XG59XG5cbi8qKlxuICogQWdncmVnYXRlIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtdHJlZWdyaWQ+ZS1hZ2dyZWdhdGVzJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKEFnZ3JlZ2F0ZURpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBZ2dyZWdhdGVzRGlyZWN0aXZlIGV4dGVuZHMgQXJyYXlCYXNlPEFnZ3JlZ2F0ZXNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2FnZ3JlZ2F0ZXMnKTtcbiAgICB9XG59Il19
@@ -0,0 +1,100 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, ContentChildren, ContentChild } from '@angular/core';
3
+ import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
4
+ import { Template } from '@syncfusion/ej2-angular-base';
5
+ import { StackedColumnsDirective } from './stacked-column.directive';
6
+ import * as i0 from "@angular/core";
7
+ let input = ['allowEditing', 'allowFiltering', 'allowReordering', 'allowResizing', 'allowSorting', 'clipMode', 'columns', 'commands', 'customAttributes', 'defaultValue', 'disableHtmlEncode', 'displayAsCheckBox', 'edit', 'editTemplate', 'editType', 'field', 'filter', 'filterBarTemplate', 'filterTemplate', 'format', 'formatter', 'freeze', 'headerTemplate', 'headerText', 'headerTextAlign', 'hideAtMedia', 'isFrozen', 'isIdentity', 'isPrimaryKey', 'lockColumn', 'maxWidth', 'minWidth', 'showCheckbox', 'showColumnMenu', 'showInColumnChooser', 'sortComparer', 'template', 'textAlign', 'type', 'uid', 'validationRules', 'valueAccessor', 'visible', 'width'];
8
+ let outputs = [];
9
+ /**
10
+ * `e-column` directive represent a column of the Angular TreeGrid.
11
+ * It must be contained in a TreeGrid component(`ejs-treegrid`).
12
+ * ```html
13
+ * <ejs-treegrid [dataSource]='data' allowPaging='true' allowSorting='true'>
14
+ * <e-columns>
15
+ * <e-column field='ID' width='100'></e-column>
16
+ * <e-column field='name' headerText='Name' width='100'></e-column>
17
+ * </e-columns>
18
+ * </ejs-treegrid>
19
+ * ```
20
+ */
21
+ export class ColumnDirective extends ComplexBase {
22
+ constructor(viewContainerRef) {
23
+ super();
24
+ this.viewContainerRef = viewContainerRef;
25
+ this.tags = ['columns'];
26
+ setValue('currentInstance', this, this.viewContainerRef);
27
+ this.registerEvents(outputs);
28
+ this.directivePropList = input;
29
+ }
30
+ }
31
+ ColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ColumnDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
32
+ ColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ColumnDirective, selector: "ejs-treegrid>e-columns>e-column", inputs: { allowEditing: "allowEditing", allowFiltering: "allowFiltering", allowReordering: "allowReordering", allowResizing: "allowResizing", allowSorting: "allowSorting", clipMode: "clipMode", columns: "columns", commands: "commands", customAttributes: "customAttributes", defaultValue: "defaultValue", disableHtmlEncode: "disableHtmlEncode", displayAsCheckBox: "displayAsCheckBox", edit: "edit", editTemplate: "editTemplate", editType: "editType", field: "field", filter: "filter", filterBarTemplate: "filterBarTemplate", filterTemplate: "filterTemplate", format: "format", formatter: "formatter", freeze: "freeze", headerTemplate: "headerTemplate", headerText: "headerText", headerTextAlign: "headerTextAlign", hideAtMedia: "hideAtMedia", isFrozen: "isFrozen", isIdentity: "isIdentity", isPrimaryKey: "isPrimaryKey", lockColumn: "lockColumn", maxWidth: "maxWidth", minWidth: "minWidth", showCheckbox: "showCheckbox", showColumnMenu: "showColumnMenu", showInColumnChooser: "showInColumnChooser", sortComparer: "sortComparer", template: "template", textAlign: "textAlign", type: "type", uid: "uid", validationRules: "validationRules", valueAccessor: "valueAccessor", visible: "visible", width: "width" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "commandsTemplate", first: true, predicate: ["commandsTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "childColumns", first: true, predicate: StackedColumnsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
33
+ __decorate([
34
+ Template()
35
+ ], ColumnDirective.prototype, "template", void 0);
36
+ __decorate([
37
+ Template()
38
+ ], ColumnDirective.prototype, "headerTemplate", void 0);
39
+ __decorate([
40
+ Template()
41
+ ], ColumnDirective.prototype, "filter_itemTemplate", void 0);
42
+ __decorate([
43
+ Template()
44
+ ], ColumnDirective.prototype, "filterTemplate", void 0);
45
+ __decorate([
46
+ Template()
47
+ ], ColumnDirective.prototype, "commandsTemplate", void 0);
48
+ __decorate([
49
+ Template()
50
+ ], ColumnDirective.prototype, "editTemplate", void 0);
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ColumnDirective, decorators: [{
52
+ type: Directive,
53
+ args: [{
54
+ selector: 'ejs-treegrid>e-columns>e-column',
55
+ inputs: input,
56
+ outputs: outputs,
57
+ queries: {
58
+ childColumns: new ContentChild(StackedColumnsDirective)
59
+ }
60
+ }]
61
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
62
+ type: ContentChild,
63
+ args: ['template']
64
+ }], headerTemplate: [{
65
+ type: ContentChild,
66
+ args: ['headerTemplate']
67
+ }], filter_itemTemplate: [{
68
+ type: ContentChild,
69
+ args: ['filterItemTemplate']
70
+ }], filterTemplate: [{
71
+ type: ContentChild,
72
+ args: ['filterTemplate']
73
+ }], commandsTemplate: [{
74
+ type: ContentChild,
75
+ args: ['commandsTemplate']
76
+ }], editTemplate: [{
77
+ type: ContentChild,
78
+ args: ['editTemplate']
79
+ }] } });
80
+ /**
81
+ * Column Array Directive
82
+ * @private
83
+ */
84
+ export class ColumnsDirective extends ArrayBase {
85
+ constructor() {
86
+ super('columns');
87
+ }
88
+ }
89
+ ColumnsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ColumnsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
90
+ ColumnsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ColumnsDirective, selector: "ejs-treegrid>e-columns", queries: [{ propertyName: "children", predicate: ColumnDirective }], usesInheritance: true, ngImport: i0 });
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ColumnsDirective, decorators: [{
92
+ type: Directive,
93
+ args: [{
94
+ selector: 'ejs-treegrid>e-columns',
95
+ queries: {
96
+ children: new ContentChildren(ColumnDirective)
97
+ },
98
+ }]
99
+ }], ctorParameters: function () { return []; } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJlZWdyaWQvY29sdW1ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVyRSxJQUFJLEtBQUssR0FBYSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4cEIsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzNCOzs7Ozs7Ozs7OztHQVdHO0FBU0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBNEI7SUF5VDdELFlBQW9CLGdCQUFpQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFyVDlDLFNBQUksR0FBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBdVRoQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOzs0R0E5VFEsZUFBZTtnR0FBZixlQUFlLHMzREFIVyx1QkFBdUI7QUE4UjFEO0lBREMsUUFBUSxFQUFFO2lEQUNVO0FBUXJCO0lBREMsUUFBUSxFQUFFO3VEQUNnQjtBQUczQjtJQURDLFFBQVEsRUFBRTs0REFDcUI7QUFPaEM7SUFEQyxRQUFRLEVBQUU7dURBQ2dCO0FBRzNCO0lBREMsUUFBUSxFQUFFO3lEQUNrQjtBQU83QjtJQURDLFFBQVEsRUFBRTtxREFDYzsyRkF2VGhCLGVBQWU7a0JBUjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRTt3QkFDTCxZQUFZLEVBQUUsSUFBSSxZQUFZLENBQUMsdUJBQXVCLENBQUM7cUJBQzFEO2lCQUNKO3VHQTRSVSxRQUFRO3NCQUZkLFlBQVk7dUJBQUMsVUFBVTtnQkFVakIsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBS3ZCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBUzNCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUt2QixnQkFBZ0I7c0JBRnRCLFlBQVk7dUJBQUMsa0JBQWtCO2dCQVN6QixZQUFZO3NCQUZsQixZQUFZO3VCQUFDLGNBQWM7O0FBWWhDOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUEyQjtJQUM3RDtRQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDOzs2R0FIUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix1RkFIUyxlQUFlOzJGQUd4QyxnQkFBZ0I7a0JBTjVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsT0FBTyxFQUFFO3dCQUNMLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUM7cUJBQ2pEO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmLCBDb250ZW50Q2hpbGRyZW4sIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcGxleEJhc2UsIEFycmF5QmFzZSwgc2V0VmFsdWUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5pbXBvcnQgeyBTdGFja2VkQ29sdW1uc0RpcmVjdGl2ZSB9IGZyb20gJy4vc3RhY2tlZC1jb2x1bW4uZGlyZWN0aXZlJztcblxubGV0IGlucHV0OiBzdHJpbmdbXSA9IFsnYWxsb3dFZGl0aW5nJywgJ2FsbG93RmlsdGVyaW5nJywgJ2FsbG93UmVvcmRlcmluZycsICdhbGxvd1Jlc2l6aW5nJywgJ2FsbG93U29ydGluZycsICdjbGlwTW9kZScsICdjb2x1bW5zJywgJ2NvbW1hbmRzJywgJ2N1c3RvbUF0dHJpYnV0ZXMnLCAnZGVmYXVsdFZhbHVlJywgJ2Rpc2FibGVIdG1sRW5jb2RlJywgJ2Rpc3BsYXlBc0NoZWNrQm94JywgJ2VkaXQnLCAnZWRpdFRlbXBsYXRlJywgJ2VkaXRUeXBlJywgJ2ZpZWxkJywgJ2ZpbHRlcicsICdmaWx0ZXJCYXJUZW1wbGF0ZScsICdmaWx0ZXJUZW1wbGF0ZScsICdmb3JtYXQnLCAnZm9ybWF0dGVyJywgJ2ZyZWV6ZScsICdoZWFkZXJUZW1wbGF0ZScsICdoZWFkZXJUZXh0JywgJ2hlYWRlclRleHRBbGlnbicsICdoaWRlQXRNZWRpYScsICdpc0Zyb3plbicsICdpc0lkZW50aXR5JywgJ2lzUHJpbWFyeUtleScsICdsb2NrQ29sdW1uJywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3Nob3dDaGVja2JveCcsICdzaG93Q29sdW1uTWVudScsICdzaG93SW5Db2x1bW5DaG9vc2VyJywgJ3NvcnRDb21wYXJlcicsICd0ZW1wbGF0ZScsICd0ZXh0QWxpZ24nLCAndHlwZScsICd1aWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlQWNjZXNzb3InLCAndmlzaWJsZScsICd3aWR0aCddO1xubGV0IG91dHB1dHM6IHN0cmluZ1tdID0gW107XG4vKipcbiAqIGBlLWNvbHVtbmAgZGlyZWN0aXZlIHJlcHJlc2VudCBhIGNvbHVtbiBvZiB0aGUgQW5ndWxhciBUcmVlR3JpZC4gXG4gKiBJdCBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIFRyZWVHcmlkIGNvbXBvbmVudChgZWpzLXRyZWVncmlkYCkuIFxuICogYGBgaHRtbFxuICogPGVqcy10cmVlZ3JpZCBbZGF0YVNvdXJjZV09J2RhdGEnIGFsbG93UGFnaW5nPSd0cnVlJyBhbGxvd1NvcnRpbmc9J3RydWUnPiBcbiAqICAgPGUtY29sdW1ucz5cbiAqICAgIDxlLWNvbHVtbiBmaWVsZD0nSUQnIHdpZHRoPScxMDAnPjwvZS1jb2x1bW4+XG4gKiAgICA8ZS1jb2x1bW4gZmllbGQ9J25hbWUnIGhlYWRlclRleHQ9J05hbWUnIHdpZHRoPScxMDAnPjwvZS1jb2x1bW4+XG4gKiAgIDwvZS1jb2x1bW5zPlxuICogPC9lanMtdHJlZWdyaWQ+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtdHJlZWdyaWQ+ZS1jb2x1bW5zPmUtY29sdW1uJyxcbiAgICBpbnB1dHM6IGlucHV0LFxuICAgIG91dHB1dHM6IG91dHB1dHMsICAgIFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRDb2x1bW5zOiBuZXcgQ29udGVudENoaWxkKFN0YWNrZWRDb2x1bW5zRGlyZWN0aXZlKVxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uRGlyZWN0aXZlIGV4dGVuZHMgQ29tcGxleEJhc2U8Q29sdW1uRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuICAgIHB1YmxpYyBjaGlsZENvbHVtbnM6IGFueTtcbiAgICBwdWJsaWMgdGFnczogc3RyaW5nW10gPSBbJ2NvbHVtbnMnXTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgY29sdW1uLCB3aGljaCBtYXkgYmUgc3RyaW5nLCBudW1iZXIsIGRhdGUsIG9yIG90aGVyIHR5cGVzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIGVkaXRpbmcgaXMgcGVybWl0dGVkIGZvciB0aGUgY29sdW1uLiBCeSBkZWZhdWx0LCBhbGwgY29sdW1ucyBhcmUgZWRpdGFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0VkaXRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgY29sdW1uIHN1cHBvcnRzIGZpbHRlcmluZy4gSWYgc2V0IHRvIGZhbHNlLCB1c2VycyBjYW5ub3QgZmlsdGVyIGRhdGEgYnkgdGhpcyBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0ZpbHRlcmluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSByZW9yZGVyaW5nIG9mIHRoaXMgY29sdW1uIHZpYSBkcmFnLWFuZC1kcm9wLiBBbGxvd3MgZm9yIGR5bmFtaWMgY29sdW1uIGFkanVzdG1lbnRzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dSZW9yZGVyaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERldGVybWluZXMgaWYgdGhpcyBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQuIElmIGZhbHNlLCB0aGUgY29sdW1uIHNpemUgaXMgZml4ZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd1Jlc2l6aW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB3aGV0aGVyIHNvcnRpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb2x1bW4uIFNldCB0byBmYWxzZSB0byBwcmV2ZW50IHNvcnQgYWN0aW9ucy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93U29ydGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZXRlcm1pbmVzIGhvdyBvdmVyZmxvdyBjb250ZW50IGlzIGhhbmRsZWQgd2l0aGluIGEgY2VsbC4gT3B0aW9ucyBpbmNsdWRlOiBcbiAgICAgKiAqIGBDbGlwYDogVHJ1bmNhdGVzIHRoZSBjb250ZW50LiBcbiAgICAgKiAqIGBFbGxpcHNpc2A6IFNob3dzIGVsbGlwc2lzIGZvciBvdmVyZmxvdy4gXG4gICAgICogKiBgRWxsaXBzaXNXaXRoVG9vbHRpcGA6IFNob3dzIGVsbGlwc2lzIGFuZCB0b29sdGlwIG9uIGhvdmVyLlxuICAgICAqIEBkZWZhdWx0IFN5bmNmdXNpb24uRUoyLkdyaWRzLkNsaXBNb2RlLkVsbGlwc2lzXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqIEBhc3B0eXBlIFN5bmNmdXNpb24uRUoyLkdyaWRzLkNsaXBNb2RlXG4gICAgICovXG4gICAgcHVibGljIGNsaXBNb2RlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsbG93cyBmb3IgdGhlIGNyZWF0aW9uIG9mIHN0YWNrZWQgaGVhZGVycyBieSB1c2luZyBtdWx0aXBsZSByb3dzIGluIHRoZSBncmlkJ3MgaGVhZGVyLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY29sdW1uczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBQcm92aWRlcyBidWlsdC1pbiBjb21tYW5kIGJ1dHRvbiBvcHRpb25zIGZvciBjZWxscy4gT3B0aW9ucyBpbmNsdWRlIEVkaXQsIERlbGV0ZSwgU2F2ZSwgYW5kIENhbmNlbC4gXG4gICAgICogQ3VzdG9tIGNvbW1hbmQgYnV0dG9uIGltcGxlbWVudGF0aW9ucyBhcmUgcG9zc2libGUuXG4gICAgICogXG4gICAgICogVGhlIGZvbGxvd2luZyBjb2RlIGV4YW1wbGUgaW1wbGVtZW50cyB0aGUgY3VzdG9tIGNvbW1hbmQgY29sdW1uLlxuICAgICAqYGBgaHRtbFxuICAgICAqPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiIGNsYXNzPVwiY3NzU3R5bGVzXCI+XG4gICAgICouZGV0YWlscy1pY29uOmJlZm9yZVxuICAgICAqe1xuICAgICAqICAgY29udGVudDpcIlxcZTc0ZFwiO1xuICAgICAqfVxuICAgICAqPC9zdHlsZT5cbiAgICAgKjxkaXYgaWQ9XCJUcmVlR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICp2YXIgZ3JpZE9iaiA9IG5ldyBUcmVlR3JpZCh7XG4gICAgICpkYXRhc291cmNlOiB3aW5kb3cuZ3JpZERhdGEsXG4gICAgICpjb2x1bW5zIDogW1xuICAgICAqIHsgZmllbGQ6ICdDdXN0b21lcklEJywgaGVhZGVyVGV4dDogJ0N1c3RvbWVyIElEJyB9LFxuICAgICAqIHsgZmllbGQ6ICdDdXN0b21lck5hbWUnLCBoZWFkZXJUZXh0OiAnQ3VzdG9tZXIgTmFtZScgfSxcbiAgICAgKiB7Y29tbWFuZHM6IFt7YnV0dG9uT3B0aW9uOntjb250ZW50OiAnRGV0YWlscycsIGNsaWNrOiBvbkNsaWNrLCBjc3NDbGFzczogZGV0YWlscy1pY29ufX1dLCBoZWFkZXJUZXh0OiAnQ3VzdG9tZXIgRGV0YWlscyd9XG4gICAgICpdXG4gICAgICpncmlkT2JqLmFwcGVuZFRvKFwiI1RyZWVHcmlkXCIpO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tbWFuZHM6IGFueTtcbiAgICAvKiogXG4gICAgICogRW5hYmxlcyB0aGUgYWRkaXRpb24gb2YgQ1NTIHN0eWxlcyBhbmQgYXR0cmlidXRlcyBmb3IgdGhlIGNvbnRlbnQgY2VsbHMgaW4gYSBwYXJ0aWN1bGFyIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU2V0cyBkZWZhdWx0IHZhbHVlcyB3aGVuIG5ldyByZWNvcmRzIGFyZSBhZGRlZCB0byB0aGUgVHJlZUdyaWQgaW52b2x2aW5nIHRoaXMgY29sdW1uLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBIVE1MIGNvbnRlbnQgd2l0aGluIGhlYWRlciBhbmQgY29udGVudCBjZWxscyBpcyBlbmNvZGVkIHRvIHByZXZlbnQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNhYmxlSHRtbEVuY29kZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEaXNwbGF5cyB0aGUgY29sdW1uIHZhbHVlIGFzIGEgY2hlY2tib3ggaW5zdGVhZCBvZiBhIEJvb2xlYW4gdmFsdWUgd2hlbiBzZXQgdG8gYHRydWVgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlBc0NoZWNrQm94OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsbG93cyBjdXN0b21pemluZyB0aGUgZGVmYXVsdCBlZGl0IGNlbGwgdGhyb3VnaCB0aGUgYElFZGl0Q2VsbGAgb2JqZWN0IGZvciBtb3JlIGNvbnRyb2wgb3ZlciBlZGl0aW5nLlxuICAgICAqIEBkZWZhdWx0IHt9XG4gICAgICovXG4gICAgcHVibGljIGVkaXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb21wb25lbnQgdHlwZSB1c2VkIGZvciBlZGl0aW5nIGNlbGxzIHdpdGhpbiB0aGlzIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCAnc3RyaW5nZWRpdCdcbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIGluIHRoZSBkYXRhIHNvdXJjZSB0byB3aGljaCB0aGUgY29sdW1uIGlzIGJvdW5kLiBUaGlzIGZpZWxkIGlzIHVzZWQgZm9yIG9wZXJhdGlvbnMgbGlrZSBzb3J0aW5nIGFuZCBmaWx0ZXJpbmcuIFxuICAgICAqIFRoZSBmaWVsZCBuYW1lIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGlkZW50aWZpZXIsIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBhdm9pZGluZyBzcGFjZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycy5cbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBmaWVsZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBDdXN0b21pemVzIGZpbHRlciBvcHRpb25zIGZvciB0aGUgY29sdW1uLCBlbmFibGluZyBzcGVjaWFsaXplZCBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBBbGxvd3MgZm9yIGEgY3VzdG9tIGNvbXBvbmVudCB3aXRoaW4gdGhlIGZpbHRlciBiYXIsIGZhY2lsaXRhdGluZyBhZHZhbmNlZCBmaWx0ZXIgaW50ZXJmYWNlcy4gXG4gICAgICogSW5jbHVkZXMgY3JlYXRlIGFuZCByZWFkIGZ1bmN0aW9ucyBmb3IgY3VzdG9tIGNvbXBvbmVudCBtYW5hZ2VtZW50LlxuICAgICAqIFxuICAgICAqIGBgYGh0bWxcbiAgICAgKjxkaXYgaWQ9XCJUcmVlR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgZ3JpZE9iajogVHJlZUdyaWQgPSBuZXcgVHJlZUdyaWQoe1xuICAgICAqZGF0YVNvdXJjZTogZmlsdGVyRGF0YSxcbiAgICAgKmNvbHVtbnM6IFtcbiAgICAgKiAgeyBmaWVsZDogJ09yZGVySUQnLCBoZWFkZXJUZXh0OiAnT3JkZXIgSUQnIH0sXG4gICAgICogIHtcbiAgICAgKiAgICAgZmllbGQ6ICdFbXBsb3llZUlEJywgZmlsdGVyQmFyVGVtcGxhdGU6IHtcbiAgICAgKiAgICAgICAgY3JlYXRlOiAoYXJnczogeyBlbGVtZW50OiBFbGVtZW50LCBjb2x1bW46IENvbHVtbiB9KSA9PiB7XG4gICAgICogICAgICAgICAgICAgbGV0IGlucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgKiAgICAgICAgICAgICBpbnB1dC5pZCA9ICdFbXBsb3llZUlEJztcbiAgICAgKiAgICAgICAgICAgICBpbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAqICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgKiAgICAgICAgfSxcbiAgICAgKiAgICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnQ6IEVsZW1lbnQsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGFyZ3MuY29sdW1uLmZpbHRlckJhclRlbXBsYXRlLnJlYWQgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgICogICAgICAgIH0sXG4gICAgICogICAgICAgIHJlYWQ6IChhcmdzOiB7IGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQsIGNvbHVtbkluZGV4OiBudW1iZXIsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgIGdyaWRPYmouZmlsdGVyQnlDb2x1bW4oYXJncy5lbGVtZW50LmlkLCAnZXF1YWwnLCBhcmdzLmVsZW1lbnQudmFsdWUpO1xuICAgICAqICAgICAgIH1cbiAgICAgKiAgICB9XG4gICAgICp9XSxcbiAgICAgKiAgYWxsb3dGaWx0ZXJpbmc6IHRydWVcbiAgICAgKn0pO1xuICAgICAqZ3JpZE9iai5hcHBlbmRUbygnI1RyZWVHcmlkJyk7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWx0ZXJCYXJUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBGb3JtYXRzIHRoZSBkaXNwbGF5ZWQgdmFsdWUgb2YgdGhlIGNvbHVtbiB3aXRob3V0IGFmZmVjdGluZyB0aGUgdW5kZXJseWluZyBkYXRhLiBTdXBwb3J0cyBzdGFuZGFyZCBhbmQgY3VzdG9tIGZvcm1hdHMgZm9yIG51bWJlcnMgYW5kIGRhdGVzLlxuICAgICAqIFxuICAgICAqIFJlZmVyZW5jZXMgZm9yIFtudW1iZXJdKGh0dHBzOi8vZWoyLnN5bmNmdXNpb24uY29tL2RvY3VtZW50YXRpb24vY29tbW9uL2ludGVybmF0aW9uYWxpemF0aW9uLyNzdXBwb3J0ZWQtZm9ybWF0LXN0cmluZylcbiAgICAgKmFuZCBbZGF0ZV0oaHR0cHM6Ly9lajIuc3luY2Z1c2lvbi5jb20vZG9jdW1lbnRhdGlvbi9jb21tb24vaW50ZXJuYXRpb25hbGl6YXRpb24jZGF0ZS1mb3JtYXR0aW5nKSBmb3JtYXRzLiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogQWxsb3dzIGZvciBjdXN0b20gY2VsbCBjb250ZW50IGZvcm1hdHRpbmcgdXNpbmcgYW4gZXh0ZXJuYWwgbWV0aG9kLCBleGVjdXRlZCBwcmlvciB0byByZW5kZXJpbmcuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB3aGljaCBzaWRlIChsZWZ0LCByaWdodCwgb3IgY2VudGVyKSB0aGUgY29sdW1uIHNob3VsZCBiZSBmcm96ZW4gb24uXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuRnJlZXplRGlyZWN0aW9uLk5vbmVcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuRnJlZXplRGlyZWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIGZyZWV6ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHRleHQgZGlzcGxheWVkIGluIHRoZSBjb2x1bW4gaGVhZGVyLiBJZiBvbWl0dGVkLCB0aGUgYGZpZWxkYCB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBoZWFkZXIgdGV4dC5cbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsaWducyB0aGUgdGV4dCBpbiB0aGUgY29sdW1uIGhlYWRlci4gQnkgZGVmYXVsdCwgdGhlIGFsaWdubWVudCBjb3JyZXNwb25kcyB0byBvdGhlciBjb250ZW50IGFsaWdubWVudHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqIEBhc3B0eXBlIFN5bmNmdXNpb24uRUoyLkdyaWRzLlRleHRBbGlnblxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0QWxpZ246IGFueTtcbiAgICAvKiogXG4gICAgICogQWRqdXN0cyBjb2x1bW4gdmlzaWJpbGl0eSBiYXNlZCBvbiBbTWVkaWEgUXVlcmllc10oaHR0cDovL2Nzc21lZGlhcXVlcmllcy5jb20vd2hhdC1hcmUtY3NzLW1lZGlhLXF1ZXJpZXMuaHRtbCkuIEFjY2VwdHMgdmFsaWQgQ1NTIG1lZGlhIHF1ZXJ5IHN0cmluZ3MgZm9yIHJlc3BvbnNpdmUgYWRqdXN0bWVudHMuXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZUF0TWVkaWE6IGFueTtcbiAgICAvKiogXG4gICAgICogQWxsb3dzIHRoZSBjb2x1bW4gdG8gYmUgZnJvemVuLCBrZWVwaW5nIGl0IHN0YXRpb25hcnkgd2hpbGUgc2Nyb2xsaW5nIGhvcml6b250YWxseSB0aHJvdWdoIHRoZSBncmlkLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzRnJvemVuOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElkZW50aWZpZXMgdGhlIGNvbHVtbiBhcyBhbiBpZGVudGl0eSBjb2x1bW4gaW4gZGF0YWJhc2UgdGVybXMsIGlmIHNldCB0byBgdHJ1ZWAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJZGVudGl0eTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZGVudGlmaWVzIHRoZSBjb2x1bW4gYXMgYSBwcmltYXJ5IGtleSBpZiBzZXQgdG8gYHRydWVgLCBlbmZvcmNpbmcgdW5pcXVlbmVzcy5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc1ByaW1hcnlLZXk6IGFueTtcbiAgICAvKiogXG4gICAgICogUHJldmVudHMgY29sdW1uIHJlb3JkZXJpbmcgd2hlbiBzZXQgdG8gdHJ1ZSwgbG9ja2luZyB0aGUgY29sdW1uIGludG8gYSBzZXQgcG9zaXRpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9ja0NvbHVtbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93YWJsZSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVscyBvciBhcyBhIHBlcmNlbnRhZ2UsIHByZXZlbnRpbmcgcmVzaXppbmcgYmV5b25kIHRoaXMgbGltaXQuXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgbWF4V2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgbWluaW11bSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVscyBvciBwZXJjZW50YWdlLiBUaGlzIGVuc3VyZXMgdGhlIGNvbHVtbiBkb2VzIG5vdCBzaHJpbmsgYmVsb3cgdGhpcyBzaXplLlxuICAgICAqIEBkZWZhdWx0ICd1bmRlZmluZWQnXG4gICAgICovXG4gICAgcHVibGljIG1pbldpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERpc3BsYXlzIGNoZWNrYm94ZXMgaW4gdGhlIGNvbHVtbiB3aGVuIGVuYWJsZWQsIGFsbG93aW5nIGZvciBzZWxlY3Rpb25zIGFuZCBjZXJ0YWluIG9wZXJhdGlvbnMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0NoZWNrYm94OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlY2lkZXMgaWYgdGhlIGNvbHVtbiBtZW51IHNob3VsZCBiZSBhdmFpbGFibGUsIHByb3ZpZGluZyBvcHRpb25zIGZvciBjb2x1bW4gY3VzdG9taXphdGlvbi5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dDb2x1bW5NZW51OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29sdW1uIHNob3VsZCBhcHBlYXIgaW4gdGhlIENvbHVtbiBDaG9vc2VyLiBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBpdC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dJbkNvbHVtbkNob29zZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogUHJvdmlkZXMgYSBjdXN0b20gc29ydCBjb21wYXJlciBwcm9wZXJ0eSB0byBjb250cm9sIGhvdyBzb3J0aW5nIGlzIGhhbmRsZWQgZm9yIHRoaXMgY29sdW1uJ3MgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBzb3J0Q29tcGFyZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBmb3IgdGhlIGNvbHVtbiBjb250ZW50IGFuZCBoZWFkZXIuIE9wdGlvbnMgaW5jbHVkZSBhbGlnbm1lbnQgdG8gdGhlIGxlZnQsIGNlbnRlciwgb3IgcmlnaHQuXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduLkxlZnRcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduXG4gICAgICovXG4gICAgcHVibGljIHRleHRBbGlnbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLiBUaGlzIFVJRCBpcyB1c2VkIGludGVybmFsbHkgdG8gcmVmZXJlbmNlIGFuZCBtYW5pcHVsYXRlIHRoZSBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgdWlkOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEVzdGFibGlzaGVzIHZhbGlkYXRpb24gcnVsZXMgdG8gZW5zdXJlIGRhdGEgaW50ZWdyaXR5IGR1cmluZyBjcmVhdGlvbiBhbmQgdXBkYXRlcy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRpb25SdWxlczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBBcHBsaWVzIGN1c3RvbSBjZWxsIHZhbHVlcyB1c2luZyBhbiBleHRlcm5hbCBmdW5jdGlvbiwgYWxsb3dpbmcgZm9yIGR5bmFtaWMgZGlzcGxheSBhZGp1c3RtZW50cy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHZhbHVlQWNjZXNzb3I6IGFueTtcbiAgICAvKiogXG4gICAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY29sdW1uLiBTZXQgdG8gZmFsc2UgdG8gaGlkZSB0aGUgY29sdW1uIGZyb20gdmlldy4gQ29sdW1ucyBhcmUgdmlzaWJsZSBieSBkZWZhdWx0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTZXRzIHRoZSBjb2x1bW4ncyB3aWR0aCBpbiBwaXhlbHMgb3IgYXMgYSBwZXJjZW50YWdlLiBUaGlzIGRlZmluZXMgaG93IHRoZSBjb2x1bW4gd2lsbCBvY2N1cHkgc3BhY2UgaW4gdGhlIGdyaWQuXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgd2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogQ3VzdG9taXplcyB0aGUgcmVuZGVyaW5nIG9mIGNlbGwgY29udGVudCB1c2luZyBlaXRoZXIgYSB0ZW1wbGF0ZSBzdHJpbmcgb3IgSFRNTCBlbGVtZW50IElELlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCd0ZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogQ3VzdG9taXplcyB0aGUgaGVhZGVyIGNvbnRlbnQgd2l0aCBhIHRlbXBsYXRlLCBkZWZpbmVkIGFzIGEgc3RyaW5nIG9yIGFuIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVySXRlbVRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBmaWx0ZXJfaXRlbVRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyBhIGN1c3RvbSB0ZW1wbGF0ZSBvciBVSSBmb3IgZmlsdGVyaW5nIHdpdGhpbiB0aGlzIGNvbHVtbiwgdXRpbGl6aW5nIGVpdGhlciBzdHJpbmcgdGVtcGxhdGVzIG9yIEhUTUwgZWxlbWVudCBJRHMuXG4gICAgICogQGFzcGlnbm9yZSBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZmlsdGVyVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdjb21tYW5kc1RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBjb21tYW5kc1RlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFByb3ZpZGVzIGEgdGVtcGxhdGUgZm9yIGVkaXRpbmcgY2VsbHMgaW4gdGhpcyBjb2x1bW4sIHN1cHBvcnRpbmcgZWl0aGVyIGEgdGVtcGxhdGUgc3RyaW5nIG9yIGFuIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKiBAYXNwaWdub3JlIFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VkaXRUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZWRpdFRlbXBsYXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVQcm9wTGlzdCA9IGlucHV0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBDb2x1bW4gQXJyYXkgRGlyZWN0aXZlXG4gKiBAcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy10cmVlZ3JpZD5lLWNvbHVtbnMnLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRyZW46IG5ldyBDb250ZW50Q2hpbGRyZW4oQ29sdW1uRGlyZWN0aXZlKVxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtbnNEaXJlY3RpdmUgZXh0ZW5kcyBBcnJheUJhc2U8Q29sdW1uc0RpcmVjdGl2ZT4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignY29sdW1ucycpO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,100 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, ContentChildren, ContentChild } from '@angular/core';
3
+ import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
4
+ import { Template } from '@syncfusion/ej2-angular-base';
5
+ import * as i0 from "@angular/core";
6
+ let input = ['allowEditing', 'allowFiltering', 'allowReordering', 'allowResizing', 'allowSorting', 'clipMode', 'columns', 'commands', 'customAttributes', 'defaultValue', 'disableHtmlEncode', 'displayAsCheckBox', 'edit', 'editTemplate', 'editType', 'field', 'filter', 'filterBarTemplate', 'filterTemplate', 'format', 'formatter', 'freeze', 'headerTemplate', 'headerText', 'headerTextAlign', 'hideAtMedia', 'isFrozen', 'isIdentity', 'isPrimaryKey', 'lockColumn', 'maxWidth', 'minWidth', 'showCheckbox', 'showColumnMenu', 'showInColumnChooser', 'sortComparer', 'template', 'textAlign', 'type', 'uid', 'validationRules', 'valueAccessor', 'visible', 'width'];
7
+ let outputs = [];
8
+ /**
9
+ * `e-stacked-column` directive represent the stacked column of the Angular TreeGrid.
10
+ * It must be contained in a StackedColumns component(`e-stacked-columns`).
11
+ * ```html
12
+ * <ejs-treegrid [dataSource]='data' allowPaging='true' allowSorting='true'>
13
+ * <e-columns>
14
+ * <e-column field='ID' width='100'></e-column>
15
+ * <e-column headerText='Details' width='100'>
16
+ * <e-stacked-columns>
17
+ * <e-stacked-column field='Name' width='140'></e-stacked-column>
18
+ * </e-stacked-columns>
19
+ * </e-column>
20
+ * </e-columns>
21
+ * </ejs-treegrid>
22
+ * ```
23
+ */
24
+ export class StackedColumnDirective extends ComplexBase {
25
+ constructor(viewContainerRef) {
26
+ super();
27
+ this.viewContainerRef = viewContainerRef;
28
+ setValue('currentInstance', this, this.viewContainerRef);
29
+ this.registerEvents(outputs);
30
+ this.directivePropList = input;
31
+ }
32
+ }
33
+ StackedColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackedColumnDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
34
+ StackedColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: StackedColumnDirective, selector: "ejs-treegrid>e-columns>e-column>e-stacked-columns>e-stacked-column", inputs: { allowEditing: "allowEditing", allowFiltering: "allowFiltering", allowReordering: "allowReordering", allowResizing: "allowResizing", allowSorting: "allowSorting", clipMode: "clipMode", columns: "columns", commands: "commands", customAttributes: "customAttributes", defaultValue: "defaultValue", disableHtmlEncode: "disableHtmlEncode", displayAsCheckBox: "displayAsCheckBox", edit: "edit", editTemplate: "editTemplate", editType: "editType", field: "field", filter: "filter", filterBarTemplate: "filterBarTemplate", filterTemplate: "filterTemplate", format: "format", formatter: "formatter", freeze: "freeze", headerTemplate: "headerTemplate", headerText: "headerText", headerTextAlign: "headerTextAlign", hideAtMedia: "hideAtMedia", isFrozen: "isFrozen", isIdentity: "isIdentity", isPrimaryKey: "isPrimaryKey", lockColumn: "lockColumn", maxWidth: "maxWidth", minWidth: "minWidth", showCheckbox: "showCheckbox", showColumnMenu: "showColumnMenu", showInColumnChooser: "showInColumnChooser", sortComparer: "sortComparer", template: "template", textAlign: "textAlign", type: "type", uid: "uid", validationRules: "validationRules", valueAccessor: "valueAccessor", visible: "visible", width: "width" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "commandsTemplate", first: true, predicate: ["commandsTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
35
+ __decorate([
36
+ Template()
37
+ ], StackedColumnDirective.prototype, "template", void 0);
38
+ __decorate([
39
+ Template()
40
+ ], StackedColumnDirective.prototype, "headerTemplate", void 0);
41
+ __decorate([
42
+ Template()
43
+ ], StackedColumnDirective.prototype, "filter_itemTemplate", void 0);
44
+ __decorate([
45
+ Template()
46
+ ], StackedColumnDirective.prototype, "filterTemplate", void 0);
47
+ __decorate([
48
+ Template()
49
+ ], StackedColumnDirective.prototype, "commandsTemplate", void 0);
50
+ __decorate([
51
+ Template()
52
+ ], StackedColumnDirective.prototype, "editTemplate", void 0);
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackedColumnDirective, decorators: [{
54
+ type: Directive,
55
+ args: [{
56
+ selector: 'ejs-treegrid>e-columns>e-column>e-stacked-columns>e-stacked-column',
57
+ inputs: input,
58
+ outputs: outputs,
59
+ queries: {}
60
+ }]
61
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
62
+ type: ContentChild,
63
+ args: ['template']
64
+ }], headerTemplate: [{
65
+ type: ContentChild,
66
+ args: ['headerTemplate']
67
+ }], filter_itemTemplate: [{
68
+ type: ContentChild,
69
+ args: ['filterItemTemplate']
70
+ }], filterTemplate: [{
71
+ type: ContentChild,
72
+ args: ['filterTemplate']
73
+ }], commandsTemplate: [{
74
+ type: ContentChild,
75
+ args: ['commandsTemplate']
76
+ }], editTemplate: [{
77
+ type: ContentChild,
78
+ args: ['editTemplate']
79
+ }] } });
80
+ /**
81
+ * StackedColumn Array Directive
82
+ * @private
83
+ */
84
+ export class StackedColumnsDirective extends ArrayBase {
85
+ constructor() {
86
+ super('columns');
87
+ }
88
+ }
89
+ StackedColumnsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackedColumnsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
90
+ StackedColumnsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: StackedColumnsDirective, selector: "ejs-treegrid>e-columns>e-column>e-stacked-columns", queries: [{ propertyName: "children", predicate: StackedColumnDirective }], usesInheritance: true, ngImport: i0 });
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StackedColumnsDirective, decorators: [{
92
+ type: Directive,
93
+ args: [{
94
+ selector: 'ejs-treegrid>e-columns>e-column>e-stacked-columns',
95
+ queries: {
96
+ children: new ContentChildren(StackedColumnDirective)
97
+ },
98
+ }]
99
+ }], ctorParameters: function () { return []; } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tlZC1jb2x1bW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWVncmlkL3N0YWNrZWQtY29sdW1uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR3hELElBQUksS0FBSyxHQUFhLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hwQixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBU0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQW1DO0lBeVQzRSxZQUFvQixnQkFBaUM7UUFDakQsS0FBSyxFQUFFLENBQUM7UUFEUSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBRWpELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7O21IQTlUUSxzQkFBc0I7dUdBQXRCLHNCQUFzQjtBQTJSL0I7SUFEQyxRQUFRLEVBQUU7d0RBQ1U7QUFRckI7SUFEQyxRQUFRLEVBQUU7OERBQ2dCO0FBRzNCO0lBREMsUUFBUSxFQUFFO21FQUNxQjtBQU9oQztJQURDLFFBQVEsRUFBRTs4REFDZ0I7QUFHM0I7SUFEQyxRQUFRLEVBQUU7Z0VBQ2tCO0FBTzdCO0lBREMsUUFBUSxFQUFFOzREQUNjOzJGQXZUaEIsc0JBQXNCO2tCQVJsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvRUFBb0U7b0JBQzlFLE1BQU0sRUFBRSxLQUFLO29CQUNiLE9BQU8sRUFBRSxPQUFPO29CQUNoQixPQUFPLEVBQUUsRUFFUjtpQkFDSjt1R0E0UlUsUUFBUTtzQkFGZCxZQUFZO3VCQUFDLFVBQVU7Z0JBVWpCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUt2QixtQkFBbUI7c0JBRnpCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQVMzQixjQUFjO3NCQUZwQixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLdkIsZ0JBQWdCO3NCQUZ0QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFTekIsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxjQUFjOztBQVloQzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsU0FBa0M7SUFDM0U7UUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckIsQ0FBQzs7b0hBSFEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsa0hBSEUsc0JBQXNCOzJGQUcvQyx1QkFBdUI7a0JBTm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1EQUFtRDtvQkFDN0QsT0FBTyxFQUFFO3dCQUNMLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQztxQkFDeEQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcblxuXG5sZXQgaW5wdXQ6IHN0cmluZ1tdID0gWydhbGxvd0VkaXRpbmcnLCAnYWxsb3dGaWx0ZXJpbmcnLCAnYWxsb3dSZW9yZGVyaW5nJywgJ2FsbG93UmVzaXppbmcnLCAnYWxsb3dTb3J0aW5nJywgJ2NsaXBNb2RlJywgJ2NvbHVtbnMnLCAnY29tbWFuZHMnLCAnY3VzdG9tQXR0cmlidXRlcycsICdkZWZhdWx0VmFsdWUnLCAnZGlzYWJsZUh0bWxFbmNvZGUnLCAnZGlzcGxheUFzQ2hlY2tCb3gnLCAnZWRpdCcsICdlZGl0VGVtcGxhdGUnLCAnZWRpdFR5cGUnLCAnZmllbGQnLCAnZmlsdGVyJywgJ2ZpbHRlckJhclRlbXBsYXRlJywgJ2ZpbHRlclRlbXBsYXRlJywgJ2Zvcm1hdCcsICdmb3JtYXR0ZXInLCAnZnJlZXplJywgJ2hlYWRlclRlbXBsYXRlJywgJ2hlYWRlclRleHQnLCAnaGVhZGVyVGV4dEFsaWduJywgJ2hpZGVBdE1lZGlhJywgJ2lzRnJvemVuJywgJ2lzSWRlbnRpdHknLCAnaXNQcmltYXJ5S2V5JywgJ2xvY2tDb2x1bW4nLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAnc2hvd0NoZWNrYm94JywgJ3Nob3dDb2x1bW5NZW51JywgJ3Nob3dJbkNvbHVtbkNob29zZXInLCAnc29ydENvbXBhcmVyJywgJ3RlbXBsYXRlJywgJ3RleHRBbGlnbicsICd0eXBlJywgJ3VpZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWVBY2Nlc3NvcicsICd2aXNpYmxlJywgJ3dpZHRoJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogYGUtc3RhY2tlZC1jb2x1bW5gIGRpcmVjdGl2ZSByZXByZXNlbnQgdGhlIHN0YWNrZWQgY29sdW1uIG9mIHRoZSBBbmd1bGFyIFRyZWVHcmlkLlxuICogSXQgbXVzdCBiZSBjb250YWluZWQgaW4gYSBTdGFja2VkQ29sdW1ucyBjb21wb25lbnQoYGUtc3RhY2tlZC1jb2x1bW5zYCkuIFxuICogYGBgaHRtbFxuICogPGVqcy10cmVlZ3JpZCBbZGF0YVNvdXJjZV09J2RhdGEnIGFsbG93UGFnaW5nPSd0cnVlJyBhbGxvd1NvcnRpbmc9J3RydWUnPiBcbiAqICAgPGUtY29sdW1ucz5cbiAqICAgICA8ZS1jb2x1bW4gZmllbGQ9J0lEJyB3aWR0aD0nMTAwJz48L2UtY29sdW1uPlxuICogICAgIDxlLWNvbHVtbiBoZWFkZXJUZXh0PSdEZXRhaWxzJyB3aWR0aD0nMTAwJz5cbiAqICAgICAgIDxlLXN0YWNrZWQtY29sdW1ucz5cbiAqICAgICAgICAgPGUtc3RhY2tlZC1jb2x1bW4gZmllbGQ9J05hbWUnIHdpZHRoPScxNDAnPjwvZS1zdGFja2VkLWNvbHVtbj5cbiAqICAgICAgIDwvZS1zdGFja2VkLWNvbHVtbnM+XG4gKiAgICAgPC9lLWNvbHVtbj5cbiAqICAgPC9lLWNvbHVtbnM+XG4gKiA8L2Vqcy10cmVlZ3JpZD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy10cmVlZ3JpZD5lLWNvbHVtbnM+ZS1jb2x1bW4+ZS1zdGFja2VkLWNvbHVtbnM+ZS1zdGFja2VkLWNvbHVtbicsXG4gICAgaW5wdXRzOiBpbnB1dCxcbiAgICBvdXRwdXRzOiBvdXRwdXRzLCAgICBcbiAgICBxdWVyaWVzOiB7XG5cbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFN0YWNrZWRDb2x1bW5EaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxTdGFja2VkQ29sdW1uRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuXG5cbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgY29sdW1uLCB3aGljaCBtYXkgYmUgc3RyaW5nLCBudW1iZXIsIGRhdGUsIG9yIG90aGVyIHR5cGVzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIGVkaXRpbmcgaXMgcGVybWl0dGVkIGZvciB0aGUgY29sdW1uLiBCeSBkZWZhdWx0LCBhbGwgY29sdW1ucyBhcmUgZWRpdGFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0VkaXRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgY29sdW1uIHN1cHBvcnRzIGZpbHRlcmluZy4gSWYgc2V0IHRvIGZhbHNlLCB1c2VycyBjYW5ub3QgZmlsdGVyIGRhdGEgYnkgdGhpcyBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0ZpbHRlcmluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSByZW9yZGVyaW5nIG9mIHRoaXMgY29sdW1uIHZpYSBkcmFnLWFuZC1kcm9wLiBBbGxvd3MgZm9yIGR5bmFtaWMgY29sdW1uIGFkanVzdG1lbnRzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dSZW9yZGVyaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERldGVybWluZXMgaWYgdGhpcyBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQuIElmIGZhbHNlLCB0aGUgY29sdW1uIHNpemUgaXMgZml4ZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd1Jlc2l6aW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB3aGV0aGVyIHNvcnRpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb2x1bW4uIFNldCB0byBmYWxzZSB0byBwcmV2ZW50IHNvcnQgYWN0aW9ucy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93U29ydGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZXRlcm1pbmVzIGhvdyBvdmVyZmxvdyBjb250ZW50IGlzIGhhbmRsZWQgd2l0aGluIGEgY2VsbC4gT3B0aW9ucyBpbmNsdWRlOiBcbiAgICAgKiAqIGBDbGlwYDogVHJ1bmNhdGVzIHRoZSBjb250ZW50LiBcbiAgICAgKiAqIGBFbGxpcHNpc2A6IFNob3dzIGVsbGlwc2lzIGZvciBvdmVyZmxvdy4gXG4gICAgICogKiBgRWxsaXBzaXNXaXRoVG9vbHRpcGA6IFNob3dzIGVsbGlwc2lzIGFuZCB0b29sdGlwIG9uIGhvdmVyLlxuICAgICAqIEBkZWZhdWx0IFN5bmNmdXNpb24uRUoyLkdyaWRzLkNsaXBNb2RlLkVsbGlwc2lzXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqIEBhc3B0eXBlIFN5bmNmdXNpb24uRUoyLkdyaWRzLkNsaXBNb2RlXG4gICAgICovXG4gICAgcHVibGljIGNsaXBNb2RlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsbG93cyBmb3IgdGhlIGNyZWF0aW9uIG9mIHN0YWNrZWQgaGVhZGVycyBieSB1c2luZyBtdWx0aXBsZSByb3dzIGluIHRoZSBncmlkJ3MgaGVhZGVyLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY29sdW1uczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBQcm92aWRlcyBidWlsdC1pbiBjb21tYW5kIGJ1dHRvbiBvcHRpb25zIGZvciBjZWxscy4gT3B0aW9ucyBpbmNsdWRlIEVkaXQsIERlbGV0ZSwgU2F2ZSwgYW5kIENhbmNlbC4gXG4gICAgICogQ3VzdG9tIGNvbW1hbmQgYnV0dG9uIGltcGxlbWVudGF0aW9ucyBhcmUgcG9zc2libGUuXG4gICAgICogXG4gICAgICogVGhlIGZvbGxvd2luZyBjb2RlIGV4YW1wbGUgaW1wbGVtZW50cyB0aGUgY3VzdG9tIGNvbW1hbmQgY29sdW1uLlxuICAgICAqYGBgaHRtbFxuICAgICAqPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiIGNsYXNzPVwiY3NzU3R5bGVzXCI+XG4gICAgICouZGV0YWlscy1pY29uOmJlZm9yZVxuICAgICAqe1xuICAgICAqICAgY29udGVudDpcIlxcZTc0ZFwiO1xuICAgICAqfVxuICAgICAqPC9zdHlsZT5cbiAgICAgKjxkaXYgaWQ9XCJUcmVlR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICp2YXIgZ3JpZE9iaiA9IG5ldyBUcmVlR3JpZCh7XG4gICAgICpkYXRhc291cmNlOiB3aW5kb3cuZ3JpZERhdGEsXG4gICAgICpjb2x1bW5zIDogW1xuICAgICAqIHsgZmllbGQ6ICdDdXN0b21lcklEJywgaGVhZGVyVGV4dDogJ0N1c3RvbWVyIElEJyB9LFxuICAgICAqIHsgZmllbGQ6ICdDdXN0b21lck5hbWUnLCBoZWFkZXJUZXh0OiAnQ3VzdG9tZXIgTmFtZScgfSxcbiAgICAgKiB7Y29tbWFuZHM6IFt7YnV0dG9uT3B0aW9uOntjb250ZW50OiAnRGV0YWlscycsIGNsaWNrOiBvbkNsaWNrLCBjc3NDbGFzczogZGV0YWlscy1pY29ufX1dLCBoZWFkZXJUZXh0OiAnQ3VzdG9tZXIgRGV0YWlscyd9XG4gICAgICpdXG4gICAgICpncmlkT2JqLmFwcGVuZFRvKFwiI1RyZWVHcmlkXCIpO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tbWFuZHM6IGFueTtcbiAgICAvKiogXG4gICAgICogRW5hYmxlcyB0aGUgYWRkaXRpb24gb2YgQ1NTIHN0eWxlcyBhbmQgYXR0cmlidXRlcyBmb3IgdGhlIGNvbnRlbnQgY2VsbHMgaW4gYSBwYXJ0aWN1bGFyIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU2V0cyBkZWZhdWx0IHZhbHVlcyB3aGVuIG5ldyByZWNvcmRzIGFyZSBhZGRlZCB0byB0aGUgVHJlZUdyaWQgaW52b2x2aW5nIHRoaXMgY29sdW1uLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBIVE1MIGNvbnRlbnQgd2l0aGluIGhlYWRlciBhbmQgY29udGVudCBjZWxscyBpcyBlbmNvZGVkIHRvIHByZXZlbnQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNhYmxlSHRtbEVuY29kZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEaXNwbGF5cyB0aGUgY29sdW1uIHZhbHVlIGFzIGEgY2hlY2tib3ggaW5zdGVhZCBvZiBhIEJvb2xlYW4gdmFsdWUgd2hlbiBzZXQgdG8gYHRydWVgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlBc0NoZWNrQm94OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsbG93cyBjdXN0b21pemluZyB0aGUgZGVmYXVsdCBlZGl0IGNlbGwgdGhyb3VnaCB0aGUgYElFZGl0Q2VsbGAgb2JqZWN0IGZvciBtb3JlIGNvbnRyb2wgb3ZlciBlZGl0aW5nLlxuICAgICAqIEBkZWZhdWx0IHt9XG4gICAgICovXG4gICAgcHVibGljIGVkaXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb21wb25lbnQgdHlwZSB1c2VkIGZvciBlZGl0aW5nIGNlbGxzIHdpdGhpbiB0aGlzIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCAnc3RyaW5nZWRpdCdcbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIGluIHRoZSBkYXRhIHNvdXJjZSB0byB3aGljaCB0aGUgY29sdW1uIGlzIGJvdW5kLiBUaGlzIGZpZWxkIGlzIHVzZWQgZm9yIG9wZXJhdGlvbnMgbGlrZSBzb3J0aW5nIGFuZCBmaWx0ZXJpbmcuIFxuICAgICAqIFRoZSBmaWVsZCBuYW1lIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGlkZW50aWZpZXIsIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBhdm9pZGluZyBzcGFjZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycy5cbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBmaWVsZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBDdXN0b21pemVzIGZpbHRlciBvcHRpb25zIGZvciB0aGUgY29sdW1uLCBlbmFibGluZyBzcGVjaWFsaXplZCBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBBbGxvd3MgZm9yIGEgY3VzdG9tIGNvbXBvbmVudCB3aXRoaW4gdGhlIGZpbHRlciBiYXIsIGZhY2lsaXRhdGluZyBhZHZhbmNlZCBmaWx0ZXIgaW50ZXJmYWNlcy4gXG4gICAgICogSW5jbHVkZXMgY3JlYXRlIGFuZCByZWFkIGZ1bmN0aW9ucyBmb3IgY3VzdG9tIGNvbXBvbmVudCBtYW5hZ2VtZW50LlxuICAgICAqIFxuICAgICAqIGBgYGh0bWxcbiAgICAgKjxkaXYgaWQ9XCJUcmVlR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgZ3JpZE9iajogVHJlZUdyaWQgPSBuZXcgVHJlZUdyaWQoe1xuICAgICAqZGF0YVNvdXJjZTogZmlsdGVyRGF0YSxcbiAgICAgKmNvbHVtbnM6IFtcbiAgICAgKiAgeyBmaWVsZDogJ09yZGVySUQnLCBoZWFkZXJUZXh0OiAnT3JkZXIgSUQnIH0sXG4gICAgICogIHtcbiAgICAgKiAgICAgZmllbGQ6ICdFbXBsb3llZUlEJywgZmlsdGVyQmFyVGVtcGxhdGU6IHtcbiAgICAgKiAgICAgICAgY3JlYXRlOiAoYXJnczogeyBlbGVtZW50OiBFbGVtZW50LCBjb2x1bW46IENvbHVtbiB9KSA9PiB7XG4gICAgICogICAgICAgICAgICAgbGV0IGlucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgKiAgICAgICAgICAgICBpbnB1dC5pZCA9ICdFbXBsb3llZUlEJztcbiAgICAgKiAgICAgICAgICAgICBpbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAqICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgKiAgICAgICAgfSxcbiAgICAgKiAgICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnQ6IEVsZW1lbnQsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGFyZ3MuY29sdW1uLmZpbHRlckJhclRlbXBsYXRlLnJlYWQgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgICogICAgICAgIH0sXG4gICAgICogICAgICAgIHJlYWQ6IChhcmdzOiB7IGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQsIGNvbHVtbkluZGV4OiBudW1iZXIsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgIGdyaWRPYmouZmlsdGVyQnlDb2x1bW4oYXJncy5lbGVtZW50LmlkLCAnZXF1YWwnLCBhcmdzLmVsZW1lbnQudmFsdWUpO1xuICAgICAqICAgICAgIH1cbiAgICAgKiAgICB9XG4gICAgICp9XSxcbiAgICAgKiAgYWxsb3dGaWx0ZXJpbmc6IHRydWVcbiAgICAgKn0pO1xuICAgICAqZ3JpZE9iai5hcHBlbmRUbygnI1RyZWVHcmlkJyk7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWx0ZXJCYXJUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBGb3JtYXRzIHRoZSBkaXNwbGF5ZWQgdmFsdWUgb2YgdGhlIGNvbHVtbiB3aXRob3V0IGFmZmVjdGluZyB0aGUgdW5kZXJseWluZyBkYXRhLiBTdXBwb3J0cyBzdGFuZGFyZCBhbmQgY3VzdG9tIGZvcm1hdHMgZm9yIG51bWJlcnMgYW5kIGRhdGVzLlxuICAgICAqIFxuICAgICAqIFJlZmVyZW5jZXMgZm9yIFtudW1iZXJdKGh0dHBzOi8vZWoyLnN5bmNmdXNpb24uY29tL2RvY3VtZW50YXRpb24vY29tbW9uL2ludGVybmF0aW9uYWxpemF0aW9uLyNzdXBwb3J0ZWQtZm9ybWF0LXN0cmluZylcbiAgICAgKmFuZCBbZGF0ZV0oaHR0cHM6Ly9lajIuc3luY2Z1c2lvbi5jb20vZG9jdW1lbnRhdGlvbi9jb21tb24vaW50ZXJuYXRpb25hbGl6YXRpb24jZGF0ZS1mb3JtYXR0aW5nKSBmb3JtYXRzLiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogQWxsb3dzIGZvciBjdXN0b20gY2VsbCBjb250ZW50IGZvcm1hdHRpbmcgdXNpbmcgYW4gZXh0ZXJuYWwgbWV0aG9kLCBleGVjdXRlZCBwcmlvciB0byByZW5kZXJpbmcuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB3aGljaCBzaWRlIChsZWZ0LCByaWdodCwgb3IgY2VudGVyKSB0aGUgY29sdW1uIHNob3VsZCBiZSBmcm96ZW4gb24uXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuRnJlZXplRGlyZWN0aW9uLk5vbmVcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuRnJlZXplRGlyZWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIGZyZWV6ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHRleHQgZGlzcGxheWVkIGluIHRoZSBjb2x1bW4gaGVhZGVyLiBJZiBvbWl0dGVkLCB0aGUgYGZpZWxkYCB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBoZWFkZXIgdGV4dC5cbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsaWducyB0aGUgdGV4dCBpbiB0aGUgY29sdW1uIGhlYWRlci4gQnkgZGVmYXVsdCwgdGhlIGFsaWdubWVudCBjb3JyZXNwb25kcyB0byBvdGhlciBjb250ZW50IGFsaWdubWVudHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqIEBhc3B0eXBlIFN5bmNmdXNpb24uRUoyLkdyaWRzLlRleHRBbGlnblxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0QWxpZ246IGFueTtcbiAgICAvKiogXG4gICAgICogQWRqdXN0cyBjb2x1bW4gdmlzaWJpbGl0eSBiYXNlZCBvbiBbTWVkaWEgUXVlcmllc10oaHR0cDovL2Nzc21lZGlhcXVlcmllcy5jb20vd2hhdC1hcmUtY3NzLW1lZGlhLXF1ZXJpZXMuaHRtbCkuIEFjY2VwdHMgdmFsaWQgQ1NTIG1lZGlhIHF1ZXJ5IHN0cmluZ3MgZm9yIHJlc3BvbnNpdmUgYWRqdXN0bWVudHMuXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZUF0TWVkaWE6IGFueTtcbiAgICAvKiogXG4gICAgICogQWxsb3dzIHRoZSBjb2x1bW4gdG8gYmUgZnJvemVuLCBrZWVwaW5nIGl0IHN0YXRpb25hcnkgd2hpbGUgc2Nyb2xsaW5nIGhvcml6b250YWxseSB0aHJvdWdoIHRoZSBncmlkLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzRnJvemVuOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElkZW50aWZpZXMgdGhlIGNvbHVtbiBhcyBhbiBpZGVudGl0eSBjb2x1bW4gaW4gZGF0YWJhc2UgdGVybXMsIGlmIHNldCB0byBgdHJ1ZWAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJZGVudGl0eTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZGVudGlmaWVzIHRoZSBjb2x1bW4gYXMgYSBwcmltYXJ5IGtleSBpZiBzZXQgdG8gYHRydWVgLCBlbmZvcmNpbmcgdW5pcXVlbmVzcy5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc1ByaW1hcnlLZXk6IGFueTtcbiAgICAvKiogXG4gICAgICogUHJldmVudHMgY29sdW1uIHJlb3JkZXJpbmcgd2hlbiBzZXQgdG8gdHJ1ZSwgbG9ja2luZyB0aGUgY29sdW1uIGludG8gYSBzZXQgcG9zaXRpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9ja0NvbHVtbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93YWJsZSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVscyBvciBhcyBhIHBlcmNlbnRhZ2UsIHByZXZlbnRpbmcgcmVzaXppbmcgYmV5b25kIHRoaXMgbGltaXQuXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgbWF4V2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgbWluaW11bSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVscyBvciBwZXJjZW50YWdlLiBUaGlzIGVuc3VyZXMgdGhlIGNvbHVtbiBkb2VzIG5vdCBzaHJpbmsgYmVsb3cgdGhpcyBzaXplLlxuICAgICAqIEBkZWZhdWx0ICd1bmRlZmluZWQnXG4gICAgICovXG4gICAgcHVibGljIG1pbldpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERpc3BsYXlzIGNoZWNrYm94ZXMgaW4gdGhlIGNvbHVtbiB3aGVuIGVuYWJsZWQsIGFsbG93aW5nIGZvciBzZWxlY3Rpb25zIGFuZCBjZXJ0YWluIG9wZXJhdGlvbnMuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0NoZWNrYm94OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlY2lkZXMgaWYgdGhlIGNvbHVtbiBtZW51IHNob3VsZCBiZSBhdmFpbGFibGUsIHByb3ZpZGluZyBvcHRpb25zIGZvciBjb2x1bW4gY3VzdG9taXphdGlvbi5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dDb2x1bW5NZW51OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29sdW1uIHNob3VsZCBhcHBlYXIgaW4gdGhlIENvbHVtbiBDaG9vc2VyLiBTZXQgdG8gZmFsc2UgdG8gZXhjbHVkZSBpdC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dJbkNvbHVtbkNob29zZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogUHJvdmlkZXMgYSBjdXN0b20gc29ydCBjb21wYXJlciBwcm9wZXJ0eSB0byBjb250cm9sIGhvdyBzb3J0aW5nIGlzIGhhbmRsZWQgZm9yIHRoaXMgY29sdW1uJ3MgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBzb3J0Q29tcGFyZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBmb3IgdGhlIGNvbHVtbiBjb250ZW50IGFuZCBoZWFkZXIuIE9wdGlvbnMgaW5jbHVkZSBhbGlnbm1lbnQgdG8gdGhlIGxlZnQsIGNlbnRlciwgb3IgcmlnaHQuXG4gICAgICogQGRlZmF1bHQgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduLkxlZnRcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICogQGFzcHR5cGUgU3luY2Z1c2lvbi5FSjIuR3JpZHMuVGV4dEFsaWduXG4gICAgICovXG4gICAgcHVibGljIHRleHRBbGlnbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLiBUaGlzIFVJRCBpcyB1c2VkIGludGVybmFsbHkgdG8gcmVmZXJlbmNlIGFuZCBtYW5pcHVsYXRlIHRoZSBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgdWlkOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEVzdGFibGlzaGVzIHZhbGlkYXRpb24gcnVsZXMgdG8gZW5zdXJlIGRhdGEgaW50ZWdyaXR5IGR1cmluZyBjcmVhdGlvbiBhbmQgdXBkYXRlcy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRpb25SdWxlczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBBcHBsaWVzIGN1c3RvbSBjZWxsIHZhbHVlcyB1c2luZyBhbiBleHRlcm5hbCBmdW5jdGlvbiwgYWxsb3dpbmcgZm9yIGR5bmFtaWMgZGlzcGxheSBhZGp1c3RtZW50cy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHZhbHVlQWNjZXNzb3I6IGFueTtcbiAgICAvKiogXG4gICAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY29sdW1uLiBTZXQgdG8gZmFsc2UgdG8gaGlkZSB0aGUgY29sdW1uIGZyb20gdmlldy4gQ29sdW1ucyBhcmUgdmlzaWJsZSBieSBkZWZhdWx0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTZXRzIHRoZSBjb2x1bW4ncyB3aWR0aCBpbiBwaXhlbHMgb3IgYXMgYSBwZXJjZW50YWdlLiBUaGlzIGRlZmluZXMgaG93IHRoZSBjb2x1bW4gd2lsbCBvY2N1cHkgc3BhY2UgaW4gdGhlIGdyaWQuXG4gICAgICogQGRlZmF1bHQgJ3VuZGVmaW5lZCdcbiAgICAgKi9cbiAgICBwdWJsaWMgd2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogQ3VzdG9taXplcyB0aGUgcmVuZGVyaW5nIG9mIGNlbGwgY29udGVudCB1c2luZyBlaXRoZXIgYSB0ZW1wbGF0ZSBzdHJpbmcgb3IgSFRNTCBlbGVtZW50IElELlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCd0ZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogQ3VzdG9taXplcyB0aGUgaGVhZGVyIGNvbnRlbnQgd2l0aCBhIHRlbXBsYXRlLCBkZWZpbmVkIGFzIGEgc3RyaW5nIG9yIGFuIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZmlsdGVySXRlbVRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBmaWx0ZXJfaXRlbVRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyBhIGN1c3RvbSB0ZW1wbGF0ZSBvciBVSSBmb3IgZmlsdGVyaW5nIHdpdGhpbiB0aGlzIGNvbHVtbiwgdXRpbGl6aW5nIGVpdGhlciBzdHJpbmcgdGVtcGxhdGVzIG9yIEhUTUwgZWxlbWVudCBJRHMuXG4gICAgICogQGFzcGlnbm9yZSBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZmlsdGVyVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdjb21tYW5kc1RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBjb21tYW5kc1RlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFByb3ZpZGVzIGEgdGVtcGxhdGUgZm9yIGVkaXRpbmcgY2VsbHMgaW4gdGhpcyBjb2x1bW4sIHN1cHBvcnRpbmcgZWl0aGVyIGEgdGVtcGxhdGUgc3RyaW5nIG9yIGFuIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKiBAYXNwaWdub3JlIFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VkaXRUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZWRpdFRlbXBsYXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVQcm9wTGlzdCA9IGlucHV0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBTdGFja2VkQ29sdW1uIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtdHJlZWdyaWQ+ZS1jb2x1bW5zPmUtY29sdW1uPmUtc3RhY2tlZC1jb2x1bW5zJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKFN0YWNrZWRDb2x1bW5EaXJlY3RpdmUpXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU3RhY2tlZENvbHVtbnNEaXJlY3RpdmUgZXh0ZW5kcyBBcnJheUJhc2U8U3RhY2tlZENvbHVtbnNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2NvbHVtbnMnKTtcbiAgICB9XG59Il19