ngx-vector-components 5.104.0 → 5.105.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 (177) hide show
  1. package/CHANGELOG.md +2367 -2363
  2. package/README.md +35 -35
  3. package/assets/icons/chevron_down_icon.svg +3 -3
  4. package/assets/icons/home_menu_icon.svg +3 -3
  5. package/assets/icons/logout_icon.svg +9 -9
  6. package/assets/icons/menu_footer_icon.svg +3 -3
  7. package/assets/icons/menu_hamburguer_icon.svg +3 -3
  8. package/assets/icons/terms_of_use_icon.svg +9 -9
  9. package/assets/icons/vector_admin_icon.svg +4 -4
  10. package/assets/icons/vector_fintech_icon.svg +3 -3
  11. package/assets/icons/vector_logtech_icon.svg +6 -6
  12. package/assets/icons/vector_marketplace_icon.svg +3 -3
  13. package/assets/images/bunge_logo.svg +23 -23
  14. package/assets/images/cofco_logo.svg +117 -117
  15. package/assets/images/emote_bad.svg +6 -6
  16. package/assets/images/emote_cool.svg +5 -5
  17. package/assets/images/emote_nice.svg +5 -5
  18. package/assets/images/success_sign.svg +4 -4
  19. package/assets/images/vector-logo-horizontal-inverse-color.svg +13 -13
  20. package/assets/images/vector_logo_horizontal.svg +13 -13
  21. package/assets/images/warn_sign.svg +4 -4
  22. package/assets/styles/_fonts.scss +114 -114
  23. package/assets/styles/_mixins.scss +7 -7
  24. package/assets/styles/_primeng-custom-theme.scss +1269 -1269
  25. package/assets/styles/_spinner.scss +35 -35
  26. package/assets/styles/_styles.scss +115 -115
  27. package/assets/styles/_variables.scss +27 -27
  28. package/esm2022/lib/components/badge/badge.component.mjs +3 -3
  29. package/esm2022/lib/components/badge/badge.module.mjs +1 -1
  30. package/esm2022/lib/components/badge/index.mjs +1 -1
  31. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +3 -3
  32. package/esm2022/lib/components/breadcrumb/breadcrumb.module.mjs +1 -1
  33. package/esm2022/lib/components/breadcrumb/index.mjs +1 -1
  34. package/esm2022/lib/components/crud-base/crud-base.component.mjs +1 -1
  35. package/esm2022/lib/components/crud-base/index.mjs +1 -1
  36. package/esm2022/lib/components/crud-footer/crud-footer.component.mjs +3 -3
  37. package/esm2022/lib/components/crud-footer/crud-footer.module.mjs +1 -1
  38. package/esm2022/lib/components/crud-footer/index.mjs +1 -1
  39. package/esm2022/lib/components/crud-header/crud-header.component.mjs +3 -3
  40. package/esm2022/lib/components/crud-header/crud-header.module.mjs +1 -1
  41. package/esm2022/lib/components/crud-header/index.mjs +1 -1
  42. package/esm2022/lib/components/crud-history/crud-history.component.mjs +3 -3
  43. package/esm2022/lib/components/crud-history/crud-history.module.mjs +1 -1
  44. package/esm2022/lib/components/crud-history/index.mjs +1 -1
  45. package/esm2022/lib/components/fields/button/button.component.mjs +3 -3
  46. package/esm2022/lib/components/fields/button/index.mjs +1 -1
  47. package/esm2022/lib/components/fields/calendar-field/calendar-field.component.mjs +3 -3
  48. package/esm2022/lib/components/fields/calendar-field/index.mjs +1 -1
  49. package/esm2022/lib/components/fields/checkbox-field/checkbox-field.component.mjs +3 -3
  50. package/esm2022/lib/components/fields/checkbox-field/index.mjs +1 -1
  51. package/esm2022/lib/components/fields/currency-field/currency-field.component.mjs +3 -3
  52. package/esm2022/lib/components/fields/currency-field/index.mjs +1 -1
  53. package/esm2022/lib/components/fields/data-table/data-table.component.mjs +3 -3
  54. package/esm2022/lib/components/fields/data-table/index.mjs +1 -1
  55. package/esm2022/lib/components/fields/dropdown-field/dropdown-field.component.mjs +3 -3
  56. package/esm2022/lib/components/fields/dropdown-field/index.mjs +1 -1
  57. package/esm2022/lib/components/fields/field-error-message/field-error-message.component.mjs +3 -3
  58. package/esm2022/lib/components/fields/field-error-message/index.mjs +1 -1
  59. package/esm2022/lib/components/fields/fields.module.mjs +1 -1
  60. package/esm2022/lib/components/fields/filters/filters.component.mjs +6 -3
  61. package/esm2022/lib/components/fields/filters/index.mjs +1 -1
  62. package/esm2022/lib/components/fields/index.mjs +1 -1
  63. package/esm2022/lib/components/fields/input-number-field/index.mjs +1 -1
  64. package/esm2022/lib/components/fields/input-number-field/input-number-field.component.mjs +3 -3
  65. package/esm2022/lib/components/fields/input-otp/index.mjs +1 -1
  66. package/esm2022/lib/components/fields/input-otp/input-otp.component.mjs +3 -3
  67. package/esm2022/lib/components/fields/input-switch-field/index.mjs +1 -1
  68. package/esm2022/lib/components/fields/input-switch-field/input-switch-field.component.mjs +3 -3
  69. package/esm2022/lib/components/fields/multiselect-field/index.mjs +1 -1
  70. package/esm2022/lib/components/fields/multiselect-field/multiselect-field.component.mjs +3 -3
  71. package/esm2022/lib/components/fields/percentage-field/index.mjs +1 -1
  72. package/esm2022/lib/components/fields/percentage-field/percentage-field.component.mjs +3 -3
  73. package/esm2022/lib/components/fields/radio-button-field/index.mjs +1 -1
  74. package/esm2022/lib/components/fields/radio-button-field/radio-button-field.component.mjs +3 -3
  75. package/esm2022/lib/components/fields/range-value/index.mjs +1 -1
  76. package/esm2022/lib/components/fields/range-value/range-value.component.mjs +3 -3
  77. package/esm2022/lib/components/fields/search-field/index.mjs +1 -1
  78. package/esm2022/lib/components/fields/search-field/search-field.component.mjs +3 -3
  79. package/esm2022/lib/components/fields/select-button-field/index.mjs +1 -1
  80. package/esm2022/lib/components/fields/select-button-field/select-button-field.component.mjs +3 -3
  81. package/esm2022/lib/components/fields/text-field/index.mjs +1 -1
  82. package/esm2022/lib/components/fields/text-field/text-field.component.mjs +3 -3
  83. package/esm2022/lib/components/fields/textarea-field/index.mjs +1 -1
  84. package/esm2022/lib/components/fields/textarea-field/textarea-field.component.mjs +3 -3
  85. package/esm2022/lib/components/generic-error-modal/generic-error-modal.component.mjs +3 -3
  86. package/esm2022/lib/components/generic-error-modal/generic-error-modal.module.mjs +1 -1
  87. package/esm2022/lib/components/generic-error-modal/index.mjs +1 -1
  88. package/esm2022/lib/components/generic-modal/generic-modal.component.mjs +3 -3
  89. package/esm2022/lib/components/generic-modal/generic-modal.module.mjs +1 -1
  90. package/esm2022/lib/components/generic-modal/index.mjs +1 -1
  91. package/esm2022/lib/components/index.mjs +1 -1
  92. package/esm2022/lib/components/menu/index.mjs +1 -1
  93. package/esm2022/lib/components/menu/menu.component.mjs +3 -3
  94. package/esm2022/lib/components/menu/menu.module.mjs +1 -1
  95. package/esm2022/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +3 -3
  96. package/esm2022/lib/components/panel/index.mjs +1 -1
  97. package/esm2022/lib/components/panel/panel.component.mjs +3 -3
  98. package/esm2022/lib/components/panel/panel.module.mjs +1 -1
  99. package/esm2022/lib/components/score/index.mjs +1 -1
  100. package/esm2022/lib/components/score/score.component.mjs +3 -3
  101. package/esm2022/lib/components/score/score.module.mjs +1 -1
  102. package/esm2022/lib/components/stepper/index.mjs +1 -1
  103. package/esm2022/lib/components/stepper/stepper.component.mjs +3 -3
  104. package/esm2022/lib/components/stepper/stepper.module.mjs +1 -1
  105. package/esm2022/lib/components/top-bar/index.mjs +1 -1
  106. package/esm2022/lib/components/top-bar/top-bar.component.mjs +3 -3
  107. package/esm2022/lib/components/top-bar/top-bar.module.mjs +1 -1
  108. package/esm2022/lib/guards/crud-list-has-items.guard.mjs +1 -1
  109. package/esm2022/lib/guards/get-token-by-guid.guard.mjs +1 -1
  110. package/esm2022/lib/guards/has-permission.guard.mjs +1 -1
  111. package/esm2022/lib/guards/index.mjs +1 -1
  112. package/esm2022/lib/guards/role.guard.mjs +1 -1
  113. package/esm2022/lib/guards/token-is-present.guard.mjs +1 -1
  114. package/esm2022/lib/injections/index.mjs +1 -1
  115. package/esm2022/lib/interceptors/http-interceptor.mjs +1 -1
  116. package/esm2022/lib/interceptors/index.mjs +1 -1
  117. package/esm2022/lib/models/app-name.enum.mjs +1 -1
  118. package/esm2022/lib/models/boolean-type.enum.mjs +1 -1
  119. package/esm2022/lib/models/crud-history.model.mjs +1 -1
  120. package/esm2022/lib/models/crud-mode.enum.mjs +1 -1
  121. package/esm2022/lib/models/currency.enum.mjs +1 -1
  122. package/esm2022/lib/models/data-table.model.mjs +1 -1
  123. package/esm2022/lib/models/document-type.enum.mjs +1 -1
  124. package/esm2022/lib/models/filters.model.mjs +1 -1
  125. package/esm2022/lib/models/generic-modal.model.mjs +1 -1
  126. package/esm2022/lib/models/http-response.model.mjs +1 -1
  127. package/esm2022/lib/models/index.mjs +1 -1
  128. package/esm2022/lib/models/ip-info.enum.mjs +1 -1
  129. package/esm2022/lib/models/list-item.model.mjs +1 -1
  130. package/esm2022/lib/models/locale.enum.mjs +1 -1
  131. package/esm2022/lib/models/menu-item.model.mjs +1 -1
  132. package/esm2022/lib/models/message-status.enum.mjs +1 -1
  133. package/esm2022/lib/models/profile.model.mjs +1 -1
  134. package/esm2022/lib/models/role.enum.mjs +1 -1
  135. package/esm2022/lib/models/status.enum.mjs +1 -1
  136. package/esm2022/lib/models/topbar.model.mjs +1 -1
  137. package/esm2022/lib/models/vector-app.model.mjs +1 -1
  138. package/esm2022/lib/models/vector-notification.model.mjs +1 -1
  139. package/esm2022/lib/models/view.enum.mjs +1 -1
  140. package/esm2022/lib/pipes/currency-brl.pipe.mjs +1 -1
  141. package/esm2022/lib/pipes/format-document.pipe.mjs +1 -1
  142. package/esm2022/lib/pipes/index.mjs +1 -1
  143. package/esm2022/lib/pipes/mask.pipe.mjs +1 -1
  144. package/esm2022/lib/pipes/not-hidden.pipe.mjs +1 -1
  145. package/esm2022/lib/pipes/only-active.pipe.mjs +1 -1
  146. package/esm2022/lib/pipes/pipes.module.mjs +1 -1
  147. package/esm2022/lib/pipes/remove-last-child.pipe.mjs +1 -1
  148. package/esm2022/lib/pipes/unread-notifications.pipe.mjs +1 -1
  149. package/esm2022/lib/resolvers/get-selected-crud-item.resolver.mjs +1 -1
  150. package/esm2022/lib/resolvers/index.mjs +1 -1
  151. package/esm2022/lib/services/auth.service.mjs +1 -1
  152. package/esm2022/lib/services/base-dropdown.mjs +1 -1
  153. package/esm2022/lib/services/crud-base.service.mjs +1 -1
  154. package/esm2022/lib/services/enum.service.mjs +1 -1
  155. package/esm2022/lib/services/error-message.service.mjs +1 -1
  156. package/esm2022/lib/services/geolocation.service.mjs +1 -1
  157. package/esm2022/lib/services/index.mjs +1 -1
  158. package/esm2022/lib/services/loading.service.mjs +1 -1
  159. package/esm2022/lib/services/menu.service.mjs +1 -1
  160. package/esm2022/lib/services/modal.service.mjs +1 -1
  161. package/esm2022/lib/services/notifications.service.mjs +1 -1
  162. package/esm2022/lib/services/profile.service.mjs +1 -1
  163. package/esm2022/lib/services/storage.service.mjs +1 -1
  164. package/esm2022/lib/shared/shared.module.mjs +1 -1
  165. package/esm2022/lib/utils/cpf-cnpj-validator.util.mjs +1 -1
  166. package/esm2022/lib/utils/file.util.mjs +1 -1
  167. package/esm2022/lib/utils/index.mjs +1 -1
  168. package/esm2022/lib/utils/mask.util.mjs +1 -1
  169. package/esm2022/lib/utils/object.util.mjs +1 -1
  170. package/esm2022/lib/utils/string.util.mjs +1 -1
  171. package/esm2022/lib/utils/validation.util.mjs +1 -1
  172. package/esm2022/lib/utils/window.util.mjs +1 -1
  173. package/esm2022/public-api.mjs +1 -1
  174. package/fesm2022/ngx-vector-components.mjs +67 -64
  175. package/fesm2022/ngx-vector-components.mjs.map +1 -1
  176. package/lib/components/fields/filters/filters.component.d.ts +1 -0
  177. package/package.json +1 -1
@@ -335,11 +335,11 @@ export class DataTableComponent {
335
335
  return active ? 'success' : 'error';
336
336
  }
337
337
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
338
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataTableComponent, selector: "vector-data-table", inputs: { columns: "columns", data: "data", exportExcel: "exportExcel", exportPDF: "exportPDF", customFunction: "customFunction", totalRecords: "totalRecords", disabledHeadercheckbox: "disabledHeadercheckbox", filters: "filters", addItemLabel: "addItemLabel", pagination: "pagination", virtualPagination: "virtualPagination", tabs: "tabs", customButtons: "customButtons", addItemButtonPlusSign: "addItemButtonPlusSign", hasActions: "hasActions", hasExpandableIcon: "hasExpandableIcon", addNameColumnExpand: "addNameColumnExpand", expandable: "expandable", expansionTemplate: "expansionTemplate", selectionMode: "selectionMode", selectionType: "selectionType", height: "height", showLimitBalance: "showLimitBalance", dataAccountBalance: "dataAccountBalance", firstLazyLoad: "firstLazyLoad", shouldLazyLoadWithoutFilter: "shouldLazyLoadWithoutFilter", reorderableColumns: "reorderableColumns" }, outputs: { onLazyLoad: "onLazyLoad", onFilter: "onFilter", onAdd: "onAdd", onExportExcel: "onExportExcel", onExportPDF: "onExportPDF", onSelectedRows: "onSelectedRows", onFilterChanged: "onFilterChanged", onTabSelected: "onTabSelected", onExpandRow: "onExpandRow" }, viewQueries: [{ propertyName: "filtersComponent", first: true, predicate: FiltersComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <vector-filters\n [fields]=\"filters\"\n (onSearch)=\"lazyLoaded({ filter: true, data: $event })\"\n (formBuilded)=\"subscribeToFilterChanges()\"\n ></vector-filters>\n </div>\n <div class=\"table-header-actions field\" *ngIf=\"addItemLabel || exportExcel || exportPDF || customFunction\">\n <button *ngIf=\"exportExcel\" (click)=\"onExportExcel.emit()\" class=\"export-button export-excel\">\n <i class=\"fas fa-file-excel\"></i><span>Excel</span>\n </button>\n <button *ngIf=\"exportPDF\" (click)=\"onExportPDF.emit()\" class=\"export-button export-pdf\">\n <i class=\"fas fa-file-pdf\"></i><span>PDF</span>\n </button>\n <button\n *ngFor=\"let button of customFunction\"\n (click)=\"button.clickFunction()\"\n class=\"export-button custom-function\"\n >\n <i *ngIf=\"button?.icon\" class=\"{{ button?.icon }}\"></i><span>{{ button?.label }}</span>\n </button>\n\n <vector-button\n *ngFor=\"let button of customButtons\"\n class=\"add-item-button\"\n [label]=\"button.label\"\n (click)=\"button.clickFunction()\"\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\n ></vector-button>\n <vector-button\n *ngIf=\"addItemLabel\"\n class=\"add-item-button\"\n [label]=\"addItemLabel\"\n (click)=\"onAdd.emit()\"\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\n ></vector-button>\n </div>\n @if(showLimitBalance){\n <div class=\"col-12 grid ml-0\">\n @for (itemAccount of dataAccountBalance; track $index) { @if(itemAccount.visible){\n <div class=\"card balance-container\">\n <span class=\"card-header\">{{ itemAccount.name }}</span>\n <div class=\"card-content value-container\">\n <span>R$ </span>\n <span *ngIf=\"itemAccount.showBalance\" class=\"balance\">{{ balance(itemAccount) }}</span>\n <div class=\"hidden-balance\" *ngIf=\"!itemAccount.showBalance\"></div>\n <div class=\"icon-container\">\n <i\n class=\"fas\"\n [ngClass]=\"{ 'fa-eye': !itemAccount.showBalance, 'fa-eye-slash': itemAccount.showBalance }\"\n (click)=\"changeShowBalance(itemAccount)\"\n ></i>\n </div>\n </div>\n </div>\n } }\n </div>\n\n }\n\n <div class=\"col-12\">\n <vector-panel class=\"data-table-panel\">\n <p-tabView (onChange)=\"onTabChange($event)\" *ngIf=\"tabs?.length\">\n <p-tabPanel *ngFor=\"let tab of tabs\">\n <ng-template pTemplate=\"header\">\n <em *ngIf=\"tab.icon\" [class]=\"tab.icon\">&nbsp;</em>\n <span>{{ tab.name }}</span>\n </ng-template>\n </p-tabPanel>\n </p-tabView>\n <p-table\n currentPageReportTemplate=\"Mostrando {first} at\u00E9 {last} de {totalRecords} registros\"\n sortMode=\"single\"\n [rows]=\"10\"\n [lazy]=\"pagination && !virtualPagination\"\n [value]=\"data\"\n [paginator]=\"pagination\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [rowsPerPageOptions]=\"[10, 25, 50, 100]\"\n [responsive]=\"true\"\n [resizableColumns]=\"true\"\n [scrollable]=\"true\"\n scrollDirection=\"vertical\"\n responsiveLayout=\"scroll\"\n dataKey=\"id\"\n [scrollHeight]=\"height\"\n [attr.selectionMode]=\"selectionMode\"\n [(selection)]=\"selectedItems\"\n (onRowSelect)=\"changeSelectedItems($event)\"\n (onHeaderCheckboxToggle)=\"changeSelectedItems($event)\"\n (onRowUnselect)=\"changeSelectedItems($event)\"\n (onLazyLoad)=\"lazyLoaded({ filter: false, data: $event })\"\n (selectionChange)=\"onSelectionChange($event)\"\n [reorderableColumns]=\"reorderableColumns\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"header\">\n <th *ngIf=\"reorderableColumns\" style=\"width: 5rem\"></th>\n\n <th *ngIf=\"selectionType === 'checkbox'\">\n <p-tableHeaderCheckbox [disabled]=\"disabledHeadercheckbox\"></p-tableHeaderCheckbox>\n </th>\n <th class=\"text-center\" *ngIf=\"hasExpandableIcon\">\n {{ addNameColumnExpand }}\n </th>\n <th *ngIf=\"hasActions\">{{ 'app.label.actions' | translate }}</th>\n <th *ngIf=\"selectionType === 'radiobutton'\">\n <div class=\"flex align-items-center\">\n <span></span>\n </div>\n </th>\n <th\n *ngFor=\"let col of columns\"\n [ngStyle]=\"getColStyle(col)\"\n [pSortableColumn]=\"col.notSortable ? '' : col.field\"\n pReorderableColumn\n >\n <div class=\"flex align-items-center\">\n <span>{{ col.header }}</span> <p-sortIcon *ngIf=\"!col.notSortable\" [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-item let-expanded=\"expanded\" let-index=\"rowIndex\">\n <tr\n class=\"row\"\n [pSelectableRow]=\"rowData\"\n [ngClass]=\"{ expandable: expandable }\"\n [pRowToggler]=\"expandable ? item : undefined\"\n (click)=\"onRowClick(item)\"\n [pReorderableRow]=\"index\"\n >\n <ng-container *ngIf=\"reorderableColumns\">\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\n <span class=\"pi pi-bars\" pReorderableRowHandle></span>\n </td>\n </ng-container>\n <ng-container *ngIf=\"selectionType === 'checkbox'\">\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\n <p-tableCheckbox [value]=\"item\" [disabled]=\"item.disabledCheckBox\"></p-tableCheckbox>\n </td>\n </ng-container>\n <ng-container *ngIf=\"selectionType === 'radiobutton'\">\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n </ng-container>\n <td *ngIf=\"hasExpandableIcon\" style=\"max-width: 150px\" class=\"centered\">\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <i\n [ngClass]=\"\n expanded ? 'actions-menu-button pi pi-chevron-down' : 'actions-menu-button pi pi-chevron-right'\n \"\n ></i>\n </td>\n <td *ngIf=\"hasActions\">\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <i class=\"actions-menu-button fas fa-cog\" (click)=\"menu.toggle($event)\"></i>\n </td>\n <ng-container *ngFor=\"let col of columns\">\n <td\n *ngIf=\"isHtmlCell(col)\"\n class=\"cell\"\n [innerHTML]=\"getCellContent(item, col)\"\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\n [ngStyle]=\"getColStyle(col)\"\n ></td>\n <td\n *ngIf=\"(!isHtmlCell(col) && !!col.getStatus) || isScoreCell(col)\"\n class=\"cell\"\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\n [ngStyle]=\"getColStyle(col)\"\n >\n <vector-badge\n *ngIf=\"isBadgeCell(col)\"\n [label]=\"getCellText(item, col)\"\n [type]=\"col.getStatus && col.getStatus(item[col.field])\"\n [tooltip]=\"getTooltipText(item, col)\"\n ></vector-badge>\n <vector-score *ngIf=\"isScoreCell(col)\" [score]=\"item[col.field]\"></vector-score>\n </td>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr class=\"row\">\n <td class=\"no-results\" [attr.colspan]=\"columns.length + 1\">Nenhum resultado encontrado</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\"> </ng-template>\n <ng-template let-item pTemplate=\"paginatordropdownitem\"> {{ item.value }} </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-item>\n <tr>\n <td [attr.colspan]=\"columns.length + (hasActions ? 1 : 0)\">\n <ng-container *ngTemplateOutlet=\"expansionTemplate; context: { item }\"> </ng-container>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </vector-panel>\n </div>\n</div>\n", styles: [".no-results{padding:15px;background-color:#fff;width:100%}.centered{display:flex;justify-content:center}.table-header-actions{display:flex;justify-content:flex-end;align-items:flex-end;width:100%;padding-right:7px;margin-bottom:15px!important}@media (min-width: 768px){.table-header-actions{margin-top:-3px}}.table-header-actions .export-button{padding:7px 10px;color:#fff;display:flex;align-items:center;border:none;border-radius:5px;margin:5px;font-size:.75rem;cursor:pointer}.table-header-actions .export-button.export-excel{background-color:var(--success-color)}.table-header-actions .export-button.export-excel:hover{background-color:var(--success-color-dark)}.table-header-actions .export-button.export-pdf{background-color:var(--error-color)}.table-header-actions .export-button.export-pdf:hover{background-color:var(--error-color-dark)}.table-header-actions .export-button.custom-function{background-color:var(--theme-primary)}.table-header-actions .export-button.custom-function:hover{background-color:var(--theme-medium)}.table-header-actions .export-button i{color:#fff}.table-header-actions .export-button span{margin-left:5px}.table-header-actions .add-item-button{margin-left:10px}.actions-menu-button{font-size:23px;cursor:pointer;color:var(--theme-medium)}.expandable{cursor:pointer}.balance-container{display:flex;flex-direction:column;width:20%;padding:0;margin-bottom:30px;top:30px;right:40px;border-radius:8px;margin-right:15px}.balance-container .header-right{flex:1;flex-direction:row;justify-content:flex-end;display:flex}@media screen and (max-width: 1450px){.balance-container{width:40%}}@media screen and (max-width: 960px){.balance-container{position:relative;width:80%;top:auto;right:auto}}.balance-container .card-header{color:var(--theme-medium);border-radius:9px 9px 0 0;padding:10px 10px 2px;font-weight:500;font-size:13px;line-height:17px;letter-spacing:.25px}.balance-container .value-container{display:flex;flex-direction:row;align-items:center;padding:0 10px 5px}.balance-container .value-container span{font-size:2em;font-weight:700;color:var(--theme-secondary)}@media screen and (max-width: 640px){.balance-container .value-container span{font-size:1.6em}}.balance-container .value-container .balance{margin-left:8px;width:70%}.balance-container .value-container .hidden-balance{background-color:var(--gray-lighter);padding:15px;margin-left:8px;width:70%;height:100%}.balance-container .value-container .icon-container{display:flex;flex:1;justify-content:center;align-items:center}.balance-container .value-container .icon-container i{cursor:pointer;font-size:2em;padding-top:2px;color:var(--theme-medium)}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.PanelComponent, selector: "vector-panel" }, { kind: "component", type: i4.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i5.BadgeComponent, selector: "vector-badge", inputs: ["type", "label", "customColor", "customBackgroundColor", "tooltip"] }, { kind: "component", type: i6.ScoreComponent, selector: "vector-score", inputs: ["score"] }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i8.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i8.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "directive", type: i8.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i8.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i8.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i8.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i8.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i8.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "component", type: i9.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "round", "style", "loading"], outputs: ["onClick"] }, { kind: "component", type: i10.FiltersComponent, selector: "vector-filters", inputs: ["fields"], outputs: ["onSearch", "formBuilded"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] }); }
338
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataTableComponent, selector: "vector-data-table", inputs: { columns: "columns", data: "data", exportExcel: "exportExcel", exportPDF: "exportPDF", customFunction: "customFunction", totalRecords: "totalRecords", disabledHeadercheckbox: "disabledHeadercheckbox", filters: "filters", addItemLabel: "addItemLabel", pagination: "pagination", virtualPagination: "virtualPagination", tabs: "tabs", customButtons: "customButtons", addItemButtonPlusSign: "addItemButtonPlusSign", hasActions: "hasActions", hasExpandableIcon: "hasExpandableIcon", addNameColumnExpand: "addNameColumnExpand", expandable: "expandable", expansionTemplate: "expansionTemplate", selectionMode: "selectionMode", selectionType: "selectionType", height: "height", showLimitBalance: "showLimitBalance", dataAccountBalance: "dataAccountBalance", firstLazyLoad: "firstLazyLoad", shouldLazyLoadWithoutFilter: "shouldLazyLoadWithoutFilter", reorderableColumns: "reorderableColumns" }, outputs: { onLazyLoad: "onLazyLoad", onFilter: "onFilter", onAdd: "onAdd", onExportExcel: "onExportExcel", onExportPDF: "onExportPDF", onSelectedRows: "onSelectedRows", onFilterChanged: "onFilterChanged", onTabSelected: "onTabSelected", onExpandRow: "onExpandRow" }, viewQueries: [{ propertyName: "filtersComponent", first: true, predicate: FiltersComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"grid\">\r\n <div class=\"col-12\">\r\n <vector-filters\r\n [fields]=\"filters\"\r\n (onSearch)=\"lazyLoaded({ filter: true, data: $event })\"\r\n (formBuilded)=\"subscribeToFilterChanges()\"\r\n ></vector-filters>\r\n </div>\r\n <div class=\"table-header-actions field\" *ngIf=\"addItemLabel || exportExcel || exportPDF || customFunction\">\r\n <button *ngIf=\"exportExcel\" (click)=\"onExportExcel.emit()\" class=\"export-button export-excel\">\r\n <i class=\"fas fa-file-excel\"></i><span>Excel</span>\r\n </button>\r\n <button *ngIf=\"exportPDF\" (click)=\"onExportPDF.emit()\" class=\"export-button export-pdf\">\r\n <i class=\"fas fa-file-pdf\"></i><span>PDF</span>\r\n </button>\r\n <button\r\n *ngFor=\"let button of customFunction\"\r\n (click)=\"button.clickFunction()\"\r\n class=\"export-button custom-function\"\r\n >\r\n <i *ngIf=\"button?.icon\" class=\"{{ button?.icon }}\"></i><span>{{ button?.label }}</span>\r\n </button>\r\n\r\n <vector-button\r\n *ngFor=\"let button of customButtons\"\r\n class=\"add-item-button\"\r\n [label]=\"button.label\"\r\n (click)=\"button.clickFunction()\"\r\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\r\n ></vector-button>\r\n <vector-button\r\n *ngIf=\"addItemLabel\"\r\n class=\"add-item-button\"\r\n [label]=\"addItemLabel\"\r\n (click)=\"onAdd.emit()\"\r\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\r\n ></vector-button>\r\n </div>\r\n @if(showLimitBalance){\r\n <div class=\"col-12 grid ml-0\">\r\n @for (itemAccount of dataAccountBalance; track $index) { @if(itemAccount.visible){\r\n <div class=\"card balance-container\">\r\n <span class=\"card-header\">{{ itemAccount.name }}</span>\r\n <div class=\"card-content value-container\">\r\n <span>R$ </span>\r\n <span *ngIf=\"itemAccount.showBalance\" class=\"balance\">{{ balance(itemAccount) }}</span>\r\n <div class=\"hidden-balance\" *ngIf=\"!itemAccount.showBalance\"></div>\r\n <div class=\"icon-container\">\r\n <i\r\n class=\"fas\"\r\n [ngClass]=\"{ 'fa-eye': !itemAccount.showBalance, 'fa-eye-slash': itemAccount.showBalance }\"\r\n (click)=\"changeShowBalance(itemAccount)\"\r\n ></i>\r\n </div>\r\n </div>\r\n </div>\r\n } }\r\n </div>\r\n\r\n }\r\n\r\n <div class=\"col-12\">\r\n <vector-panel class=\"data-table-panel\">\r\n <p-tabView (onChange)=\"onTabChange($event)\" *ngIf=\"tabs?.length\">\r\n <p-tabPanel *ngFor=\"let tab of tabs\">\r\n <ng-template pTemplate=\"header\">\r\n <em *ngIf=\"tab.icon\" [class]=\"tab.icon\">&nbsp;</em>\r\n <span>{{ tab.name }}</span>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <p-table\r\n currentPageReportTemplate=\"Mostrando {first} at\u00E9 {last} de {totalRecords} registros\"\r\n sortMode=\"single\"\r\n [rows]=\"10\"\r\n [lazy]=\"pagination && !virtualPagination\"\r\n [value]=\"data\"\r\n [paginator]=\"pagination\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [rowsPerPageOptions]=\"[10, 25, 50, 100]\"\r\n [responsive]=\"true\"\r\n [resizableColumns]=\"true\"\r\n [scrollable]=\"true\"\r\n scrollDirection=\"vertical\"\r\n responsiveLayout=\"scroll\"\r\n dataKey=\"id\"\r\n [scrollHeight]=\"height\"\r\n [attr.selectionMode]=\"selectionMode\"\r\n [(selection)]=\"selectedItems\"\r\n (onRowSelect)=\"changeSelectedItems($event)\"\r\n (onHeaderCheckboxToggle)=\"changeSelectedItems($event)\"\r\n (onRowUnselect)=\"changeSelectedItems($event)\"\r\n (onLazyLoad)=\"lazyLoaded({ filter: false, data: $event })\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [reorderableColumns]=\"reorderableColumns\"\r\n >\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"header\">\r\n <th *ngIf=\"reorderableColumns\" style=\"width: 5rem\"></th>\r\n\r\n <th *ngIf=\"selectionType === 'checkbox'\">\r\n <p-tableHeaderCheckbox [disabled]=\"disabledHeadercheckbox\"></p-tableHeaderCheckbox>\r\n </th>\r\n <th class=\"text-center\" *ngIf=\"hasExpandableIcon\">\r\n {{ addNameColumnExpand }}\r\n </th>\r\n <th *ngIf=\"hasActions\">{{ 'app.label.actions' | translate }}</th>\r\n <th *ngIf=\"selectionType === 'radiobutton'\">\r\n <div class=\"flex align-items-center\">\r\n <span></span>\r\n </div>\r\n </th>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n [ngStyle]=\"getColStyle(col)\"\r\n [pSortableColumn]=\"col.notSortable ? '' : col.field\"\r\n pReorderableColumn\r\n >\r\n <div class=\"flex align-items-center\">\r\n <span>{{ col.header }}</span> <p-sortIcon *ngIf=\"!col.notSortable\" [field]=\"col.field\"></p-sortIcon>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-item let-expanded=\"expanded\" let-index=\"rowIndex\">\r\n <tr\r\n class=\"row\"\r\n [pSelectableRow]=\"rowData\"\r\n [ngClass]=\"{ expandable: expandable }\"\r\n [pRowToggler]=\"expandable ? item : undefined\"\r\n (click)=\"onRowClick(item)\"\r\n [pReorderableRow]=\"index\"\r\n >\r\n <ng-container *ngIf=\"reorderableColumns\">\r\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\r\n <span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectionType === 'checkbox'\">\r\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\r\n <p-tableCheckbox [value]=\"item\" [disabled]=\"item.disabledCheckBox\"></p-tableCheckbox>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectionType === 'radiobutton'\">\r\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\r\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n </td>\r\n </ng-container>\r\n <td *ngIf=\"hasExpandableIcon\" style=\"max-width: 150px\" class=\"centered\">\r\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n <i\r\n [ngClass]=\"\r\n expanded ? 'actions-menu-button pi pi-chevron-down' : 'actions-menu-button pi pi-chevron-right'\r\n \"\r\n ></i>\r\n </td>\r\n <td *ngIf=\"hasActions\">\r\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n <i class=\"actions-menu-button fas fa-cog\" (click)=\"menu.toggle($event)\"></i>\r\n </td>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <td\r\n *ngIf=\"isHtmlCell(col)\"\r\n class=\"cell\"\r\n [innerHTML]=\"getCellContent(item, col)\"\r\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\r\n [ngStyle]=\"getColStyle(col)\"\r\n ></td>\r\n <td\r\n *ngIf=\"(!isHtmlCell(col) && !!col.getStatus) || isScoreCell(col)\"\r\n class=\"cell\"\r\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\r\n [ngStyle]=\"getColStyle(col)\"\r\n >\r\n <vector-badge\r\n *ngIf=\"isBadgeCell(col)\"\r\n [label]=\"getCellText(item, col)\"\r\n [type]=\"col.getStatus && col.getStatus(item[col.field])\"\r\n [tooltip]=\"getTooltipText(item, col)\"\r\n ></vector-badge>\r\n <vector-score *ngIf=\"isScoreCell(col)\" [score]=\"item[col.field]\"></vector-score>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"row\">\r\n <td class=\"no-results\" [attr.colspan]=\"columns.length + 1\">Nenhum resultado encontrado</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\"> </ng-template>\r\n <ng-template let-item pTemplate=\"paginatordropdownitem\"> {{ item.value }} </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-item>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length + (hasActions ? 1 : 0)\">\r\n <ng-container *ngTemplateOutlet=\"expansionTemplate; context: { item }\"> </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </vector-panel>\r\n </div>\r\n</div>\r\n", styles: [".no-results{padding:15px;background-color:#fff;width:100%}.centered{display:flex;justify-content:center}.table-header-actions{display:flex;justify-content:flex-end;align-items:flex-end;width:100%;padding-right:7px;margin-bottom:15px!important}@media (min-width: 768px){.table-header-actions{margin-top:-3px}}.table-header-actions .export-button{padding:7px 10px;color:#fff;display:flex;align-items:center;border:none;border-radius:5px;margin:5px;font-size:.75rem;cursor:pointer}.table-header-actions .export-button.export-excel{background-color:var(--success-color)}.table-header-actions .export-button.export-excel:hover{background-color:var(--success-color-dark)}.table-header-actions .export-button.export-pdf{background-color:var(--error-color)}.table-header-actions .export-button.export-pdf:hover{background-color:var(--error-color-dark)}.table-header-actions .export-button.custom-function{background-color:var(--theme-primary)}.table-header-actions .export-button.custom-function:hover{background-color:var(--theme-medium)}.table-header-actions .export-button i{color:#fff}.table-header-actions .export-button span{margin-left:5px}.table-header-actions .add-item-button{margin-left:10px}.actions-menu-button{font-size:23px;cursor:pointer;color:var(--theme-medium)}.expandable{cursor:pointer}.balance-container{display:flex;flex-direction:column;width:20%;padding:0;margin-bottom:30px;top:30px;right:40px;border-radius:8px;margin-right:15px}.balance-container .header-right{flex:1;flex-direction:row;justify-content:flex-end;display:flex}@media screen and (max-width: 1450px){.balance-container{width:40%}}@media screen and (max-width: 960px){.balance-container{position:relative;width:80%;top:auto;right:auto}}.balance-container .card-header{color:var(--theme-medium);border-radius:9px 9px 0 0;padding:10px 10px 2px;font-weight:500;font-size:13px;line-height:17px;letter-spacing:.25px}.balance-container .value-container{display:flex;flex-direction:row;align-items:center;padding:0 10px 5px}.balance-container .value-container span{font-size:2em;font-weight:700;color:var(--theme-secondary)}@media screen and (max-width: 640px){.balance-container .value-container span{font-size:1.6em}}.balance-container .value-container .balance{margin-left:8px;width:70%}.balance-container .value-container .hidden-balance{background-color:var(--gray-lighter);padding:15px;margin-left:8px;width:70%;height:100%}.balance-container .value-container .icon-container{display:flex;flex:1;justify-content:center;align-items:center}.balance-container .value-container .icon-container i{cursor:pointer;font-size:2em;padding-top:2px;color:var(--theme-medium)}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.PanelComponent, selector: "vector-panel" }, { kind: "component", type: i4.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i5.BadgeComponent, selector: "vector-badge", inputs: ["type", "label", "customColor", "customBackgroundColor", "tooltip"] }, { kind: "component", type: i6.ScoreComponent, selector: "vector-score", inputs: ["score"] }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i8.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i8.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "directive", type: i8.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i8.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i8.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i8.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i8.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i8.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "component", type: i9.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "round", "style", "loading"], outputs: ["onClick"] }, { kind: "component", type: i10.FiltersComponent, selector: "vector-filters", inputs: ["fields"], outputs: ["onSearch", "formBuilded"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] }); }
339
339
  }
340
340
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataTableComponent, decorators: [{
341
341
  type: Component,
342
- args: [{ selector: 'vector-data-table', template: "<div class=\"grid\">\n <div class=\"col-12\">\n <vector-filters\n [fields]=\"filters\"\n (onSearch)=\"lazyLoaded({ filter: true, data: $event })\"\n (formBuilded)=\"subscribeToFilterChanges()\"\n ></vector-filters>\n </div>\n <div class=\"table-header-actions field\" *ngIf=\"addItemLabel || exportExcel || exportPDF || customFunction\">\n <button *ngIf=\"exportExcel\" (click)=\"onExportExcel.emit()\" class=\"export-button export-excel\">\n <i class=\"fas fa-file-excel\"></i><span>Excel</span>\n </button>\n <button *ngIf=\"exportPDF\" (click)=\"onExportPDF.emit()\" class=\"export-button export-pdf\">\n <i class=\"fas fa-file-pdf\"></i><span>PDF</span>\n </button>\n <button\n *ngFor=\"let button of customFunction\"\n (click)=\"button.clickFunction()\"\n class=\"export-button custom-function\"\n >\n <i *ngIf=\"button?.icon\" class=\"{{ button?.icon }}\"></i><span>{{ button?.label }}</span>\n </button>\n\n <vector-button\n *ngFor=\"let button of customButtons\"\n class=\"add-item-button\"\n [label]=\"button.label\"\n (click)=\"button.clickFunction()\"\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\n ></vector-button>\n <vector-button\n *ngIf=\"addItemLabel\"\n class=\"add-item-button\"\n [label]=\"addItemLabel\"\n (click)=\"onAdd.emit()\"\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\n ></vector-button>\n </div>\n @if(showLimitBalance){\n <div class=\"col-12 grid ml-0\">\n @for (itemAccount of dataAccountBalance; track $index) { @if(itemAccount.visible){\n <div class=\"card balance-container\">\n <span class=\"card-header\">{{ itemAccount.name }}</span>\n <div class=\"card-content value-container\">\n <span>R$ </span>\n <span *ngIf=\"itemAccount.showBalance\" class=\"balance\">{{ balance(itemAccount) }}</span>\n <div class=\"hidden-balance\" *ngIf=\"!itemAccount.showBalance\"></div>\n <div class=\"icon-container\">\n <i\n class=\"fas\"\n [ngClass]=\"{ 'fa-eye': !itemAccount.showBalance, 'fa-eye-slash': itemAccount.showBalance }\"\n (click)=\"changeShowBalance(itemAccount)\"\n ></i>\n </div>\n </div>\n </div>\n } }\n </div>\n\n }\n\n <div class=\"col-12\">\n <vector-panel class=\"data-table-panel\">\n <p-tabView (onChange)=\"onTabChange($event)\" *ngIf=\"tabs?.length\">\n <p-tabPanel *ngFor=\"let tab of tabs\">\n <ng-template pTemplate=\"header\">\n <em *ngIf=\"tab.icon\" [class]=\"tab.icon\">&nbsp;</em>\n <span>{{ tab.name }}</span>\n </ng-template>\n </p-tabPanel>\n </p-tabView>\n <p-table\n currentPageReportTemplate=\"Mostrando {first} at\u00E9 {last} de {totalRecords} registros\"\n sortMode=\"single\"\n [rows]=\"10\"\n [lazy]=\"pagination && !virtualPagination\"\n [value]=\"data\"\n [paginator]=\"pagination\"\n [totalRecords]=\"totalRecords\"\n [showCurrentPageReport]=\"true\"\n [rowsPerPageOptions]=\"[10, 25, 50, 100]\"\n [responsive]=\"true\"\n [resizableColumns]=\"true\"\n [scrollable]=\"true\"\n scrollDirection=\"vertical\"\n responsiveLayout=\"scroll\"\n dataKey=\"id\"\n [scrollHeight]=\"height\"\n [attr.selectionMode]=\"selectionMode\"\n [(selection)]=\"selectedItems\"\n (onRowSelect)=\"changeSelectedItems($event)\"\n (onHeaderCheckboxToggle)=\"changeSelectedItems($event)\"\n (onRowUnselect)=\"changeSelectedItems($event)\"\n (onLazyLoad)=\"lazyLoaded({ filter: false, data: $event })\"\n (selectionChange)=\"onSelectionChange($event)\"\n [reorderableColumns]=\"reorderableColumns\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"header\">\n <th *ngIf=\"reorderableColumns\" style=\"width: 5rem\"></th>\n\n <th *ngIf=\"selectionType === 'checkbox'\">\n <p-tableHeaderCheckbox [disabled]=\"disabledHeadercheckbox\"></p-tableHeaderCheckbox>\n </th>\n <th class=\"text-center\" *ngIf=\"hasExpandableIcon\">\n {{ addNameColumnExpand }}\n </th>\n <th *ngIf=\"hasActions\">{{ 'app.label.actions' | translate }}</th>\n <th *ngIf=\"selectionType === 'radiobutton'\">\n <div class=\"flex align-items-center\">\n <span></span>\n </div>\n </th>\n <th\n *ngFor=\"let col of columns\"\n [ngStyle]=\"getColStyle(col)\"\n [pSortableColumn]=\"col.notSortable ? '' : col.field\"\n pReorderableColumn\n >\n <div class=\"flex align-items-center\">\n <span>{{ col.header }}</span> <p-sortIcon *ngIf=\"!col.notSortable\" [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-item let-expanded=\"expanded\" let-index=\"rowIndex\">\n <tr\n class=\"row\"\n [pSelectableRow]=\"rowData\"\n [ngClass]=\"{ expandable: expandable }\"\n [pRowToggler]=\"expandable ? item : undefined\"\n (click)=\"onRowClick(item)\"\n [pReorderableRow]=\"index\"\n >\n <ng-container *ngIf=\"reorderableColumns\">\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\n <span class=\"pi pi-bars\" pReorderableRowHandle></span>\n </td>\n </ng-container>\n <ng-container *ngIf=\"selectionType === 'checkbox'\">\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\n <p-tableCheckbox [value]=\"item\" [disabled]=\"item.disabledCheckBox\"></p-tableCheckbox>\n </td>\n </ng-container>\n <ng-container *ngIf=\"selectionType === 'radiobutton'\">\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n </ng-container>\n <td *ngIf=\"hasExpandableIcon\" style=\"max-width: 150px\" class=\"centered\">\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <i\n [ngClass]=\"\n expanded ? 'actions-menu-button pi pi-chevron-down' : 'actions-menu-button pi pi-chevron-right'\n \"\n ></i>\n </td>\n <td *ngIf=\"hasActions\">\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <i class=\"actions-menu-button fas fa-cog\" (click)=\"menu.toggle($event)\"></i>\n </td>\n <ng-container *ngFor=\"let col of columns\">\n <td\n *ngIf=\"isHtmlCell(col)\"\n class=\"cell\"\n [innerHTML]=\"getCellContent(item, col)\"\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\n [ngStyle]=\"getColStyle(col)\"\n ></td>\n <td\n *ngIf=\"(!isHtmlCell(col) && !!col.getStatus) || isScoreCell(col)\"\n class=\"cell\"\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\n [ngStyle]=\"getColStyle(col)\"\n >\n <vector-badge\n *ngIf=\"isBadgeCell(col)\"\n [label]=\"getCellText(item, col)\"\n [type]=\"col.getStatus && col.getStatus(item[col.field])\"\n [tooltip]=\"getTooltipText(item, col)\"\n ></vector-badge>\n <vector-score *ngIf=\"isScoreCell(col)\" [score]=\"item[col.field]\"></vector-score>\n </td>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr class=\"row\">\n <td class=\"no-results\" [attr.colspan]=\"columns.length + 1\">Nenhum resultado encontrado</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\"> </ng-template>\n <ng-template let-item pTemplate=\"paginatordropdownitem\"> {{ item.value }} </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-item>\n <tr>\n <td [attr.colspan]=\"columns.length + (hasActions ? 1 : 0)\">\n <ng-container *ngTemplateOutlet=\"expansionTemplate; context: { item }\"> </ng-container>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </vector-panel>\n </div>\n</div>\n", styles: [".no-results{padding:15px;background-color:#fff;width:100%}.centered{display:flex;justify-content:center}.table-header-actions{display:flex;justify-content:flex-end;align-items:flex-end;width:100%;padding-right:7px;margin-bottom:15px!important}@media (min-width: 768px){.table-header-actions{margin-top:-3px}}.table-header-actions .export-button{padding:7px 10px;color:#fff;display:flex;align-items:center;border:none;border-radius:5px;margin:5px;font-size:.75rem;cursor:pointer}.table-header-actions .export-button.export-excel{background-color:var(--success-color)}.table-header-actions .export-button.export-excel:hover{background-color:var(--success-color-dark)}.table-header-actions .export-button.export-pdf{background-color:var(--error-color)}.table-header-actions .export-button.export-pdf:hover{background-color:var(--error-color-dark)}.table-header-actions .export-button.custom-function{background-color:var(--theme-primary)}.table-header-actions .export-button.custom-function:hover{background-color:var(--theme-medium)}.table-header-actions .export-button i{color:#fff}.table-header-actions .export-button span{margin-left:5px}.table-header-actions .add-item-button{margin-left:10px}.actions-menu-button{font-size:23px;cursor:pointer;color:var(--theme-medium)}.expandable{cursor:pointer}.balance-container{display:flex;flex-direction:column;width:20%;padding:0;margin-bottom:30px;top:30px;right:40px;border-radius:8px;margin-right:15px}.balance-container .header-right{flex:1;flex-direction:row;justify-content:flex-end;display:flex}@media screen and (max-width: 1450px){.balance-container{width:40%}}@media screen and (max-width: 960px){.balance-container{position:relative;width:80%;top:auto;right:auto}}.balance-container .card-header{color:var(--theme-medium);border-radius:9px 9px 0 0;padding:10px 10px 2px;font-weight:500;font-size:13px;line-height:17px;letter-spacing:.25px}.balance-container .value-container{display:flex;flex-direction:row;align-items:center;padding:0 10px 5px}.balance-container .value-container span{font-size:2em;font-weight:700;color:var(--theme-secondary)}@media screen and (max-width: 640px){.balance-container .value-container span{font-size:1.6em}}.balance-container .value-container .balance{margin-left:8px;width:70%}.balance-container .value-container .hidden-balance{background-color:var(--gray-lighter);padding:15px;margin-left:8px;width:70%;height:100%}.balance-container .value-container .icon-container{display:flex;flex:1;justify-content:center;align-items:center}.balance-container .value-container .icon-container i{cursor:pointer;font-size:2em;padding-top:2px;color:var(--theme-medium)}\n"] }]
342
+ args: [{ selector: 'vector-data-table', template: "<div class=\"grid\">\r\n <div class=\"col-12\">\r\n <vector-filters\r\n [fields]=\"filters\"\r\n (onSearch)=\"lazyLoaded({ filter: true, data: $event })\"\r\n (formBuilded)=\"subscribeToFilterChanges()\"\r\n ></vector-filters>\r\n </div>\r\n <div class=\"table-header-actions field\" *ngIf=\"addItemLabel || exportExcel || exportPDF || customFunction\">\r\n <button *ngIf=\"exportExcel\" (click)=\"onExportExcel.emit()\" class=\"export-button export-excel\">\r\n <i class=\"fas fa-file-excel\"></i><span>Excel</span>\r\n </button>\r\n <button *ngIf=\"exportPDF\" (click)=\"onExportPDF.emit()\" class=\"export-button export-pdf\">\r\n <i class=\"fas fa-file-pdf\"></i><span>PDF</span>\r\n </button>\r\n <button\r\n *ngFor=\"let button of customFunction\"\r\n (click)=\"button.clickFunction()\"\r\n class=\"export-button custom-function\"\r\n >\r\n <i *ngIf=\"button?.icon\" class=\"{{ button?.icon }}\"></i><span>{{ button?.label }}</span>\r\n </button>\r\n\r\n <vector-button\r\n *ngFor=\"let button of customButtons\"\r\n class=\"add-item-button\"\r\n [label]=\"button.label\"\r\n (click)=\"button.clickFunction()\"\r\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\r\n ></vector-button>\r\n <vector-button\r\n *ngIf=\"addItemLabel\"\r\n class=\"add-item-button\"\r\n [label]=\"addItemLabel\"\r\n (click)=\"onAdd.emit()\"\r\n [rightIcon]=\"addItemButtonPlusSign ? 'pi pi-plus' : ''\"\r\n ></vector-button>\r\n </div>\r\n @if(showLimitBalance){\r\n <div class=\"col-12 grid ml-0\">\r\n @for (itemAccount of dataAccountBalance; track $index) { @if(itemAccount.visible){\r\n <div class=\"card balance-container\">\r\n <span class=\"card-header\">{{ itemAccount.name }}</span>\r\n <div class=\"card-content value-container\">\r\n <span>R$ </span>\r\n <span *ngIf=\"itemAccount.showBalance\" class=\"balance\">{{ balance(itemAccount) }}</span>\r\n <div class=\"hidden-balance\" *ngIf=\"!itemAccount.showBalance\"></div>\r\n <div class=\"icon-container\">\r\n <i\r\n class=\"fas\"\r\n [ngClass]=\"{ 'fa-eye': !itemAccount.showBalance, 'fa-eye-slash': itemAccount.showBalance }\"\r\n (click)=\"changeShowBalance(itemAccount)\"\r\n ></i>\r\n </div>\r\n </div>\r\n </div>\r\n } }\r\n </div>\r\n\r\n }\r\n\r\n <div class=\"col-12\">\r\n <vector-panel class=\"data-table-panel\">\r\n <p-tabView (onChange)=\"onTabChange($event)\" *ngIf=\"tabs?.length\">\r\n <p-tabPanel *ngFor=\"let tab of tabs\">\r\n <ng-template pTemplate=\"header\">\r\n <em *ngIf=\"tab.icon\" [class]=\"tab.icon\">&nbsp;</em>\r\n <span>{{ tab.name }}</span>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <p-table\r\n currentPageReportTemplate=\"Mostrando {first} at\u00E9 {last} de {totalRecords} registros\"\r\n sortMode=\"single\"\r\n [rows]=\"10\"\r\n [lazy]=\"pagination && !virtualPagination\"\r\n [value]=\"data\"\r\n [paginator]=\"pagination\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [rowsPerPageOptions]=\"[10, 25, 50, 100]\"\r\n [responsive]=\"true\"\r\n [resizableColumns]=\"true\"\r\n [scrollable]=\"true\"\r\n scrollDirection=\"vertical\"\r\n responsiveLayout=\"scroll\"\r\n dataKey=\"id\"\r\n [scrollHeight]=\"height\"\r\n [attr.selectionMode]=\"selectionMode\"\r\n [(selection)]=\"selectedItems\"\r\n (onRowSelect)=\"changeSelectedItems($event)\"\r\n (onHeaderCheckboxToggle)=\"changeSelectedItems($event)\"\r\n (onRowUnselect)=\"changeSelectedItems($event)\"\r\n (onLazyLoad)=\"lazyLoaded({ filter: false, data: $event })\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [reorderableColumns]=\"reorderableColumns\"\r\n >\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"header\">\r\n <th *ngIf=\"reorderableColumns\" style=\"width: 5rem\"></th>\r\n\r\n <th *ngIf=\"selectionType === 'checkbox'\">\r\n <p-tableHeaderCheckbox [disabled]=\"disabledHeadercheckbox\"></p-tableHeaderCheckbox>\r\n </th>\r\n <th class=\"text-center\" *ngIf=\"hasExpandableIcon\">\r\n {{ addNameColumnExpand }}\r\n </th>\r\n <th *ngIf=\"hasActions\">{{ 'app.label.actions' | translate }}</th>\r\n <th *ngIf=\"selectionType === 'radiobutton'\">\r\n <div class=\"flex align-items-center\">\r\n <span></span>\r\n </div>\r\n </th>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n [ngStyle]=\"getColStyle(col)\"\r\n [pSortableColumn]=\"col.notSortable ? '' : col.field\"\r\n pReorderableColumn\r\n >\r\n <div class=\"flex align-items-center\">\r\n <span>{{ col.header }}</span> <p-sortIcon *ngIf=\"!col.notSortable\" [field]=\"col.field\"></p-sortIcon>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-item let-expanded=\"expanded\" let-index=\"rowIndex\">\r\n <tr\r\n class=\"row\"\r\n [pSelectableRow]=\"rowData\"\r\n [ngClass]=\"{ expandable: expandable }\"\r\n [pRowToggler]=\"expandable ? item : undefined\"\r\n (click)=\"onRowClick(item)\"\r\n [pReorderableRow]=\"index\"\r\n >\r\n <ng-container *ngIf=\"reorderableColumns\">\r\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\r\n <span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectionType === 'checkbox'\">\r\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\r\n <p-tableCheckbox [value]=\"item\" [disabled]=\"item.disabledCheckBox\"></p-tableCheckbox>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectionType === 'radiobutton'\">\r\n <td style=\"max-width: 3rem; padding-left: 10px\" class=\"justify-content-center align-items-center\">\r\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\r\n </td>\r\n </ng-container>\r\n <td *ngIf=\"hasExpandableIcon\" style=\"max-width: 150px\" class=\"centered\">\r\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n <i\r\n [ngClass]=\"\r\n expanded ? 'actions-menu-button pi pi-chevron-down' : 'actions-menu-button pi pi-chevron-right'\r\n \"\r\n ></i>\r\n </td>\r\n <td *ngIf=\"hasActions\">\r\n <p-menu #menu [model]=\"item.actions\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n <i class=\"actions-menu-button fas fa-cog\" (click)=\"menu.toggle($event)\"></i>\r\n </td>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <td\r\n *ngIf=\"isHtmlCell(col)\"\r\n class=\"cell\"\r\n [innerHTML]=\"getCellContent(item, col)\"\r\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\r\n [ngStyle]=\"getColStyle(col)\"\r\n ></td>\r\n <td\r\n *ngIf=\"(!isHtmlCell(col) && !!col.getStatus) || isScoreCell(col)\"\r\n class=\"cell\"\r\n (click)=\"col && col.clickFunction && col.clickFunction(item)\"\r\n [ngStyle]=\"getColStyle(col)\"\r\n >\r\n <vector-badge\r\n *ngIf=\"isBadgeCell(col)\"\r\n [label]=\"getCellText(item, col)\"\r\n [type]=\"col.getStatus && col.getStatus(item[col.field])\"\r\n [tooltip]=\"getTooltipText(item, col)\"\r\n ></vector-badge>\r\n <vector-score *ngIf=\"isScoreCell(col)\" [score]=\"item[col.field]\"></vector-score>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"row\">\r\n <td class=\"no-results\" [attr.colspan]=\"columns.length + 1\">Nenhum resultado encontrado</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\"> </ng-template>\r\n <ng-template let-item pTemplate=\"paginatordropdownitem\"> {{ item.value }} </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-item>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length + (hasActions ? 1 : 0)\">\r\n <ng-container *ngTemplateOutlet=\"expansionTemplate; context: { item }\"> </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </vector-panel>\r\n </div>\r\n</div>\r\n", styles: [".no-results{padding:15px;background-color:#fff;width:100%}.centered{display:flex;justify-content:center}.table-header-actions{display:flex;justify-content:flex-end;align-items:flex-end;width:100%;padding-right:7px;margin-bottom:15px!important}@media (min-width: 768px){.table-header-actions{margin-top:-3px}}.table-header-actions .export-button{padding:7px 10px;color:#fff;display:flex;align-items:center;border:none;border-radius:5px;margin:5px;font-size:.75rem;cursor:pointer}.table-header-actions .export-button.export-excel{background-color:var(--success-color)}.table-header-actions .export-button.export-excel:hover{background-color:var(--success-color-dark)}.table-header-actions .export-button.export-pdf{background-color:var(--error-color)}.table-header-actions .export-button.export-pdf:hover{background-color:var(--error-color-dark)}.table-header-actions .export-button.custom-function{background-color:var(--theme-primary)}.table-header-actions .export-button.custom-function:hover{background-color:var(--theme-medium)}.table-header-actions .export-button i{color:#fff}.table-header-actions .export-button span{margin-left:5px}.table-header-actions .add-item-button{margin-left:10px}.actions-menu-button{font-size:23px;cursor:pointer;color:var(--theme-medium)}.expandable{cursor:pointer}.balance-container{display:flex;flex-direction:column;width:20%;padding:0;margin-bottom:30px;top:30px;right:40px;border-radius:8px;margin-right:15px}.balance-container .header-right{flex:1;flex-direction:row;justify-content:flex-end;display:flex}@media screen and (max-width: 1450px){.balance-container{width:40%}}@media screen and (max-width: 960px){.balance-container{position:relative;width:80%;top:auto;right:auto}}.balance-container .card-header{color:var(--theme-medium);border-radius:9px 9px 0 0;padding:10px 10px 2px;font-weight:500;font-size:13px;line-height:17px;letter-spacing:.25px}.balance-container .value-container{display:flex;flex-direction:row;align-items:center;padding:0 10px 5px}.balance-container .value-container span{font-size:2em;font-weight:700;color:var(--theme-secondary)}@media screen and (max-width: 640px){.balance-container .value-container span{font-size:1.6em}}.balance-container .value-container .balance{margin-left:8px;width:70%}.balance-container .value-container .hidden-balance{background-color:var(--gray-lighter);padding:15px;margin-left:8px;width:70%;height:100%}.balance-container .value-container .icon-container{display:flex;flex:1;justify-content:center;align-items:center}.balance-container .value-container .icon-container i{cursor:pointer;font-size:2em;padding-top:2px;color:var(--theme-medium)}\n"] }]
343
343
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { columns: [{
344
344
  type: Input
345
345
  }], data: [{
@@ -416,4 +416,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
416
416
  type: ViewChild,
417
417
  args: [FiltersComponent, { static: true }]
418
418
  }] } });
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFnQyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQXVDLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU83RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQ1csSUFBSSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFB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RGIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdLLElBQUk7c0JBRGQsS0FBSztnQkFNQyxhQUFhO3NCQURuQixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUssYUFBYTtzQkFEdkIsS0FBSztnQkFlQyxhQUFhO3NCQURuQixLQUFLO2dCQUdLLE1BQU07c0JBRGhCLEtBQUs7Z0JBb0JDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFHQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFHQSxRQUFRO3NCQURkLE1BQU07Z0JBR0EsS0FBSztzQkFEWCxNQUFNO2dCQUdBLGFBQWE7c0JBRG5CLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxjQUFjO3NCQURwQixNQUFNO2dCQUdBLGVBQWU7c0JBRHJCLE1BQU07Z0JBR0EsYUFBYTtzQkFEbkIsTUFBTTtnQkFHQSxXQUFXO3NCQURqQixNQUFNO2dCQUlBLGFBQWE7c0JBRG5CLEtBQUs7Z0JBR0MsMkJBQTJCO3NCQURqQyxLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmlsdGVyQ2hhbmdlZEV2ZW50LCBMaXN0SXRlbSwgU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IERhdGFUYWJsZUxhenlMb2FkRXZlbnQsIFRhYmxlQ29sdW1uLCBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGF0YS10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBNYXNrVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZpbHRlckZpZWxkLCBGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVycy9maWx0ZXJzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlY3Rvci1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKF9kYXRhOiBhbnlbXSkge1xuICAgIHRoaXMuX2RhdGEgPSBfZGF0YTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLl9kYXRhPy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpIHx8IFtdO1xuICB9XG4gIHB1YmxpYyBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuICBwcml2YXRlIF9kYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXhwb3J0RXhjZWwgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGV4cG9ydFBERiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRnVuY3Rpb246IHsgbGFiZWw6IHN0cmluZzsgaWNvbj86IHN0cmluZzsgY2xpY2tGdW5jdGlvbjogRnVuY3Rpb24gfVtdIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgdG90YWxSZWNvcmRzID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkSGVhZGVyY2hlY2tib3ggPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlcnM6IEZpbHRlckZpZWxkW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGFkZEl0ZW1MYWJlbCA9ICcnO1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnaW5hdGlvbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2aXJ0dWFsUGFnaW5hdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYnMoX3RhYnM6IExpc3RJdGVtW10pIHtcbiAgICB0aGlzLl90YWJzID0gX3RhYnM7XG4gICAgdGhpcy5fdGFiU2VsZWN0ZWQgPSBfdGFic1swXTtcbiAgfVxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tQnV0dG9uczogeyBsYWJlbDogc3RyaW5nOyBjbGlja0Z1bmN0aW9uOiBGdW5jdGlvbiB9W10gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZGRJdGVtQnV0dG9uUGx1c1NpZ24gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGhhc0FjdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGFzRXhwYW5kYWJsZUljb24gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGFkZE5hbWVDb2x1bW5FeHBhbmQgPSAnJztcbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBhbnNpb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGlvbk1vZGUoX3NlbGVjdGlvbk1vZGUpIHtcbiAgICBzd2l0Y2ggKF9zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlID0gJ3NpbmdsZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlID0gJ211bHRpcGxlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3Rpb25UeXBlOiAnY2hlY2tib3gnIHwgJ3JhZGlvYnV0dG9uJyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhlaWdodChfaGVpZ2h0OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKF9oZWlnaHQpIHtcbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gJzMwMHB4JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICB0aGlzLl9oZWlnaHQgPSAnNTAwcHgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gJzcwMHB4JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmdWxsJzpcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gJ2ZsZXgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX2hlaWdodCA9ICczMDBweCc7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93TGltaXRCYWxhbmNlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRhQWNjb3VudEJhbGFuY2U6IHsgdmlzaWJsZTogYm9vbGVhbjsgbmFtZTogc3RyaW5nOyB2YWx1ZUJhbGFuY2U6IG51bWJlcjsgc2hvd0JhbGFuY2U6IGJvb2xlYW4gfVtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkxhenlMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVMYXp5TG9hZEV2ZW50PigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25BZGQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25FeHBvcnRFeGNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkV4cG9ydFBERiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvblNlbGVjdGVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQ2hhbmdlZEV2ZW50PigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uVGFiU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtPigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRXhwYW5kUm93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmlyc3RMYXp5TG9hZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvdWxkTGF6eUxvYWRXaXRob3V0RmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW9yZGVyYWJsZUNvbHVtbnMgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKEZpbHRlcnNDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBmaWx0ZXJzQ29tcG9uZW50OiBGaWx0ZXJzQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcblxuICBnZXQgYmFsYW5jZSgpOiAoaXRlbUFjY291bnQ/OiBhbnkpID0+IG51bWJlciB8IHN0cmluZyB7XG4gICAgcmV0dXJuIChpdGVtQWNjb3VudD86IGFueSk6IG51bWJlciB8IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gaXRlbUFjY291bnQuc2hvd0JhbGFuY2VcbiAgICAgICAgPyBpdGVtQWNjb3VudC52YWx1ZUJhbGFuY2UudG9Mb2NhbGVTdHJpbmcoJ3B0LUJSJywge1xuICAgICAgICAgICAgY3VycmVuY3k6ICdCUkwnLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogJy0sLS0nO1xuICAgIH07XG4gIH1cblxuICBnZXQgdGFicygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGFicztcbiAgfVxuICBnZXQgaGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XG4gIH1cbiAgZ2V0IHNlbGVjdGlvbk1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGU7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBzdHJpbmcgPSAnc21hbGwnO1xuICBwcml2YXRlIF90YWJzOiBMaXN0SXRlbVtdID0gW107XG4gIHByaXZhdGUgX2RyYXcgPSAxO1xuICBwcml2YXRlIF9maXJzdExhenlMb2FkZWREb25lID0gdGhpcy5maXJzdExhenlMb2FkO1xuICBwcml2YXRlIF9sYXN0TGF6eUxvYWRFdmVudDogRGF0YVRhYmxlTGF6eUxvYWRFdmVudCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdGFiU2VsZWN0ZWQ6IExpc3RJdGVtIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9maWx0ZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLmhlaWdodCA9ICdzbWFsbCc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBhZ2luYXRpb24gfHwgdGhpcy52aXJ0dWFsUGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5maWx0ZXJzQ29tcG9uZW50Py5zZWFyY2goKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldENvbFN0eWxlKGNvbDogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4geyAnbWluLXdpZHRoJzogY29sLndpZHRoIH07XG4gIH1cblxuICBsYXp5TG9hZGVkKHBhcmFtczogeyBmaWx0ZXI6IGJvb2xlYW47IGRhdGE6IGFueSB9ID0geyBmaWx0ZXI6IGZhbHNlLCBkYXRhOiB7IHN0YXJ0OiAwLCByb3dzOiAxMCB9IH0pIHtcbiAgICBpZiAoIXBhcmFtcy5maWx0ZXIgJiYgIXRoaXMuc2hvdWxkTGF6eUxvYWRXaXRob3V0RmlsdGVyKSB7XG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogY29sLmZpZWxkLFxuICAgICAgICAgIG5hbWU6IGAke2NvbC5maWVsZC5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKX0ke2NvbC5maWVsZC5zdWJzdHJpbmcoMSwgY29sLmZpZWxkLmxlbmd0aCl9YCxcbiAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgc2VhcmNoOiB7IHZhbHVlOiAnJywgcmVnZXg6IGZhbHNlIH0sXG4gICAgICAgICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuaGFzQWN0aW9ucykge1xuICAgICAgICBjb2x1bW5zLnVuc2hpZnQoe1xuICAgICAgICAgIGRhdGE6ICdhY3RpdmUnLFxuICAgICAgICAgIG5hbWU6ICdBY3RpdmUnLFxuICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBzZWFyY2g6IHsgdmFsdWU6ICcnLCByZWdleDogZmFsc2UgfSxcbiAgICAgICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xhc3RMYXp5TG9hZEV2ZW50ID0ge1xuICAgICAgICAuLi4odGhpcy5fbGFzdExhenlMb2FkRXZlbnQgfHwgKHt9IGFzIGFueSkpLFxuICAgICAgICBwYWdlOiBwYXJhbXMuZGF0YS5maXJzdCAvIHBhcmFtcy5kYXRhLnJvd3MgKyAxLFxuICAgICAgICBzdGFydDogcGFyYW1zLmRhdGEuZmlyc3QsXG4gICAgICAgIGxlbmd0aDogcGFyYW1zLmRhdGEucm93cyxcbiAgICAgICAgZHJhdzogdGhpcy5fZHJhdysrLFxuICAgICAgICBvcmRlcjogcGFyYW1zLmRhdGEuc29ydEZpZWxkXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2x1bW46XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMuZmluZEluZGV4KChjb2wpID0+IGNvbC5maWVsZCA9PT0gcGFyYW1zLmRhdGEuc29ydEZpZWxkKSArICh0aGlzLmhhc0FjdGlvbnMgPyAxIDogMCksXG4gICAgICAgICAgICAgICAgZGlyOiBwYXJhbXMuZGF0YS5zb3J0T3JkZXIgPiAwID8gJ2FzYycgOiAnZGVzYycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbeyBjb2x1bW46IDAsIGRpcjogJ2Rlc2MnIH1dLFxuICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgICB0YWI6IHRoaXMuX3RhYlNlbGVjdGVkLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGFzdExhenlMb2FkRXZlbnQgPSB7XG4gICAgICAgIC4uLnRoaXMuX2xhc3RMYXp5TG9hZEV2ZW50LFxuICAgICAgICAuLi5wYXJhbXMuZGF0YSxcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuX3RhYlNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuX2xhc3RMYXp5TG9hZEV2ZW50ID0ge1xuICAgICAgICAgIC4uLih0aGlzLl9sYXN0TGF6eUxvYWRFdmVudCB8fCAoe30gYXMgYW55KSksXG4gICAgICAgICAgLi4ueyBTdGF0dXM6IHRoaXMuX3RhYlNlbGVjdGVkLmNvZGUgfSxcbiAgICAgICAgICB0YWI6IHRoaXMuX3RhYlNlbGVjdGVkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9maXJzdExhenlMb2FkZWREb25lIHx8IHRoaXMuZmlyc3RMYXp5TG9hZCkge1xuICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQodGhpcy5fbGFzdExhenlMb2FkRXZlbnQpO1xuICAgIH1cbiAgICB0aGlzLl9maXJzdExhenlMb2FkZWREb25lID0gdHJ1ZTtcbiAgfVxuXG4gIGdldENlbGxDb250ZW50KGl0ZW06IGFueSwgY29sOiBUYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IGNlbGxUZXh0ID0gdGhpcy5nZXRDZWxsVGV4dChpdGVtLCBjb2wpO1xuICAgIGxldCBjb250ZW50ID0gYDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj4ke2NvbC5oZWFkZXJ9PC9zcGFuPjxzcGFuIGNsYXNzPVwidy0xMDBcIj5gO1xuICAgIGlmIChcbiAgICAgICFjb2wudHlwZSB8fFxuICAgICAgW1RhYmxlQ29sdW1uVHlwZS5FTlVNLCBUYWJsZUNvbHVtblR5cGUuVEVYVCwgVGFibGVDb2x1bW5UeXBlLkRBVEVUSU1FLCBUYWJsZUNvbHVtblR5cGUuREFURV0uaW5jbHVkZXMoY29sLnR5cGUpXG4gICAgKSB7XG4gICAgICBjb250ZW50ICs9IGNlbGxUZXh0O1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkNVU1RPTV9TVFlMRTpcbiAgICAgICAgY29udGVudCArPSBgPHNwYW4gY2xhc3M9XCIke2NvbC50ZXh0RmllbGRDbGFzcyA/IGl0ZW1bY29sLnRleHRGaWVsZENsYXNzXSA6ICcnfVwiPiR7Y2VsbFRleHR9PC9zcGFuPmA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuQk9PTEVBTjpcbiAgICAgICAgY29udGVudCArPSBgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyZWRcIj48aSBjbGFzcz1cIiBzdGF0dXMtdGFibGUtZmllbGQgZmFzIGZhLSR7XG4gICAgICAgICAgY2VsbFRleHQgPyAnY2hlY2sgYm9vbGVhbi12YWx1ZS1wb3NpdGl2ZScgOiAndGltZXMgYm9vbGVhbi12YWx1ZS1uZWdhdGl2ZSdcbiAgICAgICAgfVwiPjwvaT48L2Rpdj5gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLlNUQVRVU19CQURHRTpcbiAgICAgICAgY29udGVudCArPSBgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyZWRcIj48aSBjbGFzcz1cImZhcyBmYS1jaXJjbGUgc3RhdHVzLXRhYmxlLWZpZWxkICR7dGhpcy5nZXRTdGF0dXNDb2xvcihcbiAgICAgICAgICBjZWxsVGV4dFxuICAgICAgICApfVwiPjwvaT48L2Rpdj5gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkFDVElWRV9CT09MRUFOX0JBREdFOlxuICAgICAgICBjb250ZW50ICs9IGA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJlZFwiPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZSBzdGF0dXMtdGFibGUtZmllbGQgJHt0aGlzLmdldEFjdGl2ZVN0YXR1c0NvbG9yKFxuICAgICAgICAgIGNlbGxUZXh0XG4gICAgICAgICl9XCI+PC9pPjwvZGl2PmA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuQlVUVE9OOlxuICAgICAgICBjb250ZW50ICs9IGA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJlZFwiPjxpIGNsYXNzPVwiJHtcbiAgICAgICAgICBjb2wuaWNvbiB8fCAnZmFzIGZhLWNpcmNsZSdcbiAgICAgICAgfSBzdGF0dXMtdGFibGUtZmllbGQgdGFibGUtYnV0dG9uXCI+PC9pPjwvZGl2PmA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuTUFTSzpcbiAgICAgICAgY29udGVudCArPSBNYXNrVXRpbC5kb01hc2tTdHJpbmcoY2VsbFRleHQsIGNvbC5tYXNrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRhYmxlQ29sdW1uVHlwZS5DVVJSRU5DWTpcbiAgICAgICAgY29udGVudCArPSBOdW1iZXIoY2VsbFRleHQpLnRvTG9jYWxlU3RyaW5nKCdwdC1CUicsIHtcbiAgICAgICAgICBjdXJyZW5jeTogY29sLmN1cnJlbmN5VHlwZSB8fCAnQlJMJyxcbiAgICAgICAgICBjdXJyZW5jeURpc3BsYXk6ICduYXJyb3dTeW1ib2wnLFxuICAgICAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb250ZW50ICs9IGA8L3NwYW4+YDtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsVGV4dChpdGVtOiBhbnksIGNvbDogVGFibGVDb2x1bW4pIHtcbiAgICBpZiAoY29sLmdldEVudW1UcmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gY29sLmdldEVudW1UcmFuc2xhdGVkKGl0ZW1bY29sLmZpZWxkXSk7XG4gICAgfVxuICAgIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2x1bW5UeXBlLkRBVEVUSU1FICYmIGl0ZW1bY29sLmZpZWxkXSkge1xuICAgICAgY29uc3QgZGF0ZVRpbWUgPVxuICAgICAgICBpdGVtW2NvbC5maWVsZF0gaW5zdGFuY2VvZiBEYXRlID8gRGF0ZVRpbWUuZnJvbUpTRGF0ZShpdGVtW2NvbC5maWVsZF0pIDogRGF0ZVRpbWUuZnJvbUlTTyhpdGVtW2NvbC5maWVsZF0pO1xuICAgICAgcmV0dXJuIGRhdGVUaW1lLnRvVVRDKCkudG9Gb3JtYXQoJ2RkL01NL3l5eXkgSEg6bW0nKTtcbiAgICB9XG4gICAgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbHVtblR5cGUuREFURSAmJiBpdGVtW2NvbC5maWVsZF0pIHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lID1cbiAgICAgICAgaXRlbVtjb2wuZmllbGRdIGluc3RhbmNlb2YgRGF0ZSA/IERhdGVUaW1lLmZyb21KU0RhdGUoaXRlbVtjb2wuZmllbGRdKSA6IERhdGVUaW1lLmZyb21JU08oaXRlbVtjb2wuZmllbGRdKTtcbiAgICAgIHJldHVybiBkYXRlVGltZS50b1VUQygpLnRvRm9ybWF0KCdkZC9NTS95eXl5Jyk7XG4gICAgfVxuICAgIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2x1bW5UeXBlLlNUQUNLX0JBREdFKSB7XG4gICAgICBpZiAoIWl0ZW1bY29sLmZpZWxkXS5sZW5ndGggfHwgaXRlbVtjb2wuZmllbGRdLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gaXRlbVtjb2wuZmllbGRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGArJHtpdGVtW2NvbC5maWVsZF0ubGVuZ3RofWA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2x1bW5UeXBlLlNUQVRVU19CQURHRSkge1xuICAgICAgcmV0dXJuIGl0ZW1bY29sLmZpZWxkXSA9PSAwID8gMCA6IGl0ZW1bY29sLmZpZWxkXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbVtjb2wuZmllbGQgfHwgJyddIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldFRvb2x0aXBUZXh0KGl0ZW06IGFueSwgY29sOiBUYWJsZUNvbHVtbikge1xuICAgIGlmIChcbiAgICAgICFjb2wudHlwZSB8fFxuICAgICAgIVtUYWJsZUNvbHVtblR5cGUuU1RBQ0tfQkFER0VdLmluY2x1ZGVzKGNvbC50eXBlKSB8fFxuICAgICAgIUFycmF5LmlzQXJyYXkoaXRlbVtjb2wuZmllbGRdKSB8fFxuICAgICAgaXRlbVtjb2wuZmllbGRdLmxlbmd0aCA9PT0gMVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1bY29sLmZpZWxkXSkpIHtcbiAgICAgIHJldHVybiBpdGVtW2NvbC5maWVsZF07XG4gICAgfVxuICAgIHJldHVybiBpdGVtW2NvbC5maWVsZF0uam9pbignIC0gJyk7XG4gIH1cblxuICBvblRhYkNoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuX3RhYlNlbGVjdGVkID0gdGhpcy50YWJzWyRldmVudC5pbmRleF07XG4gICAgdGhpcy5sYXp5TG9hZGVkKHsgZmlsdGVyOiB0cnVlLCBkYXRhOiB7fSB9KTtcbiAgICB0aGlzLm9uVGFiU2VsZWN0ZWQuZW1pdCh0aGlzLl90YWJTZWxlY3RlZCk7XG4gIH1cblxuICBzdWJzY3JpYmVUb0ZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5fZmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fZmlsdGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyc0NvbXBvbmVudD8uZm9ybUdyb3VwLmNvbnRyb2xzIHx8IHt9KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuX2ZpbHRlclN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgIHRoaXMuZmlsdGVyc0NvbXBvbmVudD8uZm9ybUdyb3VwXG4gICAgICAgICAgLmdldChrZXkpXG4gICAgICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZWQuZW1pdCh7IGZpZWxkOiBrZXksIHZhbHVlIH0pO1xuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZWQuZW1pdCh7IGZpZWxkOiBrZXksIHZhbHVlOiB0aGlzLmZpbHRlcnNDb21wb25lbnQ/LmZvcm1Hcm91cC5nZXQoa2V5KT8udmFsdWUgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvblJvd0NsaWNrKGl0ZW06IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMub25FeHBhbmRSb3cuZW1pdChpdGVtKTtcbiAgfVxuXG4gIGdldCBsaXN0SGFzQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnNvbWUoKGl0ZW0pID0+IGl0ZW0uYWN0aW9ucz8ubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VTZWxlY3RlZEl0ZW1zKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm9uU2VsZWN0ZWRSb3dzLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0h0bWxDZWxsKGNvbDogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gIWNvbC50eXBlIHx8ICF0aGlzLmlzQmFkZ2VDZWxsKGNvbCk7XG4gIH1cblxuICBwdWJsaWMgaXNCYWRnZUNlbGwoY29sOiBUYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2wudHlwZSAmJiBbVGFibGVDb2x1bW5UeXBlLlRFWFRfQkFER0UsIFRhYmxlQ29sdW1uVHlwZS5TVEFDS19CQURHRV0uaW5jbHVkZXMoY29sLnR5cGUpO1xuICB9XG5cbiAgcHVibGljIGlzU2NvcmVDZWxsKGNvbDogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gY29sLnR5cGUgPT09IFRhYmxlQ29sdW1uVHlwZS5TQ09SRTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3Rpb246IGFueSkge1xuICAgIGZvciAobGV0IGkgPSBzZWxlY3Rpb24ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBkYXRhID0gc2VsZWN0aW9uW2ldO1xuICAgICAgaWYgKGRhdGEuZGlzYWJsZWRDaGVja0JveCkge1xuICAgICAgICBzZWxlY3Rpb24uc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3Rpb247XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlU2hvd0JhbGFuY2UoaXRlbUFjY291bnQ/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXRlbUFjY291bnQpIHtcbiAgICAgIGl0ZW1BY2NvdW50LnNob3dCYWxhbmNlID0gIWl0ZW1BY2NvdW50LnNob3dCYWxhbmNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdHVzQ29sb3Ioc3RhdHVzOiBTdGF0dXMpIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSBTdGF0dXMuUEVORElORzpcbiAgICAgICAgcmV0dXJuICd3YXJuaW5nJztcbiAgICAgIGNhc2UgU3RhdHVzLkFQUFJPVkVEOlxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgY2FzZSBTdGF0dXMuUkVKRUNURUQ6XG4gICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgY2FzZSBTdGF0dXMuSU5GTzpcbiAgICAgICAgcmV0dXJuICdpbmZvJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVTdGF0dXNDb2xvcihhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gYWN0aXZlID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdyaWRcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgIDx2ZWN0b3ItZmlsdGVyc1xuICAgICAgW2ZpZWxkc109XCJmaWx0ZXJzXCJcbiAgICAgIChvblNlYXJjaCk9XCJsYXp5TG9hZGVkKHsgZmlsdGVyOiB0cnVlLCBkYXRhOiAkZXZlbnQgfSlcIlxuICAgICAgKGZvcm1CdWlsZGVkKT1cInN1YnNjcmliZVRvRmlsdGVyQ2hhbmdlcygpXCJcbiAgICA+PC92ZWN0b3ItZmlsdGVycz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXItYWN0aW9ucyBmaWVsZFwiICpuZ0lmPVwiYWRkSXRlbUxhYmVsIHx8IGV4cG9ydEV4Y2VsIHx8IGV4cG9ydFBERiB8fCBjdXN0b21GdW5jdGlvblwiPlxuICAgIDxidXR0b24gKm5nSWY9XCJleHBvcnRFeGNlbFwiIChjbGljayk9XCJvbkV4cG9ydEV4Y2VsLmVtaXQoKVwiIGNsYXNzPVwiZXhwb3J0LWJ1dHRvbiBleHBvcnQtZXhjZWxcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbGUtZXhjZWxcIj48L2k+PHNwYW4+RXhjZWw8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImV4cG9ydFBERlwiIChjbGljayk9XCJvbkV4cG9ydFBERi5lbWl0KClcIiBjbGFzcz1cImV4cG9ydC1idXR0b24gZXhwb3J0LXBkZlwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1wZGZcIj48L2k+PHNwYW4+UERGPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tRnVuY3Rpb25cIlxuICAgICAgKGNsaWNrKT1cImJ1dHRvbi5jbGlja0Z1bmN0aW9uKClcIlxuICAgICAgY2xhc3M9XCJleHBvcnQtYnV0dG9uIGN1c3RvbS1mdW5jdGlvblwiXG4gICAgPlxuICAgICAgPGkgKm5nSWY9XCJidXR0b24/Lmljb25cIiBjbGFzcz1cInt7IGJ1dHRvbj8uaWNvbiB9fVwiPjwvaT48c3Bhbj57eyBidXR0b24/LmxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPHZlY3Rvci1idXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiXG4gICAgICBjbGFzcz1cImFkZC1pdGVtLWJ1dHRvblwiXG4gICAgICBbbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgIChjbGljayk9XCJidXR0b24uY2xpY2tGdW5jdGlvbigpXCJcbiAgICAgIFtyaWdodEljb25dPVwiYWRkSXRlbUJ1dHRvblBsdXNTaWduID8gJ3BpIHBpLXBsdXMnIDogJydcIlxuICAgID48L3ZlY3Rvci1idXR0b24+XG4gICAgPHZlY3Rvci1idXR0b25cbiAgICAgICpuZ0lmPVwiYWRkSXRlbUxhYmVsXCJcbiAgICAgIGNsYXNzPVwiYWRkLWl0ZW0tYnV0dG9uXCJcbiAgICAgIFtsYWJlbF09XCJhZGRJdGVtTGFiZWxcIlxuICAgICAgKGNsaWNrKT1cIm9uQWRkLmVtaXQoKVwiXG4gICAgICBbcmlnaHRJY29uXT1cImFkZEl0ZW1CdXR0b25QbHVzU2lnbiA/ICdwaSBwaS1wbHVzJyA6ICcnXCJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxuICA8L2Rpdj5cbiAgQGlmKHNob3dMaW1pdEJhbGFuY2Upe1xuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdyaWQgbWwtMFwiPlxuICAgIEBmb3IgKGl0ZW1BY2NvdW50IG9mIGRhdGFBY2NvdW50QmFsYW5jZTsgdHJhY2sgJGluZGV4KSB7IEBpZihpdGVtQWNjb3VudC52aXNpYmxlKXtcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBiYWxhbmNlLWNvbnRhaW5lclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWhlYWRlclwiPnt7IGl0ZW1BY2NvdW50Lm5hbWUgfX08L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50IHZhbHVlLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3Bhbj5SJCA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbUFjY291bnQuc2hvd0JhbGFuY2VcIiBjbGFzcz1cImJhbGFuY2VcIj57eyBiYWxhbmNlKGl0ZW1BY2NvdW50KSB9fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbi1iYWxhbmNlXCIgKm5nSWY9XCIhaXRlbUFjY291bnQuc2hvd0JhbGFuY2VcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmFzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZhLWV5ZSc6ICFpdGVtQWNjb3VudC5zaG93QmFsYW5jZSwgJ2ZhLWV5ZS1zbGFzaCc6IGl0ZW1BY2NvdW50LnNob3dCYWxhbmNlIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVNob3dCYWxhbmNlKGl0ZW1BY2NvdW50KVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICB9IH1cbiAgPC9kaXY+XG5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICA8dmVjdG9yLXBhbmVsIGNsYXNzPVwiZGF0YS10YWJsZS1wYW5lbFwiPlxuICAgICAgPHAtdGFiVmlldyAob25DaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiICpuZ0lmPVwidGFicz8ubGVuZ3RoXCI+XG4gICAgICAgIDxwLXRhYlBhbmVsICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxlbSAqbmdJZj1cInRhYi5pY29uXCIgW2NsYXNzXT1cInRhYi5pY29uXCI+Jm5ic3A7PC9lbT5cbiAgICAgICAgICAgIDxzcGFuPnt7IHRhYi5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcC10YWJQYW5lbD5cbiAgICAgIDwvcC10YWJWaWV3PlxuICAgICAgPHAtdGFibGVcbiAgICAgICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIk1vc3RyYW5kbyB7Zmlyc3R9IGF0w6kge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgIHNvcnRNb2RlPVwic2luZ2xlXCJcbiAgICAgICAgW3Jvd3NdPVwiMTBcIlxuICAgICAgICBbbGF6eV09XCJwYWdpbmF0aW9uICYmICF2aXJ0dWFsUGFnaW5hdGlvblwiXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhXCJcbiAgICAgICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0aW9uXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjUsIDUwLCAxMDBdXCJcbiAgICAgICAgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXG4gICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxuICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgc2Nyb2xsRGlyZWN0aW9uPVwidmVydGljYWxcIlxuICAgICAgICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgZGF0YUtleT1cImlkXCJcbiAgICAgICAgW3Njcm9sbEhlaWdodF09XCJoZWlnaHRcIlxuICAgICAgICBbYXR0ci5zZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxuICAgICAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgIChvblJvd1NlbGVjdCk9XCJjaGFuZ2VTZWxlY3RlZEl0ZW1zKCRldmVudClcIlxuICAgICAgICAob25IZWFkZXJDaGVja2JveFRvZ2dsZSk9XCJjaGFuZ2VTZWxlY3RlZEl0ZW1zKCRldmVudClcIlxuICAgICAgICAob25Sb3dVbnNlbGVjdCk9XCJjaGFuZ2VTZWxlY3RlZEl0ZW1zKCRldmVudClcIlxuICAgICAgICAob25MYXp5TG9hZCk9XCJsYXp5TG9hZGVkKHsgZmlsdGVyOiBmYWxzZSwgZGF0YTogJGV2ZW50IH0pXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3Jlb3JkZXJhYmxlQ29sdW1uc109XCJyZW9yZGVyYWJsZUNvbHVtbnNcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJyZW9yZGVyYWJsZUNvbHVtbnNcIiBzdHlsZT1cIndpZHRoOiA1cmVtXCI+PC90aD5cblxuICAgICAgICAgICAgPHRoICpuZ0lmPVwic2VsZWN0aW9uVHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94IFtkaXNhYmxlZF09XCJkaXNhYmxlZEhlYWRlcmNoZWNrYm94XCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImhhc0V4cGFuZGFibGVJY29uXCI+XG4gICAgICAgICAgICAgIHt7IGFkZE5hbWVDb2x1bW5FeHBhbmQgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJoYXNBY3Rpb25zXCI+e3sgJ2FwcC5sYWJlbC5hY3Rpb25zJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3Rpb25UeXBlID09PSAncmFkaW9idXR0b24nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldENvbFN0eWxlKGNvbClcIlxuICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5ub3RTb3J0YWJsZSA/ICcnIDogY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgcFJlb3JkZXJhYmxlQ29sdW1uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+IDxwLXNvcnRJY29uICpuZ0lmPVwiIWNvbC5ub3RTb3J0YWJsZVwiIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dEYXRhIGxldC1pdGVtIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCIgbGV0LWluZGV4PVwicm93SW5kZXhcIj5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgICAgIFtwU2VsZWN0YWJsZVJvd109XCJyb3dEYXRhXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZXhwYW5kYWJsZTogZXhwYW5kYWJsZSB9XCJcbiAgICAgICAgICAgIFtwUm93VG9nZ2xlcl09XCJleHBhbmRhYmxlID8gaXRlbSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhpdGVtKVwiXG4gICAgICAgICAgICBbcFJlb3JkZXJhYmxlUm93XT1cImluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVvcmRlcmFibGVDb2x1bW5zXCI+XG4gICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIm1heC13aWR0aDogM3JlbTsgcGFkZGluZy1sZWZ0OiAxMHB4XCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYmFyc1wiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT48L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25UeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIm1heC13aWR0aDogM3JlbTsgcGFkZGluZy1sZWZ0OiAxMHB4XCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cIml0ZW1cIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZENoZWNrQm94XCI+PC9wLXRhYmxlQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25UeXBlID09PSAncmFkaW9idXR0b24nXCI+XG4gICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIm1heC13aWR0aDogM3JlbTsgcGFkZGluZy1sZWZ0OiAxMHB4XCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxwLXRhYmxlUmFkaW9CdXR0b24gW3ZhbHVlXT1cIml0ZW1cIj48L3AtdGFibGVSYWRpb0J1dHRvbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiaGFzRXhwYW5kYWJsZUljb25cIiBzdHlsZT1cIm1heC13aWR0aDogMTUwcHhcIiBjbGFzcz1cImNlbnRlcmVkXCI+XG4gICAgICAgICAgICAgIDxwLW1lbnUgI21lbnUgW21vZGVsXT1cIml0ZW0uYWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICBleHBhbmRlZCA/ICdhY3Rpb25zLW1lbnUtYnV0dG9uIHBpIHBpLWNoZXZyb24tZG93bicgOiAnYWN0aW9ucy1tZW51LWJ1dHRvbiBwaSBwaS1jaGV2cm9uLXJpZ2h0J1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiaGFzQWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8cC1tZW51ICNtZW51IFttb2RlbF09XCJpdGVtLmFjdGlvbnNcIiBbcG9wdXBdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImFjdGlvbnMtbWVudS1idXR0b24gZmFzIGZhLWNvZ1wiIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCI+PC9pPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNIdG1sQ2VsbChjb2wpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0Q2VsbENvbnRlbnQoaXRlbSwgY29sKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbCAmJiBjb2wuY2xpY2tGdW5jdGlvbiAmJiBjb2wuY2xpY2tGdW5jdGlvbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Q29sU3R5bGUoY29sKVwiXG4gICAgICAgICAgICAgID48L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAqbmdJZj1cIighaXNIdG1sQ2VsbChjb2wpICYmICEhY29sLmdldFN0YXR1cykgfHwgaXNTY29yZUNlbGwoY29sKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sICYmIGNvbC5jbGlja0Z1bmN0aW9uICYmIGNvbC5jbGlja0Z1bmN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRDb2xTdHlsZShjb2wpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx2ZWN0b3ItYmFkZ2VcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNCYWRnZUNlbGwoY29sKVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZ2V0Q2VsbFRleHQoaXRlbSwgY29sKVwiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2wuZ2V0U3RhdHVzICYmIGNvbC5nZXRTdGF0dXMoaXRlbVtjb2wuZmllbGRdKVwiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJnZXRUb29sdGlwVGV4dChpdGVtLCBjb2wpXCJcbiAgICAgICAgICAgICAgICA+PC92ZWN0b3ItYmFkZ2U+XG4gICAgICAgICAgICAgICAgPHZlY3Rvci1zY29yZSAqbmdJZj1cImlzU2NvcmVDZWxsKGNvbClcIiBbc2NvcmVdPVwiaXRlbVtjb2wuZmllbGRdXCI+PC92ZWN0b3Itc2NvcmU+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1yZXN1bHRzXCIgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDFcIj5OZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG88L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JyaWdodFwiPiA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwicGFnaW5hdG9yZHJvcGRvd25pdGVtXCI+IHt7IGl0ZW0udmFsdWUgfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJvd2V4cGFuc2lvblwiIGxldC1pdGVtPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgKGhhc0FjdGlvbnMgPyAxIDogMClcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cGFuc2lvblRlbXBsYXRlOyBjb250ZXh0OiB7IGl0ZW0gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvcC10YWJsZT5cbiAgICA8L3ZlY3Rvci1wYW5lbD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
419
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFnQyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQXVDLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU83RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQ1csSUFBSSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFB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RGIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdLLElBQUk7c0JBRGQsS0FBSztnQkFNQyxhQUFhO3NCQURuQixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUssYUFBYTtzQkFEdkIsS0FBSztnQkFlQyxhQUFhO3NCQURuQixLQUFLO2dCQUdLLE1BQU07c0JBRGhCLEtBQUs7Z0JBb0JDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFHQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFHQSxRQUFRO3NCQURkLE1BQU07Z0JBR0EsS0FBSztzQkFEWCxNQUFNO2dCQUdBLGFBQWE7c0JBRG5CLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxjQUFjO3NCQURwQixNQUFNO2dCQUdBLGVBQWU7c0JBRHJCLE1BQU07Z0JBR0EsYUFBYTtzQkFEbkIsTUFBTTtnQkFHQSxXQUFXO3NCQURqQixNQUFNO2dCQUlBLGFBQWE7c0JBRG5CLEtBQUs7Z0JBR0MsMkJBQTJCO3NCQURqQyxLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEZpbHRlckNoYW5nZWRFdmVudCwgTGlzdEl0ZW0sIFN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IERhdGFUYWJsZUxhenlMb2FkRXZlbnQsIFRhYmxlQ29sdW1uLCBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGF0YS10YWJsZS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hc2tVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJGaWVsZCwgRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlcnMvZmlsdGVycy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2ZWN0b3ItZGF0YS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGRhdGEoX2RhdGE6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gX2RhdGE7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLl9kYXRhPy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpIHx8IFtdO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGRhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGF0YTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBleHBvcnRFeGNlbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGV4cG9ydFBERiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbUZ1bmN0aW9uOiB7IGxhYmVsOiBzdHJpbmc7IGljb24/OiBzdHJpbmc7IGNsaWNrRnVuY3Rpb246IEZ1bmN0aW9uIH1bXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc2FibGVkSGVhZGVyY2hlY2tib3ggPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmaWx0ZXJzOiBGaWx0ZXJGaWVsZFtdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWRkSXRlbUxhYmVsID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGFnaW5hdGlvbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmlydHVhbFBhZ2luYXRpb24gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdGFicyhfdGFiczogTGlzdEl0ZW1bXSkge1xyXG4gICAgdGhpcy5fdGFicyA9IF90YWJzO1xyXG4gICAgdGhpcy5fdGFiU2VsZWN0ZWQgPSBfdGFic1swXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tQnV0dG9uczogeyBsYWJlbDogc3RyaW5nOyBjbGlja0Z1bmN0aW9uOiBGdW5jdGlvbiB9W10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWRkSXRlbUJ1dHRvblBsdXNTaWduID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFzQWN0aW9uczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFzRXhwYW5kYWJsZUljb24gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhZGROYW1lQ29sdW1uRXhwYW5kID0gJyc7XHJcbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGV4cGFuc2lvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlbGVjdGlvbk1vZGUoX3NlbGVjdGlvbk1vZGUpIHtcclxuICAgIHN3aXRjaCAoX3NlbGVjdGlvbk1vZGUpIHtcclxuICAgICAgY2FzZSAnc2luZ2xlJzpcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlID0gJ3NpbmdsZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlID0gJ211bHRpcGxlJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlID0gbnVsbDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsZWN0aW9uVHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpb2J1dHRvbicgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaGVpZ2h0KF9oZWlnaHQ6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChfaGVpZ2h0KSB7XHJcbiAgICAgIGNhc2UgJ3NtYWxsJzpcclxuICAgICAgICB0aGlzLl9oZWlnaHQgPSAnMzAwcHgnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtZWRpdW0nOlxyXG4gICAgICAgIHRoaXMuX2hlaWdodCA9ICc1MDBweCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2xhcmdlJzpcclxuICAgICAgICB0aGlzLl9oZWlnaHQgPSAnNzAwcHgnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdmdWxsJzpcclxuICAgICAgICB0aGlzLl9oZWlnaHQgPSAnZmxleCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gJzMwMHB4JztcclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0xpbWl0QmFsYW5jZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRhdGFBY2NvdW50QmFsYW5jZTogeyB2aXNpYmxlOiBib29sZWFuOyBuYW1lOiBzdHJpbmc7IHZhbHVlQmFsYW5jZTogbnVtYmVyOyBzaG93QmFsYW5jZTogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uTGF6eUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZUxhenlMb2FkRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQWRkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkV4cG9ydEV4Y2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkV4cG9ydFBERiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25TZWxlY3RlZFJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25GaWx0ZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDaGFuZ2VkRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uVGFiU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkV4cGFuZFJvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpcnN0TGF6eUxvYWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG91bGRMYXp5TG9hZFdpdGhvdXRGaWx0ZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZW9yZGVyYWJsZUNvbHVtbnMgPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZChGaWx0ZXJzQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHB1YmxpYyBmaWx0ZXJzQ29tcG9uZW50OiBGaWx0ZXJzQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcblxyXG4gIGdldCBiYWxhbmNlKCk6IChpdGVtQWNjb3VudD86IGFueSkgPT4gbnVtYmVyIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiAoaXRlbUFjY291bnQ/OiBhbnkpOiBudW1iZXIgfCBzdHJpbmcgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbUFjY291bnQuc2hvd0JhbGFuY2VcclxuICAgICAgICA/IGl0ZW1BY2NvdW50LnZhbHVlQmFsYW5jZS50b0xvY2FsZVN0cmluZygncHQtQlInLCB7XHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxyXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogJy0sLS0nO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCB0YWJzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYnM7XHJcbiAgfVxyXG4gIGdldCBoZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xyXG4gIH1cclxuICBnZXQgc2VsZWN0aW9uTW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBzdHJpbmcgPSAnc21hbGwnO1xyXG4gIHByaXZhdGUgX3RhYnM6IExpc3RJdGVtW10gPSBbXTtcclxuICBwcml2YXRlIF9kcmF3ID0gMTtcclxuICBwcml2YXRlIF9maXJzdExhenlMb2FkZWREb25lID0gdGhpcy5maXJzdExhenlMb2FkO1xyXG4gIHByaXZhdGUgX2xhc3RMYXp5TG9hZEV2ZW50OiBEYXRhVGFibGVMYXp5TG9hZEV2ZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX3RhYlNlbGVjdGVkOiBMaXN0SXRlbSB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIF9maWx0ZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhlaWdodCkge1xyXG4gICAgICB0aGlzLmhlaWdodCA9ICdzbWFsbCc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnBhZ2luYXRpb24gfHwgdGhpcy52aXJ0dWFsUGFnaW5hdGlvbikge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb21wb25lbnQ/LnNlYXJjaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGdldENvbFN0eWxlKGNvbDogVGFibGVDb2x1bW4pIHtcclxuICAgIHJldHVybiB7ICdtaW4td2lkdGgnOiBjb2wud2lkdGggfTtcclxuICB9XHJcblxyXG4gIGxhenlMb2FkZWQocGFyYW1zOiB7IGZpbHRlcjogYm9vbGVhbjsgZGF0YTogYW55IH0gPSB7IGZpbHRlcjogZmFsc2UsIGRhdGE6IHsgc3RhcnQ6IDAsIHJvd3M6IDEwIH0gfSkge1xyXG4gICAgaWYgKCFwYXJhbXMuZmlsdGVyICYmICF0aGlzLnNob3VsZExhenlMb2FkV2l0aG91dEZpbHRlcikge1xyXG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcCgoY29sKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGE6IGNvbC5maWVsZCxcclxuICAgICAgICAgIG5hbWU6IGAke2NvbC5maWVsZC5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKX0ke2NvbC5maWVsZC5zdWJzdHJpbmcoMSwgY29sLmZpZWxkLmxlbmd0aCl9YCxcclxuICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHNlYXJjaDogeyB2YWx1ZTogJycsIHJlZ2V4OiBmYWxzZSB9LFxyXG4gICAgICAgICAgc2VhcmNoYWJsZTogdHJ1ZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuaGFzQWN0aW9ucykge1xyXG4gICAgICAgIGNvbHVtbnMudW5zaGlmdCh7XHJcbiAgICAgICAgICBkYXRhOiAnYWN0aXZlJyxcclxuICAgICAgICAgIG5hbWU6ICdBY3RpdmUnLFxyXG4gICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgc2VhcmNoOiB7IHZhbHVlOiAnJywgcmVnZXg6IGZhbHNlIH0sXHJcbiAgICAgICAgICBzZWFyY2hhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2xhc3RMYXp5TG9hZEV2ZW50ID0ge1xyXG4gICAgICAgIC4uLih0aGlzLl9sYXN0TGF6eUxvYWRFdmVudCB8fCAoe30gYXMgYW55KSksXHJcbiAgICAgICAgcGFnZTogcGFyYW1zLmRhdGEuZmlyc3QgLyBwYXJhbXMuZGF0YS5yb3dzICsgMSxcclxuICAgICAgICBzdGFydDogcGFyYW1zLmRhdGEuZmlyc3QsXHJcbiAgICAgICAgbGVuZ3RoOiBwYXJhbXMuZGF0YS5yb3dzLFxyXG4gICAgICAgIGRyYXc6IHRoaXMuX2RyYXcrKyxcclxuICAgICAgICBvcmRlcjogcGFyYW1zLmRhdGEuc29ydEZpZWxkXHJcbiAgICAgICAgICA/IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW46XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucy5maW5kSW5kZXgoKGNvbCkgPT4gY29sLmZpZWxkID09PSBwYXJhbXMuZGF0YS5zb3J0RmllbGQpICsgKHRoaXMuaGFzQWN0aW9ucyA/IDEgOiAwKSxcclxuICAgICAgICAgICAgICAgIGRpcjogcGFyYW1zLmRhdGEuc29ydE9yZGVyID4gMCA/ICdhc2MnIDogJ2Rlc2MnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIDogW3sgY29sdW1uOiAwLCBkaXI6ICdkZXNjJyB9XSxcclxuICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxyXG4gICAgICAgIHRhYjogdGhpcy5fdGFiU2VsZWN0ZWQsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9sYXN0TGF6eUxvYWRFdmVudCA9IHtcclxuICAgICAgICAuLi50aGlzLl9sYXN0TGF6eUxvYWRFdmVudCxcclxuICAgICAgICAuLi5wYXJhbXMuZGF0YSxcclxuICAgICAgICBzdGFydDogMCxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMuX3RhYlNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5fbGFzdExhenlMb2FkRXZlbnQgPSB7XHJcbiAgICAgICAgICAuLi4odGhpcy5fbGFzdExhenlMb2FkRXZlbnQgfHwgKHt9IGFzIGFueSkpLFxyXG4gICAgICAgICAgLi4ueyBTdGF0dXM6IHRoaXMuX3RhYlNlbGVjdGVkLmNvZGUgfSxcclxuICAgICAgICAgIHRhYjogdGhpcy5fdGFiU2VsZWN0ZWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9maXJzdExhenlMb2FkZWREb25lIHx8IHRoaXMuZmlyc3RMYXp5TG9hZCkge1xyXG4gICAgICB0aGlzLm9uTGF6eUxvYWQuZW1pdCh0aGlzLl9sYXN0TGF6eUxvYWRFdmVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9maXJzdExhenlMb2FkZWREb25lID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldENlbGxDb250ZW50KGl0ZW06IGFueSwgY29sOiBUYWJsZUNvbHVtbikge1xyXG4gICAgY29uc3QgY2VsbFRleHQgPSB0aGlzLmdldENlbGxUZXh0KGl0ZW0sIGNvbCk7XHJcbiAgICBsZXQgY29udGVudCA9IGA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+JHtjb2wuaGVhZGVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cInctMTAwXCI+YDtcclxuICAgIGlmIChcclxuICAgICAgIWNvbC50eXBlIHx8XHJcbiAgICAgIFtUYWJsZUNvbHVtblR5cGUuRU5VTSwgVGFibGVDb2x1bW5UeXBlLlRFWFQsIFRhYmxlQ29sdW1uVHlwZS5EQVRFVElNRSwgVGFibGVDb2x1bW5UeXBlLkRBVEVdLmluY2x1ZGVzKGNvbC50eXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnRlbnQgKz0gY2VsbFRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChjb2wudHlwZSkge1xyXG4gICAgICBjYXNlIFRhYmxlQ29sdW1uVHlwZS5DVVNUT01fU1RZTEU6XHJcbiAgICAgICAgY29udGVudCArPSBgPHNwYW4gY2xhc3M9XCIke2NvbC50ZXh0RmllbGRDbGFzcyA/IGl0ZW1bY29sLnRleHRGaWVsZENsYXNzXSA6ICcnfVwiPiR7Y2VsbFRleHR9PC9zcGFuPmA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkJPT0xFQU46XHJcbiAgICAgICAgY29udGVudCArPSBgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyZWRcIj48aSBjbGFzcz1cIiBzdGF0dXMtdGFibGUtZmllbGQgZmFzIGZhLSR7XHJcbiAgICAgICAgICBjZWxsVGV4dCA/ICdjaGVjayBib29sZWFuLXZhbHVlLXBvc2l0aXZlJyA6ICd0aW1lcyBib29sZWFuLXZhbHVlLW5lZ2F0aXZlJ1xyXG4gICAgICAgIH1cIj48L2k+PC9kaXY+YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuU1RBVFVTX0JBREdFOlxyXG4gICAgICAgIGNvbnRlbnQgKz0gYDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlcmVkXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2lyY2xlIHN0YXR1cy10YWJsZS1maWVsZCAke3RoaXMuZ2V0U3RhdHVzQ29sb3IoXHJcbiAgICAgICAgICBjZWxsVGV4dFxyXG4gICAgICAgICl9XCI+PC9pPjwvZGl2PmA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkFDVElWRV9CT09MRUFOX0JBREdFOlxyXG4gICAgICAgIGNvbnRlbnQgKz0gYDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlcmVkXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2lyY2xlIHN0YXR1cy10YWJsZS1maWVsZCAke3RoaXMuZ2V0QWN0aXZlU3RhdHVzQ29sb3IoXHJcbiAgICAgICAgICBjZWxsVGV4dFxyXG4gICAgICAgICl9XCI+PC9pPjwvZGl2PmA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkJVVFRPTjpcclxuICAgICAgICBjb250ZW50ICs9IGA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJlZFwiPjxpIGNsYXNzPVwiJHtcclxuICAgICAgICAgIGNvbC5pY29uIHx8ICdmYXMgZmEtY2lyY2xlJ1xyXG4gICAgICAgIH0gc3RhdHVzLXRhYmxlLWZpZWxkIHRhYmxlLWJ1dHRvblwiPjwvaT48L2Rpdj5gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRhYmxlQ29sdW1uVHlwZS5NQVNLOlxyXG4gICAgICAgIGNvbnRlbnQgKz0gTWFza1V0aWwuZG9NYXNrU3RyaW5nKGNlbGxUZXh0LCBjb2wubWFzayk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkNVUlJFTkNZOlxyXG4gICAgICAgIGNvbnRlbnQgKz0gTnVtYmVyKGNlbGxUZXh0KS50b0xvY2FsZVN0cmluZygncHQtQlInLCB7XHJcbiAgICAgICAgICBjdXJyZW5jeTogY29sLmN1cnJlbmN5VHlwZSB8fCAnQlJMJyxcclxuICAgICAgICAgIGN1cnJlbmN5RGlzcGxheTogJ25hcnJvd1N5bWJvbCcsXHJcbiAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb250ZW50ICs9IGA8L3NwYW4+YDtcclxuICAgIHJldHVybiBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENlbGxUZXh0KGl0ZW06IGFueSwgY29sOiBUYWJsZUNvbHVtbikge1xyXG4gICAgaWYgKGNvbC5nZXRFbnVtVHJhbnNsYXRlZCkge1xyXG4gICAgICByZXR1cm4gY29sLmdldEVudW1UcmFuc2xhdGVkKGl0ZW1bY29sLmZpZWxkXSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sdW1uVHlwZS5EQVRFVElNRSAmJiBpdGVtW2NvbC5maWVsZF0pIHtcclxuICAgICAgY29uc3QgZGF0ZVRpbWUgPVxyXG4gICAgICAgIGl0ZW1bY29sLmZpZWxkXSBpbnN0YW5jZW9mIERhdGUgPyBEYXRlVGltZS5mcm9tSlNEYXRlKGl0ZW1bY29sLmZpZWxkXSkgOiBEYXRlVGltZS5mcm9tSVNPKGl0ZW1bY29sLmZpZWxkXSk7XHJcbiAgICAgIHJldHVybiBkYXRlVGltZS50b1VUQygpLnRvRm9ybWF0KCdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sdW1uVHlwZS5EQVRFICYmIGl0ZW1bY29sLmZpZWxkXSkge1xyXG4gICAgICBjb25zdCBkYXRlVGltZSA9XHJcbiAgICAgICAgaXRlbVtjb2wuZmllbGRdIGluc3RhbmNlb2YgRGF0ZSA/IERhdGVUaW1lLmZyb21KU0RhdGUoaXRlbVtjb2wuZmllbGRdKSA6IERhdGVUaW1lLmZyb21JU08oaXRlbVtjb2wuZmllbGRdKTtcclxuICAgICAgcmV0dXJuIGRhdGVUaW1lLnRvVVRDKCkudG9Gb3JtYXQoJ2RkL01NL3l5eXknKTtcclxuICAgIH1cclxuICAgIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2x1bW5UeXBlLlNUQUNLX0JBREdFKSB7XHJcbiAgICAgIGlmICghaXRlbVtjb2wuZmllbGRdLmxlbmd0aCB8fCBpdGVtW2NvbC5maWVsZF0ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1bY29sLmZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCske2l0ZW1bY29sLmZpZWxkXS5sZW5ndGh9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbHVtblR5cGUuU1RBVFVTX0JBREdFKSB7XHJcbiAgICAgIHJldHVybiBpdGVtW2NvbC5maWVsZF0gPT0gMCA/IDAgOiBpdGVtW2NvbC5maWVsZF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGl0ZW1bY29sLmZpZWxkIHx8ICcnXSB8fCAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUb29sdGlwVGV4dChpdGVtOiBhbnksIGNvbDogVGFibGVDb2x1bW4pIHtcclxuICAgIGlmIChcclxuICAgICAgIWNvbC50eXBlIHx8XHJcbiAgICAgICFbVGFibGVDb2x1bW5UeXBlLlNUQUNLX0JBREdFXS5pbmNsdWRlcyhjb2wudHlwZSkgfHxcclxuICAgICAgIUFycmF5LmlzQXJyYXkoaXRlbVtjb2wuZmllbGRdKSB8fFxyXG4gICAgICBpdGVtW2NvbC5maWVsZF0ubGVuZ3RoID09PSAxXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1bY29sLmZpZWxkXSkpIHtcclxuICAgICAgcmV0dXJuIGl0ZW1bY29sLmZpZWxkXTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtW2NvbC5maWVsZF0uam9pbignIC0gJyk7XHJcbiAgfVxyXG5cclxuICBvblRhYkNoYW5nZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5fdGFiU2VsZWN0ZWQgPSB0aGlzLnRhYnNbJGV2ZW50LmluZGV4XTtcclxuICAgIHRoaXMubGF6eUxvYWRlZCh7IGZpbHRlcjogdHJ1ZSwgZGF0YToge30gfSk7XHJcbiAgICB0aGlzLm9uVGFiU2VsZWN0ZWQuZW1pdCh0aGlzLl90YWJTZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVUb0ZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLl9maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX2ZpbHRlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyc0NvbXBvbmVudD8uZm9ybUdyb3VwLmNvbnRyb2xzIHx8IHt9KS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdGhpcy5fZmlsdGVyU3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICB0aGlzLmZpbHRlcnNDb21wb25lbnQ/LmZvcm1Hcm91cFxyXG4gICAgICAgICAgLmdldChrZXkpXHJcbiAgICAgICAgICA/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZWQuZW1pdCh7IGZpZWxkOiBrZXksIHZhbHVlIH0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZWQuZW1pdCh7IGZpZWxkOiBrZXksIHZhbHVlOiB0aGlzLmZpbHRlcnNDb21wb25lbnQ/LmZvcm1Hcm91cC5nZXQoa2V5KT8udmFsdWUgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2soaXRlbTogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25FeHBhbmRSb3cuZW1pdChpdGVtKTtcclxuICB9XHJcblxyXG4gIGdldCBsaXN0SGFzQWN0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuc29tZSgoaXRlbSkgPT4gaXRlbS5hY3Rpb25zPy5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVNlbGVjdGVkSXRlbXModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUm93cy5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNIdG1sQ2VsbChjb2w6IFRhYmxlQ29sdW1uKSB7XHJcbiAgICByZXR1cm4gIWNvbC50eXBlIHx8ICF0aGlzLmlzQmFkZ2VDZWxsKGNvbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNCYWRnZUNlbGwoY29sOiBUYWJsZUNvbHVtbikge1xyXG4gICAgcmV0dXJuIGNvbC50eXBlICYmIFtUYWJsZUNvbHVtblR5cGUuVEVYVF9CQURHRSwgVGFibGVDb2x1bW5UeXBlLlNUQUNLX0JBREdFXS5pbmNsdWRlcyhjb2wudHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTY29yZUNlbGwoY29sOiBUYWJsZUNvbHVtbikge1xyXG4gICAgcmV0dXJuIGNvbC50eXBlID09PSBUYWJsZUNvbHVtblR5cGUuU0NPUkU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uOiBhbnkpIHtcclxuICAgIGZvciAobGV0IGkgPSBzZWxlY3Rpb24ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgbGV0IGRhdGEgPSBzZWxlY3Rpb25baV07XHJcbiAgICAgIGlmIChkYXRhLmRpc2FibGVkQ2hlY2tCb3gpIHtcclxuICAgICAgICBzZWxlY3Rpb24uc3BsaWNlKGksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlU2hvd0JhbGFuY2UoaXRlbUFjY291bnQ/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpdGVtQWNjb3VudCkge1xyXG4gICAgICBpdGVtQWNjb3VudC5zaG93QmFsYW5jZSA9ICFpdGVtQWNjb3VudC5zaG93QmFsYW5jZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RhdHVzQ29sb3Ioc3RhdHVzOiBTdGF0dXMpIHtcclxuICAgIHN3aXRjaCAoc3RhdHVzKSB7XHJcbiAgICAgIGNhc2UgU3RhdHVzLlBFTkRJTkc6XHJcbiAgICAgICAgcmV0dXJuICd3YXJuaW5nJztcclxuICAgICAgY2FzZSBTdGF0dXMuQVBQUk9WRUQ6XHJcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcclxuICAgICAgY2FzZSBTdGF0dXMuUkVKRUNURUQ6XHJcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XHJcbiAgICAgIGNhc2UgU3RhdHVzLklORk86XHJcbiAgICAgICAgcmV0dXJuICdpbmZvJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWN0aXZlU3RhdHVzQ29sb3IoYWN0aXZlOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gYWN0aXZlID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICA8dmVjdG9yLWZpbHRlcnNcclxuICAgICAgW2ZpZWxkc109XCJmaWx0ZXJzXCJcclxuICAgICAgKG9uU2VhcmNoKT1cImxhenlMb2FkZWQoeyBmaWx0ZXI6IHRydWUsIGRhdGE6ICRldmVudCB9KVwiXHJcbiAgICAgIChmb3JtQnVpbGRlZCk9XCJzdWJzY3JpYmVUb0ZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICA+PC92ZWN0b3ItZmlsdGVycz5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyLWFjdGlvbnMgZmllbGRcIiAqbmdJZj1cImFkZEl0ZW1MYWJlbCB8fCBleHBvcnRFeGNlbCB8fCBleHBvcnRQREYgfHwgY3VzdG9tRnVuY3Rpb25cIj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJleHBvcnRFeGNlbFwiIChjbGljayk9XCJvbkV4cG9ydEV4Y2VsLmVtaXQoKVwiIGNsYXNzPVwiZXhwb3J0LWJ1dHRvbiBleHBvcnQtZXhjZWxcIj5cclxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1leGNlbFwiPjwvaT48c3Bhbj5FeGNlbDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cImV4cG9ydFBERlwiIChjbGljayk9XCJvbkV4cG9ydFBERi5lbWl0KClcIiBjbGFzcz1cImV4cG9ydC1idXR0b24gZXhwb3J0LXBkZlwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWxlLXBkZlwiPjwvaT48c3Bhbj5QREY8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjdXN0b21GdW5jdGlvblwiXHJcbiAgICAgIChjbGljayk9XCJidXR0b24uY2xpY2tGdW5jdGlvbigpXCJcclxuICAgICAgY2xhc3M9XCJleHBvcnQtYnV0dG9uIGN1c3RvbS1mdW5jdGlvblwiXHJcbiAgICA+XHJcbiAgICAgIDxpICpuZ0lmPVwiYnV0dG9uPy5pY29uXCIgY2xhc3M9XCJ7eyBidXR0b24/Lmljb24gfX1cIj48L2k+PHNwYW4+e3sgYnV0dG9uPy5sYWJlbCB9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDx2ZWN0b3ItYnV0dG9uXHJcbiAgICAgICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY3VzdG9tQnV0dG9uc1wiXHJcbiAgICAgIGNsYXNzPVwiYWRkLWl0ZW0tYnV0dG9uXCJcclxuICAgICAgW2xhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXHJcbiAgICAgIChjbGljayk9XCJidXR0b24uY2xpY2tGdW5jdGlvbigpXCJcclxuICAgICAgW3JpZ2h0SWNvbl09XCJhZGRJdGVtQnV0dG9uUGx1c1NpZ24gPyAncGkgcGktcGx1cycgOiAnJ1wiXHJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxyXG4gICAgPHZlY3Rvci1idXR0b25cclxuICAgICAgKm5nSWY9XCJhZGRJdGVtTGFiZWxcIlxyXG4gICAgICBjbGFzcz1cImFkZC1pdGVtLWJ1dHRvblwiXHJcbiAgICAgIFtsYWJlbF09XCJhZGRJdGVtTGFiZWxcIlxyXG4gICAgICAoY2xpY2spPVwib25BZGQuZW1pdCgpXCJcclxuICAgICAgW3JpZ2h0SWNvbl09XCJhZGRJdGVtQnV0dG9uUGx1c1NpZ24gPyAncGkgcGktcGx1cycgOiAnJ1wiXHJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIEBpZihzaG93TGltaXRCYWxhbmNlKXtcclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdyaWQgbWwtMFwiPlxyXG4gICAgQGZvciAoaXRlbUFjY291bnQgb2YgZGF0YUFjY291bnRCYWxhbmNlOyB0cmFjayAkaW5kZXgpIHsgQGlmKGl0ZW1BY2NvdW50LnZpc2libGUpe1xyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgYmFsYW5jZS1jb250YWluZXJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWhlYWRlclwiPnt7IGl0ZW1BY2NvdW50Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgdmFsdWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHNwYW4+UiQgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbUFjY291bnQuc2hvd0JhbGFuY2VcIiBjbGFzcz1cImJhbGFuY2VcIj57eyBiYWxhbmNlKGl0ZW1BY2NvdW50KSB9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuLWJhbGFuY2VcIiAqbmdJZj1cIiFpdGVtQWNjb3VudC5zaG93QmFsYW5jZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJmYXNcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdmYS1leWUnOiAhaXRlbUFjY291bnQuc2hvd0JhbGFuY2UsICdmYS1leWUtc2xhc2gnOiBpdGVtQWNjb3VudC5zaG93QmFsYW5jZSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVNob3dCYWxhbmNlKGl0ZW1BY2NvdW50KVwiXHJcbiAgICAgICAgICA+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIH1cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgPHZlY3Rvci1wYW5lbCBjbGFzcz1cImRhdGEtdGFibGUtcGFuZWxcIj5cclxuICAgICAgPHAtdGFiVmlldyAob25DaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiICpuZ0lmPVwidGFicz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPHAtdGFiUGFuZWwgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxlbSAqbmdJZj1cInRhYi5pY29uXCIgW2NsYXNzXT1cInRhYi5pY29uXCI+Jm5ic3A7PC9lbT5cclxuICAgICAgICAgICAgPHNwYW4+e3sgdGFiLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC10YWJQYW5lbD5cclxuICAgICAgPC9wLXRhYlZpZXc+XHJcbiAgICAgIDxwLXRhYmxlXHJcbiAgICAgICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIk1vc3RyYW5kbyB7Zmlyc3R9IGF0w6kge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXHJcbiAgICAgICAgc29ydE1vZGU9XCJzaW5nbGVcIlxyXG4gICAgICAgIFtyb3dzXT1cIjEwXCJcclxuICAgICAgICBbbGF6eV09XCJwYWdpbmF0aW9uICYmICF2aXJ0dWFsUGFnaW5hdGlvblwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGFcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdGlvblwiXHJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDI1LCA1MCwgMTAwXVwiXHJcbiAgICAgICAgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgc2Nyb2xsRGlyZWN0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxyXG4gICAgICAgIGRhdGFLZXk9XCJpZFwiXHJcbiAgICAgICAgW3Njcm9sbEhlaWdodF09XCJoZWlnaHRcIlxyXG4gICAgICAgIFthdHRyLnNlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXHJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgIChvblJvd1NlbGVjdCk9XCJjaGFuZ2VTZWxlY3RlZEl0ZW1zKCRldmVudClcIlxyXG4gICAgICAgIChvbkhlYWRlckNoZWNrYm94VG9nZ2xlKT1cImNoYW5nZVNlbGVjdGVkSXRlbXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uUm93VW5zZWxlY3QpPVwiY2hhbmdlU2VsZWN0ZWRJdGVtcygkZXZlbnQpXCJcclxuICAgICAgICAob25MYXp5TG9hZCk9XCJsYXp5TG9hZGVkKHsgZmlsdGVyOiBmYWxzZSwgZGF0YTogJGV2ZW50IH0pXCJcclxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtyZW9yZGVyYWJsZUNvbHVtbnNdPVwicmVvcmRlcmFibGVDb2x1bW5zXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDx0ciBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCJyZW9yZGVyYWJsZUNvbHVtbnNcIiBzdHlsZT1cIndpZHRoOiA1cmVtXCI+PC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94IFtkaXNhYmxlZF09XCJkaXNhYmxlZEhlYWRlcmNoZWNrYm94XCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJoYXNFeHBhbmRhYmxlSWNvblwiPlxyXG4gICAgICAgICAgICAgIHt7IGFkZE5hbWVDb2x1bW5FeHBhbmQgfX1cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoICpuZ0lmPVwiaGFzQWN0aW9uc1wiPnt7ICdhcHAubGFiZWwuYWN0aW9ucycgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3Rpb25UeXBlID09PSAncmFkaW9idXR0b24nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Q29sU3R5bGUoY29sKVwiXHJcbiAgICAgICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wubm90U29ydGFibGUgPyAnJyA6IGNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgcFJlb3JkZXJhYmxlQ29sdW1uXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+IDxwLXNvcnRJY29uICpuZ0lmPVwiIWNvbC5ub3RTb3J0YWJsZVwiIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93RGF0YSBsZXQtaXRlbSBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiIGxldC1pbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICBbcFNlbGVjdGFibGVSb3ddPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZXhwYW5kYWJsZTogZXhwYW5kYWJsZSB9XCJcclxuICAgICAgICAgICAgW3BSb3dUb2dnbGVyXT1cImV4cGFuZGFibGUgPyBpdGVtIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soaXRlbSlcIlxyXG4gICAgICAgICAgICBbcFJlb3JkZXJhYmxlUm93XT1cImluZGV4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlb3JkZXJhYmxlQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIm1heC13aWR0aDogM3JlbTsgcGFkZGluZy1sZWZ0OiAxMHB4XCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1iYXJzXCIgcFJlb3JkZXJhYmxlUm93SGFuZGxlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJtYXgtd2lkdGg6IDNyZW07IHBhZGRpbmctbGVmdDogMTBweFwiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cIml0ZW1cIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZENoZWNrQm94XCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25UeXBlID09PSAncmFkaW9idXR0b24nXCI+XHJcbiAgICAgICAgICAgICAgPHRkIHN0eWxlPVwibWF4LXdpZHRoOiAzcmVtOyBwYWRkaW5nLWxlZnQ6IDEwcHhcIiBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZVJhZGlvQnV0dG9uIFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlUmFkaW9CdXR0b24+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImhhc0V4cGFuZGFibGVJY29uXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDE1MHB4XCIgY2xhc3M9XCJjZW50ZXJlZFwiPlxyXG4gICAgICAgICAgICAgIDxwLW1lbnUgI21lbnUgW21vZGVsXT1cIml0ZW0uYWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRlZCA/ICdhY3Rpb25zLW1lbnUtYnV0dG9uIHBpIHBpLWNoZXZyb24tZG93bicgOiAnYWN0aW9ucy1tZW51LWJ1dHRvbiBwaSBwaS1jaGV2cm9uLXJpZ2h0J1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJoYXNBY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiaXRlbS5hY3Rpb25zXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImFjdGlvbnMtbWVudS1idXR0b24gZmFzIGZhLWNvZ1wiIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0h0bWxDZWxsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0Q2VsbENvbnRlbnQoaXRlbSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sICYmIGNvbC5jbGlja0Z1bmN0aW9uICYmIGNvbC5jbGlja0Z1bmN0aW9uKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldENvbFN0eWxlKGNvbClcIlxyXG4gICAgICAgICAgICAgID48L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoIWlzSHRtbENlbGwoY29sKSAmJiAhIWNvbC5nZXRTdGF0dXMpIHx8IGlzU2NvcmVDZWxsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb2wgJiYgY29sLmNsaWNrRnVuY3Rpb24gJiYgY29sLmNsaWNrRnVuY3Rpb24oaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Q29sU3R5bGUoY29sKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZlY3Rvci1iYWRnZVxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQmFkZ2VDZWxsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZ2V0Q2VsbFRleHQoaXRlbSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbC5nZXRTdGF0dXMgJiYgY29sLmdldFN0YXR1cyhpdGVtW2NvbC5maWVsZF0pXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiZ2V0VG9vbHRpcFRleHQoaXRlbSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZWN0b3ItYmFkZ2U+XHJcbiAgICAgICAgICAgICAgICA8dmVjdG9yLXNjb3JlICpuZ0lmPVwiaXNTY29yZUNlbGwoY29sKVwiIFtzY29yZV09XCJpdGVtW2NvbC5maWVsZF1cIj48L3ZlY3Rvci1zY29yZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tcmVzdWx0c1wiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAxXCI+TmVuaHVtIHJlc3VsdGFkbyBlbmNvbnRyYWRvPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ycmlnaHRcIj4gPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwicGFnaW5hdG9yZHJvcGRvd25pdGVtXCI+IHt7IGl0ZW0udmFsdWUgfX0gPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicm93ZXhwYW5zaW9uXCIgbGV0LWl0ZW0+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgKGhhc0FjdGlvbnMgPyAxIDogMClcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5zaW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbSB9XCI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L3AtdGFibGU+XHJcbiAgICA8L3ZlY3Rvci1wYW5lbD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export * from './data-table.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kYXRhLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGEtdGFibGUuY29tcG9uZW50JztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kYXRhLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGEtdGFibGUuY29tcG9uZW50JztcclxuIl19