desy-angular 9.1.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +3 -3
  2. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +3 -3
  3. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +3 -3
  4. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +3 -3
  5. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +3 -3
  6. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +5 -3
  7. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +5 -3
  8. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +3 -3
  9. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -5
  10. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +3 -3
  11. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +3 -3
  12. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +6 -6
  13. package/esm2022/lib/desy-nav/components/header/header.component.mjs +1 -1
  14. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.mjs +14 -0
  15. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +38 -0
  16. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.mjs +33 -0
  17. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +38 -0
  18. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.mjs +14 -0
  19. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +38 -0
  20. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.mjs +19 -0
  21. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +34 -0
  22. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +53 -0
  23. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +31 -0
  24. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +4 -6
  25. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +4 -7
  26. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +31 -29
  27. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +9 -21
  28. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +8 -8
  29. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +1 -1
  30. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -7
  31. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +3 -3
  32. package/esm2022/lib/desy-nav/desy-nav.module.mjs +94 -39
  33. package/esm2022/lib/desy-nav/directives/dynamic-heading.directive.mjs +40 -0
  34. package/esm2022/lib/desy-nav/interfaces/header-advanced-logo.mjs +7 -0
  35. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +47 -5
  36. package/esm2022/lib/desy-tables/components/table/components/table-footer.component.mjs +18 -0
  37. package/esm2022/lib/desy-tables/components/table/table.component.mjs +26 -6
  38. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.mjs +23 -0
  39. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.mjs +27 -0
  40. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +14 -5
  41. package/esm2022/lib/desy-tables/desy-tables.module.mjs +29 -14
  42. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +4 -9
  43. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +3 -3
  44. package/esm2022/lib/desy-views/components/card/card.component.mjs +3 -3
  45. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +3 -3
  46. package/esm2022/public-api.mjs +94 -79
  47. package/fesm2022/desy-angular.mjs +3247 -2786
  48. package/fesm2022/desy-angular.mjs.map +1 -1
  49. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +2 -1
  50. package/lib/desy-nav/components/footer/footer.component.d.ts +2 -1
  51. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +2 -2
  52. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +2 -2
  53. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +1 -1
  54. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +1 -1
  55. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +2 -2
  56. package/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.d.ts +5 -0
  57. package/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.d.ts +14 -0
  58. package/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.d.ts +14 -0
  59. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +17 -0
  60. package/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.d.ts +6 -0
  61. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +17 -0
  62. package/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.d.ts +8 -0
  63. package/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.d.ts +15 -0
  64. package/lib/desy-nav/components/header-advanced/header-advanced.component.d.ts +16 -0
  65. package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +12 -0
  66. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +4 -2
  67. package/lib/desy-nav/components/menubar/menubar.component.d.ts +4 -4
  68. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +1 -1
  69. package/lib/desy-nav/components/nav/nav.component.d.ts +2 -1
  70. package/lib/desy-nav/desy-nav.module.d.ts +40 -29
  71. package/lib/desy-nav/directives/dynamic-heading.directive.d.ts +15 -0
  72. package/lib/desy-nav/interfaces/header-advanced-logo.d.ts +5 -0
  73. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +14 -2
  74. package/lib/desy-tables/components/table/components/table-footer.component.d.ts +8 -0
  75. package/lib/desy-tables/components/table/table.component.d.ts +7 -3
  76. package/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.d.ts +11 -0
  77. package/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.d.ts +11 -0
  78. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +10 -6
  79. package/lib/desy-tables/desy-tables.module.d.ts +19 -16
  80. package/package.json +2 -2
  81. package/public-api.d.ts +93 -78
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, ContentChildren, EventEmitter, Input, Output, QueryList, HostBinding, ChangeDetectorRef } from '@angular/core';
2
+ import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, HostBinding, Input, Output, QueryList } from '@angular/core';
3
3
  import { AccessibilityComponent } from '../../../shared/components';
4
4
  import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
5
5
  import { PaginationItemPerPageComponent } from '../pagination-item-perpage/pagination-item-perpage.component';
@@ -15,6 +15,14 @@ export class PaginationComponent extends AccessibilityComponent {
15
15
  constructor(changeDetector) {
16
16
  super();
17
17
  this.changeDetector = changeDetector;
18
+ this.hasPrevious = true;
19
+ this.hasNext = true;
20
+ this.hasFirst = true;
21
+ this.hasLast = true;
22
+ this.showPrevious = true;
23
+ this.showNext = true;
24
+ this.showFirst = false;
25
+ this.showLast = false;
18
26
  this.currentPage = 1;
19
27
  this.currentPageChange = new EventEmitter();
20
28
  this.itemsPerPageChange = new EventEmitter();
@@ -22,6 +30,8 @@ export class PaginationComponent extends AccessibilityComponent {
22
30
  this.defaultText = false;
23
31
  this.previousIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" width="1em" height="1em" class="self-center h-2.5 w-2.5 mr-2" aria-hidden="true" focusable="false"><path d="M54.87 71.77a2.5 2.5 0 010-3.54L106 17.07A10 10 0 1091.89 2.93L35.43 59.39a15 15 0 000 21.22l56.46 56.46A10 10 0 10106 122.93z" fill="currentColor" /></svg>';
24
32
  this.nextIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" width="1em" height="1em" class="self-center h-2.5 w-2.5 ml-2" aria-hidden="true" focusable="false"><path d="M34 137.07a10 10 0 010-14.14l51.13-51.16a2.5 2.5 0 000-3.54L34 17.07A10 10 0 0148.11 2.93l56.46 56.46a15 15 0 010 21.22l-56.46 56.46a10 10 0 01-14.11 0z" fill="currentColor" /></svg>';
33
+ this.firstIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em" class="self-center h-2.5 w-2.5 mr-2" aria-hidden="true" focusable="false"><g><path d="M10.42,12a2.64,2.64,0,0,1,.77-1.88L20.73.58a1.77,1.77,0,0,1,2.5,2.5l-8.74,8.74a.27.27,0,0,0,0,.36l8.74,8.74a1.77,1.77,0,0,1-2.5,2.5l-9.54-9.54A2.64,2.64,0,0,1,10.42,12Z" fill="currentColor"></path><path d="M.25,12A2.65,2.65,0,0,1,1,10.12L10.57.58a1.77,1.77,0,0,1,2.5,2.5L4.33,11.82a.25.25,0,0,0,0,.36l8.74,8.74a1.77,1.77,0,0,1-2.5,2.5L1,13.88A2.65,2.65,0,0,1,.25,12Z" fill="currentColor"></path></g></svg>';
34
+ this.lastIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em" class="self-center h-2.5 w-2.5 ml-2" aria-hidden="true" focusable="false"><g><path d="M13.58,12a2.64,2.64,0,0,1-.77,1.88L3.27,23.42a1.77,1.77,0,0,1-2.5-2.5l8.74-8.74a.27.27,0,0,0,0-.36L.77,3.08A1.77,1.77,0,0,1,3.27.58l9.54,9.54A2.64,2.64,0,0,1,13.58,12Z" fill="currentColor"></path><path d="M23.75,12A2.65,2.65,0,0,1,23,13.88l-9.54,9.54a1.77,1.77,0,0,1-2.5-2.5l8.74-8.74a.25.25,0,0,0,0-.36L10.93,3.08a1.77,1.77,0,0,1,2.5-2.5L23,10.12A2.65,2.65,0,0,1,23.75,12Z" fill="currentColor"></path></g></svg>';
25
35
  this.prefix = '<span class="sr-only">Página&nbsp;</span>';
26
36
  }
27
37
  ngOnChanges(changes) {
@@ -46,12 +56,18 @@ export class PaginationComponent extends AccessibilityComponent {
46
56
  this.currentPage = 1;
47
57
  this.currentPageChange.emit(this.currentPage);
48
58
  }
59
+ if (!this.firstText) {
60
+ this.firstText = 'Anterior';
61
+ }
49
62
  if (!this.previousText) {
50
63
  this.previousText = 'Anterior';
51
64
  }
52
65
  if (!this.nextText) {
53
66
  this.nextText = 'Siguiente';
54
67
  }
68
+ if (!this.lastText) {
69
+ this.lastText = 'Siguiente';
70
+ }
55
71
  this.buildPages();
56
72
  }
57
73
  getSuffix(page) {
@@ -81,7 +97,7 @@ export class PaginationComponent extends AccessibilityComponent {
81
97
  return this.idPrefix ? this.idPrefix : 'pagination-item';
82
98
  }
83
99
  getButtonId(index) {
84
- return this.getIdPrefix() + (index === 0) ? '' : '-' + index;
100
+ return this.getIdPrefix() + '-' + ++index;
85
101
  }
86
102
  changePage(current) {
87
103
  const hasPageChange = current !== this.currentPage;
@@ -104,6 +120,16 @@ export class PaginationComponent extends AccessibilityComponent {
104
120
  this.changePage(this.currentPage + 1);
105
121
  }
106
122
  }
123
+ first() {
124
+ if (this.currentPage > 1) {
125
+ this.changePage(1);
126
+ }
127
+ }
128
+ last() {
129
+ if (this.currentPage < this.nPages) {
130
+ this.changePage(this.nPages);
131
+ }
132
+ }
107
133
  getActiveItemText() {
108
134
  const activeItems = this.items.filter(item => item.active);
109
135
  return activeItems && activeItems.length > 0 ? activeItems[0].text : '';
@@ -140,7 +166,7 @@ export class PaginationComponent extends AccessibilityComponent {
140
166
  }
141
167
  }
142
168
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PaginationComponent, selector: "desy-pagination", inputs: { hasSelect: "hasSelect", idPrefix: "idPrefix", totalItems: "totalItems", hasPrevious: "hasPrevious", hasNext: "hasNext", previousText: "previousText", nextText: "nextText", hasSelectItemsPerPage: "hasSelectItemsPerPage", classes: "classes", classesContainer: "classesContainer", id: "id", currentPage: "currentPage", itemsPerPage: "itemsPerPage" }, outputs: { currentPageChange: "currentPageChange", itemsPerPageChange: "itemsPerPageChange" }, host: { properties: { "class": "this.classesContainer", "attr.id": "this.id" } }, queries: [{ propertyName: "listboxLabel", predicate: PaginationListboxLabelComponent }, { propertyName: "listboxItemsPerPage", predicate: PaginationItemPerPageComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasSelect\">\n <p class=\"w-full mb-xs text-sm text-neutral-dark\">\n Selecciona una p\u00E1gina para cargar datos\n </p>\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <desy-button (clickEvent)=\"previous()\" [id]=\"getIdPrefix() + '-previous'\"\n [html]=\"previousIcon + prefix + previousText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasPrevious\"\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\n <desy-listbox *ngIf=\"items && items.length > 0\" [id]=\"id + '-listbox'\"\n [idPrefix]=\"idPrefix\"\n [text]=\"getActiveItemText()\"\n [classes]=\"'c-listbox--sm c-listbox--transparent mr-xs'\"\n [classesTooltip]=\"'max-h-52 overflow-y-auto'\"\n [doesChangeButtonText]=\"true\"\n [label]=\"{ text: 'Selecciona una p\u00E1gina para cargar datos', classes: 'sr-only' }\"\n [(items)]=\"items\"\n (activeItemChange)=\"handleActiveItemChange($event)\"></desy-listbox>\n <desy-button (clickEvent)=\"next()\" [id]=\"getIdPrefix() + '-next'\"\n [html]=\"prefix + nextText + getSuffix(currentPage) + nextIcon\" [disabled]=\"currentPage === nPages || !hasNext\"\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\n </nav>\n</ng-container>\n<ng-container *ngIf=\"!hasSelect\">\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ul class=\"flex flex-wrap\">\n <li *ngFor=\"let item of items; index as i\">\n <desy-button *ngIf=\"item.active\" [id]=\"getButtonId(i)\"\n [html]=\"'<strong>' + prefix + (i + 1) + getSuffix(i) + '</strong>'\"\n classes=\"c-button--primary c-button--disabled mb-sm mr-sm\"\n [disabled]=\"true\" ariaCurrent=\"page\" tabindex=\"-1\" ></desy-button>\n <desy-button *ngIf=\"!item.active\" [id]=\"getButtonId(i)\"\n [html]=\"prefix + (i + 1) + getSuffix(i)\"\n (clickEvent)=\"changePage(i + 1)\"\n classes=\"mb-sm mr-sm\"></desy-button>\n </li>\n </ul>\n </nav>\n</ng-container>\n \n<div *ngIf=\"hasSelectItemsPerPage\" class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\">\n <desy-listbox [classes]=\"'c-listbox--sm c-listbox--transparent'\" \n [classesContainer]=\"'flex flex-wrap items-center gap-xs'\" \n [id]=\"'items-listbox-' + getIdPrefix()\"\n [doesChangeButtonText]=\"true\"\n [items]=\"itemsPerPageList\"\n (activeItemChange)=\"changeItemsPerPage($event)\">\n <desy-listbox-label [classes]=\"listboxLabel && listboxLabel.classes ? listboxLabel.classes : 'inline-block align-middle mb-0'\">\n <ng-container *ngIf=\"listboxLabel\">\n <ng-container *desyCustomInnerContent=\"{ component: listboxLabel }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!listboxLabel\">\n Items por p\u00E1gina\n </ng-container>\n </desy-listbox-label>\n </desy-listbox>\n</div>\n\n\n<p class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\" *ngIf=\"totalItems && itemsPerPage\">\n <span class=\"sr-only\">Posici\u00F3n de paginaci\u00F3n: </span>{{(currentPage - 1) * itemsPerPage + 1}} - {{getLastItemNumber(currentPage - 1)}} de {{totalItems}}\n</p>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "component", type: i3.ButtonComponent, selector: "desy-button", inputs: ["id", "classes", "html", "text", "element", "name", "type", "value", "disabled", "href", "target", "preventDoubleClick", "routerLink", "routerLinkActiveClasses"], outputs: ["clickEvent"] }, { kind: "component", type: i4.ListboxComponent, selector: "desy-listbox", inputs: ["id", "isMultiselectable", "doesChangeButtonText", "label", "classes", "classesContainer", "classesTooltip", "idPrefix", "disabled", "items"], outputs: ["itemsChange", "activeItemChange"] }, { kind: "component", type: i5.ListboxLabelComponent, selector: "desy-listbox-label", inputs: ["classes"] }, { kind: "pipe", type: i6.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PaginationComponent, selector: "desy-pagination", inputs: { hasSelect: "hasSelect", idPrefix: "idPrefix", totalItems: "totalItems", hasPrevious: "hasPrevious", hasNext: "hasNext", hasFirst: "hasFirst", hasLast: "hasLast", showPrevious: "showPrevious", showNext: "showNext", showFirst: "showFirst", showLast: "showLast", previousText: "previousText", nextText: "nextText", firstText: "firstText", lastText: "lastText", hasSelectItemsPerPage: "hasSelectItemsPerPage", classes: "classes", classesContainer: "classesContainer", id: "id", currentPage: "currentPage", itemsPerPage: "itemsPerPage" }, outputs: { currentPageChange: "currentPageChange", itemsPerPageChange: "itemsPerPageChange" }, host: { properties: { "class": "this.classesContainer", "attr.id": "this.id" } }, queries: [{ propertyName: "listboxLabel", predicate: PaginationListboxLabelComponent }, { propertyName: "listboxItemsPerPage", predicate: PaginationItemPerPageComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasSelect\">\n <p class=\"w-full mb-xs text-sm text-neutral-dark\">\n Selecciona una p\u00E1gina para cargar datos\n </p>\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <desy-button *ngIf=\"showFirst\" (clickEvent)=\"first()\" [id]=\"getIdPrefix() + '-first'\"\n [html]=\"firstIcon + prefix + firstText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasFirst\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n <desy-button *ngIf=\"showPrevious\" (clickEvent)=\"previous()\" [id]=\"getIdPrefix() + '-previous'\"\n [html]=\"previousIcon + prefix + previousText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasPrevious\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n <div class=\"flex flex-wrap items-center pl-sm\"\n [ngClass]=\"{'w-full lg:w-auto': showFirst || showLast}\">\n <p *ngIf=\"showFirst || showLast\" class=\"lg:hidden mr-xs text-sm text-neutral-dark\">P\u00E1gina actual:</p>\n <desy-listbox *ngIf=\"items && items.length > 0\" [id]=\"id + '-listbox'\"\n [idPrefix]=\"idPrefix\"\n [text]=\"getActiveItemText()\"\n [classes]=\"'c-listbox--sm c-listbox--transparent mr-xs'\"\n [classesTooltip]=\"'max-h-52 overflow-y-auto'\"\n [doesChangeButtonText]=\"true\"\n [label]=\"{ text: 'Selecciona una p\u00E1gina para cargar datos', classes: 'sr-only' }\"\n [(items)]=\"items\"\n (activeItemChange)=\"handleActiveItemChange($event)\"></desy-listbox>\n </div>\n <desy-button *ngIf=\"showNext\" (clickEvent)=\"next()\" [id]=\"getIdPrefix() + '-next'\"\n [html]=\"prefix + nextText + getSuffix(currentPage) + nextIcon\" [disabled]=\"currentPage === nPages || !hasNext\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n <desy-button *ngIf=\"showLast\" (clickEvent)=\"last()\" [id]=\"getIdPrefix() + '-last'\"\n [html]=\"prefix + lastText + getSuffix(currentPage) + lastIcon\" [disabled]=\"currentPage === nPages || !hasLast\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n </nav>\n</ng-container>\n<ng-container *ngIf=\"!hasSelect\">\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ul class=\"flex flex-wrap\">\n <li *ngFor=\"let item of items; index as i\">\n <desy-button *ngIf=\"item.active\" [id]=\"getButtonId(i)\"\n [html]=\"'<strong>' + prefix + (i + 1) + getSuffix(i) + '</strong>'\"\n classes=\"c-button--primary c-button--disabled mb-sm mr-sm\"\n [disabled]=\"true\" ariaCurrent=\"page\" tabindex=\"-1\" type=\"button\"></desy-button>\n <desy-button *ngIf=\"!item.active\" [id]=\"getButtonId(i)\"\n [html]=\"prefix + (i + 1) + getSuffix(i)\"\n (clickEvent)=\"changePage(i + 1)\"\n classes=\"mb-sm mr-sm\" type=\"button\"></desy-button>\n </li>\n </ul>\n </nav>\n</ng-container>\n \n<div *ngIf=\"hasSelectItemsPerPage\" class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\">\n <desy-listbox [classes]=\"'c-listbox--sm c-listbox--transparent'\" \n [classesContainer]=\"'flex flex-wrap items-center gap-xs'\" \n [id]=\"'items-listbox-' + getIdPrefix()\"\n [doesChangeButtonText]=\"true\"\n [items]=\"itemsPerPageList\"\n (activeItemChange)=\"changeItemsPerPage($event)\">\n <desy-listbox-label [classes]=\"listboxLabel && listboxLabel.classes ? listboxLabel.classes : 'inline-block align-middle mb-0'\">\n <ng-container *ngIf=\"listboxLabel\">\n <ng-container *desyCustomInnerContent=\"{ component: listboxLabel }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!listboxLabel\">\n Items por p\u00E1gina\n </ng-container>\n </desy-listbox-label>\n </desy-listbox>\n</div>\n\n\n<p class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\" *ngIf=\"totalItems && itemsPerPage\">\n <span class=\"sr-only\">Posici\u00F3n de paginaci\u00F3n: </span>{{(currentPage - 1) * itemsPerPage + 1}} - {{getLastItemNumber(currentPage - 1)}} de {{totalItems}}\n</p>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "component", type: i3.ButtonComponent, selector: "desy-button", inputs: ["id", "classes", "html", "text", "element", "name", "type", "value", "disabled", "href", "target", "preventDoubleClick", "routerLink", "routerLinkActiveClasses"], outputs: ["clickEvent"] }, { kind: "component", type: i4.ListboxComponent, selector: "desy-listbox", inputs: ["id", "isMultiselectable", "doesChangeButtonText", "label", "classes", "classesContainer", "classesTooltip", "idPrefix", "disabled", "items"], outputs: ["itemsChange", "activeItemChange"] }, { kind: "component", type: i5.ListboxLabelComponent, selector: "desy-listbox-label", inputs: ["classes"] }, { kind: "pipe", type: i6.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
144
170
  }
145
171
  __decorate([
146
172
  DesyContentChild(),
@@ -148,7 +174,7 @@ __decorate([
148
174
  ], PaginationComponent.prototype, "listboxLabel", void 0);
149
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PaginationComponent, decorators: [{
150
176
  type: Component,
151
- args: [{ selector: 'desy-pagination', template: "<ng-container *ngIf=\"hasSelect\">\n <p class=\"w-full mb-xs text-sm text-neutral-dark\">\n Selecciona una p\u00E1gina para cargar datos\n </p>\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <desy-button (clickEvent)=\"previous()\" [id]=\"getIdPrefix() + '-previous'\"\n [html]=\"previousIcon + prefix + previousText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasPrevious\"\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\n <desy-listbox *ngIf=\"items && items.length > 0\" [id]=\"id + '-listbox'\"\n [idPrefix]=\"idPrefix\"\n [text]=\"getActiveItemText()\"\n [classes]=\"'c-listbox--sm c-listbox--transparent mr-xs'\"\n [classesTooltip]=\"'max-h-52 overflow-y-auto'\"\n [doesChangeButtonText]=\"true\"\n [label]=\"{ text: 'Selecciona una p\u00E1gina para cargar datos', classes: 'sr-only' }\"\n [(items)]=\"items\"\n (activeItemChange)=\"handleActiveItemChange($event)\"></desy-listbox>\n <desy-button (clickEvent)=\"next()\" [id]=\"getIdPrefix() + '-next'\"\n [html]=\"prefix + nextText + getSuffix(currentPage) + nextIcon\" [disabled]=\"currentPage === nPages || !hasNext\"\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\n </nav>\n</ng-container>\n<ng-container *ngIf=\"!hasSelect\">\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ul class=\"flex flex-wrap\">\n <li *ngFor=\"let item of items; index as i\">\n <desy-button *ngIf=\"item.active\" [id]=\"getButtonId(i)\"\n [html]=\"'<strong>' + prefix + (i + 1) + getSuffix(i) + '</strong>'\"\n classes=\"c-button--primary c-button--disabled mb-sm mr-sm\"\n [disabled]=\"true\" ariaCurrent=\"page\" tabindex=\"-1\" ></desy-button>\n <desy-button *ngIf=\"!item.active\" [id]=\"getButtonId(i)\"\n [html]=\"prefix + (i + 1) + getSuffix(i)\"\n (clickEvent)=\"changePage(i + 1)\"\n classes=\"mb-sm mr-sm\"></desy-button>\n </li>\n </ul>\n </nav>\n</ng-container>\n \n<div *ngIf=\"hasSelectItemsPerPage\" class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\">\n <desy-listbox [classes]=\"'c-listbox--sm c-listbox--transparent'\" \n [classesContainer]=\"'flex flex-wrap items-center gap-xs'\" \n [id]=\"'items-listbox-' + getIdPrefix()\"\n [doesChangeButtonText]=\"true\"\n [items]=\"itemsPerPageList\"\n (activeItemChange)=\"changeItemsPerPage($event)\">\n <desy-listbox-label [classes]=\"listboxLabel && listboxLabel.classes ? listboxLabel.classes : 'inline-block align-middle mb-0'\">\n <ng-container *ngIf=\"listboxLabel\">\n <ng-container *desyCustomInnerContent=\"{ component: listboxLabel }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!listboxLabel\">\n Items por p\u00E1gina\n </ng-container>\n </desy-listbox-label>\n </desy-listbox>\n</div>\n\n\n<p class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\" *ngIf=\"totalItems && itemsPerPage\">\n <span class=\"sr-only\">Posici\u00F3n de paginaci\u00F3n: </span>{{(currentPage - 1) * itemsPerPage + 1}} - {{getLastItemNumber(currentPage - 1)}} de {{totalItems}}\n</p>\n" }]
177
+ args: [{ selector: 'desy-pagination', template: "<ng-container *ngIf=\"hasSelect\">\n <p class=\"w-full mb-xs text-sm text-neutral-dark\">\n Selecciona una p\u00E1gina para cargar datos\n </p>\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <desy-button *ngIf=\"showFirst\" (clickEvent)=\"first()\" [id]=\"getIdPrefix() + '-first'\"\n [html]=\"firstIcon + prefix + firstText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasFirst\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n <desy-button *ngIf=\"showPrevious\" (clickEvent)=\"previous()\" [id]=\"getIdPrefix() + '-previous'\"\n [html]=\"previousIcon + prefix + previousText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasPrevious\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n <div class=\"flex flex-wrap items-center pl-sm\"\n [ngClass]=\"{'w-full lg:w-auto': showFirst || showLast}\">\n <p *ngIf=\"showFirst || showLast\" class=\"lg:hidden mr-xs text-sm text-neutral-dark\">P\u00E1gina actual:</p>\n <desy-listbox *ngIf=\"items && items.length > 0\" [id]=\"id + '-listbox'\"\n [idPrefix]=\"idPrefix\"\n [text]=\"getActiveItemText()\"\n [classes]=\"'c-listbox--sm c-listbox--transparent mr-xs'\"\n [classesTooltip]=\"'max-h-52 overflow-y-auto'\"\n [doesChangeButtonText]=\"true\"\n [label]=\"{ text: 'Selecciona una p\u00E1gina para cargar datos', classes: 'sr-only' }\"\n [(items)]=\"items\"\n (activeItemChange)=\"handleActiveItemChange($event)\"></desy-listbox>\n </div>\n <desy-button *ngIf=\"showNext\" (clickEvent)=\"next()\" [id]=\"getIdPrefix() + '-next'\"\n [html]=\"prefix + nextText + getSuffix(currentPage) + nextIcon\" [disabled]=\"currentPage === nPages || !hasNext\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n <desy-button *ngIf=\"showLast\" (clickEvent)=\"last()\" [id]=\"getIdPrefix() + '-last'\"\n [html]=\"prefix + lastText + getSuffix(currentPage) + lastIcon\" [disabled]=\"currentPage === nPages || !hasLast\"\n classes=\"c-button--sm c-button--transparent mr-xs\" type=\"button\"></desy-button>\n </nav>\n</ng-container>\n<ng-container *ngIf=\"!hasSelect\">\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ul class=\"flex flex-wrap\">\n <li *ngFor=\"let item of items; index as i\">\n <desy-button *ngIf=\"item.active\" [id]=\"getButtonId(i)\"\n [html]=\"'<strong>' + prefix + (i + 1) + getSuffix(i) + '</strong>'\"\n classes=\"c-button--primary c-button--disabled mb-sm mr-sm\"\n [disabled]=\"true\" ariaCurrent=\"page\" tabindex=\"-1\" type=\"button\"></desy-button>\n <desy-button *ngIf=\"!item.active\" [id]=\"getButtonId(i)\"\n [html]=\"prefix + (i + 1) + getSuffix(i)\"\n (clickEvent)=\"changePage(i + 1)\"\n classes=\"mb-sm mr-sm\" type=\"button\"></desy-button>\n </li>\n </ul>\n </nav>\n</ng-container>\n \n<div *ngIf=\"hasSelectItemsPerPage\" class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\">\n <desy-listbox [classes]=\"'c-listbox--sm c-listbox--transparent'\" \n [classesContainer]=\"'flex flex-wrap items-center gap-xs'\" \n [id]=\"'items-listbox-' + getIdPrefix()\"\n [doesChangeButtonText]=\"true\"\n [items]=\"itemsPerPageList\"\n (activeItemChange)=\"changeItemsPerPage($event)\">\n <desy-listbox-label [classes]=\"listboxLabel && listboxLabel.classes ? listboxLabel.classes : 'inline-block align-middle mb-0'\">\n <ng-container *ngIf=\"listboxLabel\">\n <ng-container *desyCustomInnerContent=\"{ component: listboxLabel }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!listboxLabel\">\n Items por p\u00E1gina\n </ng-container>\n </desy-listbox-label>\n </desy-listbox>\n</div>\n\n\n<p class=\"block relative -top-xs lg:ml-auto text-sm text-neutral-dark\" *ngIf=\"totalItems && itemsPerPage\">\n <span class=\"sr-only\">Posici\u00F3n de paginaci\u00F3n: </span>{{(currentPage - 1) * itemsPerPage + 1}} - {{getLastItemNumber(currentPage - 1)}} de {{totalItems}}\n</p>\n" }]
152
178
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hasSelect: [{
153
179
  type: Input
154
180
  }], idPrefix: [{
@@ -159,10 +185,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
159
185
  type: Input
160
186
  }], hasNext: [{
161
187
  type: Input
188
+ }], hasFirst: [{
189
+ type: Input
190
+ }], hasLast: [{
191
+ type: Input
192
+ }], showPrevious: [{
193
+ type: Input
194
+ }], showNext: [{
195
+ type: Input
196
+ }], showFirst: [{
197
+ type: Input
198
+ }], showLast: [{
199
+ type: Input
162
200
  }], previousText: [{
163
201
  type: Input
164
202
  }], nextText: [{
165
203
  type: Input
204
+ }], firstText: [{
205
+ type: Input
206
+ }], lastText: [{
207
+ type: Input
166
208
  }], hasSelectItemsPerPage: [{
167
209
  type: Input
168
210
  }], classes: [{
@@ -192,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
192
234
  }], itemsPerPageChange: [{
193
235
  type: Output
194
236
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXBhZ2luYXRpb24vY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1wYWdpbmF0aW9uL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDL0ssT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFM0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDOUcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7O0FBT2pILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxzQkFBc0I7SUFzQzdELFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbEI1QyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNmLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFJL0MsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUsxRCxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVwQixpQkFB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REFFL0IsOEJBQThCLHlFQy9CakQsMnJLQXNGQTs7QUQxREU7SUFBQyxnQkFBZ0IsRUFBRTs4QkFDNkMsK0JBQStCO3lEQUFDOzRGQWhCckYsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQjt3R0FLbEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRXlCLGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUNJLEVBQUU7c0JBQWxDLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsU0FBUztnQkFHbUIsWUFBWTtzQkFBN0QsZUFBZTt1QkFBQywrQkFBK0I7Z0JBRUMsbUJBQW1CO3NCQUFuRSxlQUFlO3VCQUFDLDhCQUE4QjtnQkFFdEMsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBR0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXN5Q29udGVudENoaWxkIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uSXRlbURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBhZ2luYXRpb25JdGVtUGVyUGFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRpb24taXRlbS1wZXJwYWdlL3BhZ2luYXRpb24taXRlbS1wZXJwYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTGlzdGJveExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdGlvbi1saXN0Ym94LWxhYmVsL3BhZ2luYXRpb24tbGlzdGJveC1sYWJlbC5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgQElucHV0KCkgaGFzU2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc1ByZXZpb3VzOiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNOZXh0OiBib29sZWFuO1xuICBASW5wdXQoKSBwcmV2aW91c1RleHQ6IHN0cmluZztcbiAgQElucHV0KCkgbmV4dFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgaGFzU2VsZWN0SXRlbXNQZXJQYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcblxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3Nlc0NvbnRhaW5lcjogYW55O1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBpZDogYW55O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihQYWdpbmF0aW9uTGlzdGJveExhYmVsQ29tcG9uZW50KSBsaXN0Ym94TGFiZWw6IFBhZ2luYXRpb25MaXN0Ym94TGFiZWxDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihQYWdpbmF0aW9uSXRlbVBlclBhZ2VDb21wb25lbnQpIGxpc3Rib3hJdGVtc1BlclBhZ2U6IFF1ZXJ5TGlzdDxQYWdpbmF0aW9uSXRlbVBlclBhZ2VDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTsgLy8gPT0gY3VycmVudFBhZ2VpbmRleCArIDFcbiAgQE91dHB1dCgpIGN1cnJlbnRQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblxuICBASW5wdXQoKSBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgQE91dHB1dCgpIGl0ZW1zUGVyUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIG5QYWdlczogbnVtYmVyO1xuICBpdGVtczogUGFnaW5hdGlvbkl0ZW1EYXRhW107XG4gIGl0ZW1zUGVyUGFnZUxpc3Q6IFBhZ2luYXRpb25JdGVtUGVyUGFnZUNvbXBvbmVudFtdO1xuICBuUGFnZXNIaXN0b3J5ID0gMDtcblxuICBkZWZhdWx0VGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHByZXZpb3VzSWNvbiA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiAgd2lkdGg9XCIxZW1cIiBoZWlnaHQ9XCIxZW1cIiBjbGFzcz1cInNlbGYtY2VudGVyIGgtMi41IHctMi41IG1yLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjxwYXRoIGQ9XCJNNTQuODcgNzEuNzdhMi41IDIuNSAwIDAxMC0zLjU0TDEwNiAxNy4wN0ExMCAxMCAwIDEwOTEuODkgMi45M0wzNS40MyA1OS4zOWExNSAxNSAwIDAwMCAyMS4yMmw1Ni40NiA1Ni40NkExMCAxMCAwIDEwMTA2IDEyMi45M3pcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgLz48L3N2Zz4nO1xuICByZWFkb25seSBuZXh0SWNvbiA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiB3aWR0aD1cIjFlbVwiIGhlaWdodD1cIjFlbVwiIGNsYXNzPVwic2VsZi1jZW50ZXIgaC0yLjUgdy0yLjUgbWwtMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PHBhdGggZD1cIk0zNCAxMzcuMDdhMTAgMTAgMCAwMTAtMTQuMTRsNTEuMTMtNTEuMTZhMi41IDIuNSAwIDAwMC0zLjU0TDM0IDE3LjA3QTEwIDEwIDAgMDE0OC4xMSAyLjkzbDU2LjQ2IDU2LjQ2YTE1IDE1IDAgMDEwIDIxLjIybC01Ni40NiA1Ni40NmExMCAxMCAwIDAxLTE0LjExIDB6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+PC9zdmc+JztcbiAgcmVhZG9ubHkgcHJlZml4ID0gJzxzcGFuIGNsYXNzPVwic3Itb25seVwiPlDDoWdpbmEmbmJzcDs8L3NwYW4+JztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT09IG51bGwgfHwgdGhpcy5jdXJyZW50UGFnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB9XG4gICAgdGhpcy5jaGVja0NoYW5nZXMoKTtcbiAgICB0aGlzLmNsYXNzZXNDb250YWluZXIgPSB0aGlzLmNsYXNzZXNDb250YWluZXIgPyB0aGlzLmNsYXNzZXNDb250YWluZXIgKz0gJyBsZzpmbGV4IGxnOmZsZXgtd3JhcCBsZzppdGVtcy1jZW50ZXIgbGc6Z2FwLWJhc2UnIDogJ2xnOmZsZXggbGc6ZmxleC13cmFwIGxnOml0ZW1zLWNlbnRlciBsZzpnYXAtYmFzZSdcbiAgICB0aGlzLmlkID0gdGhpcy5pZCA/IHRoaXMuaWQgOiBudWxsXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdGJveEl0ZW1zUGVyUGFnZSkge1xuICAgICAgdGhpcy5zZXR1cEl0ZW1zUGVyUGFnZSgpO1xuICAgICAgdGhpcy5saXN0Ym94SXRlbXNQZXJQYWdlLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cEl0ZW1zUGVyUGFnZSgpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjaGVja0NoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5uUGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgIFxuICAgIGlmICghdGhpcy5jdXJyZW50UGFnZSB8fCB0aGlzLmN1cnJlbnRQYWdlIDwgMSB8fCB0aGlzLmN1cnJlbnRQYWdlID4gdGhpcy5uUGFnZXMpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy5jdXJyZW50UGFnZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFBhZ2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wcmV2aW91c1RleHQpIHtcbiAgICAgIHRoaXMucHJldmlvdXNUZXh0ID0gJ0FudGVyaW9yJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLm5leHRUZXh0KSB7XG4gICAgICB0aGlzLm5leHRUZXh0ID0gJ1NpZ3VpZW50ZSc7XG4gICAgfVxuICAgIHRoaXMuYnVpbGRQYWdlcygpO1xuICB9XG5cbiAgZ2V0U3VmZml4KHBhZ2U6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhZ2UgPj0gMCAmJiBwYWdlICogdGhpcy5pdGVtc1BlclBhZ2UgPCB0aGlzLnRvdGFsSXRlbXMgP1xuICAgICAgYDxzcGFuIGNsYXNzPVwic3Itb25seVwiPjombmJzcDtQw6FnaW5hICR7cGFnZSArIDF9IGNvbiBsb3MgcmVzdWx0YWRvcyBkZWwgJHtwYWdlICogdGhpcy5pdGVtc1BlclBhZ2UgKyAxfSBhbCAke3RoaXMuZ2V0TGFzdEl0ZW1OdW1iZXIocGFnZSl9PC9zcGFuPmBcbiAgICAgIDogJyc7XG4gIH1cblxuICBnZXRMYXN0SXRlbU51bWJlcihwYWdlSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKChwYWdlSW5kZXggKyAxKSAqIHRoaXMuaXRlbXNQZXJQYWdlLCB0aGlzLnRvdGFsSXRlbXMpO1xuICB9XG5cbiAgYnVpbGRQYWdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uUGFnZXNIaXN0b3J5ICE9IHRoaXMublBhZ2VzKSB7XG4gICAgICB0aGlzLm5QYWdlc0hpc3RvcnkgPSB0aGlzLm5QYWdlc1xuICAgICAgY29uc3QgaXRlbUxpc3QgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uUGFnZXM7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtOiBQYWdpbmF0aW9uSXRlbURhdGEgPSB7XG4gICAgICAgICAgdGV4dDogaSArIDEsXG4gICAgICAgICAgYWN0aXZlOiAoKGkgKyAxKSA9PT0gdGhpcy5jdXJyZW50UGFnZSksXG4gICAgICAgICAgcm91dGVyTGluazogW11cbiAgICAgICAgfTtcbiAgICAgICAgaXRlbUxpc3QucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXRlbXMgPSBpdGVtTGlzdDtcbiAgICB9XG4gIH1cblxuICBnZXRJZFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCA6ICdwYWdpbmF0aW9uLWl0ZW0nO1xuICB9XG5cbiAgZ2V0QnV0dG9uSWQoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SWRQcmVmaXgoKSArIChpbmRleCA9PT0gMCkgPyAnJyA6ICctJyArIGluZGV4O1xuICB9XG5cbiAgY2hhbmdlUGFnZShjdXJyZW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNQYWdlQ2hhbmdlID0gY3VycmVudCAhPT0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gY3VycmVudDtcbiAgICBpZiAoaGFzUGFnZUNoYW5nZSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFBhZ2UpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2ldO1xuICAgICAgaXRlbS5hY3RpdmUgPSAoKGkgKyAxKSA9PT0gdGhpcy5jdXJyZW50UGFnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAxKSB7XG4gICAgICB0aGlzLmNoYW5nZVBhZ2UodGhpcy5jdXJyZW50UGFnZSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPCB0aGlzLm5QYWdlcykge1xuICAgICAgdGhpcy5jaGFuZ2VQYWdlKHRoaXMuY3VycmVudFBhZ2UgKyAxKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVJdGVtVGV4dCgpOiBhbnkge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmFjdGl2ZSk7XG4gICAgcmV0dXJuIGFjdGl2ZUl0ZW1zICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA+IDAgPyBhY3RpdmVJdGVtc1swXS50ZXh0IDogJyc7XG4gIH1cblxuICBnZXRMaXN0Ym94TGFiZWwoKTogUGFnaW5hdGlvbkxpc3Rib3hMYWJlbENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdGJveExhYmVsID8gdGhpcy5saXN0Ym94TGFiZWwgOiBudWxsO1xuICB9XG5cbiAgY2hhbmdlSXRlbXNQZXJQYWdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudmFsdWUpIHtcbiAgICAgIGxldCBuZXdWYWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuY2hlY2tDaGFuZ2VzKCk7XG4gICAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFjdGl2ZUl0ZW1DaGFuZ2UoZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQgIT09IG51bGwgJiYgZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGFuZ2VQYWdlKCtldmVudC50ZXh0KTtcbiAgICB9XG4gIH1cblxuICBzZXR1cEl0ZW1zUGVyUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUxpc3QgPSB0aGlzLmxpc3Rib3hJdGVtc1BlclBhZ2UgJiYgdGhpcy5saXN0Ym94SXRlbXNQZXJQYWdlLmxlbmd0aCA+IDAgPyB0aGlzLmxpc3Rib3hJdGVtc1BlclBhZ2UudG9BcnJheSgpIDogbnVsbDtcbiAgICBpZiAodGhpcy5pdGVtc1BlclBhZ2VMaXN0KSB7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXNQZXJQYWdlSXRlbSA9IHRoaXMuaXRlbXNQZXJQYWdlTGlzdC5maW5kKGkgPT4gaS52YWx1ZSA9PT0gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgICAgaWYgKGN1cnJlbnRJdGVtc1BlclBhZ2VJdGVtKSB7XG4gICAgICAgIGN1cnJlbnRJdGVtc1BlclBhZ2VJdGVtLmFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBoYXNBY3RpdmUgPSB0aGlzLml0ZW1zUGVyUGFnZUxpc3QuZmluZChpID0+IGkuYWN0aXZlKTtcbiAgICAgIGlmICghaGFzQWN0aXZlICYmIHRoaXMuaXRlbXNQZXJQYWdlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlTGlzdFswXS5hY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTZWxlY3RcIj5cbiAgPHAgY2xhc3M9XCJ3LWZ1bGwgbWIteHMgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFya1wiPlxuICAgIFNlbGVjY2lvbmEgdW5hIHDDoWdpbmEgcGFyYSBjYXJnYXIgZGF0b3NcbiAgPC9wPlxuICA8bmF2IFtjbGFzc109XCJbJ2ZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBmbGV4LTEgbWItYmFzZSBsZzptYi0wIHRleHQtc20nLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG4gICAgPGRlc3ktYnV0dG9uIChjbGlja0V2ZW50KT1cInByZXZpb3VzKClcIiBbaWRdPVwiZ2V0SWRQcmVmaXgoKSArICctcHJldmlvdXMnXCJcbiAgICAgICAgICAgICAgICAgIFtodG1sXT1cInByZXZpb3VzSWNvbiArIHByZWZpeCArIHByZXZpb3VzVGV4dCArIGdldFN1ZmZpeChjdXJyZW50UGFnZSAtIDIpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxIHx8ICFoYXNQcmV2aW91c1wiXG4gICAgICAgICAgICAgICAgICBjbGFzc2VzPVwiYy1idXR0b24tLXNtIGMtYnV0dG9uLS10cmFuc3BhcmVudCBtci14c1wiPjwvZGVzeS1idXR0b24+XG4gICAgICA8ZGVzeS1saXN0Ym94ICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMFwiIFtpZF09XCJpZCArICctbGlzdGJveCdcIlxuICAgICAgICAgICAgICAgICAgICBbaWRQcmVmaXhdPVwiaWRQcmVmaXhcIlxuICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJnZXRBY3RpdmVJdGVtVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiJ2MtbGlzdGJveC0tc20gYy1saXN0Ym94LS10cmFuc3BhcmVudCBtci14cydcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc1Rvb2x0aXBdPVwiJ21heC1oLTUyIG92ZXJmbG93LXktYXV0bydcIlxuICAgICAgICAgICAgICAgICAgICBbZG9lc0NoYW5nZUJ1dHRvblRleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ7IHRleHQ6ICdTZWxlY2Npb25hIHVuYSBww6FnaW5hIHBhcmEgY2FyZ2FyIGRhdG9zJywgY2xhc3NlczogJ3NyLW9ubHknIH1cIlxuICAgICAgICAgICAgICAgICAgICBbKGl0ZW1zKV09XCJpdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIChhY3RpdmVJdGVtQ2hhbmdlKT1cImhhbmRsZUFjdGl2ZUl0ZW1DaGFuZ2UoJGV2ZW50KVwiPjwvZGVzeS1saXN0Ym94PlxuICAgIDxkZXN5LWJ1dHRvbiAoY2xpY2tFdmVudCk9XCJuZXh0KClcIiBbaWRdPVwiZ2V0SWRQcmVmaXgoKSArICctbmV4dCdcIlxuICAgICAgICAgICAgICAgICAgW2h0bWxdPVwicHJlZml4ICsgbmV4dFRleHQgKyBnZXRTdWZmaXgoY3VycmVudFBhZ2UpICsgbmV4dEljb25cIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IG5QYWdlcyB8fCAhaGFzTmV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc2VzPVwiYy1idXR0b24tLXNtIGMtYnV0dG9uLS10cmFuc3BhcmVudCBtci14c1wiPjwvZGVzeS1idXR0b24+XG4gIDwvbmF2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc1NlbGVjdFwiPlxuICA8bmF2IFtjbGFzc109XCJbJ2ZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBmbGV4LTEgbWItYmFzZSBsZzptYi0wIHRleHQtc20nLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBpbmRleCBhcyBpXCI+XG4gICAgICAgIDxkZXN5LWJ1dHRvbiAqbmdJZj1cIml0ZW0uYWN0aXZlXCIgW2lkXT1cImdldEJ1dHRvbklkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCInPHN0cm9uZz4nICsgcHJlZml4ICsgKGkgKyAxKSArIGdldFN1ZmZpeChpKSArICc8L3N0cm9uZz4nXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPVwiYy1idXR0b24tLXByaW1hcnkgYy1idXR0b24tLWRpc2FibGVkIG1iLXNtIG1yLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiIGFyaWFDdXJyZW50PVwicGFnZVwiIHRhYmluZGV4PVwiLTFcIiA+PC9kZXN5LWJ1dHRvbj5cbiAgICAgICAgPGRlc3ktYnV0dG9uICpuZ0lmPVwiIWl0ZW0uYWN0aXZlXCIgW2lkXT1cImdldEJ1dHRvbklkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCJwcmVmaXggKyAoaSArIDEpICsgZ2V0U3VmZml4KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tFdmVudCk9XCJjaGFuZ2VQYWdlKGkgKyAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz1cIm1iLXNtIG1yLXNtXCI+PC9kZXN5LWJ1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9uYXY+XG48L25nLWNvbnRhaW5lcj5cbiAgXG48ZGl2ICpuZ0lmPVwiaGFzU2VsZWN0SXRlbXNQZXJQYWdlXCIgY2xhc3M9XCJibG9jayByZWxhdGl2ZSAtdG9wLXhzIGxnOm1sLWF1dG8gdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFya1wiPlxuICA8ZGVzeS1saXN0Ym94IFtjbGFzc2VzXT1cIidjLWxpc3Rib3gtLXNtIGMtbGlzdGJveC0tdHJhbnNwYXJlbnQnXCIgXG4gICAgICAgICAgICAgICAgW2NsYXNzZXNDb250YWluZXJdPVwiJ2ZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteHMnXCIgXG4gICAgICAgICAgICAgICAgW2lkXT1cIidpdGVtcy1saXN0Ym94LScgKyBnZXRJZFByZWZpeCgpXCJcbiAgICAgICAgICAgICAgICBbZG9lc0NoYW5nZUJ1dHRvblRleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zUGVyUGFnZUxpc3RcIlxuICAgICAgICAgICAgICAgIChhY3RpdmVJdGVtQ2hhbmdlKT1cImNoYW5nZUl0ZW1zUGVyUGFnZSgkZXZlbnQpXCI+XG4gICAgPGRlc3ktbGlzdGJveC1sYWJlbCBbY2xhc3Nlc109XCJsaXN0Ym94TGFiZWwgJiYgbGlzdGJveExhYmVsLmNsYXNzZXMgPyBsaXN0Ym94TGFiZWwuY2xhc3NlcyA6ICdpbmxpbmUtYmxvY2sgYWxpZ24tbWlkZGxlIG1iLTAnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0Ym94TGFiZWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGxpc3Rib3hMYWJlbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxpc3Rib3hMYWJlbFwiPlxuICAgICAgICAgIEl0ZW1zIHBvciBww6FnaW5hXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGVzeS1saXN0Ym94LWxhYmVsPlxuICA8L2Rlc3ktbGlzdGJveD5cbjwvZGl2PlxuXG5cbjxwIGNsYXNzPVwiYmxvY2sgcmVsYXRpdmUgLXRvcC14cyBsZzptbC1hdXRvIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmtcIiAqbmdJZj1cInRvdGFsSXRlbXMgJiYgaXRlbXNQZXJQYWdlXCI+XG4gIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlBvc2ljacOzbiBkZSBwYWdpbmFjacOzbjogPC9zcGFuPnt7KGN1cnJlbnRQYWdlIC0gMSkgKiBpdGVtc1BlclBhZ2UgKyAxfX0gLSB7e2dldExhc3RJdGVtTnVtYmVyKGN1cnJlbnRQYWdlIC0gMSl9fSBkZSB7e3RvdGFsSXRlbXN9fVxuPC9wPlxuIl19
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXBhZ2luYXRpb24vY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1wYWdpbmF0aW9uL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDL0ssT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFM0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDOUcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7O0FBT2pILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxzQkFBc0I7SUFnRDdELFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBM0M1QyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixZQUFPLEdBQVksSUFBSSxDQUFDO1FBQ3hCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixpQkFBWSxHQUFZLElBQUksQ0FBQztRQUM3QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGNB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SztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRXlCLGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUNJLEVBQUU7c0JBQWxDLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsU0FBUztnQkFHbUIsWUFBWTtzQkFBN0QsZUFBZTt1QkFBQywrQkFBK0I7Z0JBRUMsbUJBQW1CO3NCQUFuRSxlQUFlO3VCQUFDLDhCQUE4QjtnQkFFdEMsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBR0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXN5Q29udGVudENoaWxkIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uSXRlbURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBhZ2luYXRpb25JdGVtUGVyUGFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRpb24taXRlbS1wZXJwYWdlL3BhZ2luYXRpb24taXRlbS1wZXJwYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTGlzdGJveExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdGlvbi1saXN0Ym94LWxhYmVsL3BhZ2luYXRpb24tbGlzdGJveC1sYWJlbC5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgQElucHV0KCkgaGFzU2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc1ByZXZpb3VzOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGFzTmV4dDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0ZpcnN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGFzTGFzdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dQcmV2aW91czogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dOZXh0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0ZpcnN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dMYXN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHByZXZpb3VzVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBuZXh0VGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBmaXJzdFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgbGFzdFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgaGFzU2VsZWN0SXRlbXNQZXJQYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcblxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3Nlc0NvbnRhaW5lcjogYW55O1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBpZDogYW55O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihQYWdpbmF0aW9uTGlzdGJveExhYmVsQ29tcG9uZW50KSBsaXN0Ym94TGFiZWw6IFBhZ2luYXRpb25MaXN0Ym94TGFiZWxDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihQYWdpbmF0aW9uSXRlbVBlclBhZ2VDb21wb25lbnQpIGxpc3Rib3hJdGVtc1BlclBhZ2U6IFF1ZXJ5TGlzdDxQYWdpbmF0aW9uSXRlbVBlclBhZ2VDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTsgLy8gPT0gY3VycmVudFBhZ2VpbmRleCArIDFcbiAgQE91dHB1dCgpIGN1cnJlbnRQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblxuICBASW5wdXQoKSBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgQE91dHB1dCgpIGl0ZW1zUGVyUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIG5QYWdlczogbnVtYmVyO1xuICBpdGVtczogUGFnaW5hdGlvbkl0ZW1EYXRhW107XG4gIGl0ZW1zUGVyUGFnZUxpc3Q6IFBhZ2luYXRpb25JdGVtUGVyUGFnZUNvbXBvbmVudFtdO1xuICBuUGFnZXNIaXN0b3J5ID0gMDtcblxuICBkZWZhdWx0VGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHByZXZpb3VzSWNvbiA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiAgd2lkdGg9XCIxZW1cIiBoZWlnaHQ9XCIxZW1cIiBjbGFzcz1cInNlbGYtY2VudGVyIGgtMi41IHctMi41IG1yLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjxwYXRoIGQ9XCJNNTQuODcgNzEuNzdhMi41IDIuNSAwIDAxMC0zLjU0TDEwNiAxNy4wN0ExMCAxMCAwIDEwOTEuODkgMi45M0wzNS40MyA1OS4zOWExNSAxNSAwIDAwMCAyMS4yMmw1Ni40NiA1Ni40NkExMCAxMCAwIDEwMTA2IDEyMi45M3pcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgLz48L3N2Zz4nO1xuICByZWFkb25seSBuZXh0SWNvbiA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiB3aWR0aD1cIjFlbVwiIGhlaWdodD1cIjFlbVwiIGNsYXNzPVwic2VsZi1jZW50ZXIgaC0yLjUgdy0yLjUgbWwtMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PHBhdGggZD1cIk0zNCAxMzcuMDdhMTAgMTAgMCAwMTAtMTQuMTRsNTEuMTMtNTEuMTZhMi41IDIuNSAwIDAwMC0zLjU0TDM0IDE3LjA3QTEwIDEwIDAgMDE0OC4xMSAyLjkzbDU2LjQ2IDU2LjQ2YTE1IDE1IDAgMDEwIDIxLjIybC01Ni40NiA1Ni40NmExMCAxMCAwIDAxLTE0LjExIDB6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+PC9zdmc+JztcbiAgcmVhZG9ubHkgZmlyc3RJY29uID0gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjFlbVwiIGhlaWdodD1cIjFlbVwiIGNsYXNzPVwic2VsZi1jZW50ZXIgaC0yLjUgdy0yLjUgbXItMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PGc+PHBhdGggZD1cIk0xMC40MiwxMmEyLjY0LDIuNjQsMCwwLDEsLjc3LTEuODhMMjAuNzMuNThhMS43NywxLjc3LDAsMCwxLDIuNSwyLjVsLTguNzQsOC43NGEuMjcuMjcsMCwwLDAsMCwuMzZsOC43NCw4Ljc0YTEuNzcsMS43NywwLDAsMS0yLjUsMi41bC05LjU0LTkuNTRBMi42NCwyLjY0LDAsMCwxLDEwLjQyLDEyWlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+PHBhdGggZD1cIk0uMjUsMTJBMi42NSwyLjY1LDAsMCwxLDEsMTAuMTJMMTAuNTcuNThhMS43NywxLjc3LDAsMCwxLDIuNSwyLjVMNC4zMywxMS44MmEuMjUuMjUsMCwwLDAsMCwuMzZsOC43NCw4Ljc0YTEuNzcsMS43NywwLDAsMS0yLjUsMi41TDEsMTMuODhBMi42NSwyLjY1LDAsMCwxLC4yNSwxMlpcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPjwvZz48L3N2Zz4nO1xuICByZWFkb25seSBsYXN0SWNvbiA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIxZW1cIiBoZWlnaHQ9XCIxZW1cIiBjbGFzcz1cInNlbGYtY2VudGVyIGgtMi41IHctMi41IG1sLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjxnPjxwYXRoIGQ9XCJNMTMuNTgsMTJhMi42NCwyLjY0LDAsMCwxLS43NywxLjg4TDMuMjcsMjMuNDJhMS43NywxLjc3LDAsMCwxLTIuNS0yLjVsOC43NC04Ljc0YS4yNy4yNywwLDAsMCwwLS4zNkwuNzcsMy4wOEExLjc3LDEuNzcsMCwwLDEsMy4yNy41OGw5LjU0LDkuNTRBMi42NCwyLjY0LDAsMCwxLDEzLjU4LDEyWlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+PHBhdGggZD1cIk0yMy43NSwxMkEyLjY1LDIuNjUsMCwwLDEsMjMsMTMuODhsLTkuNTQsOS41NGExLjc3LDEuNzcsMCwwLDEtMi41LTIuNWw4Ljc0LTguNzRhLjI1LjI1LDAsMCwwLDAtLjM2TDEwLjkzLDMuMDhhMS43NywxLjc3LDAsMCwxLDIuNS0yLjVMMjMsMTAuMTJBMi42NSwyLjY1LDAsMCwxLDIzLjc1LDEyWlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+PC9nPjwvc3ZnPic7XG4gIHJlYWRvbmx5IHByZWZpeCA9ICc8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5Qw6FnaW5hJm5ic3A7PC9zcGFuPic7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID09PSBudWxsIHx8IHRoaXMuY3VycmVudFBhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgfVxuICAgIHRoaXMuY2hlY2tDaGFuZ2VzKCk7XG4gICAgdGhpcy5jbGFzc2VzQ29udGFpbmVyID0gdGhpcy5jbGFzc2VzQ29udGFpbmVyID8gdGhpcy5jbGFzc2VzQ29udGFpbmVyICs9ICcgbGc6ZmxleCBsZzpmbGV4LXdyYXAgbGc6aXRlbXMtY2VudGVyIGxnOmdhcC1iYXNlJyA6ICdsZzpmbGV4IGxnOmZsZXgtd3JhcCBsZzppdGVtcy1jZW50ZXIgbGc6Z2FwLWJhc2UnXG4gICAgdGhpcy5pZCA9IHRoaXMuaWQgPyB0aGlzLmlkIDogbnVsbFxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3Rib3hJdGVtc1BlclBhZ2UpIHtcbiAgICAgIHRoaXMuc2V0dXBJdGVtc1BlclBhZ2UoKTtcbiAgICAgIHRoaXMubGlzdGJveEl0ZW1zUGVyUGFnZS5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dXBJdGVtc1BlclBhZ2UoKTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY2hlY2tDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMublBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgICBcbiAgICBpZiAoIXRoaXMuY3VycmVudFBhZ2UgfHwgdGhpcy5jdXJyZW50UGFnZSA8IDEgfHwgdGhpcy5jdXJyZW50UGFnZSA+IHRoaXMublBhZ2VzKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmZpcnN0VGV4dCkge1xuICAgICAgdGhpcy5maXJzdFRleHQgPSAnQW50ZXJpb3InO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucHJldmlvdXNUZXh0KSB7XG4gICAgICB0aGlzLnByZXZpb3VzVGV4dCA9ICdBbnRlcmlvcic7XG4gICAgfVxuICAgIGlmICghdGhpcy5uZXh0VGV4dCkge1xuICAgICAgdGhpcy5uZXh0VGV4dCA9ICdTaWd1aWVudGUnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubGFzdFRleHQpIHtcbiAgICAgIHRoaXMubGFzdFRleHQgPSAnU2lndWllbnRlJztcbiAgICB9XG4gICAgdGhpcy5idWlsZFBhZ2VzKCk7XG4gIH1cblxuICBnZXRTdWZmaXgocGFnZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGFnZSA+PSAwICYmIHBhZ2UgKiB0aGlzLml0ZW1zUGVyUGFnZSA8IHRoaXMudG90YWxJdGVtcyA/XG4gICAgICBgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+OiZuYnNwO1DDoWdpbmEgJHtwYWdlICsgMX0gY29uIGxvcyByZXN1bHRhZG9zIGRlbCAke3BhZ2UgKiB0aGlzLml0ZW1zUGVyUGFnZSArIDF9IGFsICR7dGhpcy5nZXRMYXN0SXRlbU51bWJlcihwYWdlKX08L3NwYW4+YFxuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldExhc3RJdGVtTnVtYmVyKHBhZ2VJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oKHBhZ2VJbmRleCArIDEpICogdGhpcy5pdGVtc1BlclBhZ2UsIHRoaXMudG90YWxJdGVtcyk7XG4gIH1cblxuICBidWlsZFBhZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5QYWdlc0hpc3RvcnkgIT0gdGhpcy5uUGFnZXMpIHtcbiAgICAgIHRoaXMublBhZ2VzSGlzdG9yeSA9IHRoaXMublBhZ2VzXG4gICAgICBjb25zdCBpdGVtTGlzdCA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5QYWdlczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW06IFBhZ2luYXRpb25JdGVtRGF0YSA9IHtcbiAgICAgICAgICB0ZXh0OiBpICsgMSxcbiAgICAgICAgICBhY3RpdmU6ICgoaSArIDEpID09PSB0aGlzLmN1cnJlbnRQYWdlKSxcbiAgICAgICAgICByb3V0ZXJMaW5rOiBbXVxuICAgICAgICB9O1xuICAgICAgICBpdGVtTGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1MaXN0O1xuICAgIH1cbiAgfVxuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWRQcmVmaXggPyB0aGlzLmlkUHJlZml4IDogJ3BhZ2luYXRpb24taXRlbSc7XG4gIH1cblxuICBnZXRCdXR0b25JZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJZFByZWZpeCgpICsgJy0nICsgKytpbmRleDtcbiAgfVxuXG4gIGNoYW5nZVBhZ2UoY3VycmVudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaGFzUGFnZUNoYW5nZSA9IGN1cnJlbnQgIT09IHRoaXMuY3VycmVudFBhZ2U7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGN1cnJlbnQ7XG4gICAgaWYgKGhhc1BhZ2VDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1tpXTtcbiAgICAgIGl0ZW0uYWN0aXZlID0gKChpICsgMSkgPT09IHRoaXMuY3VycmVudFBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gMSkge1xuICAgICAgdGhpcy5jaGFuZ2VQYWdlKHRoaXMuY3VycmVudFBhZ2UgLSAxKTtcbiAgICB9XG4gIH1cblxuICBuZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy5uUGFnZXMpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFnZSh0aGlzLmN1cnJlbnRQYWdlICsgMSk7XG4gICAgfVxuICB9XG4gIFxuICBmaXJzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IDEpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcbiAgICB9XG4gIH1cbiAgXG4gIGxhc3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPCB0aGlzLm5QYWdlcykge1xuICAgICAgdGhpcy5jaGFuZ2VQYWdlKHRoaXMublBhZ2VzKTtcbiAgICB9XG4gIH1cbiAgXG4gIGdldEFjdGl2ZUl0ZW1UZXh0KCk6IGFueSB7XG4gICAgY29uc3QgYWN0aXZlSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uYWN0aXZlKTtcbiAgICByZXR1cm4gYWN0aXZlSXRlbXMgJiYgYWN0aXZlSXRlbXMubGVuZ3RoID4gMCA/IGFjdGl2ZUl0ZW1zWzBdLnRleHQgOiAnJztcbiAgfVxuXG4gIGdldExpc3Rib3hMYWJlbCgpOiBQYWdpbmF0aW9uTGlzdGJveExhYmVsQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5saXN0Ym94TGFiZWwgPyB0aGlzLmxpc3Rib3hMYWJlbCA6IG51bGw7XG4gIH1cblxuICBjaGFuZ2VJdGVtc1BlclBhZ2UoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCAmJiBldmVudC52YWx1ZSkge1xuICAgICAgbGV0IG5ld1ZhbHVlID0gZXZlbnQudmFsdWU7XG4gICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5jaGVja0NoYW5nZXMoKTtcbiAgICAgIHRoaXMuaXRlbXNQZXJQYWdlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQWN0aXZlSXRlbUNoYW5nZShldmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoYW5nZVBhZ2UoK2V2ZW50LnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwSXRlbXNQZXJQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlTGlzdCA9IHRoaXMubGlzdGJveEl0ZW1zUGVyUGFnZSAmJiB0aGlzLmxpc3Rib3hJdGVtc1BlclBhZ2UubGVuZ3RoID4gMCA/IHRoaXMubGlzdGJveEl0ZW1zUGVyUGFnZS50b0FycmF5KCkgOiBudWxsO1xuICAgIGlmICh0aGlzLml0ZW1zUGVyUGFnZUxpc3QpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtc1BlclBhZ2VJdGVtID0gdGhpcy5pdGVtc1BlclBhZ2VMaXN0LmZpbmQoaSA9PiBpLnZhbHVlID09PSB0aGlzLml0ZW1zUGVyUGFnZSk7XG4gICAgICBpZiAoY3VycmVudEl0ZW1zUGVyUGFnZUl0ZW0pIHtcbiAgICAgICAgY3VycmVudEl0ZW1zUGVyUGFnZUl0ZW0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhhc0FjdGl2ZSA9IHRoaXMuaXRlbXNQZXJQYWdlTGlzdC5maW5kKGkgPT4gaS5hY3RpdmUpO1xuICAgICAgaWYgKCFoYXNBY3RpdmUgJiYgdGhpcy5pdGVtc1BlclBhZ2VMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2VMaXN0WzBdLmFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1NlbGVjdFwiPlxuICA8cCBjbGFzcz1cInctZnVsbCBtYi14cyB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrXCI+XG4gICAgU2VsZWNjaW9uYSB1bmEgcMOhZ2luYSBwYXJhIGNhcmdhciBkYXRvc1xuICA8L3A+XG4gIDxuYXYgW2NsYXNzXT1cIlsnZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGZsZXgtMSBtYi1iYXNlIGxnOm1iLTAgdGV4dC1zbScsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICA8ZGVzeS1idXR0b24gKm5nSWY9XCJzaG93Rmlyc3RcIiAoY2xpY2tFdmVudCk9XCJmaXJzdCgpXCIgW2lkXT1cImdldElkUHJlZml4KCkgKyAnLWZpcnN0J1wiXG4gICAgICAgICAgICAgICAgICBbaHRtbF09XCJmaXJzdEljb24gKyBwcmVmaXggKyBmaXJzdFRleHQgKyBnZXRTdWZmaXgoY3VycmVudFBhZ2UgLSAyKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMSB8fCAhaGFzRmlyc3RcIlxuICAgICAgICAgICAgICAgICAgY2xhc3Nlcz1cImMtYnV0dG9uLS1zbSBjLWJ1dHRvbi0tdHJhbnNwYXJlbnQgbXIteHNcIiB0eXBlPVwiYnV0dG9uXCI+PC9kZXN5LWJ1dHRvbj5cbiAgICA8ZGVzeS1idXR0b24gKm5nSWY9XCJzaG93UHJldmlvdXNcIiAoY2xpY2tFdmVudCk9XCJwcmV2aW91cygpXCIgW2lkXT1cImdldElkUHJlZml4KCkgKyAnLXByZXZpb3VzJ1wiXG4gICAgICAgICAgICAgICAgICBbaHRtbF09XCJwcmV2aW91c0ljb24gKyBwcmVmaXggKyBwcmV2aW91c1RleHQgKyBnZXRTdWZmaXgoY3VycmVudFBhZ2UgLSAyKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMSB8fCAhaGFzUHJldmlvdXNcIlxuICAgICAgICAgICAgICAgICAgY2xhc3Nlcz1cImMtYnV0dG9uLS1zbSBjLWJ1dHRvbi0tdHJhbnNwYXJlbnQgbXIteHNcIiB0eXBlPVwiYnV0dG9uXCI+PC9kZXN5LWJ1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIHBsLXNtXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3ctZnVsbCBsZzp3LWF1dG8nOiBzaG93Rmlyc3QgfHwgc2hvd0xhc3R9XCI+XG4gICAgICA8cCAqbmdJZj1cInNob3dGaXJzdCB8fCBzaG93TGFzdFwiIGNsYXNzPVwibGc6aGlkZGVuIG1yLXhzIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmtcIj5Qw6FnaW5hIGFjdHVhbDo8L3A+XG4gICAgICAgICAgPGRlc3ktbGlzdGJveCAqbmdJZj1cIml0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIiBbaWRdPVwiaWQgKyAnLWxpc3Rib3gnXCJcbiAgICAgICAgICAgIFtpZFByZWZpeF09XCJpZFByZWZpeFwiXG4gICAgICAgICAgICBbdGV4dF09XCJnZXRBY3RpdmVJdGVtVGV4dCgpXCJcbiAgICAgICAgICAgIFtjbGFzc2VzXT1cIidjLWxpc3Rib3gtLXNtIGMtbGlzdGJveC0tdHJhbnNwYXJlbnQgbXIteHMnXCJcbiAgICAgICAgICAgIFtjbGFzc2VzVG9vbHRpcF09XCInbWF4LWgtNTIgb3ZlcmZsb3cteS1hdXRvJ1wiXG4gICAgICAgICAgICBbZG9lc0NoYW5nZUJ1dHRvblRleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwieyB0ZXh0OiAnU2VsZWNjaW9uYSB1bmEgcMOhZ2luYSBwYXJhIGNhcmdhciBkYXRvcycsIGNsYXNzZXM6ICdzci1vbmx5JyB9XCJcbiAgICAgICAgICAgIFsoaXRlbXMpXT1cIml0ZW1zXCJcbiAgICAgICAgICAgIChhY3RpdmVJdGVtQ2hhbmdlKT1cImhhbmRsZUFjdGl2ZUl0ZW1DaGFuZ2UoJGV2ZW50KVwiPjwvZGVzeS1saXN0Ym94PlxuICAgIDwvZGl2PlxuICAgIDxkZXN5LWJ1dHRvbiAqbmdJZj1cInNob3dOZXh0XCIgKGNsaWNrRXZlbnQpPVwibmV4dCgpXCIgW2lkXT1cImdldElkUHJlZml4KCkgKyAnLW5leHQnXCJcbiAgICAgICAgICAgICAgICAgIFtodG1sXT1cInByZWZpeCArIG5leHRUZXh0ICsgZ2V0U3VmZml4KGN1cnJlbnRQYWdlKSArIG5leHRJY29uXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSBuUGFnZXMgfHwgIWhhc05leHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3Nlcz1cImMtYnV0dG9uLS1zbSBjLWJ1dHRvbi0tdHJhbnNwYXJlbnQgbXIteHNcIiB0eXBlPVwiYnV0dG9uXCI+PC9kZXN5LWJ1dHRvbj5cbiAgICA8ZGVzeS1idXR0b24gKm5nSWY9XCJzaG93TGFzdFwiIChjbGlja0V2ZW50KT1cImxhc3QoKVwiIFtpZF09XCJnZXRJZFByZWZpeCgpICsgJy1sYXN0J1wiXG4gICAgICAgICAgICAgICAgICBbaHRtbF09XCJwcmVmaXggKyBsYXN0VGV4dCArIGdldFN1ZmZpeChjdXJyZW50UGFnZSkgKyBsYXN0SWNvblwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gblBhZ2VzIHx8ICFoYXNMYXN0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzZXM9XCJjLWJ1dHRvbi0tc20gYy1idXR0b24tLXRyYW5zcGFyZW50IG1yLXhzXCIgdHlwZT1cImJ1dHRvblwiPjwvZGVzeS1idXR0b24+XG4gIDwvbmF2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc1NlbGVjdFwiPlxuICA8bmF2IFtjbGFzc109XCJbJ2ZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBmbGV4LTEgbWItYmFzZSBsZzptYi0wIHRleHQtc20nLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBpbmRleCBhcyBpXCI+XG4gICAgICAgIDxkZXN5LWJ1dHRvbiAqbmdJZj1cIml0ZW0uYWN0aXZlXCIgW2lkXT1cImdldEJ1dHRvbklkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCInPHN0cm9uZz4nICsgcHJlZml4ICsgKGkgKyAxKSArIGdldFN1ZmZpeChpKSArICc8L3N0cm9uZz4nXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPVwiYy1idXR0b24tLXByaW1hcnkgYy1idXR0b24tLWRpc2FibGVkIG1iLXNtIG1yLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiIGFyaWFDdXJyZW50PVwicGFnZVwiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCI+PC9kZXN5LWJ1dHRvbj5cbiAgICAgICAgPGRlc3ktYnV0dG9uICpuZ0lmPVwiIWl0ZW0uYWN0aXZlXCIgW2lkXT1cImdldEJ1dHRvbklkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCJwcmVmaXggKyAoaSArIDEpICsgZ2V0U3VmZml4KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tFdmVudCk9XCJjaGFuZ2VQYWdlKGkgKyAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz1cIm1iLXNtIG1yLXNtXCIgdHlwZT1cImJ1dHRvblwiPjwvZGVzeS1idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmF2PlxuPC9uZy1jb250YWluZXI+XG4gIFxuPGRpdiAqbmdJZj1cImhhc1NlbGVjdEl0ZW1zUGVyUGFnZVwiIGNsYXNzPVwiYmxvY2sgcmVsYXRpdmUgLXRvcC14cyBsZzptbC1hdXRvIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmtcIj5cbiAgPGRlc3ktbGlzdGJveCBbY2xhc3Nlc109XCInYy1saXN0Ym94LS1zbSBjLWxpc3Rib3gtLXRyYW5zcGFyZW50J1wiIFxuICAgICAgICAgICAgICAgIFtjbGFzc2VzQ29udGFpbmVyXT1cIidmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXhzJ1wiIFxuICAgICAgICAgICAgICAgIFtpZF09XCInaXRlbXMtbGlzdGJveC0nICsgZ2V0SWRQcmVmaXgoKVwiXG4gICAgICAgICAgICAgICAgW2RvZXNDaGFuZ2VCdXR0b25UZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1BlclBhZ2VMaXN0XCJcbiAgICAgICAgICAgICAgICAoYWN0aXZlSXRlbUNoYW5nZSk9XCJjaGFuZ2VJdGVtc1BlclBhZ2UoJGV2ZW50KVwiPlxuICAgIDxkZXN5LWxpc3Rib3gtbGFiZWwgW2NsYXNzZXNdPVwibGlzdGJveExhYmVsICYmIGxpc3Rib3hMYWJlbC5jbGFzc2VzID8gbGlzdGJveExhYmVsLmNsYXNzZXMgOiAnaW5saW5lLWJsb2NrIGFsaWduLW1pZGRsZSBtYi0wJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdGJveExhYmVsXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBsaXN0Ym94TGFiZWwgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaXN0Ym94TGFiZWxcIj5cbiAgICAgICAgICBJdGVtcyBwb3IgcMOhZ2luYVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rlc3ktbGlzdGJveC1sYWJlbD5cbiAgPC9kZXN5LWxpc3Rib3g+XG48L2Rpdj5cblxuXG48cCBjbGFzcz1cImJsb2NrIHJlbGF0aXZlIC10b3AteHMgbGc6bWwtYXV0byB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrXCIgKm5nSWY9XCJ0b3RhbEl0ZW1zICYmIGl0ZW1zUGVyUGFnZVwiPlxuICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5Qb3NpY2nDs24gZGUgcGFnaW5hY2nDs246IDwvc3Bhbj57eyhjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMX19IC0ge3tnZXRMYXN0SXRlbU51bWJlcihjdXJyZW50UGFnZSAtIDEpfX0gZGUge3t0b3RhbEl0ZW1zfX1cbjwvcD5cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Component, ContentChildren, QueryList } from '@angular/core';
2
+ import { TableCellComponent } from './table-cell.component';
3
+ import * as i0 from "@angular/core";
4
+ export class TableFooterComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableFooterComponent, selector: "desy-table-footer", queries: [{ propertyName: "cells", predicate: TableCellComponent }], ngImport: i0, template: '', isInline: true }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableFooterComponent, decorators: [{
9
+ type: Component,
10
+ args: [{
11
+ selector: 'desy-table-footer',
12
+ template: ''
13
+ }]
14
+ }], propDecorators: { cells: [{
15
+ type: ContentChildren,
16
+ args: [TableCellComponent]
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdGFibGVzL2NvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1mb290ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO21HQUFwQixvQkFBb0IsK0VBQ2Qsa0JBQWtCLDZCQUh6QixFQUFFOzs0RkFFRCxvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OEJBRXNDLEtBQUs7c0JBQXpDLGVBQWU7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktdGFibGUtZm9vdGVyJyxcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRm9vdGVyQ29tcG9uZW50IHtcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUNlbGxDb21wb25lbnQpIGNlbGxzOiBRdWVyeUxpc3Q8VGFibGVDZWxsQ29tcG9uZW50Pjtcbn1cbiJdfQ==
@@ -1,10 +1,11 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, Input, ContentChildren, QueryList } from '@angular/core';
2
+ import { Component, ContentChildren, Input, QueryList } from '@angular/core';
3
3
  import { AccessibilityComponent } from '../../../shared/components';
4
- import { TableHeaderComponent } from './components/table-header.component';
4
+ import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
5
5
  import { TableCaptionComponent } from './components/table-caption.component';
6
+ import { TableFooterComponent } from './components/table-footer.component';
7
+ import { TableHeaderComponent } from './components/table-header.component';
6
8
  import { TableRowComponent } from './components/table-row.component';
7
- import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common";
10
11
  import * as i2 from "../../../shared/directives/custom-inner-content.directive";
@@ -23,6 +24,16 @@ export class TableComponent extends AccessibilityComponent {
23
24
  }
24
25
  return headerCells;
25
26
  }
27
+ getFooterCells() {
28
+ let footCells = [];
29
+ if (this.footerComponent && this.footerComponent.cells) {
30
+ footCells = this.footerComponent.cells.toArray();
31
+ }
32
+ else if (this.foot) {
33
+ footCells = this.foot;
34
+ }
35
+ return footCells;
36
+ }
26
37
  getRows() {
27
38
  let rowList = [];
28
39
  if (this.rowComponentList && this.rowComponentList.length > 0) {
@@ -37,7 +48,7 @@ export class TableComponent extends AccessibilityComponent {
37
48
  return row instanceof TableRowComponent ? row.cells.toArray() : row;
38
49
  }
39
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "desy-table", inputs: { rows: "rows", head: "head", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", classes: "classes", id: "id", wrapper: "wrapper" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableHeaderComponent }, { propertyName: "rowComponentList", predicate: TableRowComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-errormessage]=\"ariaErrorMessage\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"ariaHidden\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-current]=\"ariaCurrent\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-haspopup]=\"ariaHasPopup\"\n [attr.tabindex]=\"tabindex\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [attr.role]=\"headerCell.role\"\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\n [attr.aria-label]=\"headerCell.ariaLabel\"\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\n [attr.aria-controls]=\"headerCell.ariaControls\"\n [attr.aria-current]=\"headerCell.ariaCurrent\"\n [attr.aria-live]=\"headerCell.ariaLive\"\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\n [attr.tabindex]=\"headerCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "pipe", type: i3.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "desy-table", inputs: { rows: "rows", head: "head", foot: "foot", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", classes: "classes", id: "id", wrapper: "wrapper" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableHeaderComponent }, { propertyName: "footerComponent", predicate: TableFooterComponent }, { propertyName: "rowComponentList", predicate: TableRowComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-errormessage]=\"ariaErrorMessage\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"ariaHidden\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-current]=\"ariaCurrent\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-haspopup]=\"ariaHasPopup\"\n [attr.tabindex]=\"tabindex\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [attr.role]=\"headerCell.role\"\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\n [attr.aria-label]=\"headerCell.ariaLabel\"\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\n [attr.aria-controls]=\"headerCell.ariaControls\"\n [attr.aria-current]=\"headerCell.ariaCurrent\"\n [attr.aria-live]=\"headerCell.ariaLive\"\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\n [attr.tabindex]=\"headerCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.role]=\"footCell.role\"\n [attr.aria-describedby]=\"footCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"footCell.ariaErrorMessage\"\n [attr.aria-label]=\"footCell.ariaLabel\"\n [attr.aria-labelledby]=\"footCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"footCell.ariaHidden\"\n [attr.aria-disabled]=\"footCell.ariaDisabled\"\n [attr.aria-controls]=\"footCell.ariaControls\"\n [attr.aria-current]=\"footCell.ariaCurrent\"\n [attr.aria-live]=\"footCell.ariaLive\"\n [attr.aria-expanded]=\"footCell.ariaExpanded\"\n [attr.aria-haspopup]=\"footCell.ariaHasPopup\"\n [attr.tabindex]=\"footCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "pipe", type: i3.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
41
52
  }
42
53
  __decorate([
43
54
  DesyContentChild(),
@@ -47,13 +58,19 @@ __decorate([
47
58
  DesyContentChild(),
48
59
  __metadata("design:type", TableHeaderComponent)
49
60
  ], TableComponent.prototype, "headerComponent", void 0);
61
+ __decorate([
62
+ DesyContentChild(),
63
+ __metadata("design:type", TableFooterComponent)
64
+ ], TableComponent.prototype, "footerComponent", void 0);
50
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
51
66
  type: Component,
52
- args: [{ selector: 'desy-table', template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-errormessage]=\"ariaErrorMessage\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"ariaHidden\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-current]=\"ariaCurrent\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-haspopup]=\"ariaHasPopup\"\n [attr.tabindex]=\"tabindex\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [attr.role]=\"headerCell.role\"\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\n [attr.aria-label]=\"headerCell.ariaLabel\"\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\n [attr.aria-controls]=\"headerCell.ariaControls\"\n [attr.aria-current]=\"headerCell.ariaCurrent\"\n [attr.aria-live]=\"headerCell.ariaLive\"\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\n [attr.tabindex]=\"headerCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
67
+ args: [{ selector: 'desy-table', template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-errormessage]=\"ariaErrorMessage\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"ariaHidden\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-current]=\"ariaCurrent\"\n [attr.aria-live]=\"ariaLive\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-haspopup]=\"ariaHasPopup\"\n [attr.tabindex]=\"tabindex\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [attr.role]=\"headerCell.role\"\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\n [attr.aria-label]=\"headerCell.ariaLabel\"\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\n [attr.aria-controls]=\"headerCell.ariaControls\"\n [attr.aria-current]=\"headerCell.ariaCurrent\"\n [attr.aria-live]=\"headerCell.ariaLive\"\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\n [attr.tabindex]=\"headerCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.role]=\"footCell.role\"\n [attr.aria-describedby]=\"footCell.ariaDescribedBy\"\n [attr.aria-errormessage]=\"footCell.ariaErrorMessage\"\n [attr.aria-label]=\"footCell.ariaLabel\"\n [attr.aria-labelledby]=\"footCell.ariaLabelledBy\"\n [attr.aria-hidden]=\"footCell.ariaHidden\"\n [attr.aria-disabled]=\"footCell.ariaDisabled\"\n [attr.aria-controls]=\"footCell.ariaControls\"\n [attr.aria-current]=\"footCell.ariaCurrent\"\n [attr.aria-live]=\"footCell.ariaLive\"\n [attr.aria-expanded]=\"footCell.ariaExpanded\"\n [attr.aria-haspopup]=\"footCell.ariaHasPopup\"\n [attr.tabindex]=\"footCell.tabindex\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
53
68
  }], propDecorators: { rows: [{
54
69
  type: Input
55
70
  }], head: [{
56
71
  type: Input
72
+ }], foot: [{
73
+ type: Input
57
74
  }], caption: [{
58
75
  type: Input
59
76
  }], captionClasses: [{
@@ -72,8 +89,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
72
89
  }], headerComponent: [{
73
90
  type: ContentChildren,
74
91
  args: [TableHeaderComponent]
92
+ }], footerComponent: [{
93
+ type: ContentChildren,
94
+ args: [TableFooterComponent]
75
95
  }], rowComponentList: [{
76
96
  type: ContentChildren,
77
97
  args: [TableRowComponent]
78
98
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXpFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDOzs7OztBQU96RixNQUFNLE9BQU8sY0FBZSxTQUFRLHNCQUFzQjtJQW1CeEQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtZQUN0RCxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDcEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3RCxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzNDO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFFakIsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFpQztRQUMzQyxPQUFPLEdBQUcsWUFBWSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3RFLENBQUM7K0dBOUNVLGNBQWM7bUdBQWQsY0FBYywyUUFZUixxQkFBcUIsa0RBR3JCLG9CQUFvQixtREFFcEIsaUJBQWlCLG9EQy9CcEMsMnZNQWtHQTs7QUR6RUU7SUFBQyxnQkFBZ0IsRUFBRTs4QkFDdUMscUJBQXFCO3dEQUFDO0FBRWhGO0lBQUMsZ0JBQWdCLEVBQUU7OEJBQ3FDLG9CQUFvQjt1REFBQzs0RkFmbEUsY0FBYztrQkFKMUIsU0FBUzsrQkFDRSxZQUFZOzhCQUtiLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdrQyxnQkFBZ0I7c0JBQXZELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdDLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVELGdCQUFnQjtzQkFBbkQsZUFBZTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQge0NlbGxEYXRhLCBXcmFwcGVyRGF0YX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1RhYmxlSGVhZGVyQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYmxlQ2VsbENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVDYXB0aW9uQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtY2FwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZVJvd0NvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHJvd3M6IEFycmF5PENlbGxEYXRhW10+O1xuICBASW5wdXQoKSBoZWFkOiBDZWxsRGF0YVtdO1xuICBASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhcHRpb25DbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpcnN0Q2VsbElzSGVhZGVyOiBib29sZWFuO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHdyYXBwZXI6IFdyYXBwZXJEYXRhO1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUNhcHRpb25Db21wb25lbnQpIGNhcHRpb25Db21wb25lbnQ6IFRhYmxlQ2FwdGlvbkNvbXBvbmVudDtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVIZWFkZXJDb21wb25lbnQpIGhlYWRlckNvbXBvbmVudDogVGFibGVIZWFkZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZVJvd0NvbXBvbmVudCkgcm93Q29tcG9uZW50TGlzdDogUXVlcnlMaXN0PFRhYmxlUm93Q29tcG9uZW50PjtcblxuICBnZXRDYXB0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0aW9uQ29tcG9uZW50ID8gdGhpcy5jYXB0aW9uQ29tcG9uZW50LmNsYXNzZXMgOiB0aGlzLmNhcHRpb25DbGFzc2VzO1xuICB9XG5cbiAgZ2V0SGVhZGVyQ2VsbHMoKTogVGFibGVDZWxsQ29tcG9uZW50W118Q2VsbERhdGFbXSB7XG4gICAgbGV0IGhlYWRlckNlbGxzID0gW107XG4gICAgaWYgKHRoaXMuaGVhZGVyQ29tcG9uZW50ICYmIHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzKSB7XG4gICAgICBoZWFkZXJDZWxscyA9IHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzLnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhZCkge1xuICAgICAgaGVhZGVyQ2VsbHMgPSB0aGlzLmhlYWQ7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJDZWxscztcbiAgfVxuXG4gIGdldFJvd3MoKSB7XG4gICAgbGV0IHJvd0xpc3QgPSBbXTtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0ICYmIHRoaXMucm93Q29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICByb3dMaXN0ID0gdGhpcy5yb3dDb21wb25lbnRMaXN0LnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucm93cykge1xuICAgICAgcm93TGlzdCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgcmV0dXJuIHJvd0xpc3Q7XG4gICAgLy90aGlzLnJvd0NvbXBvbmVudExpc3QgJiYgdGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpIDogdGhpcy5yb3dzO1xuICB9XG5cbiAgZ2V0Um93Q2VsbHMocm93OiBUYWJsZVJvd0NvbXBvbmVudHxDZWxsRGF0YVtdKTogVGFibGVDZWxsQ29tcG9uZW50W118Q2VsbERhdGFbXSB7XG4gICAgcmV0dXJuIHJvdyBpbnN0YW5jZW9mIFRhYmxlUm93Q29tcG9uZW50ID8gcm93LmNlbGxzLnRvQXJyYXkoKSA6IHJvdztcbiAgfVxuXG59XG5cbiIsIjxuZy10ZW1wbGF0ZSAjdGFibGVDb250ZW50PlxuICA8dGFibGUgW2NsYXNzXT1cIlsnYy10YWJsZScsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkXCJcbiAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiYXJpYUxpdmVcIlxuICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWRcIlxuICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXBcIlxuICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIj5cbiAgICA8Y2FwdGlvbiAqbmdJZj1cImNhcHRpb24gfHwgY2FwdGlvbkNvbXBvbmVudFwiIFtjbGFzc109XCJnZXRDYXB0aW9uQ2xhc3MoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjYXB0aW9uQ29tcG9uZW50LCB0ZXh0OiBjYXB0aW9uID8gY2FwdGlvbiA6IG51bGwgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvY2FwdGlvbj5cbiAgICA8dGhlYWQgKm5nSWY9XCJoZWFkIHx8IGhlYWRlckNvbXBvbmVudFwiPlxuICAgICAgPHRyIGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkZXJDZWxsIG9mIGdldEhlYWRlckNlbGxzKClcIj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiWydhbGlnbi10b3AgcHgtYmFzZSBweS1zbSB0ZXh0LWxlZnQgZm9udC1ub3JtYWwgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyaycsIGhlYWRlckNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cIihoZWFkZXJDZWxsLmNvbHNwYW4gPyAgaGVhZGVyQ2VsbC5jb2xzcGFuIDogbnVsbClcIlxuICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIihoZWFkZXJDZWxsLnJvd3NwYW4gPyBoZWFkZXJDZWxsLnJvd3NwYW4gOiBudWxsKVwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cImhlYWRlckNlbGwuaWQgPyBoZWFkZXJDZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiaGVhZGVyQ2VsbC5yb2xlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoZWFkZXJDZWxsLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImhlYWRlckNlbGwuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaGVhZGVyQ2VsbC5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGVhZGVyQ2VsbC5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImhlYWRlckNlbGwuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaGVhZGVyQ2VsbC5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImhlYWRlckNlbGwuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImhlYWRlckNlbGwuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiaGVhZGVyQ2VsbC5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaGVhZGVyQ2VsbC5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImhlYWRlckNlbGwuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaGVhZGVyQ2VsbC50YWJpbmRleFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBoZWFkZXJDZWxsLCBodG1sOiBoZWFkZXJDZWxsLmh0bWwsIHRleHQ6IGhlYWRlckNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZ2V0Um93cygpOyBpbmRleCBhcyByb3dJbmRleFwiIGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNlbGwgb2YgZ2V0Um93Q2VsbHMocm93KTsgZmlyc3QgYXMgaXNGaXJzdDsgaW5kZXggYXMgY2VsbEluZGV4XCI+XG4gICAgICAgICAgICAgIDx0aCAqbmdJZj1cImZpcnN0Q2VsbElzSGVhZGVyICYmIGlzRmlyc3Q7IGVsc2UgZWxzZVRkXCIgc2NvcGU9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHktc20gdGV4dC1sZWZ0IGZvbnQtbm9ybWFsIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmsnLCBjZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4gPyBjZWxsLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjZWxsLmlkID8gY2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJjZWxsLnJvbGUgPyBjZWxsLnJvbGUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2VsbC5hcmlhTGFiZWwgPyBjZWxsLmFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjZWxsLmFyaWFEZXNjcmliZWRCeSA/IGNlbGwuYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiY2VsbC5hcmlhTGFiZWxsZWRCeSA/IGNlbGwuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImNlbGwuYXJpYUhpZGRlbiA/IGNlbGwuYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjZWxsLmFyaWFEaXNhYmxlZCA/IGNlbGwuYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNlbGwuYXJpYUNvbnRyb2xzID8gY2VsbC5hcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJjZWxsLmFyaWFDdXJyZW50ID8gY2VsbC5hcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImNlbGwuYXJpYUxpdmUgPyBjZWxsLmFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNlbGwuYXJpYUV4cGFuZGVkID8gY2VsbC5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImNlbGwuYXJpYUVycm9yTWVzc2FnZSA/IGNlbGwuYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJjZWxsLmFyaWFIYXNQb3B1cCA/IGNlbGwuYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJjZWxsLnRhYmluZGV4ID8gY2VsbC50YWJpbmRleCA6IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNlbGwsIGh0bWw6IGNlbGwuaHRtbCwgdGV4dDogY2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgW2NsYXNzXT1cIlsncHgtYmFzZSBweS1zbScsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuID8gY2VsbC5yb3dzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJjZWxsLnJvbGUgPyBjZWxsLnJvbGUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNlbGwuYXJpYUxhYmVsID8gY2VsbC5hcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNlbGwuYXJpYURlc2NyaWJlZEJ5ID8gY2VsbC5hcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiY2VsbC5hcmlhTGFiZWxsZWRCeSA/IGNlbGwuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJjZWxsLmFyaWFIaWRkZW4gPyBjZWxsLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImNlbGwuYXJpYURpc2FibGVkID8gY2VsbC5hcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNlbGwuYXJpYUNvbnRyb2xzID8gY2VsbC5hcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiY2VsbC5hcmlhQ3VycmVudCA/IGNlbGwuYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiY2VsbC5hcmlhTGl2ZSA/IGNlbGwuYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNlbGwuYXJpYUV4cGFuZGVkID8gY2VsbC5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJjZWxsLmFyaWFFcnJvck1lc3NhZ2UgPyBjZWxsLmFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImNlbGwuYXJpYUhhc1BvcHVwID8gY2VsbC5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJjZWxsLnRhYmluZGV4ID8gY2VsbC50YWJpbmRleCA6IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjZWxsLCBodG1sOiBjZWxsLmh0bWwsIHRleHQ6IGNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdGFibGVDb250ZW50XCIgW2NsYXNzXT1cIndyYXBwZXIuY2xhc3Nlc1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQU9yRSxNQUFNLE9BQU8sY0FBZSxTQUFRLHNCQUFzQjtJQXVCeEQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtZQUN0RCxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDcEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDdEQsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0QsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNyQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBRWpCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBaUM7UUFDM0MsT0FBTyxHQUFHLFlBQVksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN0RSxDQUFDOytHQTVEVSxjQUFjO21HQUFkLGNBQWMseVJBYVIscUJBQXFCLGtEQUdyQixvQkFBb0Isa0RBR3BCLG9CQUFvQixtREFFcEIsaUJBQWlCLG9EQ3BDcEMsNnNQQTRIQTs7QURqR0U7SUFBQyxnQkFBZ0IsRUFBRTs4QkFDdUMscUJBQXFCO3dEQUFDO0FBRWhGO0lBQUMsZ0JBQWdCLEVBQUU7OEJBQ3FDLG9CQUFvQjt1REFBQztBQUU3RTtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxvQkFBb0I7dURBQUM7NEZBbkJsRSxjQUFjO2tCQUoxQixTQUFTOytCQUNFLFlBQVk7OEJBS2IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdrQyxnQkFBZ0I7c0JBQXZELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdDLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUdFLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVELGdCQUFnQjtzQkFBbkQsZUFBZTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IENlbGxEYXRhLCBXcmFwcGVyRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWNhcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtcm93LmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSByb3dzOiBBcnJheTxDZWxsRGF0YVtdPjtcbiAgQElucHV0KCkgaGVhZDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgZm9vdDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjYXB0aW9uQ2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBmaXJzdENlbGxJc0hlYWRlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB3cmFwcGVyOiBXcmFwcGVyRGF0YTtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVDYXB0aW9uQ29tcG9uZW50KSBjYXB0aW9uQ29tcG9uZW50OiBUYWJsZUNhcHRpb25Db21wb25lbnQ7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlSGVhZGVyQ29tcG9uZW50KSBoZWFkZXJDb21wb25lbnQ6IFRhYmxlSGVhZGVyQ29tcG9uZW50O1xuICBcbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlRm9vdGVyQ29tcG9uZW50KSBmb290ZXJDb21wb25lbnQ6IFRhYmxlRm9vdGVyQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVSb3dDb21wb25lbnQpIHJvd0NvbXBvbmVudExpc3Q6IFF1ZXJ5TGlzdDxUYWJsZVJvd0NvbXBvbmVudD47XG5cbiAgZ2V0Q2FwdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdGlvbkNvbXBvbmVudCA/IHRoaXMuY2FwdGlvbkNvbXBvbmVudC5jbGFzc2VzIDogdGhpcy5jYXB0aW9uQ2xhc3NlcztcbiAgfVxuXG4gIGdldEhlYWRlckNlbGxzKCk6IFRhYmxlQ2VsbENvbXBvbmVudFtdfENlbGxEYXRhW10ge1xuICAgIGxldCBoZWFkZXJDZWxscyA9IFtdO1xuICAgIGlmICh0aGlzLmhlYWRlckNvbXBvbmVudCAmJiB0aGlzLmhlYWRlckNvbXBvbmVudC5jZWxscykge1xuICAgICAgaGVhZGVyQ2VsbHMgPSB0aGlzLmhlYWRlckNvbXBvbmVudC5jZWxscy50b0FycmF5KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYWQpIHtcbiAgICAgIGhlYWRlckNlbGxzID0gdGhpcy5oZWFkO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyQ2VsbHM7XG4gIH1cblxuICBnZXRGb290ZXJDZWxscygpOiBUYWJsZUNlbGxDb21wb25lbnRbXXxDZWxsRGF0YVtdIHtcbiAgICBsZXQgZm9vdENlbGxzID0gW107XG4gICAgaWYgKHRoaXMuZm9vdGVyQ29tcG9uZW50ICYmIHRoaXMuZm9vdGVyQ29tcG9uZW50LmNlbGxzKSB7XG4gICAgICBmb290Q2VsbHMgPSB0aGlzLmZvb3RlckNvbXBvbmVudC5jZWxscy50b0FycmF5KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvb3QpIHtcbiAgICAgIGZvb3RDZWxscyA9IHRoaXMuZm9vdDtcbiAgICB9XG4gICAgcmV0dXJuIGZvb3RDZWxscztcbiAgfVxuICBcbiAgZ2V0Um93cygpIHtcbiAgICBsZXQgcm93TGlzdCA9IFtdO1xuICAgIGlmICh0aGlzLnJvd0NvbXBvbmVudExpc3QgJiYgdGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd0xpc3QgPSB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dzKSB7XG4gICAgICByb3dMaXN0ID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICByZXR1cm4gcm93TGlzdDtcbiAgICAvL3RoaXMucm93Q29tcG9uZW50TGlzdCAmJiB0aGlzLnJvd0NvbXBvbmVudExpc3QubGVuZ3RoID4gMCA/IHRoaXMucm93Q29tcG9uZW50TGlzdC50b0FycmF5KCkgOiB0aGlzLnJvd3M7XG4gIH1cblxuICBnZXRSb3dDZWxscyhyb3c6IFRhYmxlUm93Q29tcG9uZW50fENlbGxEYXRhW10pOiBUYWJsZUNlbGxDb21wb25lbnRbXXxDZWxsRGF0YVtdIHtcbiAgICByZXR1cm4gcm93IGluc3RhbmNlb2YgVGFibGVSb3dDb21wb25lbnQgPyByb3cuY2VsbHMudG9BcnJheSgpIDogcm93O1xuICB9XG5cbn1cblxuIiwiPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRlbnQ+XG4gIDx0YWJsZSBbY2xhc3NdPVwiWydjLXRhYmxlJywgY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW5cIlxuICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWRcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHNcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50XCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZVwiXG4gICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cFwiXG4gICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiPlxuICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uQ29tcG9uZW50XCIgW2NsYXNzXT1cImdldENhcHRpb25DbGFzcygpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNhcHRpb25Db21wb25lbnQsIHRleHQ6IGNhcHRpb24gPyBjYXB0aW9uIDogbnVsbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9jYXB0aW9uPlxuICAgIDx0aGVhZCAqbmdJZj1cImhlYWQgfHwgaGVhZGVyQ29tcG9uZW50XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRlckNlbGwgb2YgZ2V0SGVhZGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ2FsaWduLXRvcCBweC1iYXNlIHB5LXNtIHRleHQtbGVmdCBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrJywgaGVhZGVyQ2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGhlYWRlckNlbGwuY29sc3BhbiA/ICBoZWFkZXJDZWxsLmNvbHNwYW4gOiBudWxsKVwiXG4gICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiKGhlYWRlckNlbGwucm93c3BhbiA/IGhlYWRlckNlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaGVhZGVyQ2VsbC5pZCA/IGhlYWRlckNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJoZWFkZXJDZWxsLnJvbGVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhlYWRlckNlbGwuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiaGVhZGVyQ2VsbC5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoZWFkZXJDZWxsLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoZWFkZXJDZWxsLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaGVhZGVyQ2VsbC5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJoZWFkZXJDZWxsLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaGVhZGVyQ2VsbC5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaGVhZGVyQ2VsbC5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJoZWFkZXJDZWxsLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJoZWFkZXJDZWxsLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaGVhZGVyQ2VsbC5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJoZWFkZXJDZWxsLnRhYmluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGhlYWRlckNlbGwsIGh0bWw6IGhlYWRlckNlbGwuaHRtbCwgdGV4dDogaGVhZGVyQ2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBnZXRSb3dzKCk7IGluZGV4IGFzIHJvd0luZGV4XCIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiBnZXRSb3dDZWxscyhyb3cpOyBmaXJzdCBhcyBpc0ZpcnN0OyBpbmRleCBhcyBjZWxsSW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZmlyc3RDZWxsSXNIZWFkZXIgJiYgaXNGaXJzdDsgZWxzZSBlbHNlVGRcIiBzY29wZT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiWydhbGlnbi10b3AgcHgtYmFzZSBweS1zbSB0ZXh0LWxlZnQgZm9udC1ub3JtYWwgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyaycsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA/IGNlbGwucm93c3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImNlbGwucm9sZSA/IGNlbGwucm9sZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjZWxsLmFyaWFMYWJlbCA/IGNlbGwuYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNlbGwuYXJpYURlc2NyaWJlZEJ5ID8gY2VsbC5hcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjZWxsLmFyaWFMYWJlbGxlZEJ5ID8gY2VsbC5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiY2VsbC5hcmlhSGlkZGVuID8gY2VsbC5hcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImNlbGwuYXJpYURpc2FibGVkID8gY2VsbC5hcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY2VsbC5hcmlhQ29udHJvbHMgPyBjZWxsLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImNlbGwuYXJpYUN1cnJlbnQgPyBjZWxsLmFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiY2VsbC5hcmlhTGl2ZSA/IGNlbGwuYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2VsbC5hcmlhRXhwYW5kZWQgPyBjZWxsLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiY2VsbC5hcmlhRXJyb3JNZXNzYWdlID8gY2VsbC5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImNlbGwuYXJpYUhhc1BvcHVwID8gY2VsbC5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNlbGwudGFiaW5kZXggPyBjZWxsLnRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2VsbCwgaHRtbDogY2VsbC5odG1sLCB0ZXh0OiBjZWxsLnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3NdPVwiWydweC1iYXNlIHB5LXNtJywgY2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4gPyBjZWxsLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY2VsbC5pZCA/IGNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImNlbGwucm9sZSA/IGNlbGwucm9sZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2VsbC5hcmlhTGFiZWwgPyBjZWxsLmFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiY2VsbC5hcmlhRGVzY3JpYmVkQnkgPyBjZWxsLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjZWxsLmFyaWFMYWJlbGxlZEJ5ID8gY2VsbC5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImNlbGwuYXJpYUhpZGRlbiA/IGNlbGwuYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiY2VsbC5hcmlhRGlzYWJsZWQgPyBjZWxsLmFyaWFEaXNhYmxlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY2VsbC5hcmlhQ29udHJvbHMgPyBjZWxsLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJjZWxsLmFyaWFDdXJyZW50ID8gY2VsbC5hcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJjZWxsLmFyaWFMaXZlID8gY2VsbC5hcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2VsbC5hcmlhRXhwYW5kZWQgPyBjZWxsLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImNlbGwuYXJpYUVycm9yTWVzc2FnZSA/IGNlbGwuYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiY2VsbC5hcmlhSGFzUG9wdXAgPyBjZWxsLmFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNlbGwudGFiaW5kZXggPyBjZWxsLnRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNlbGwsIGh0bWw6IGNlbGwuaHRtbCwgdGV4dDogY2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG4gICAgPHRmb290ICpuZ0lmPVwiZm9vdCB8fCBmb290ZXJDb21wb25lbnRcIj5cbiAgICAgIDx0ciBjbGFzcz1cImJvcmRlci10LTIgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb290Q2VsbCBvZiBnZXRGb290ZXJDZWxscygpXCI+XG4gICAgICAgICAgPHRkIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIlsncHgtYmFzZSBweS1zbScsIGZvb3RDZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCIoZm9vdENlbGwuY29sc3BhbiA/ICBmb290Q2VsbC5jb2xzcGFuIDogbnVsbClcIlxuICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIihmb290Q2VsbC5yb3dzcGFuID8gZm9vdENlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZm9vdENlbGwuaWQgPyBmb290Q2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImZvb3RDZWxsLnJvbGVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImZvb3RDZWxsLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImZvb3RDZWxsLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZvb3RDZWxsLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJmb290Q2VsbC5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImZvb3RDZWxsLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImZvb3RDZWxsLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZm9vdENlbGwuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImZvb3RDZWxsLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImZvb3RDZWxsLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJmb290Q2VsbC5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImZvb3RDZWxsLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZvb3RDZWxsLnRhYmluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGZvb3RDZWxsLCBodG1sOiBmb290Q2VsbC5odG1sLCB0ZXh0OiBmb290Q2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHRhYmxlQ29udGVudFwiIFtjbGFzc109XCJ3cmFwcGVyLmNsYXNzZXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { ContentBaseComponent } from '../../../../shared/components';
3
+ import * as i0 from "@angular/core";
4
+ export class TableAdvancedFooterCellComponent extends ContentBaseComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableAdvancedFooterCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableAdvancedFooterCellComponent, selector: "desy-table-advanced-footer-cell", inputs: { classes: "classes", id: "id", colspan: "colspan", rowspan: "rowspan" }, usesInheritance: true, ngImport: i0, template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>', isInline: true }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableAdvancedFooterCellComponent, decorators: [{
9
+ type: Component,
10
+ args: [{
11
+ selector: 'desy-table-advanced-footer-cell',
12
+ template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'
13
+ }]
14
+ }], propDecorators: { classes: [{
15
+ type: Input
16
+ }], id: [{
17
+ type: Input
18
+ }], colspan: [{
19
+ type: Input
20
+ }], rowspan: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWR2YW5jZWQtZm9vdGVyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLWZvb3Rlci1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFPckUsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG9CQUFvQjsrR0FBN0QsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsZ0xBRmpDLHVFQUF1RTs7NEZBRXRFLGdDQUFnQztrQkFKNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxRQUFRLEVBQUUsdUVBQXVFO2lCQUNsRjs4QkFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IENlbGxEYXRhIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktdGFibGUtYWR2YW5jZWQtZm9vdGVyLWNlbGwnLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPidcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVBZHZhbmNlZEZvb3RlckNlbGxDb21wb25lbnQgZXh0ZW5kcyBDb250ZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENlbGxEYXRhIHtcbiAgQElucHV0KCkgY2xhc3Nlcz86IHN0cmluZztcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbHNwYW4/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJvd3NwYW4/OiBudW1iZXI7XG59XG4iXX0=