{"version":3,"sources":["node_modules/@swimlane/ngx-datatable/fesm2020/swimlane-ngx-datatable.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable, Inject, Directive, EventEmitter, HostBinding, Output, Input, HostListener, ContentChildren, Component, ChangeDetectionStrategy, TemplateRef, ContentChild, ViewContainerRef, ViewChild, SkipSelf, ViewEncapsulation, Optional, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { Subject, fromEvent, BehaviorSubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { __decorate } from 'tslib';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\nconst _c0 = [\"*\"];\nconst _c1 = [\"cellTemplate\"];\nconst _c2 = a0 => ({\n cellContext: a0\n});\nfunction DataTableBodyCellComponent_label_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"label\", 5)(1, \"input\", 6);\n i0.ɵɵlistener(\"click\", function DataTableBodyCellComponent_label_1_Template_input_click_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onCheckboxChange($event));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"checked\", ctx_r1.isSelected);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"i\", 12);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"i\", 13);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"i\", 14);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 8);\n i0.ɵɵlistener(\"click\", function DataTableBodyCellComponent_ng_container_2_button_1_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onTreeAction());\n });\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtemplate(2, DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template, 1, 0, \"i\", 9)(3, DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template, 1, 0, \"i\", 10)(4, DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template, 1, 0, \"i\", 11);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"disabled\", ctx_r1.treeStatus === \"disabled\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.treeStatus === \"loading\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.treeStatus === \"collapsed\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.treeStatus === \"expanded\" || ctx_r1.treeStatus === \"disabled\");\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template(rf, ctx) {}\nfunction DataTableBodyCellComponent_ng_container_2_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template, 0, 0, \"ng-template\", 15);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.column.treeToggleTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c2, ctx_r1.cellContext));\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, DataTableBodyCellComponent_ng_container_2_button_1_Template, 5, 4, \"button\", 7)(2, DataTableBodyCellComponent_ng_container_2_2_Template, 1, 4, null, 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.column.treeToggleTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.column.treeToggleTemplate);\n }\n}\nfunction DataTableBodyCellComponent_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 16);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"title\", ctx_r1.sanitizedValue)(\"innerHTML\", ctx_r1.value, i0.ɵɵsanitizeHtml);\n }\n}\nfunction DataTableBodyCellComponent_4_ng_template_0_Template(rf, ctx) {}\nfunction DataTableBodyCellComponent_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyCellComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 15, 0, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.column.cellTemplate)(\"ngTemplateOutletContext\", ctx_r1.cellContext);\n }\n}\nfunction DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-body-cell\", 3);\n i0.ɵɵlistener(\"activate\", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_activate_0_listener($event) {\n const ii_r2 = i0.ɵɵrestoreView(_r1).index;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onActivate($event, ii_r2));\n })(\"treeAction\", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_treeAction_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onTreeAction());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r4 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"row\", ctx_r2.row)(\"group\", ctx_r2.group)(\"expanded\", ctx_r2.expanded)(\"isSelected\", ctx_r2.isSelected)(\"rowIndex\", ctx_r2.rowIndex)(\"column\", column_r4)(\"rowHeight\", ctx_r2.rowHeight)(\"displayCheck\", ctx_r2.displayCheck)(\"treeStatus\", ctx_r2.treeStatus);\n }\n}\nfunction DataTableBodyRowComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtemplate(1, DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template, 1, 9, \"datatable-body-cell\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const colGroup_r5 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassMapInterpolate1(\"datatable-row-\", colGroup_r5.type, \" datatable-row-group\");\n i0.ɵɵproperty(\"ngStyle\", ctx_r2._groupStyles[colGroup_r5.type]);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", colGroup_r5.columns)(\"ngForTrackBy\", ctx_r2.columnTrackingFn);\n }\n}\nfunction DataTableSummaryRowComponent_datatable_body_row_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-body-row\", 1);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"innerWidth\", ctx_r0.innerWidth)(\"offsetX\", ctx_r0.offsetX)(\"columns\", ctx_r0._internalColumns)(\"rowHeight\", ctx_r0.rowHeight)(\"row\", ctx_r0.summaryRow)(\"rowIndex\", -1);\n }\n}\nfunction DataTableRowWrapperComponent_div_0_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableRowWrapperComponent_div_0_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableRowWrapperComponent_div_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.groupHeader.template)(\"ngTemplateOutletContext\", ctx_r0.groupContext);\n }\n}\nfunction DataTableRowWrapperComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵtemplate(1, DataTableRowWrapperComponent_div_0_1_Template, 1, 2, null, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngStyle\", ctx_r0.getGroupHeaderStyle());\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.groupHeader && ctx_r0.groupHeader.template);\n }\n}\nfunction DataTableRowWrapperComponent_ng_content_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 0, [\"*ngIf\", \"(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template\"]);\n }\n}\nfunction DataTableRowWrapperComponent_div_2_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableRowWrapperComponent_div_2_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableRowWrapperComponent_div_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.rowDetail.template)(\"ngTemplateOutletContext\", ctx_r0.rowContext);\n }\n}\nfunction DataTableRowWrapperComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵtemplate(1, DataTableRowWrapperComponent_div_2_1_Template, 1, 2, null, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"height\", ctx_r0.detailRowHeight, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.rowDetail && ctx_r0.rowDetail.template);\n }\n}\nfunction DataTableBodyComponent_datatable_progress_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-progress\");\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-summary-row\", 10);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rowHeight\", ctx_r2.summaryHeight)(\"offsetX\", ctx_r2.offsetX)(\"innerWidth\", ctx_r2.innerWidth)(\"rows\", ctx_r2.rows)(\"columns\", ctx_r2.columns);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-body-row\", 13);\n i0.ɵɵlistener(\"treeAction\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_treeAction_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const group_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onTreeAction(group_r6));\n })(\"activate\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_activate_0_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const i_r7 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const selector_r8 = i0.ɵɵreference(2);\n return i0.ɵɵresetView(selector_r8.onActivate($event, ctx_r2.indexes.first + i_r7));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const group_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const selector_r8 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"isSelected\", selector_r8.getRowSelected(group_r6))(\"innerWidth\", ctx_r2.innerWidth)(\"offsetX\", ctx_r2.offsetX)(\"columns\", ctx_r2.columns)(\"rowHeight\", ctx_r2.getRowHeight(group_r6))(\"row\", group_r6)(\"rowIndex\", ctx_r2.getRowIndex(group_r6))(\"expanded\", ctx_r2.getRowExpanded(group_r6))(\"rowClass\", ctx_r2.rowClass)(\"displayCheck\", ctx_r2.displayCheck)(\"treeStatus\", group_r6 && group_r6.treeStatus);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-body-row\", 15);\n i0.ɵɵlistener(\"activate\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template_datatable_body_row_activate_0_listener($event) {\n const i_r10 = i0.ɵɵrestoreView(_r9).index;\n i0.ɵɵnextContext(4);\n const selector_r8 = i0.ɵɵreference(2);\n return i0.ɵɵresetView(selector_r8.onActivate($event, i_r10));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const row_r11 = ctx.$implicit;\n const group_r6 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const selector_r8 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"isSelected\", selector_r8.getRowSelected(row_r11))(\"innerWidth\", ctx_r2.innerWidth)(\"offsetX\", ctx_r2.offsetX)(\"columns\", ctx_r2.columns)(\"rowHeight\", ctx_r2.getRowHeight(row_r11))(\"row\", row_r11)(\"group\", group_r6.value)(\"rowIndex\", ctx_r2.getRowIndex(row_r11))(\"expanded\", ctx_r2.getRowExpanded(row_r11))(\"rowClass\", ctx_r2.rowClass);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template, 1, 10, \"datatable-body-row\", 14);\n }\n if (rf & 2) {\n const group_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngForOf\", group_r6.value)(\"ngForTrackBy\", ctx_r2.rowTrackingFn);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-row-wrapper\", 11);\n i0.ɵɵlistener(\"rowContextmenu\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template_datatable_row_wrapper_rowContextmenu_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.rowContextmenu.emit($event));\n });\n i0.ɵɵtemplate(1, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template, 1, 11, \"datatable-body-row\", 12)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template, 1, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const group_r6 = ctx.$implicit;\n const i_r7 = ctx.index;\n const groupedRowsTemplate_r12 = i0.ɵɵreference(3);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"groupedRows\", ctx_r2.groupedRows)(\"innerWidth\", ctx_r2.innerWidth)(\"ngStyle\", ctx_r2.getRowsStyles(group_r6))(\"rowDetail\", ctx_r2.rowDetail)(\"groupHeader\", ctx_r2.groupHeader)(\"offsetX\", ctx_r2.offsetX)(\"detailRowHeight\", ctx_r2.getDetailRowHeight(group_r6 && group_r6[i_r7], i_r7))(\"row\", group_r6)(\"expanded\", ctx_r2.getRowExpanded(group_r6))(\"rowIndex\", ctx_r2.getRowIndex(group_r6 && group_r6[i_r7]));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.groupedRows)(\"ngIfElse\", groupedRowsTemplate_r12);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-summary-row\", 16);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.getBottomSummaryRowStyles())(\"rowHeight\", ctx_r2.summaryHeight)(\"offsetX\", ctx_r2.offsetX)(\"innerWidth\", ctx_r2.innerWidth)(\"rows\", ctx_r2.rows)(\"columns\", ctx_r2.columns);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-scroller\", 6);\n i0.ɵɵlistener(\"scroll\", function DataTableBodyComponent_datatable_scroller_3_Template_datatable_scroller_scroll_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.onBodyScroll($event));\n });\n i0.ɵɵtemplate(1, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template, 1, 5, \"datatable-summary-row\", 7)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template, 4, 12, \"datatable-row-wrapper\", 8)(3, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template, 1, 6, \"datatable-summary-row\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"scrollbarV\", ctx_r2.scrollbarV)(\"scrollbarH\", ctx_r2.scrollbarH)(\"scrollHeight\", ctx_r2.scrollHeight)(\"scrollWidth\", ctx_r2.columnGroupWidths == null ? null : ctx_r2.columnGroupWidths.total);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.summaryRow && ctx_r2.summaryPosition === \"top\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.temp)(\"ngForTrackBy\", ctx_r2.rowTrackingFn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.summaryRow && ctx_r2.summaryPosition === \"bottom\");\n }\n}\nfunction DataTableBodyComponent_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 17);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"innerHTML\", ctx_r2.emptyMessage, i0.ɵɵsanitizeHtml);\n }\n}\nfunction DataTableHeaderCellComponent_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableHeaderCellComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableHeaderCellComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.targetMarkerTemplate)(\"ngTemplateOutletContext\", ctx_r0.targetMarkerContext);\n }\n}\nfunction DataTableHeaderCellComponent_label_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"label\", 6)(1, \"input\", 7);\n i0.ɵɵlistener(\"change\", function DataTableHeaderCellComponent_label_2_Template_input_change_1_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.select.emit(!ctx_r0.allRowsSelected));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"checked\", ctx_r0.allRowsSelected);\n }\n}\nfunction DataTableHeaderCellComponent_span_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 8)(1, \"span\", 9);\n i0.ɵɵlistener(\"click\", function DataTableHeaderCellComponent_span_3_Template_span_click_1_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.onSort());\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"innerHTML\", ctx_r0.name, i0.ɵɵsanitizeHtml);\n }\n}\nfunction DataTableHeaderCellComponent_4_ng_template_0_Template(rf, ctx) {}\nfunction DataTableHeaderCellComponent_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableHeaderCellComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.column.headerTemplate)(\"ngTemplateOutletContext\", ctx_r0.cellContext);\n }\n}\nfunction DataTableHeaderComponent_div_1_datatable_header_cell_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-header-cell\", 4);\n i0.ɵɵlistener(\"resize\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_resize_0_listener($event) {\n const column_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onColumnResized($event, column_r2));\n })(\"longPressStart\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressStart_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onLongPressStart($event));\n })(\"longPressEnd\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressEnd_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onLongPressEnd($event));\n })(\"sort\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_sort_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onSort($event));\n })(\"select\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_select_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.select.emit($event));\n })(\"columnContextmenu\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_columnContextmenu_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.columnContextmenu.emit($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"resizeEnabled\", column_r2.resizeable)(\"pressModel\", column_r2)(\"pressEnabled\", ctx_r2.reorderable && column_r2.draggable)(\"dragX\", ctx_r2.reorderable && column_r2.draggable && column_r2.dragging)(\"dragY\", false)(\"dragModel\", column_r2)(\"dragEventTarget\", ctx_r2.dragEventTarget)(\"headerHeight\", ctx_r2.headerHeight)(\"isTarget\", column_r2.isTarget)(\"targetMarkerTemplate\", ctx_r2.targetMarkerTemplate)(\"targetMarkerContext\", column_r2.targetMarkerContext)(\"column\", column_r2)(\"sortType\", ctx_r2.sortType)(\"sorts\", ctx_r2.sorts)(\"selectionType\", ctx_r2.selectionType)(\"sortAscendingIcon\", ctx_r2.sortAscendingIcon)(\"sortDescendingIcon\", ctx_r2.sortDescendingIcon)(\"sortUnsetIcon\", ctx_r2.sortUnsetIcon)(\"allRowsSelected\", ctx_r2.allRowsSelected);\n }\n}\nfunction DataTableHeaderComponent_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, DataTableHeaderComponent_div_1_datatable_header_cell_1_Template, 1, 19, \"datatable-header-cell\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const colGroup_r4 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(\"datatable-row-\" + colGroup_r4.type);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2._styleByGroup[colGroup_r4.type]);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", colGroup_r4.columns)(\"ngForTrackBy\", ctx_r2.columnTrackingFn);\n }\n}\nfunction DataTablePagerComponent_li_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 6)(1, \"a\", 7);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_li_7_Template_a_click_1_listener() {\n const pg_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.selectPage(pg_r2.number));\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const pg_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"active\", pg_r2.number === ctx_r2.page);\n i0.ɵɵattribute(\"aria-label\", \"page \" + pg_r2.number);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", pg_r2.text, \" \");\n }\n}\nconst _c3 = a0 => ({\n \"selected-count\": a0\n});\nconst _c4 = (a0, a1, a2, a3, a4) => ({\n rowCount: a0,\n pageSize: a1,\n selectedCount: a2,\n curPage: a3,\n offset: a4\n});\nfunction DataTableFooterComponent_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableFooterComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableFooterComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.footerTemplate.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction5(2, _c4, ctx_r0.rowCount, ctx_r0.pageSize, ctx_r0.selectedCount, ctx_r0.curPage, ctx_r0.offset));\n }\n}\nfunction DataTableFooterComponent_div_2_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r0.selectedCount == null ? null : ctx_r0.selectedCount.toLocaleString(), \" \", ctx_r0.selectedMessage, \" / \");\n }\n}\nfunction DataTableFooterComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵtemplate(1, DataTableFooterComponent_div_2_span_1_Template, 2, 2, \"span\", 1);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.selectedMessage);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r0.rowCount == null ? null : ctx_r0.rowCount.toLocaleString(), \" \", ctx_r0.totalMessage, \" \");\n }\n}\nfunction DataTableFooterComponent_datatable_pager_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-pager\", 6);\n i0.ɵɵlistener(\"change\", function DataTableFooterComponent_datatable_pager_3_Template_datatable_pager_change_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.page.emit($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"pagerLeftArrowIcon\", ctx_r0.pagerLeftArrowIcon)(\"pagerRightArrowIcon\", ctx_r0.pagerRightArrowIcon)(\"pagerPreviousIcon\", ctx_r0.pagerPreviousIcon)(\"pagerNextIcon\", ctx_r0.pagerNextIcon)(\"page\", ctx_r0.curPage)(\"size\", ctx_r0.pageSize)(\"count\", ctx_r0.rowCount)(\"hidden\", !ctx_r0.isVisible);\n }\n}\nfunction DatatableComponent_datatable_header_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-header\", 4);\n i0.ɵɵpipe(1, \"async\");\n i0.ɵɵlistener(\"sort\", function DatatableComponent_datatable_header_1_Template_datatable_header_sort_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnSort($event));\n })(\"resize\", function DatatableComponent_datatable_header_1_Template_datatable_header_resize_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnResize($event));\n })(\"reorder\", function DatatableComponent_datatable_header_1_Template_datatable_header_reorder_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnReorder($event));\n })(\"select\", function DatatableComponent_datatable_header_1_Template_datatable_header_select_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onHeaderSelect($event));\n })(\"columnContextmenu\", function DatatableComponent_datatable_header_1_Template_datatable_header_columnContextmenu_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnContextmenu($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"sorts\", ctx_r1.sorts)(\"sortType\", ctx_r1.sortType)(\"scrollbarH\", ctx_r1.scrollbarH)(\"innerWidth\", ctx_r1._innerWidth)(\"offsetX\", i0.ɵɵpipeBind1(1, 15, ctx_r1._offsetX))(\"dealsWithGroup\", ctx_r1.groupedRows !== undefined)(\"columns\", ctx_r1._internalColumns)(\"headerHeight\", ctx_r1.headerHeight)(\"reorderable\", ctx_r1.reorderable)(\"targetMarkerTemplate\", ctx_r1.targetMarkerTemplate)(\"sortAscendingIcon\", ctx_r1.cssClasses.sortAscending)(\"sortDescendingIcon\", ctx_r1.cssClasses.sortDescending)(\"sortUnsetIcon\", ctx_r1.cssClasses.sortUnset)(\"allRowsSelected\", ctx_r1.allRowsSelected)(\"selectionType\", ctx_r1.selectionType);\n }\n}\nfunction DatatableComponent_datatable_footer_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-footer\", 5);\n i0.ɵɵlistener(\"page\", function DatatableComponent_datatable_footer_4_Template_datatable_footer_page_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onFooterPage($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"rowCount\", ctx_r1.rowCount)(\"pageSize\", ctx_r1.pageSize)(\"offset\", ctx_r1.offset)(\"footerHeight\", ctx_r1.footerHeight)(\"footerTemplate\", ctx_r1.footer)(\"totalMessage\", ctx_r1.messages.totalMessage)(\"pagerLeftArrowIcon\", ctx_r1.cssClasses.pagerLeftArrow)(\"pagerRightArrowIcon\", ctx_r1.cssClasses.pagerRightArrow)(\"pagerPreviousIcon\", ctx_r1.cssClasses.pagerPrevious)(\"selectedCount\", ctx_r1.selected.length)(\"selectedMessage\", !!ctx_r1.selectionType && ctx_r1.messages.selectedMessage)(\"pagerNextIcon\", ctx_r1.cssClasses.pagerNext);\n }\n}\nclass ScrollbarHelper {\n constructor(document) {\n this.document = document;\n this.width = this.getWidth();\n }\n getWidth() {\n const outer = this.document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.msOverflowStyle = 'scrollbar';\n this.document.body.appendChild(outer);\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n const inner = this.document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n const widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return widthNoScroll - widthWithScroll;\n }\n}\nScrollbarHelper.ɵfac = function ScrollbarHelper_Factory(t) {\n return new (t || ScrollbarHelper)(i0.ɵɵinject(DOCUMENT));\n};\nScrollbarHelper.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollbarHelper,\n factory: ScrollbarHelper.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollbarHelper, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, null);\n})();\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\nclass DimensionsHelper {\n getDimensions(element) {\n return element.getBoundingClientRect();\n }\n}\nDimensionsHelper.ɵfac = function DimensionsHelper_Factory(t) {\n return new (t || DimensionsHelper)();\n};\nDimensionsHelper.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DimensionsHelper,\n factory: DimensionsHelper.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DimensionsHelper, [{\n type: Injectable\n }], null, null);\n})();\n\n/**\n * service to make DatatableComponent aware of changes to\n * input bindings of DataTableColumnDirective\n */\nclass ColumnChangesService {\n constructor() {\n this.columnInputChanges = new Subject();\n }\n get columnInputChanges$() {\n return this.columnInputChanges.asObservable();\n }\n onInputChange() {\n this.columnInputChanges.next();\n }\n}\nColumnChangesService.ɵfac = function ColumnChangesService_Factory(t) {\n return new (t || ColumnChangesService)();\n};\nColumnChangesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnChangesService,\n factory: ColumnChangesService.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ColumnChangesService, [{\n type: Injectable\n }], null, null);\n})();\nclass DataTableFooterTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableFooterTemplateDirective.ɵfac = function DataTableFooterTemplateDirective_Factory(t) {\n return new (t || DataTableFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableFooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableFooterTemplateDirective,\n selectors: [[\"\", \"ngx-datatable-footer-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableFooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-footer-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\n\n/**\n * Visibility Observer Directive\n *\n * Usage:\n *\n * \t\t\n * \t\t\n *\n */\nclass VisibilityDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.isVisible = false;\n this.visible = new EventEmitter();\n }\n ngOnInit() {\n this.runCheck();\n }\n ngOnDestroy() {\n clearTimeout(this.timeout);\n }\n onVisibilityChange() {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n runCheck() {\n const check = () => {\n // https://davidwalsh.name/offsetheight-visibility\n const {\n offsetHeight,\n offsetWidth\n } = this.element.nativeElement;\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 50);\n });\n }\n };\n this.timeout = setTimeout(() => check());\n }\n}\nVisibilityDirective.ɵfac = function VisibilityDirective_Factory(t) {\n return new (t || VisibilityDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n};\nVisibilityDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: VisibilityDirective,\n selectors: [[\"\", \"visibilityObserver\", \"\"]],\n hostVars: 2,\n hostBindings: function VisibilityDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"visible\", ctx.isVisible);\n }\n },\n outputs: {\n visible: \"visible\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(VisibilityDirective, [{\n type: Directive,\n args: [{\n selector: '[visibilityObserver]'\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.NgZone\n }];\n }, {\n isVisible: [{\n type: HostBinding,\n args: ['class.visible']\n }],\n visible: [{\n type: Output\n }]\n });\n})();\n\n/**\n * Draggable Directive for Angular2\n *\n * Inspiration:\n * https://github.com/AngularClass/angular2-examples/blob/master/rx-draggable/directives/draggable.ts\n * http://stackoverflow.com/questions/35662530/how-to-implement-drag-and-drop-in-angular2\n *\n */\nclass DraggableDirective {\n constructor(element) {\n this.dragX = true;\n this.dragY = true;\n this.dragStart = new EventEmitter();\n this.dragging = new EventEmitter();\n this.dragEnd = new EventEmitter();\n this.isDragging = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes['dragEventTarget'] && changes['dragEventTarget'].currentValue && this.dragModel.dragging) {\n this.onMousedown(changes['dragEventTarget'].currentValue);\n }\n }\n ngOnDestroy() {\n this._destroySubscription();\n }\n onMouseup(event) {\n if (!this.isDragging) return;\n this.isDragging = false;\n this.element.classList.remove('dragging');\n if (this.subscription) {\n this._destroySubscription();\n this.dragEnd.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n onMousedown(event) {\n // we only want to drag the inner header text\n const isDragElm = event.target.classList.contains('draggable');\n if (isDragElm && (this.dragX || this.dragY)) {\n event.preventDefault();\n this.isDragging = true;\n const mouseDownPos = {\n x: event.clientX,\n y: event.clientY\n };\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe(ev => this.onMouseup(ev));\n const mouseMoveSub = fromEvent(document, 'mousemove').pipe(takeUntil(mouseup)).subscribe(ev => this.move(ev, mouseDownPos));\n this.subscription.add(mouseMoveSub);\n this.dragStart.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n move(event, mouseDownPos) {\n if (!this.isDragging) return;\n const x = event.clientX - mouseDownPos.x;\n const y = event.clientY - mouseDownPos.y;\n if (this.dragX) this.element.style.left = `${x}px`;\n if (this.dragY) this.element.style.top = `${y}px`;\n this.element.classList.add('dragging');\n this.dragging.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\nDraggableDirective.ɵfac = function DraggableDirective_Factory(t) {\n return new (t || DraggableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nDraggableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DraggableDirective,\n selectors: [[\"\", \"draggable\", \"\"]],\n inputs: {\n dragEventTarget: \"dragEventTarget\",\n dragModel: \"dragModel\",\n dragX: \"dragX\",\n dragY: \"dragY\"\n },\n outputs: {\n dragStart: \"dragStart\",\n dragging: \"dragging\",\n dragEnd: \"dragEnd\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DraggableDirective, [{\n type: Directive,\n args: [{\n selector: '[draggable]'\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }];\n }, {\n dragEventTarget: [{\n type: Input\n }],\n dragModel: [{\n type: Input\n }],\n dragX: [{\n type: Input\n }],\n dragY: [{\n type: Input\n }],\n dragStart: [{\n type: Output\n }],\n dragging: [{\n type: Output\n }],\n dragEnd: [{\n type: Output\n }]\n });\n})();\nclass ResizeableDirective {\n constructor(element, renderer) {\n this.renderer = renderer;\n this.resizeEnabled = true;\n this.resize = new EventEmitter();\n this.resizing = false;\n this.element = element.nativeElement;\n }\n ngAfterViewInit() {\n const renderer2 = this.renderer;\n this.resizeHandle = renderer2.createElement('span');\n if (this.resizeEnabled) {\n renderer2.addClass(this.resizeHandle, 'resize-handle');\n } else {\n renderer2.addClass(this.resizeHandle, 'resize-handle--not-resizable');\n }\n renderer2.appendChild(this.element, this.resizeHandle);\n }\n ngOnDestroy() {\n this._destroySubscription();\n if (this.renderer.destroyNode) {\n this.renderer.destroyNode(this.resizeHandle);\n } else if (this.resizeHandle) {\n this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);\n }\n }\n onMouseup() {\n this.resizing = false;\n if (this.subscription && !this.subscription.closed) {\n this._destroySubscription();\n this.resize.emit(this.element.clientWidth);\n }\n }\n onMousedown(event) {\n const isHandle = event.target.classList.contains('resize-handle');\n const initialWidth = this.element.clientWidth;\n const mouseDownScreenX = event.screenX;\n if (isHandle) {\n event.stopPropagation();\n this.resizing = true;\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe(ev => this.onMouseup());\n const mouseMoveSub = fromEvent(document, 'mousemove').pipe(takeUntil(mouseup)).subscribe(e => this.move(e, initialWidth, mouseDownScreenX));\n this.subscription.add(mouseMoveSub);\n }\n }\n move(event, initialWidth, mouseDownScreenX) {\n const movementX = event.screenX - mouseDownScreenX;\n const newWidth = initialWidth + movementX;\n const overMinWidth = !this.minWidth || newWidth >= this.minWidth;\n const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;\n if (overMinWidth && underMaxWidth) {\n this.element.style.width = `${newWidth}px`;\n }\n }\n _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\nResizeableDirective.ɵfac = function ResizeableDirective_Factory(t) {\n return new (t || ResizeableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n};\nResizeableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ResizeableDirective,\n selectors: [[\"\", \"resizeable\", \"\"]],\n hostVars: 2,\n hostBindings: function ResizeableDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function ResizeableDirective_mousedown_HostBindingHandler($event) {\n return ctx.onMousedown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"resizeable\", ctx.resizeEnabled);\n }\n },\n inputs: {\n resizeEnabled: \"resizeEnabled\",\n minWidth: \"minWidth\",\n maxWidth: \"maxWidth\"\n },\n outputs: {\n resize: \"resize\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ResizeableDirective, [{\n type: Directive,\n args: [{\n selector: '[resizeable]',\n host: {\n '[class.resizeable]': 'resizeEnabled'\n }\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }];\n }, {\n resizeEnabled: [{\n type: Input\n }],\n minWidth: [{\n type: Input\n }],\n maxWidth: [{\n type: Input\n }],\n resize: [{\n type: Output\n }],\n onMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }]\n });\n})();\nclass OrderableDirective {\n constructor(differs, document) {\n this.document = document;\n this.reorder = new EventEmitter();\n this.targetChanged = new EventEmitter();\n this.differ = differs.find({}).create();\n }\n ngAfterContentInit() {\n // HACK: Investigate Better Way\n this.updateSubscriptions();\n this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));\n }\n ngOnDestroy() {\n this.draggables.forEach(d => {\n d.dragStart.unsubscribe();\n d.dragging.unsubscribe();\n d.dragEnd.unsubscribe();\n });\n }\n updateSubscriptions() {\n const diffs = this.differ.diff(this.createMapDiffs());\n if (diffs) {\n const subscribe = ({\n currentValue,\n previousValue\n }) => {\n unsubscribe({\n previousValue\n });\n if (currentValue) {\n currentValue.dragStart.subscribe(this.onDragStart.bind(this));\n currentValue.dragging.subscribe(this.onDragging.bind(this));\n currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));\n }\n };\n const unsubscribe = ({\n previousValue\n }) => {\n if (previousValue) {\n previousValue.dragStart.unsubscribe();\n previousValue.dragging.unsubscribe();\n previousValue.dragEnd.unsubscribe();\n }\n };\n diffs.forEachAddedItem(subscribe);\n // diffs.forEachChangedItem(subscribe.bind(this));\n diffs.forEachRemovedItem(unsubscribe);\n }\n }\n onDragStart() {\n this.positions = {};\n let i = 0;\n for (const dragger of this.draggables.toArray()) {\n const elm = dragger.element;\n const left = parseInt(elm.offsetLeft.toString(), 0);\n this.positions[dragger.dragModel.prop] = {\n left,\n right: left + parseInt(elm.offsetWidth.toString(), 0),\n index: i++,\n element: elm\n };\n }\n }\n onDragging({\n element,\n model,\n event\n }) {\n const prevPos = this.positions[model.prop];\n const target = this.isTarget(model, event);\n if (target) {\n if (this.lastDraggingIndex !== target.i) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n newIndex: target.i,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = target.i;\n }\n } else if (this.lastDraggingIndex !== prevPos.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = prevPos.index;\n }\n }\n onDragEnd({\n element,\n model,\n event\n }) {\n const prevPos = this.positions[model.prop];\n const target = this.isTarget(model, event);\n if (target) {\n this.reorder.emit({\n prevIndex: prevPos.index,\n newIndex: target.i,\n model\n });\n }\n this.lastDraggingIndex = undefined;\n element.style.left = 'auto';\n }\n isTarget(model, event) {\n let i = 0;\n const x = event.x || event.clientX;\n const y = event.y || event.clientY;\n const targets = this.document.elementsFromPoint(x, y);\n for (const prop in this.positions) {\n // current column position which throws event.\n const pos = this.positions[prop];\n // since we drag the inner span, we need to find it in the elements at the cursor\n if (model.prop !== prop && targets.find(el => el === pos.element)) {\n return {\n pos,\n i\n };\n }\n i++;\n }\n }\n createMapDiffs() {\n return this.draggables.toArray().reduce((acc, curr) => {\n acc[curr.dragModel.$$id] = curr;\n return acc;\n }, {});\n }\n}\nOrderableDirective.ɵfac = function OrderableDirective_Factory(t) {\n return new (t || OrderableDirective)(i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(DOCUMENT));\n};\nOrderableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: OrderableDirective,\n selectors: [[\"\", \"orderable\", \"\"]],\n contentQueries: function OrderableDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DraggableDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.draggables = _t);\n }\n },\n outputs: {\n reorder: \"reorder\",\n targetChanged: \"targetChanged\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OrderableDirective, [{\n type: Directive,\n args: [{\n selector: '[orderable]'\n }]\n }], function () {\n return [{\n type: i0.KeyValueDiffers\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, {\n reorder: [{\n type: Output\n }],\n targetChanged: [{\n type: Output\n }],\n draggables: [{\n type: ContentChildren,\n args: [DraggableDirective, {\n descendants: true\n }]\n }]\n });\n})();\nclass LongPressDirective {\n constructor() {\n this.pressEnabled = true;\n this.duration = 500;\n this.longPressStart = new EventEmitter();\n this.longPressing = new EventEmitter();\n this.longPressEnd = new EventEmitter();\n this.mouseX = 0;\n this.mouseY = 0;\n }\n get press() {\n return this.pressing;\n }\n get isLongPress() {\n return this.isLongPressing;\n }\n onMouseDown(event) {\n // don't do right/middle clicks\n if (event.which !== 1 || !this.pressEnabled) return;\n // don't start drag if its on resize handle\n const target = event.target;\n if (target.classList.contains('resize-handle')) return;\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.pressing = true;\n this.isLongPressing = false;\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe(ev => this.onMouseup());\n this.timeout = setTimeout(() => {\n this.isLongPressing = true;\n this.longPressStart.emit({\n event,\n model: this.pressModel\n });\n this.subscription.add(fromEvent(document, 'mousemove').pipe(takeUntil(mouseup)).subscribe(mouseEvent => this.onMouseMove(mouseEvent)));\n this.loop(event);\n }, this.duration);\n this.loop(event);\n }\n onMouseMove(event) {\n if (this.pressing && !this.isLongPressing) {\n const xThres = Math.abs(event.clientX - this.mouseX) > 10;\n const yThres = Math.abs(event.clientY - this.mouseY) > 10;\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n loop(event) {\n if (this.isLongPressing) {\n this.timeout = setTimeout(() => {\n this.longPressing.emit({\n event,\n model: this.pressModel\n });\n this.loop(event);\n }, 50);\n }\n }\n endPress() {\n clearTimeout(this.timeout);\n this.isLongPressing = false;\n this.pressing = false;\n this._destroySubscription();\n this.longPressEnd.emit({\n model: this.pressModel\n });\n }\n onMouseup() {\n this.endPress();\n }\n ngOnDestroy() {\n this._destroySubscription();\n }\n _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\nLongPressDirective.ɵfac = function LongPressDirective_Factory(t) {\n return new (t || LongPressDirective)();\n};\nLongPressDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LongPressDirective,\n selectors: [[\"\", \"long-press\", \"\"]],\n hostVars: 4,\n hostBindings: function LongPressDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function LongPressDirective_mousedown_HostBindingHandler($event) {\n return ctx.onMouseDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"press\", ctx.press)(\"longpress\", ctx.isLongPress);\n }\n },\n inputs: {\n pressEnabled: \"pressEnabled\",\n pressModel: \"pressModel\",\n duration: \"duration\"\n },\n outputs: {\n longPressStart: \"longPressStart\",\n longPressing: \"longPressing\",\n longPressEnd: \"longPressEnd\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LongPressDirective, [{\n type: Directive,\n args: [{\n selector: '[long-press]'\n }]\n }], null, {\n pressEnabled: [{\n type: Input\n }],\n pressModel: [{\n type: Input\n }],\n duration: [{\n type: Input\n }],\n longPressStart: [{\n type: Output\n }],\n longPressing: [{\n type: Output\n }],\n longPressEnd: [{\n type: Output\n }],\n press: [{\n type: HostBinding,\n args: ['class.press']\n }],\n isLongPress: [{\n type: HostBinding,\n args: ['class.longpress']\n }],\n onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }]\n });\n})();\nclass ScrollerComponent {\n constructor(ngZone, element, renderer) {\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.scrollbarV = false;\n this.scrollbarH = false;\n this.scroll = new EventEmitter();\n this.scrollYPos = 0;\n this.scrollXPos = 0;\n this.prevScrollYPos = 0;\n this.prevScrollXPos = 0;\n this._scrollEventListener = null;\n this.element = element.nativeElement;\n }\n ngOnInit() {\n // manual bind so we don't always listen\n if (this.scrollbarV || this.scrollbarH) {\n const renderer = this.renderer;\n this.parentElement = renderer.parentNode(renderer.parentNode(this.element));\n this._scrollEventListener = this.onScrolled.bind(this);\n this.parentElement.addEventListener('scroll', this._scrollEventListener);\n }\n }\n ngOnDestroy() {\n if (this._scrollEventListener) {\n this.parentElement.removeEventListener('scroll', this._scrollEventListener);\n this._scrollEventListener = null;\n }\n }\n setOffset(offsetY) {\n if (this.parentElement) {\n this.parentElement.scrollTop = offsetY;\n }\n }\n onScrolled(event) {\n const dom = event.currentTarget;\n requestAnimationFrame(() => {\n this.scrollYPos = dom.scrollTop;\n this.scrollXPos = dom.scrollLeft;\n this.updateOffset();\n });\n }\n updateOffset() {\n let direction;\n if (this.scrollYPos < this.prevScrollYPos) {\n direction = 'down';\n } else if (this.scrollYPos > this.prevScrollYPos) {\n direction = 'up';\n }\n this.scroll.emit({\n direction,\n scrollYPos: this.scrollYPos,\n scrollXPos: this.scrollXPos\n });\n this.prevScrollYPos = this.scrollYPos;\n this.prevScrollXPos = this.scrollXPos;\n }\n}\nScrollerComponent.ɵfac = function ScrollerComponent_Factory(t) {\n return new (t || ScrollerComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n};\nScrollerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ScrollerComponent,\n selectors: [[\"datatable-scroller\"]],\n hostAttrs: [1, \"datatable-scroll\"],\n hostVars: 4,\n hostBindings: function ScrollerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"height\", ctx.scrollHeight, \"px\")(\"width\", ctx.scrollWidth, \"px\");\n }\n },\n inputs: {\n scrollbarV: \"scrollbarV\",\n scrollbarH: \"scrollbarH\",\n scrollHeight: \"scrollHeight\",\n scrollWidth: \"scrollWidth\"\n },\n outputs: {\n scroll: \"scroll\"\n },\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function ScrollerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollerComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-scroller',\n template: ` `,\n host: {\n class: 'datatable-scroll'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }];\n }, {\n scrollbarV: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n scrollHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }],\n scrollWidth: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: Input\n }],\n scroll: [{\n type: Output\n }]\n });\n})();\nclass DatatableGroupHeaderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDatatableGroupHeaderTemplateDirective.ɵfac = function DatatableGroupHeaderTemplateDirective_Factory(t) {\n return new (t || DatatableGroupHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDatatableGroupHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableGroupHeaderTemplateDirective,\n selectors: [[\"\", \"ngx-datatable-group-header-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableGroupHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-group-header-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DatatableGroupHeaderDirective {\n constructor() {\n /**\n * Row height is required when virtual scroll is enabled.\n */\n this.rowHeight = 0;\n /**\n * Track toggling of group visibility\n */\n this.toggle = new EventEmitter();\n }\n get template() {\n return this._templateInput || this._templateQuery;\n }\n /**\n * Toggle the expansion of a group\n */\n toggleExpandGroup(group) {\n this.toggle.emit({\n type: 'group',\n value: group\n });\n }\n /**\n * Expand all groups\n */\n expandAllGroups() {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n /**\n * Collapse all groups\n */\n collapseAllGroups() {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\nDatatableGroupHeaderDirective.ɵfac = function DatatableGroupHeaderDirective_Factory(t) {\n return new (t || DatatableGroupHeaderDirective)();\n};\nDatatableGroupHeaderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableGroupHeaderDirective,\n selectors: [[\"ngx-datatable-group-header\"]],\n contentQueries: function DatatableGroupHeaderDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DatatableGroupHeaderTemplateDirective, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._templateQuery = _t.first);\n }\n },\n inputs: {\n rowHeight: \"rowHeight\",\n _templateInput: [0, \"template\", \"_templateInput\"]\n },\n outputs: {\n toggle: \"toggle\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableGroupHeaderDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-group-header'\n }]\n }], null, {\n rowHeight: [{\n type: Input\n }],\n _templateInput: [{\n type: Input,\n args: ['template']\n }],\n _templateQuery: [{\n type: ContentChild,\n args: [DatatableGroupHeaderTemplateDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n toggle: [{\n type: Output\n }]\n });\n})();\n\n/**\n * Always returns the empty string ''\n */\nfunction emptyStringGetter() {\n return '';\n}\n/**\n * Returns the appropriate getter function for this kind of prop.\n * If prop == null, returns the emptyStringGetter.\n */\nfunction getterForProp(prop) {\n if (prop == null) {\n return emptyStringGetter;\n }\n if (typeof prop === 'number') {\n return numericIndexGetter;\n } else {\n // deep or simple\n if (prop.indexOf('.') !== -1) {\n return deepValueGetter;\n } else {\n return shallowValueGetter;\n }\n }\n}\n/**\n * Returns the value at this numeric index.\n * @param row array of values\n * @param index numeric index\n * @returns any or '' if invalid index\n */\nfunction numericIndexGetter(row, index) {\n if (row == null) {\n return '';\n }\n // mimic behavior of deepValueGetter\n if (!row || index == null) {\n return row;\n }\n const value = row[index];\n if (value == null) {\n return '';\n }\n return value;\n}\n/**\n * Returns the value of a field.\n * (more efficient than deepValueGetter)\n * @param obj object containing the field\n * @param fieldName field name string\n */\nfunction shallowValueGetter(obj, fieldName) {\n if (obj == null) {\n return '';\n }\n if (!obj || !fieldName) {\n return obj;\n }\n const value = obj[fieldName];\n if (value == null) {\n return '';\n }\n return value;\n}\n/**\n * Returns a deep object given a string. zoo['animal.type']\n */\nfunction deepValueGetter(obj, path) {\n if (obj == null) {\n return '';\n }\n if (!obj || !path) {\n return obj;\n }\n // check if path matches a root-level field\n // { \"a.b.c\": 123 }\n let current = obj[path];\n if (current !== undefined) {\n return current;\n }\n current = obj;\n const split = path.split('.');\n if (split.length) {\n for (let i = 0; i < split.length; i++) {\n current = current[split[i]];\n // if found undefined, return empty string\n if (current === undefined || current === null) {\n return '';\n }\n }\n }\n return current;\n}\nfunction optionalGetterForProp(prop) {\n return prop && (row => getterForProp(prop)(row, prop));\n}\n/**\n * This functions rearrange items by their parents\n * Also sets the level value to each of the items\n *\n * Note: Expecting each item has a property called parentId\n * Note: This algorithm will fail if a list has two or more items with same ID\n * NOTE: This algorithm will fail if there is a deadlock of relationship\n *\n * For example,\n *\n * Input\n *\n * id -> parent\n * 1 -> 0\n * 2 -> 0\n * 3 -> 1\n * 4 -> 1\n * 5 -> 2\n * 7 -> 8\n * 6 -> 3\n *\n *\n * Output\n * id -> level\n * 1 -> 0\n * --3 -> 1\n * ----6 -> 2\n * --4 -> 1\n * 2 -> 0\n * --5 -> 1\n * 7 -> 8\n *\n *\n * @param rows\n *\n */\nfunction groupRowsByParents(rows, from, to) {\n if (from && to) {\n const nodeById = {};\n const l = rows.length;\n let node = null;\n nodeById[0] = new TreeNode(); // that's the root node\n const uniqIDs = rows.reduce((arr, item) => {\n const toValue = to(item);\n if (arr.indexOf(toValue) === -1) {\n arr.push(toValue);\n }\n return arr;\n }, []);\n for (let i = 0; i < l; i++) {\n // make TreeNode objects for each item\n nodeById[to(rows[i])] = new TreeNode(rows[i]);\n }\n for (let i = 0; i < l; i++) {\n // link all TreeNode objects\n node = nodeById[to(rows[i])];\n let parent = 0;\n const fromValue = from(node.row);\n if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {\n parent = fromValue;\n }\n node.parent = nodeById[parent];\n node.row['level'] = node.parent.row['level'] + 1;\n node.parent.children.push(node);\n }\n let resolvedRows = [];\n nodeById[0].flatten(function () {\n resolvedRows = [...resolvedRows, this.row];\n }, true);\n return resolvedRows;\n } else {\n return rows;\n }\n}\nclass TreeNode {\n constructor(row = null) {\n if (!row) {\n row = {\n level: -1,\n treeStatus: 'expanded'\n };\n }\n this.row = row;\n this.parent = null;\n this.children = [];\n }\n flatten(f, recursive) {\n if (this.row['treeStatus'] === 'expanded') {\n for (let i = 0, l = this.children.length; i < l; i++) {\n const child = this.children[i];\n f.apply(child, Array.prototype.slice.call(arguments, 2));\n if (recursive) child.flatten.apply(child, arguments);\n }\n }\n }\n}\n\n/**\n * Converts strings from something to camel case\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\n */\nfunction camelCase(str) {\n // Replace special characters with a space\n str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\n // put a space before an uppercase letter\n str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\n // Lower case first character and some other stuff\n str = str.replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '').trim().toLowerCase();\n // uppercase characters preceded by a space or number\n str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function (a, b, c) {\n return b.trim() + c.toUpperCase();\n });\n return str;\n}\n/**\n * Converts strings from camel case to words\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\n */\nfunction deCamelCase(str) {\n return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\n}\n\n/**\n * Creates a unique object id.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n */\nfunction id() {\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n}\n\n/**\n * Sets the column defaults\n */\nfunction setColumnDefaults(columns) {\n if (!columns) return;\n // Only one column should hold the tree view\n // Thus if multiple columns are provided with\n // isTreeColumn as true we take only the first one\n let treeColumnFound = false;\n for (const column of columns) {\n if (!column.$$id) {\n column.$$id = id();\n }\n // prop can be numeric; zero is valid not a missing prop\n // translate name => prop\n if (isNullOrUndefined(column.prop) && column.name) {\n column.prop = camelCase(column.name);\n }\n if (!column.$$valueGetter) {\n column.$$valueGetter = getterForProp(column.prop);\n }\n // format props if no name passed\n if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = deCamelCase(String(column.prop));\n }\n if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = ''; // Fixes IE and Edge displaying `null`\n }\n if (!column.hasOwnProperty('resizeable')) {\n column.resizeable = true;\n }\n if (!column.hasOwnProperty('sortable')) {\n column.sortable = true;\n }\n if (!column.hasOwnProperty('draggable')) {\n column.draggable = true;\n }\n if (!column.hasOwnProperty('canAutoResize')) {\n column.canAutoResize = true;\n }\n if (!column.hasOwnProperty('width')) {\n column.width = 150;\n }\n if (!column.hasOwnProperty('isTreeColumn')) {\n column.isTreeColumn = false;\n } else {\n if (column.isTreeColumn && !treeColumnFound) {\n // If the first column with isTreeColumn is true found\n // we mark that treeCoulmn is found\n treeColumnFound = true;\n } else {\n // After that isTreeColumn property for any other column\n // will be set as false\n column.isTreeColumn = false;\n }\n }\n }\n}\nfunction isNullOrUndefined(value) {\n return value === null || value === undefined;\n}\n/**\n * Translates templates definitions to objects\n */\nfunction translateTemplates(templates) {\n const result = [];\n for (const temp of templates) {\n const col = {};\n const props = Object.getOwnPropertyNames(temp);\n for (const prop of props) {\n col[prop] = temp[prop];\n }\n if (temp.headerTemplate) {\n col.headerTemplate = temp.headerTemplate;\n }\n if (temp.cellTemplate) {\n col.cellTemplate = temp.cellTemplate;\n }\n if (temp.summaryFunc) {\n col.summaryFunc = temp.summaryFunc;\n }\n if (temp.summaryTemplate) {\n col.summaryTemplate = temp.summaryTemplate;\n }\n result.push(col);\n }\n return result;\n}\nvar ColumnMode;\n(function (ColumnMode) {\n ColumnMode[\"standard\"] = \"standard\";\n ColumnMode[\"flex\"] = \"flex\";\n ColumnMode[\"force\"] = \"force\";\n})(ColumnMode || (ColumnMode = {}));\nvar SelectionType;\n(function (SelectionType) {\n SelectionType[\"single\"] = \"single\";\n SelectionType[\"multi\"] = \"multi\";\n SelectionType[\"multiClick\"] = \"multiClick\";\n SelectionType[\"cell\"] = \"cell\";\n SelectionType[\"checkbox\"] = \"checkbox\";\n})(SelectionType || (SelectionType = {}));\nvar SortType;\n(function (SortType) {\n SortType[\"single\"] = \"single\";\n SortType[\"multi\"] = \"multi\";\n})(SortType || (SortType = {}));\nvar ContextmenuType;\n(function (ContextmenuType) {\n ContextmenuType[\"header\"] = \"header\";\n ContextmenuType[\"body\"] = \"body\";\n})(ContextmenuType || (ContextmenuType = {}));\nclass DataTableColumnHeaderDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableColumnHeaderDirective.ɵfac = function DataTableColumnHeaderDirective_Factory(t) {\n return new (t || DataTableColumnHeaderDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableColumnHeaderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnHeaderDirective,\n selectors: [[\"\", \"ngx-datatable-header-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnHeaderDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-header-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DataTableColumnCellDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableColumnCellDirective.ɵfac = function DataTableColumnCellDirective_Factory(t) {\n return new (t || DataTableColumnCellDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableColumnCellDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnCellDirective,\n selectors: [[\"\", \"ngx-datatable-cell-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnCellDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-cell-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DataTableColumnCellTreeToggle {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableColumnCellTreeToggle.ɵfac = function DataTableColumnCellTreeToggle_Factory(t) {\n return new (t || DataTableColumnCellTreeToggle)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableColumnCellTreeToggle.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnCellTreeToggle,\n selectors: [[\"\", \"ngx-datatable-tree-toggle\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnCellTreeToggle, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-tree-toggle]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DataTableColumnDirective {\n constructor(columnChangesService) {\n this.columnChangesService = columnChangesService;\n this.isFirstChange = true;\n }\n get cellTemplate() {\n return this._cellTemplateInput || this._cellTemplateQuery;\n }\n get headerTemplate() {\n return this._headerTemplateInput || this._headerTemplateQuery;\n }\n get treeToggleTemplate() {\n return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\n }\n ngOnChanges() {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.columnChangesService.onInputChange();\n }\n }\n}\nDataTableColumnDirective.ɵfac = function DataTableColumnDirective_Factory(t) {\n return new (t || DataTableColumnDirective)(i0.ɵɵdirectiveInject(ColumnChangesService));\n};\nDataTableColumnDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnDirective,\n selectors: [[\"ngx-datatable-column\"]],\n contentQueries: function DataTableColumnDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnCellDirective, 7, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnHeaderDirective, 7, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnCellTreeToggle, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._cellTemplateQuery = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._headerTemplateQuery = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._treeToggleTemplateQuery = _t.first);\n }\n },\n inputs: {\n name: \"name\",\n prop: \"prop\",\n frozenLeft: \"frozenLeft\",\n frozenRight: \"frozenRight\",\n flexGrow: \"flexGrow\",\n resizeable: \"resizeable\",\n comparator: \"comparator\",\n pipe: \"pipe\",\n sortable: \"sortable\",\n draggable: \"draggable\",\n canAutoResize: \"canAutoResize\",\n minWidth: \"minWidth\",\n width: \"width\",\n maxWidth: \"maxWidth\",\n checkboxable: \"checkboxable\",\n headerCheckboxable: \"headerCheckboxable\",\n headerClass: \"headerClass\",\n cellClass: \"cellClass\",\n isTreeColumn: \"isTreeColumn\",\n treeLevelIndent: \"treeLevelIndent\",\n summaryFunc: \"summaryFunc\",\n summaryTemplate: \"summaryTemplate\",\n _cellTemplateInput: [0, \"cellTemplate\", \"_cellTemplateInput\"],\n _headerTemplateInput: [0, \"headerTemplate\", \"_headerTemplateInput\"],\n _treeToggleTemplateInput: [0, \"treeToggleTemplate\", \"_treeToggleTemplateInput\"]\n },\n features: [i0.ɵɵNgOnChangesFeature]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-column'\n }]\n }], function () {\n return [{\n type: ColumnChangesService\n }];\n }, {\n name: [{\n type: Input\n }],\n prop: [{\n type: Input\n }],\n frozenLeft: [{\n type: Input\n }],\n frozenRight: [{\n type: Input\n }],\n flexGrow: [{\n type: Input\n }],\n resizeable: [{\n type: Input\n }],\n comparator: [{\n type: Input\n }],\n pipe: [{\n type: Input\n }],\n sortable: [{\n type: Input\n }],\n draggable: [{\n type: Input\n }],\n canAutoResize: [{\n type: Input\n }],\n minWidth: [{\n type: Input\n }],\n width: [{\n type: Input\n }],\n maxWidth: [{\n type: Input\n }],\n checkboxable: [{\n type: Input\n }],\n headerCheckboxable: [{\n type: Input\n }],\n headerClass: [{\n type: Input\n }],\n cellClass: [{\n type: Input\n }],\n isTreeColumn: [{\n type: Input\n }],\n treeLevelIndent: [{\n type: Input\n }],\n summaryFunc: [{\n type: Input\n }],\n summaryTemplate: [{\n type: Input\n }],\n _cellTemplateInput: [{\n type: Input,\n args: ['cellTemplate']\n }],\n _cellTemplateQuery: [{\n type: ContentChild,\n args: [DataTableColumnCellDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n _headerTemplateInput: [{\n type: Input,\n args: ['headerTemplate']\n }],\n _headerTemplateQuery: [{\n type: ContentChild,\n args: [DataTableColumnHeaderDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n _treeToggleTemplateInput: [{\n type: Input,\n args: ['treeToggleTemplate']\n }],\n _treeToggleTemplateQuery: [{\n type: ContentChild,\n args: [DataTableColumnCellTreeToggle, {\n read: TemplateRef,\n static: true\n }]\n }]\n });\n})();\nclass DatatableRowDetailTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDatatableRowDetailTemplateDirective.ɵfac = function DatatableRowDetailTemplateDirective_Factory(t) {\n return new (t || DatatableRowDetailTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDatatableRowDetailTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableRowDetailTemplateDirective,\n selectors: [[\"\", \"ngx-datatable-row-detail-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableRowDetailTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-row-detail-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DatatableRowDetailDirective {\n constructor() {\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n this.rowHeight = 0;\n /**\n * Row detail row visbility was toggled.\n */\n this.toggle = new EventEmitter();\n }\n get template() {\n return this._templateInput || this._templateQuery;\n }\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row) {\n this.toggle.emit({\n type: 'row',\n value: row\n });\n }\n /**\n * API method to expand all the rows.\n */\n expandAllRows() {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows() {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\nDatatableRowDetailDirective.ɵfac = function DatatableRowDetailDirective_Factory(t) {\n return new (t || DatatableRowDetailDirective)();\n};\nDatatableRowDetailDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableRowDetailDirective,\n selectors: [[\"ngx-datatable-row-detail\"]],\n contentQueries: function DatatableRowDetailDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DatatableRowDetailTemplateDirective, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._templateQuery = _t.first);\n }\n },\n inputs: {\n rowHeight: \"rowHeight\",\n _templateInput: [0, \"template\", \"_templateInput\"]\n },\n outputs: {\n toggle: \"toggle\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableRowDetailDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-row-detail'\n }]\n }], null, {\n rowHeight: [{\n type: Input\n }],\n _templateInput: [{\n type: Input,\n args: ['template']\n }],\n _templateQuery: [{\n type: ContentChild,\n args: [DatatableRowDetailTemplateDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n toggle: [{\n type: Output\n }]\n });\n})();\nclass DatatableFooterDirective {\n get template() {\n return this._templateInput || this._templateQuery;\n }\n}\nDatatableFooterDirective.ɵfac = function DatatableFooterDirective_Factory(t) {\n return new (t || DatatableFooterDirective)();\n};\nDatatableFooterDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableFooterDirective,\n selectors: [[\"ngx-datatable-footer\"]],\n contentQueries: function DatatableFooterDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DataTableFooterTemplateDirective, 5, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._templateQuery = _t.first);\n }\n },\n inputs: {\n footerHeight: \"footerHeight\",\n totalMessage: \"totalMessage\",\n selectedMessage: \"selectedMessage\",\n pagerLeftArrowIcon: \"pagerLeftArrowIcon\",\n pagerRightArrowIcon: \"pagerRightArrowIcon\",\n pagerPreviousIcon: \"pagerPreviousIcon\",\n pagerNextIcon: \"pagerNextIcon\",\n _templateInput: [0, \"template\", \"_templateInput\"]\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableFooterDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-footer'\n }]\n }], null, {\n footerHeight: [{\n type: Input\n }],\n totalMessage: [{\n type: Input\n }],\n selectedMessage: [{\n type: Input\n }],\n pagerLeftArrowIcon: [{\n type: Input\n }],\n pagerRightArrowIcon: [{\n type: Input\n }],\n pagerPreviousIcon: [{\n type: Input\n }],\n pagerNextIcon: [{\n type: Input\n }],\n _templateInput: [{\n type: Input,\n args: ['template']\n }],\n _templateQuery: [{\n type: ContentChild,\n args: [DataTableFooterTemplateDirective, {\n read: TemplateRef\n }]\n }]\n });\n})();\n\n/**\n * Returns the columns by pin.\n */\nfunction columnsByPin(cols) {\n const ret = {\n left: [],\n center: [],\n right: []\n };\n if (cols) {\n for (const col of cols) {\n if (col.frozenLeft) {\n ret.left.push(col);\n } else if (col.frozenRight) {\n ret.right.push(col);\n } else {\n ret.center.push(col);\n }\n }\n }\n return ret;\n}\n/**\n * Returns the widths of all group sets of a column\n */\nfunction columnGroupWidths(groups, all) {\n return {\n left: columnTotalWidth(groups.left),\n center: columnTotalWidth(groups.center),\n right: columnTotalWidth(groups.right),\n total: Math.floor(columnTotalWidth(all))\n };\n}\n/**\n * Calculates the total width of all columns and their groups\n */\nfunction columnTotalWidth(columns, prop) {\n let totalWidth = 0;\n if (columns) {\n for (const c of columns) {\n const has = prop && c[prop];\n const width = has ? c[prop] : c.width;\n totalWidth = totalWidth + parseFloat(width);\n }\n }\n return totalWidth;\n}\n/**\n * Calculates the total width of all columns and their groups\n */\nfunction columnsTotalWidth(columns, prop) {\n let totalWidth = 0;\n for (const column of columns) {\n const has = prop && column[prop];\n totalWidth = totalWidth + (has ? column[prop] : column.width);\n }\n return totalWidth;\n}\nfunction columnsByPinArr(val) {\n const colsByPinArr = [];\n const colsByPin = columnsByPin(val);\n colsByPinArr.push({\n type: 'left',\n columns: colsByPin['left']\n });\n colsByPinArr.push({\n type: 'center',\n columns: colsByPin['center']\n });\n colsByPinArr.push({\n type: 'right',\n columns: colsByPin['right']\n });\n return colsByPinArr;\n}\n\n/**\n * This object contains the cache of the various row heights that are present inside\n * the data table. Its based on Fenwick tree data structure that helps with\n * querying sums that have time complexity of log n.\n *\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\n * https://github.com/mikolalysenko/fenwick-tree\n *\n */\nclass RowHeightCache {\n constructor() {\n /**\n * Tree Array stores the cumulative information of the row heights to perform efficient\n * range queries and updates. Currently the tree is initialized to the base row\n * height instead of the detail row height.\n */\n this.treeArray = [];\n }\n /**\n * Clear the Tree array.\n */\n clearCache() {\n this.treeArray = [];\n }\n /**\n * Initialize the Fenwick tree with row Heights.\n *\n * @param rows The array of rows which contain the expanded status.\n * @param rowHeight The row height.\n * @param detailRowHeight The detail row height.\n */\n initCache(details) {\n const {\n rows,\n rowHeight,\n detailRowHeight,\n externalVirtual,\n rowCount,\n rowIndexes,\n rowExpansions\n } = details;\n const isFn = typeof rowHeight === 'function';\n const isDetailFn = typeof detailRowHeight === 'function';\n if (!isFn && isNaN(rowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\n }\n // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\n if (!isDetailFn && isNaN(detailRowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\n }\n const n = externalVirtual ? rowCount : rows.length;\n this.treeArray = new Array(n);\n for (let i = 0; i < n; ++i) {\n this.treeArray[i] = 0;\n }\n for (let i = 0; i < n; ++i) {\n const row = rows[i];\n let currentRowHeight = rowHeight;\n if (isFn) {\n currentRowHeight = rowHeight(row);\n }\n // Add the detail row height to the already expanded rows.\n // This is useful for the table that goes through a filter or sort.\n const expanded = rowExpansions.has(row);\n if (row && expanded) {\n if (isDetailFn) {\n const index = rowIndexes.get(row);\n currentRowHeight += detailRowHeight(row, index);\n } else {\n currentRowHeight += detailRowHeight;\n }\n }\n this.update(i, currentRowHeight);\n }\n }\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port. Below handles edge cases.\n */\n getRowIndex(scrollY) {\n if (scrollY === 0) return 0;\n return this.calcRowIndex(scrollY);\n }\n /**\n * When a row is expanded or rowHeight is changed, update the height. This can\n * be utilized in future when Angular Data table supports dynamic row heights.\n */\n update(atRowIndex, byRowHeight) {\n if (!this.treeArray.length) {\n throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\n Row Height cache not initialized.`);\n }\n const n = this.treeArray.length;\n atRowIndex |= 0;\n while (atRowIndex < n) {\n this.treeArray[atRowIndex] += byRowHeight;\n atRowIndex |= atRowIndex + 1;\n }\n }\n /**\n * Range Sum query from 1 to the rowIndex\n */\n query(atIndex) {\n if (!this.treeArray.length) {\n throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\n }\n let sum = 0;\n atIndex |= 0;\n while (atIndex >= 0) {\n sum += this.treeArray[atIndex];\n atIndex = (atIndex & atIndex + 1) - 1;\n }\n return sum;\n }\n /**\n * Find the total height between 2 row indexes\n */\n queryBetween(atIndexA, atIndexB) {\n return this.query(atIndexB) - this.query(atIndexA - 1);\n }\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port.\n */\n calcRowIndex(sum) {\n if (!this.treeArray.length) return 0;\n let pos = -1;\n const dataLength = this.treeArray.length;\n // Get the highest bit for the block size.\n const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\n for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\n const nextPos = pos + blockSize;\n if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\n sum -= this.treeArray[nextPos];\n pos = nextPos;\n }\n }\n return pos + 1;\n }\n}\nconst cache = {};\nconst testStyle = typeof document !== 'undefined' ? document.createElement('div').style : undefined;\n// Get Prefix\n// http://davidwalsh.name/vendor-prefix\nconst prefix = function () {\n const styles = typeof window !== 'undefined' ? window.getComputedStyle(document.documentElement, '') : undefined;\n const match = typeof styles !== 'undefined' ? Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) : null;\n const pre = match !== null ? match[1] : undefined;\n // tslint:disable-next-line: tsr-detect-non-literal-regexp\n const dom = typeof pre !== 'undefined' ? 'WebKit|Moz|MS|O'.match(new RegExp('(' + pre + ')', 'i'))[1] : undefined;\n return dom ? {\n dom,\n lowercase: pre,\n css: `-${pre}-`,\n js: pre[0].toUpperCase() + pre.substr(1)\n } : undefined;\n}();\nfunction getVendorPrefixedName(property) {\n const name = camelCase(property);\n if (!cache[name]) {\n if (prefix !== undefined && testStyle[prefix.css + property] !== undefined) {\n cache[name] = prefix.css + property;\n } else if (testStyle[property] !== undefined) {\n cache[name] = property;\n }\n }\n return cache[name];\n}\n\n// browser detection and prefixing tools\nconst transform = typeof window !== 'undefined' ? getVendorPrefixedName('transform') : undefined;\nconst backfaceVisibility = typeof window !== 'undefined' ? getVendorPrefixedName('backfaceVisibility') : undefined;\nconst hasCSSTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('transform') : undefined;\nconst hasCSS3DTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('perspective') : undefined;\nconst ua = typeof window !== 'undefined' ? window.navigator.userAgent : 'Chrome';\nconst isSafari = /Safari\\//.test(ua) && !/Chrome\\//.test(ua);\nfunction translateXY(styles, x, y) {\n if (typeof transform !== 'undefined' && hasCSSTransforms) {\n if (!isSafari && hasCSS3DTransforms) {\n styles[transform] = `translate3d(${x}px, ${y}px, 0)`;\n styles[backfaceVisibility] = 'hidden';\n } else {\n styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;\n }\n } else {\n styles.top = `${y}px`;\n styles.left = `${x}px`;\n }\n}\nclass ProgressBarComponent {}\nProgressBarComponent.ɵfac = function ProgressBarComponent_Factory(t) {\n return new (t || ProgressBarComponent)();\n};\nProgressBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ProgressBarComponent,\n selectors: [[\"datatable-progress\"]],\n decls: 3,\n vars: 0,\n consts: [[\"role\", \"progressbar\", 1, \"progress-linear\"], [1, \"container\"], [1, \"bar\"]],\n template: function ProgressBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n i0.ɵɵelement(2, \"div\", 2);\n i0.ɵɵelementEnd()();\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ProgressBarComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-progress',\n template: `\n
\n
\n
\n
\n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, null);\n})();\nfunction selectRows(selected, row, comparefn) {\n const selectedIndex = comparefn(row, selected);\n if (selectedIndex > -1) {\n selected.splice(selectedIndex, 1);\n } else {\n selected.push(row);\n }\n return selected;\n}\nfunction selectRowsBetween(selected, rows, index, prevIndex, comparefn) {\n const reverse = index < prevIndex;\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const greater = i >= prevIndex && i <= index;\n const lesser = i <= prevIndex && i >= index;\n let range = {\n start: 0,\n end: 0\n };\n if (reverse) {\n range = {\n start: index,\n end: prevIndex\n };\n } else {\n range = {\n start: prevIndex,\n end: index + 1\n };\n }\n if (reverse && lesser || !reverse && greater) {\n // if in the positive range to be added to `selected`, and\n // not already in the selected array, add it\n if (i >= range.start && i <= range.end) {\n selected.push(row);\n }\n }\n }\n return selected;\n}\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"up\"] = 38] = \"up\";\n Keys[Keys[\"down\"] = 40] = \"down\";\n Keys[Keys[\"return\"] = 13] = \"return\";\n Keys[Keys[\"escape\"] = 27] = \"escape\";\n Keys[Keys[\"left\"] = 37] = \"left\";\n Keys[Keys[\"right\"] = 39] = \"right\";\n})(Keys || (Keys = {}));\nclass DataTableSelectionComponent {\n constructor() {\n this.activate = new EventEmitter();\n this.select = new EventEmitter();\n }\n selectRow(event, index, row) {\n if (!this.selectEnabled) return;\n const chkbox = this.selectionType === SelectionType.checkbox;\n const multi = this.selectionType === SelectionType.multi;\n const multiClick = this.selectionType === SelectionType.multiClick;\n let selected = [];\n if (multi || chkbox || multiClick) {\n if (event.shiftKey) {\n selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this));\n } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) {\n selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this));\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n if (typeof this.selectCheck === 'function') {\n selected = selected.filter(this.selectCheck.bind(this));\n }\n this.selected.splice(0, this.selected.length);\n this.selected.push(...selected);\n this.prevIndex = index;\n this.select.emit({\n selected\n });\n }\n onActivate(model, index) {\n const {\n type,\n event,\n row\n } = model;\n const chkbox = this.selectionType === SelectionType.checkbox;\n const select = !chkbox && (type === 'click' || type === 'dblclick') || chkbox && type === 'checkbox';\n if (select) {\n this.selectRow(event, index, row);\n } else if (type === 'keydown') {\n if (event.keyCode === Keys.return) {\n this.selectRow(event, index, row);\n } else {\n this.onKeyboardFocus(model);\n }\n }\n this.activate.emit(model);\n }\n onKeyboardFocus(model) {\n const {\n keyCode\n } = model.event;\n const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left;\n if (shouldFocus) {\n const isCellSelection = this.selectionType === SelectionType.cell;\n if (!model.cellElement || !isCellSelection) {\n this.focusRow(model.rowElement, keyCode);\n } else if (isCellSelection) {\n this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex);\n }\n }\n }\n focusRow(rowElement, keyCode) {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) nextRowElement.focus();\n }\n getPrevNextRow(rowElement, keyCode) {\n const parentElement = rowElement.parentElement;\n if (parentElement) {\n let focusElement;\n if (keyCode === Keys.up) {\n focusElement = parentElement.previousElementSibling;\n } else if (keyCode === Keys.down) {\n focusElement = parentElement.nextElementSibling;\n }\n if (focusElement && focusElement.children.length) {\n return focusElement.children[0];\n }\n }\n }\n focusCell(cellElement, rowElement, keyCode, cellIndex) {\n let nextCellElement;\n if (keyCode === Keys.left) {\n nextCellElement = cellElement.previousElementSibling;\n } else if (keyCode === Keys.right) {\n nextCellElement = cellElement.nextElementSibling;\n } else if (keyCode === Keys.up || keyCode === Keys.down) {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) {\n const children = nextRowElement.getElementsByClassName('datatable-body-cell');\n if (children.length) nextCellElement = children[cellIndex];\n }\n }\n if (nextCellElement) nextCellElement.focus();\n }\n getRowSelected(row) {\n return this.getRowSelectedIdx(row, this.selected) > -1;\n }\n getRowSelectedIdx(row, selected) {\n if (!selected || !selected.length) return -1;\n const rowId = this.rowIdentity(row);\n return selected.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n}\nDataTableSelectionComponent.ɵfac = function DataTableSelectionComponent_Factory(t) {\n return new (t || DataTableSelectionComponent)();\n};\nDataTableSelectionComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableSelectionComponent,\n selectors: [[\"datatable-selection\"]],\n inputs: {\n rows: \"rows\",\n selected: \"selected\",\n selectEnabled: \"selectEnabled\",\n selectionType: \"selectionType\",\n rowIdentity: \"rowIdentity\",\n selectCheck: \"selectCheck\"\n },\n outputs: {\n activate: \"activate\",\n select: \"select\"\n },\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function DataTableSelectionComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableSelectionComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-selection',\n template: ` `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, {\n rows: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n selectEnabled: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n rowIdentity: [{\n type: Input\n }],\n selectCheck: [{\n type: Input\n }],\n activate: [{\n type: Output\n }],\n select: [{\n type: Output\n }]\n });\n})();\nvar SortDirection;\n(function (SortDirection) {\n SortDirection[\"asc\"] = \"asc\";\n SortDirection[\"desc\"] = \"desc\";\n})(SortDirection || (SortDirection = {}));\nclass DataTableBodyCellComponent {\n constructor(element, cd) {\n this.cd = cd;\n this.activate = new EventEmitter();\n this.treeAction = new EventEmitter();\n this.isFocused = false;\n this.onCheckboxChangeFn = this.onCheckboxChange.bind(this);\n this.activateFn = this.activate.emit.bind(this.activate);\n this.cellContext = {\n onCheckboxChangeFn: this.onCheckboxChangeFn,\n activateFn: this.activateFn,\n row: this.row,\n group: this.group,\n value: this.value,\n column: this.column,\n rowHeight: this.rowHeight,\n isSelected: this.isSelected,\n rowIndex: this.rowIndex,\n treeStatus: this.treeStatus,\n onTreeAction: this.onTreeAction.bind(this)\n };\n this._element = element.nativeElement;\n }\n set group(group) {\n this._group = group;\n this.cellContext.group = group;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get group() {\n return this._group;\n }\n set rowHeight(val) {\n this._rowHeight = val;\n this.cellContext.rowHeight = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get rowHeight() {\n return this._rowHeight;\n }\n set isSelected(val) {\n this._isSelected = val;\n this.cellContext.isSelected = val;\n this.cd.markForCheck();\n }\n get isSelected() {\n return this._isSelected;\n }\n set expanded(val) {\n this._expanded = val;\n this.cellContext.expanded = val;\n this.cd.markForCheck();\n }\n get expanded() {\n return this._expanded;\n }\n set rowIndex(val) {\n this._rowIndex = val;\n this.cellContext.rowIndex = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n set column(column) {\n this._column = column;\n this.cellContext.column = column;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get column() {\n return this._column;\n }\n set row(row) {\n this._row = row;\n this.cellContext.row = row;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get row() {\n return this._row;\n }\n set sorts(val) {\n this._sorts = val;\n this.calcSortDir = this.calcSortDir(val);\n }\n get sorts() {\n return this._sorts;\n }\n set treeStatus(status) {\n if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {\n this._treeStatus = 'collapsed';\n } else {\n this._treeStatus = status;\n }\n this.cellContext.treeStatus = this._treeStatus;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get treeStatus() {\n return this._treeStatus;\n }\n get columnCssClasses() {\n let cls = 'datatable-body-cell';\n if (this.column.cellClass) {\n if (typeof this.column.cellClass === 'string') {\n cls += ' ' + this.column.cellClass;\n } else if (typeof this.column.cellClass === 'function') {\n const res = this.column.cellClass({\n row: this.row,\n group: this.group,\n column: this.column,\n value: this.value,\n rowHeight: this.rowHeight\n });\n if (typeof res === 'string') {\n cls += ' ' + res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n }\n if (!this.sortDir) {\n cls += ' sort-active';\n }\n if (this.isFocused) {\n cls += ' active';\n }\n if (this.sortDir === SortDirection.asc) {\n cls += ' sort-asc';\n }\n if (this.sortDir === SortDirection.desc) {\n cls += ' sort-desc';\n }\n return cls;\n }\n get width() {\n return this.column.width;\n }\n get minWidth() {\n return this.column.minWidth;\n }\n get maxWidth() {\n return this.column.maxWidth;\n }\n get height() {\n const height = this.rowHeight;\n if (isNaN(height)) {\n return height;\n }\n return height + 'px';\n }\n ngDoCheck() {\n this.checkValueUpdates();\n }\n ngOnDestroy() {\n if (this.cellTemplate) {\n this.cellTemplate.clear();\n }\n }\n checkValueUpdates() {\n let value = '';\n if (!this.row || !this.column) {\n value = '';\n } else {\n const val = this.column.$$valueGetter(this.row, this.column.prop);\n const userPipe = this.column.pipe;\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n if (this.value !== value) {\n this.value = value;\n this.cellContext.value = value;\n this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;\n this.cd.markForCheck();\n }\n }\n onFocus() {\n this.isFocused = true;\n }\n onBlur() {\n this.isFocused = false;\n }\n onClick(event) {\n this.activate.emit({\n type: 'click',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n onDblClick(event) {\n this.activate.emit({\n type: 'dblclick',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const isTargetCell = event.target === this._element;\n const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right;\n if (isAction && isTargetCell) {\n event.preventDefault();\n event.stopPropagation();\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n }\n onCheckboxChange(event) {\n this.activate.emit({\n type: 'checkbox',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element,\n treeStatus: 'collapsed'\n });\n }\n calcSortDir(sorts) {\n if (!sorts) {\n return;\n }\n const sort = sorts.find(s => {\n return s.prop === this.column.prop;\n });\n if (sort) {\n return sort.dir;\n }\n }\n stripHtml(html) {\n if (!html.replace) {\n return html;\n }\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n onTreeAction() {\n this.treeAction.emit(this.row);\n }\n calcLeftMargin(column, row) {\n const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;\n return column.isTreeColumn ? row.level * levelIndent : 0;\n }\n}\nDataTableBodyCellComponent.ɵfac = function DataTableBodyCellComponent_Factory(t) {\n return new (t || DataTableBodyCellComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableBodyCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableBodyCellComponent,\n selectors: [[\"datatable-body-cell\"]],\n viewQuery: function DataTableBodyCellComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n }\n },\n hostVars: 10,\n hostBindings: function DataTableBodyCellComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focus\", function DataTableBodyCellComponent_focus_HostBindingHandler() {\n return ctx.onFocus();\n })(\"blur\", function DataTableBodyCellComponent_blur_HostBindingHandler() {\n return ctx.onBlur();\n })(\"click\", function DataTableBodyCellComponent_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n })(\"dblclick\", function DataTableBodyCellComponent_dblclick_HostBindingHandler($event) {\n return ctx.onDblClick($event);\n })(\"keydown\", function DataTableBodyCellComponent_keydown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.columnCssClasses);\n i0.ɵɵstyleProp(\"width\", ctx.width, \"px\")(\"min-width\", ctx.minWidth, \"px\")(\"max-width\", ctx.maxWidth, \"px\")(\"height\", ctx.height);\n }\n },\n inputs: {\n displayCheck: \"displayCheck\",\n group: \"group\",\n rowHeight: \"rowHeight\",\n isSelected: \"isSelected\",\n expanded: \"expanded\",\n rowIndex: \"rowIndex\",\n column: \"column\",\n row: \"row\",\n sorts: \"sorts\",\n treeStatus: \"treeStatus\"\n },\n outputs: {\n activate: \"activate\",\n treeAction: \"treeAction\"\n },\n decls: 5,\n vars: 6,\n consts: [[\"cellTemplate\", \"\"], [1, \"datatable-body-cell-label\"], [\"class\", \"datatable-checkbox\", 4, \"ngIf\"], [4, \"ngIf\"], [3, \"title\", \"innerHTML\", 4, \"ngIf\"], [1, \"datatable-checkbox\"], [\"type\", \"checkbox\", 3, \"click\", \"checked\"], [\"class\", \"datatable-tree-button\", 3, \"disabled\", \"click\", 4, \"ngIf\"], [1, \"datatable-tree-button\", 3, \"click\", \"disabled\"], [\"class\", \"icon datatable-icon-collapse\", 4, \"ngIf\"], [\"class\", \"icon datatable-icon-up\", 4, \"ngIf\"], [\"class\", \"icon datatable-icon-down\", 4, \"ngIf\"], [1, \"icon\", \"datatable-icon-collapse\"], [1, \"icon\", \"datatable-icon-up\"], [1, \"icon\", \"datatable-icon-down\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"title\", \"innerHTML\"]],\n template: function DataTableBodyCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtemplate(1, DataTableBodyCellComponent_label_1_Template, 2, 1, \"label\", 2)(2, DataTableBodyCellComponent_ng_container_2_Template, 3, 2, \"ng-container\", 3)(3, DataTableBodyCellComponent_span_3_Template, 1, 2, \"span\", 4)(4, DataTableBodyCellComponent_4_Template, 2, 2, null, 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"margin-left\", ctx.calcLeftMargin(ctx.column, ctx.row), \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.checkboxable && (!ctx.displayCheck || ctx.displayCheck(ctx.row, ctx.column, ctx.value)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.isTreeColumn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.column.cellTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.cellTemplate);\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableBodyCellComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-body-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n
\n `\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }];\n }, {\n displayCheck: [{\n type: Input\n }],\n group: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n isSelected: [{\n type: Input\n }],\n expanded: [{\n type: Input\n }],\n rowIndex: [{\n type: Input\n }],\n column: [{\n type: Input\n }],\n row: [{\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n treeStatus: [{\n type: Input\n }],\n activate: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n cellTemplate: [{\n type: ViewChild,\n args: ['cellTemplate', {\n read: ViewContainerRef,\n static: true\n }]\n }],\n columnCssClasses: [{\n type: HostBinding,\n args: ['class']\n }],\n width: [{\n type: HostBinding,\n args: ['style.width.px']\n }],\n minWidth: [{\n type: HostBinding,\n args: ['style.minWidth.px']\n }],\n maxWidth: [{\n type: HostBinding,\n args: ['style.maxWidth.px']\n }],\n height: [{\n type: HostBinding,\n args: ['style.height']\n }],\n onFocus: [{\n type: HostListener,\n args: ['focus']\n }],\n onBlur: [{\n type: HostListener,\n args: ['blur']\n }],\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }],\n onDblClick: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }],\n onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }]\n });\n})();\nclass DataTableBodyRowComponent {\n constructor(differs, scrollbarHelper, cd, element) {\n this.differs = differs;\n this.scrollbarHelper = scrollbarHelper;\n this.cd = cd;\n this.treeStatus = 'collapsed';\n this.activate = new EventEmitter();\n this.treeAction = new EventEmitter();\n this._groupStyles = {\n left: {},\n center: {},\n right: {}\n };\n this._element = element.nativeElement;\n this._rowDiffer = differs.find({}).create();\n }\n set columns(val) {\n this._columns = val;\n this.recalculateColumns(val);\n this.buildStylesByGroup();\n }\n get columns() {\n return this._columns;\n }\n set innerWidth(val) {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n }\n this._innerWidth = val;\n this.recalculateColumns();\n this.buildStylesByGroup();\n }\n get innerWidth() {\n return this._innerWidth;\n }\n set offsetX(val) {\n this._offsetX = val;\n this.buildStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n get cssClass() {\n let cls = 'datatable-body-row';\n if (this.isSelected) {\n cls += ' active';\n }\n if (this.rowIndex % 2 !== 0) {\n cls += ' datatable-row-odd';\n }\n if (this.rowIndex % 2 === 0) {\n cls += ' datatable-row-even';\n }\n if (this.rowClass) {\n const res = this.rowClass(this.row);\n if (typeof res === 'string') {\n cls += ` ${res}`;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n return cls;\n }\n get columnsTotalWidths() {\n return this._columnGroupWidths.total;\n }\n ngDoCheck() {\n if (this._rowDiffer.diff(this.row)) {\n this.cd.markForCheck();\n }\n }\n trackByGroups(index, colGroup) {\n return colGroup.type;\n }\n columnTrackingFn(index, column) {\n return column.$$id;\n }\n buildStylesByGroup() {\n this._groupStyles.left = this.calcStylesByGroup('left');\n this._groupStyles.center = this.calcStylesByGroup('center');\n this._groupStyles.right = this.calcStylesByGroup('right');\n this.cd.markForCheck();\n }\n calcStylesByGroup(group) {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n const styles = {\n width: `${widths[group]}px`\n };\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = (offsetDiff + this.scrollbarHelper.width) * -1;\n translateXY(styles, offset, 0);\n }\n return styles;\n }\n onActivate(event, index) {\n event.cellIndex = index;\n event.rowElement = this._element;\n this.activate.emit(event);\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const isTargetRow = event.target === this._element;\n const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right;\n if (isAction && isTargetRow) {\n event.preventDefault();\n event.stopPropagation();\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n }\n onMouseenter(event) {\n this.activate.emit({\n type: 'mouseenter',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n recalculateColumns(val = this.columns) {\n this._columns = val;\n const colsByPin = columnsByPin(this._columns);\n this._columnsByPin = columnsByPinArr(this._columns);\n this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);\n }\n onTreeAction() {\n this.treeAction.emit();\n }\n}\nDataTableBodyRowComponent.ɵfac = function DataTableBodyRowComponent_Factory(t) {\n return new (t || DataTableBodyRowComponent)(i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(ScrollbarHelper, 4), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nDataTableBodyRowComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableBodyRowComponent,\n selectors: [[\"datatable-body-row\"]],\n hostVars: 6,\n hostBindings: function DataTableBodyRowComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function DataTableBodyRowComponent_keydown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"mouseenter\", function DataTableBodyRowComponent_mouseenter_HostBindingHandler($event) {\n return ctx.onMouseenter($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.cssClass);\n i0.ɵɵstyleProp(\"height\", ctx.rowHeight, \"px\")(\"width\", ctx.columnsTotalWidths, \"px\");\n }\n },\n inputs: {\n columns: \"columns\",\n innerWidth: \"innerWidth\",\n expanded: \"expanded\",\n rowClass: \"rowClass\",\n row: \"row\",\n group: \"group\",\n isSelected: \"isSelected\",\n rowIndex: \"rowIndex\",\n displayCheck: \"displayCheck\",\n treeStatus: \"treeStatus\",\n offsetX: \"offsetX\",\n rowHeight: \"rowHeight\"\n },\n outputs: {\n activate: \"activate\",\n treeAction: \"treeAction\"\n },\n decls: 1,\n vars: 2,\n consts: [[3, \"class\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"ngStyle\"], [\"role\", \"cell\", \"tabindex\", \"-1\", 3, \"row\", \"group\", \"expanded\", \"isSelected\", \"rowIndex\", \"column\", \"rowHeight\", \"displayCheck\", \"treeStatus\", \"activate\", \"treeAction\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"cell\", \"tabindex\", \"-1\", 3, \"activate\", \"treeAction\", \"row\", \"group\", \"expanded\", \"isSelected\", \"rowIndex\", \"column\", \"rowHeight\", \"displayCheck\", \"treeStatus\"]],\n template: function DataTableBodyRowComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyRowComponent_div_0_Template, 2, 6, \"div\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx._columnsByPin)(\"ngForTrackBy\", ctx.trackByGroups);\n }\n },\n dependencies: [DataTableBodyCellComponent, i1.NgForOf, i1.NgStyle],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableBodyRowComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-body-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n `\n }]\n }], function () {\n return [{\n type: i0.KeyValueDiffers\n }, {\n type: ScrollbarHelper,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }];\n }, {\n columns: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }],\n expanded: [{\n type: Input\n }],\n rowClass: [{\n type: Input\n }],\n row: [{\n type: Input\n }],\n group: [{\n type: Input\n }],\n isSelected: [{\n type: Input\n }],\n rowIndex: [{\n type: Input\n }],\n displayCheck: [{\n type: Input\n }],\n treeStatus: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n cssClass: [{\n type: HostBinding,\n args: ['class']\n }],\n rowHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }],\n columnsTotalWidths: [{\n type: HostBinding,\n args: ['style.width.px']\n }],\n activate: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }],\n onMouseenter: [{\n type: HostListener,\n args: ['mouseenter', ['$event']]\n }]\n });\n})();\nfunction defaultSumFunc(cells) {\n const cellsWithValues = cells.filter(cell => !!cell);\n if (!cellsWithValues.length) {\n return null;\n }\n if (cellsWithValues.some(cell => typeof cell !== 'number')) {\n return null;\n }\n return cellsWithValues.reduce((res, cell) => res + cell);\n}\nfunction noopSumFunc(cells) {\n return null;\n}\nclass DataTableSummaryRowComponent {\n constructor() {\n this.summaryRow = {};\n }\n ngOnChanges() {\n if (!this.columns || !this.rows) {\n return;\n }\n this.updateInternalColumns();\n this.updateValues();\n }\n updateInternalColumns() {\n this._internalColumns = this.columns.map(col => ({\n ...col,\n cellTemplate: col.summaryTemplate\n }));\n }\n updateValues() {\n this.summaryRow = {};\n this.columns.filter(col => !col.summaryTemplate).forEach(col => {\n const cellsFromSingleColumn = this.rows.map(row => row[col.prop]);\n const sumFunc = this.getSummaryFunction(col);\n this.summaryRow[col.prop] = col.pipe ? col.pipe.transform(sumFunc(cellsFromSingleColumn)) : sumFunc(cellsFromSingleColumn);\n });\n }\n getSummaryFunction(column) {\n if (column.summaryFunc === undefined) {\n return defaultSumFunc;\n } else if (column.summaryFunc === null) {\n return noopSumFunc;\n } else {\n return column.summaryFunc;\n }\n }\n}\nDataTableSummaryRowComponent.ɵfac = function DataTableSummaryRowComponent_Factory(t) {\n return new (t || DataTableSummaryRowComponent)();\n};\nDataTableSummaryRowComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableSummaryRowComponent,\n selectors: [[\"datatable-summary-row\"]],\n hostAttrs: [1, \"datatable-summary-row\"],\n inputs: {\n rows: \"rows\",\n columns: \"columns\",\n rowHeight: \"rowHeight\",\n offsetX: \"offsetX\",\n innerWidth: \"innerWidth\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 1,\n vars: 1,\n consts: [[\"tabindex\", \"-1\", 3, \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\", 4, \"ngIf\"], [\"tabindex\", \"-1\", 3, \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\"]],\n template: function DataTableSummaryRowComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableSummaryRowComponent_datatable_body_row_0_Template, 1, 6, \"datatable-body-row\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.summaryRow && ctx._internalColumns);\n }\n },\n dependencies: [DataTableBodyRowComponent, i1.NgIf],\n encapsulation: 2\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableSummaryRowComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-summary-row',\n template: `\n \n \n `,\n host: {\n class: 'datatable-summary-row'\n }\n }]\n }], null, {\n rows: [{\n type: Input\n }],\n columns: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }]\n });\n})();\nclass DataTableRowWrapperComponent {\n constructor(cd, differs) {\n this.cd = cd;\n this.differs = differs;\n this.rowContextmenu = new EventEmitter(false);\n this._expanded = false;\n this.groupContext = {\n group: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n this.rowContext = {\n row: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n this.rowDiffer = differs.find({}).create();\n }\n set rowIndex(val) {\n this._rowIndex = val;\n this.rowContext.rowIndex = val;\n this.groupContext.rowIndex = val;\n this.cd.markForCheck();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n set expanded(val) {\n this._expanded = val;\n this.groupContext.expanded = val;\n this.rowContext.expanded = val;\n this.cd.markForCheck();\n }\n get expanded() {\n return this._expanded;\n }\n ngDoCheck() {\n if (this.rowDiffer.diff(this.row)) {\n this.rowContext.row = this.row;\n this.groupContext.group = this.row;\n this.cd.markForCheck();\n }\n }\n onContextmenu($event) {\n this.rowContextmenu.emit({\n event: $event,\n row: this.row\n });\n }\n getGroupHeaderStyle() {\n const styles = {};\n styles['transform'] = 'translate3d(' + this.offsetX + 'px, 0px, 0px)';\n styles['backface-visibility'] = 'hidden';\n styles['width'] = this.innerWidth;\n return styles;\n }\n}\nDataTableRowWrapperComponent.ɵfac = function DataTableRowWrapperComponent_Factory(t) {\n return new (t || DataTableRowWrapperComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.KeyValueDiffers));\n};\nDataTableRowWrapperComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableRowWrapperComponent,\n selectors: [[\"datatable-row-wrapper\"]],\n hostAttrs: [1, \"datatable-row-wrapper\"],\n hostBindings: function DataTableRowWrapperComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"contextmenu\", function DataTableRowWrapperComponent_contextmenu_HostBindingHandler($event) {\n return ctx.onContextmenu($event);\n });\n }\n },\n inputs: {\n innerWidth: \"innerWidth\",\n rowDetail: \"rowDetail\",\n groupHeader: \"groupHeader\",\n offsetX: \"offsetX\",\n detailRowHeight: \"detailRowHeight\",\n row: \"row\",\n groupedRows: \"groupedRows\",\n rowIndex: \"rowIndex\",\n expanded: \"expanded\"\n },\n outputs: {\n rowContextmenu: \"rowContextmenu\"\n },\n ngContentSelectors: _c0,\n decls: 3,\n vars: 3,\n consts: [[\"class\", \"datatable-group-header\", 3, \"ngStyle\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"datatable-row-detail\", 3, \"height\", 4, \"ngIf\"], [1, \"datatable-group-header\", 3, \"ngStyle\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"datatable-row-detail\"]],\n template: function DataTableRowWrapperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, DataTableRowWrapperComponent_div_0_Template, 2, 2, \"div\", 0)(1, DataTableRowWrapperComponent_ng_content_1_Template, 1, 0, \"ng-content\", 1)(2, DataTableRowWrapperComponent_div_2_Template, 2, 3, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.groupHeader && ctx.groupHeader.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.groupHeader && ctx.groupHeader.template && ctx.expanded || !ctx.groupHeader || !ctx.groupHeader.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.rowDetail && ctx.rowDetail.template && ctx.expanded);\n }\n },\n dependencies: [i1.NgIf, i1.NgStyle, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableRowWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-row-wrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n \n \n
\n \n \n \n \n \n \n `,\n host: {\n class: 'datatable-row-wrapper'\n }\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }, {\n type: i0.KeyValueDiffers\n }];\n }, {\n innerWidth: [{\n type: Input\n }],\n rowDetail: [{\n type: Input\n }],\n groupHeader: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n detailRowHeight: [{\n type: Input\n }],\n row: [{\n type: Input\n }],\n groupedRows: [{\n type: Input\n }],\n rowContextmenu: [{\n type: Output\n }],\n rowIndex: [{\n type: Input\n }],\n expanded: [{\n type: Input\n }],\n onContextmenu: [{\n type: HostListener,\n args: ['contextmenu', ['$event']]\n }]\n });\n})();\nclass DataTableBodyComponent {\n /**\n * Creates an instance of DataTableBodyComponent.\n */\n constructor(cd) {\n this.cd = cd;\n this.selected = [];\n this.scroll = new EventEmitter();\n this.page = new EventEmitter();\n this.activate = new EventEmitter();\n this.select = new EventEmitter();\n this.detailToggle = new EventEmitter();\n this.rowContextmenu = new EventEmitter(false);\n this.treeAction = new EventEmitter();\n this.rowHeightsCache = new RowHeightCache();\n this.temp = [];\n this.offsetY = 0;\n this.indexes = {};\n this.rowIndexes = new WeakMap();\n this.rowExpansions = [];\n /**\n * Get the height of the detail row.\n */\n this.getDetailRowHeight = (row, index) => {\n if (!this.rowDetail) {\n return 0;\n }\n const rowHeight = this.rowDetail.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight(row, index) : rowHeight;\n };\n // declare fn here so we can get access to the `this` property\n this.rowTrackingFn = (index, row) => {\n const idx = this.getRowIndex(row);\n if (this.trackByProp) {\n return row[this.trackByProp];\n } else {\n return idx;\n }\n };\n }\n set pageSize(val) {\n this._pageSize = val;\n this.recalcLayout();\n }\n get pageSize() {\n return this._pageSize;\n }\n set rows(val) {\n this._rows = val;\n this.recalcLayout();\n }\n get rows() {\n return this._rows;\n }\n set columns(val) {\n this._columns = val;\n const colsByPin = columnsByPin(val);\n this.columnGroupWidths = columnGroupWidths(colsByPin, val);\n }\n get columns() {\n return this._columns;\n }\n set offset(val) {\n this._offset = val;\n if (!this.scrollbarV || this.scrollbarV && !this.virtualization) this.recalcLayout();\n }\n get offset() {\n return this._offset;\n }\n set rowCount(val) {\n this._rowCount = val;\n this.recalcLayout();\n }\n get rowCount() {\n return this._rowCount;\n }\n get bodyWidth() {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n } else {\n return '100%';\n }\n }\n set bodyHeight(val) {\n if (this.scrollbarV) {\n this._bodyHeight = val + 'px';\n } else {\n this._bodyHeight = 'auto';\n }\n this.recalcLayout();\n }\n get bodyHeight() {\n return this._bodyHeight;\n }\n /**\n * Returns if selection is enabled.\n */\n get selectEnabled() {\n return !!this.selectionType;\n }\n /**\n * Property that would calculate the height of scroll bar\n * based on the row heights cache for virtual scroll and virtualization. Other scenarios\n * calculate scroll height automatically (as height will be undefined).\n */\n get scrollHeight() {\n if (this.scrollbarV && this.virtualization && this.rowCount) {\n return this.rowHeightsCache.query(this.rowCount - 1);\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n /**\n * Called after the constructor, initializing input properties\n */\n ngOnInit() {\n if (this.rowDetail) {\n this.listener = this.rowDetail.toggle.subscribe(({\n type,\n value\n }) => {\n if (type === 'row') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n if (this.groupHeader) {\n this.listener = this.groupHeader.toggle.subscribe(({\n type,\n value\n }) => {\n if (type === 'group') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n }\n /**\n * Called once, before the instance is destroyed.\n */\n ngOnDestroy() {\n if (this.rowDetail || this.groupHeader) {\n this.listener.unsubscribe();\n }\n }\n /**\n * Updates the Y offset given a new offset.\n */\n updateOffsetY(offset) {\n // scroller is missing on empty table\n if (!this.scroller) {\n return;\n }\n if (this.scrollbarV && this.virtualization && offset) {\n // First get the row Index that we need to move to.\n const rowIndex = this.pageSize * offset;\n offset = this.rowHeightsCache.query(rowIndex - 1);\n } else if (this.scrollbarV && !this.virtualization) {\n offset = 0;\n }\n this.scroller.setOffset(offset || 0);\n }\n /**\n * Body was scrolled, this is mainly useful for\n * when a user is server-side pagination via virtual scroll.\n */\n onBodyScroll(event) {\n const scrollYPos = event.scrollYPos;\n const scrollXPos = event.scrollXPos;\n // if scroll change, trigger update\n // this is mainly used for header cell positions\n if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) {\n this.scroll.emit({\n offsetY: scrollYPos,\n offsetX: scrollXPos\n });\n }\n this.offsetY = scrollYPos;\n this.offsetX = scrollXPos;\n this.updateIndexes();\n this.updatePage(event.direction);\n this.updateRows();\n }\n /**\n * Updates the page given a direction.\n */\n updatePage(direction) {\n let offset = this.indexes.first / this.pageSize;\n if (direction === 'up') {\n offset = Math.ceil(offset);\n } else if (direction === 'down') {\n offset = Math.floor(offset);\n }\n if (direction !== undefined && !isNaN(offset)) {\n this.page.emit({\n offset\n });\n }\n }\n /**\n * Updates the rows in the view port\n */\n updateRows() {\n const {\n first,\n last\n } = this.indexes;\n let rowIndex = first;\n let idx = 0;\n const temp = [];\n // if grouprowsby has been specified treat row paging\n // parameters as group paging parameters ie if limit 10 has been\n // specified treat it as 10 groups rather than 10 rows\n if (this.groupedRows) {\n let maxRowsPerGroup = 3;\n // if there is only one group set the maximum number of\n // rows per group the same as the total number of rows\n if (this.groupedRows.length === 1) {\n maxRowsPerGroup = this.groupedRows[0].value.length;\n }\n while (rowIndex < last && rowIndex < this.groupedRows.length) {\n // Add the groups into this page\n const group = this.groupedRows[rowIndex];\n this.rowIndexes.set(group, rowIndex);\n if (group.value) {\n // add indexes for each group item\n group.value.forEach((g, i) => {\n const _idx = `${rowIndex}-${i}`;\n this.rowIndexes.set(g, _idx);\n });\n }\n temp[idx] = group;\n idx++;\n // Group index in this context\n rowIndex++;\n }\n } else {\n while (rowIndex < last && rowIndex < this.rowCount) {\n const row = this.rows[rowIndex];\n if (row) {\n // add indexes for each row\n this.rowIndexes.set(row, rowIndex);\n temp[idx] = row;\n }\n idx++;\n rowIndex++;\n }\n }\n this.temp = temp;\n }\n /**\n * Get the row height\n */\n getRowHeight(row) {\n // if its a function return it\n if (typeof this.rowHeight === 'function') {\n return this.rowHeight(row);\n }\n return this.rowHeight;\n }\n /**\n * @param group the group with all rows\n */\n getGroupHeight(group) {\n let rowHeight = 0;\n if (group.value) {\n for (let index = 0; index < group.value.length; index++) {\n rowHeight += this.getRowAndDetailHeight(group.value[index]);\n }\n }\n return rowHeight;\n }\n /**\n * Calculate row height based on the expanded state of the row.\n */\n getRowAndDetailHeight(row) {\n let rowHeight = this.getRowHeight(row);\n const expanded = this.getRowExpanded(row);\n // Adding detail row height if its expanded.\n if (expanded) {\n rowHeight += this.getDetailRowHeight(row);\n }\n return rowHeight;\n }\n /**\n * Calculates the styles for the row so that the rows can be moved in 2D space\n * during virtual scroll inside the DOM. In the below case the Y position is\n * manipulated. As an example, if the height of row 0 is 30 px and row 1 is\n * 100 px then following styles are generated:\n *\n * transform: translate3d(0px, 0px, 0px); -> row0\n * transform: translate3d(0px, 30px, 0px); -> row1\n * transform: translate3d(0px, 130px, 0px); -> row2\n *\n * Row heights have to be calculated based on the row heights cache as we wont\n * be able to determine which row is of what height before hand. In the above\n * case the positionY of the translate3d for row2 would be the sum of all the\n * heights of the rows before it (i.e. row0 and row1).\n *\n * @param rows the row that needs to be placed in the 2D space.\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getRowsStyles(rows) {\n const styles = {};\n // only add styles for the group if there is a group\n if (this.groupedRows) {\n styles.width = this.columnGroupWidths.total;\n }\n if (this.scrollbarV && this.virtualization) {\n let idx = 0;\n if (this.groupedRows) {\n // Get the latest row rowindex in a group\n const row = rows[rows.length - 1];\n idx = row ? this.getRowIndex(row) : 0;\n } else {\n idx = this.getRowIndex(rows);\n }\n // const pos = idx * rowHeight;\n // The position of this row would be the sum of all row heights\n // until the previous row position.\n const pos = this.rowHeightsCache.query(idx - 1);\n translateXY(styles, 0, pos);\n }\n return styles;\n }\n /**\n * Calculate bottom summary row offset for scrollbar mode.\n * For more information about cache and offset calculation\n * see description for `getRowsStyles` method\n *\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getBottomSummaryRowStyles() {\n if (!this.scrollbarV || !this.rows || !this.rows.length) {\n return null;\n }\n const styles = {\n position: 'absolute'\n };\n const pos = this.rowHeightsCache.query(this.rows.length - 1);\n translateXY(styles, 0, pos);\n return styles;\n }\n /**\n * Hides the loading indicator\n */\n hideIndicator() {\n setTimeout(() => this.loadingIndicator = false, 500);\n }\n /**\n * Updates the index of the rows in the viewport\n */\n updateIndexes() {\n let first = 0;\n let last = 0;\n if (this.scrollbarV) {\n if (this.virtualization) {\n // Calculation of the first and last indexes will be based on where the\n // scrollY position would be at. The last index would be the one\n // that shows up inside the view port the last.\n const height = parseInt(this.bodyHeight, 0);\n first = this.rowHeightsCache.getRowIndex(this.offsetY);\n last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;\n } else {\n // If virtual rows are not needed\n // We render all in one go\n first = 0;\n last = this.rowCount;\n }\n } else {\n // The server is handling paging and will pass an array that begins with the\n // element at a specified offset. first should always be 0 with external paging.\n if (!this.externalPaging) {\n first = Math.max(this.offset * this.pageSize, 0);\n }\n last = Math.min(first + this.pageSize, this.rowCount);\n }\n this.indexes = {\n first,\n last\n };\n }\n /**\n * Refreshes the full Row Height cache. Should be used\n * when the entire row array state has changed.\n */\n refreshRowHeightCache() {\n if (!this.scrollbarV || this.scrollbarV && !this.virtualization) {\n return;\n }\n // clear the previous row height cache if already present.\n // this is useful during sorts, filters where the state of the\n // rows array is changed.\n this.rowHeightsCache.clearCache();\n // Initialize the tree only if there are rows inside the tree.\n if (this.rows && this.rows.length) {\n const rowExpansions = new Set();\n for (const row of this.rows) {\n if (this.getRowExpanded(row)) {\n rowExpansions.add(row);\n }\n }\n this.rowHeightsCache.initCache({\n rows: this.rows,\n rowHeight: this.rowHeight,\n detailRowHeight: this.getDetailRowHeight,\n externalVirtual: this.scrollbarV && this.externalPaging,\n rowCount: this.rowCount,\n rowIndexes: this.rowIndexes,\n rowExpansions\n });\n }\n }\n /**\n * Gets the index for the view port\n */\n getAdjustedViewPortIndex() {\n // Capture the row index of the first row that is visible on the viewport.\n // If the scroll bar is just below the row which is highlighted then make that as the\n // first index.\n const viewPortFirstRowIndex = this.indexes.first;\n if (this.scrollbarV && this.virtualization) {\n const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1);\n return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex;\n }\n return viewPortFirstRowIndex;\n }\n /**\n * Toggle the Expansion of the row i.e. if the row is expanded then it will\n * collapse and vice versa. Note that the expanded status is stored as\n * a part of the row object itself as we have to preserve the expanded row\n * status in case of sorting and filtering of the row set.\n */\n toggleRowExpansion(row) {\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions);\n const expanded = rowExpandedIdx > -1;\n // If the detailRowHeight is auto --> only in case of non-virtualized scroll\n if (this.scrollbarV && this.virtualization) {\n const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1);\n // const idx = this.rowIndexes.get(row) || 0;\n const idx = this.getRowIndex(row);\n this.rowHeightsCache.update(idx, detailRowHeight);\n }\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.rowExpansions.splice(rowExpandedIdx, 1);\n } else {\n this.rowExpansions.push(row);\n }\n this.detailToggle.emit({\n rows: [row],\n currentIndex: viewPortFirstRowIndex\n });\n }\n /**\n * Expand/Collapse all the rows no matter what their state is.\n */\n toggleAllRows(expanded) {\n // clear prev expansions\n this.rowExpansions = [];\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n if (expanded) {\n for (const row of this.rows) {\n this.rowExpansions.push(row);\n }\n }\n if (this.scrollbarV) {\n // Refresh the full row heights cache since every row was affected.\n this.recalcLayout();\n }\n // Emit all rows that have been expanded.\n this.detailToggle.emit({\n rows: this.rows,\n currentIndex: viewPortFirstRowIndex\n });\n }\n /**\n * Recalculates the table\n */\n recalcLayout() {\n this.refreshRowHeightCache();\n this.updateIndexes();\n this.updateRows();\n }\n /**\n * Tracks the column\n */\n columnTrackingFn(index, column) {\n return column.$$id;\n }\n /**\n * Gets the row pinning group styles\n */\n stylesByGroup(group) {\n const widths = this.columnGroupWidths;\n const offsetX = this.offsetX;\n const styles = {\n width: `${widths[group]}px`\n };\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = offsetDiff * -1;\n translateXY(styles, offset, 0);\n }\n return styles;\n }\n /**\n * Returns if the row was expanded and set default row expansion when row expansion is empty\n */\n getRowExpanded(row) {\n if (this.rowExpansions.length === 0 && this.groupExpansionDefault) {\n for (const group of this.groupedRows) {\n this.rowExpansions.push(group);\n }\n }\n return this.getRowExpandedIdx(row, this.rowExpansions) > -1;\n }\n getRowExpandedIdx(row, expanded) {\n if (!expanded || !expanded.length) return -1;\n const rowId = this.rowIdentity(row);\n return expanded.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n /**\n * Gets the row index given a row\n */\n getRowIndex(row) {\n return this.rowIndexes.get(row) || 0;\n }\n onTreeAction(row) {\n this.treeAction.emit({\n row\n });\n }\n}\nDataTableBodyComponent.ɵfac = function DataTableBodyComponent_Factory(t) {\n return new (t || DataTableBodyComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableBodyComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableBodyComponent,\n selectors: [[\"datatable-body\"]],\n viewQuery: function DataTableBodyComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ScrollerComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scroller = _t.first);\n }\n },\n hostAttrs: [1, \"datatable-body\"],\n hostVars: 4,\n hostBindings: function DataTableBodyComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"width\", ctx.bodyWidth)(\"height\", ctx.bodyHeight);\n }\n },\n inputs: {\n scrollbarV: \"scrollbarV\",\n scrollbarH: \"scrollbarH\",\n loadingIndicator: \"loadingIndicator\",\n externalPaging: \"externalPaging\",\n rowHeight: \"rowHeight\",\n offsetX: \"offsetX\",\n emptyMessage: \"emptyMessage\",\n selectionType: \"selectionType\",\n selected: \"selected\",\n rowIdentity: \"rowIdentity\",\n rowDetail: \"rowDetail\",\n groupHeader: \"groupHeader\",\n selectCheck: \"selectCheck\",\n displayCheck: \"displayCheck\",\n trackByProp: \"trackByProp\",\n rowClass: \"rowClass\",\n groupedRows: \"groupedRows\",\n groupExpansionDefault: \"groupExpansionDefault\",\n innerWidth: \"innerWidth\",\n groupRowsBy: \"groupRowsBy\",\n virtualization: \"virtualization\",\n summaryRow: \"summaryRow\",\n summaryPosition: \"summaryPosition\",\n summaryHeight: \"summaryHeight\",\n pageSize: \"pageSize\",\n rows: \"rows\",\n columns: \"columns\",\n offset: \"offset\",\n rowCount: \"rowCount\",\n bodyHeight: \"bodyHeight\"\n },\n outputs: {\n scroll: \"scroll\",\n page: \"page\",\n activate: \"activate\",\n select: \"select\",\n detailToggle: \"detailToggle\",\n rowContextmenu: \"rowContextmenu\",\n treeAction: \"treeAction\"\n },\n decls: 5,\n vars: 9,\n consts: [[\"selector\", \"\"], [\"groupedRowsTemplate\", \"\"], [4, \"ngIf\"], [3, \"select\", \"activate\", \"selected\", \"rows\", \"selectCheck\", \"selectEnabled\", \"selectionType\", \"rowIdentity\"], [3, \"scrollbarV\", \"scrollbarH\", \"scrollHeight\", \"scrollWidth\", \"scroll\", 4, \"ngIf\"], [\"class\", \"empty-row\", 3, \"innerHTML\", 4, \"ngIf\"], [3, \"scroll\", \"scrollbarV\", \"scrollbarH\", \"scrollHeight\", \"scrollWidth\"], [3, \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\", 4, \"ngIf\"], [3, \"groupedRows\", \"innerWidth\", \"ngStyle\", \"rowDetail\", \"groupHeader\", \"offsetX\", \"detailRowHeight\", \"row\", \"expanded\", \"rowIndex\", \"rowContextmenu\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"row\", 3, \"ngStyle\", \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\", 4, \"ngIf\"], [3, \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\"], [3, \"rowContextmenu\", \"groupedRows\", \"innerWidth\", \"ngStyle\", \"rowDetail\", \"groupHeader\", \"offsetX\", \"detailRowHeight\", \"row\", \"expanded\", \"rowIndex\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\", \"expanded\", \"rowClass\", \"displayCheck\", \"treeStatus\", \"treeAction\", \"activate\", 4, \"ngIf\", \"ngIfElse\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"treeAction\", \"activate\", \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\", \"expanded\", \"rowClass\", \"displayCheck\", \"treeStatus\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"group\", \"rowIndex\", \"expanded\", \"rowClass\", \"activate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"activate\", \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"group\", \"rowIndex\", \"expanded\", \"rowClass\"], [\"role\", \"row\", 3, \"ngStyle\", \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\"], [1, \"empty-row\", 3, \"innerHTML\"]],\n template: function DataTableBodyComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, DataTableBodyComponent_datatable_progress_0_Template, 1, 0, \"datatable-progress\", 2);\n i0.ɵɵelementStart(1, \"datatable-selection\", 3, 0);\n i0.ɵɵlistener(\"select\", function DataTableBodyComponent_Template_datatable_selection_select_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.select.emit($event));\n })(\"activate\", function DataTableBodyComponent_Template_datatable_selection_activate_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.activate.emit($event));\n });\n i0.ɵɵtemplate(3, DataTableBodyComponent_datatable_scroller_3_Template, 4, 8, \"datatable-scroller\", 4)(4, DataTableBodyComponent_div_4_Template, 1, 1, \"div\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.loadingIndicator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"selected\", ctx.selected)(\"rows\", ctx.rows)(\"selectCheck\", ctx.selectCheck)(\"selectEnabled\", ctx.selectEnabled)(\"selectionType\", ctx.selectionType)(\"rowIdentity\", ctx.rowIdentity);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.rows == null ? null : ctx.rows.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(ctx.rows == null ? null : ctx.rows.length) && !ctx.loadingIndicator);\n }\n },\n dependencies: [ProgressBarComponent, DataTableSelectionComponent, ScrollerComponent, DataTableSummaryRowComponent, DataTableRowWrapperComponent, DataTableBodyRowComponent, i1.NgIf, i1.NgForOf, i1.NgStyle],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableBodyComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-body',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-body'\n }\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }];\n }, {\n scrollbarV: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n loadingIndicator: [{\n type: Input\n }],\n externalPaging: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n emptyMessage: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n rowIdentity: [{\n type: Input\n }],\n rowDetail: [{\n type: Input\n }],\n groupHeader: [{\n type: Input\n }],\n selectCheck: [{\n type: Input\n }],\n displayCheck: [{\n type: Input\n }],\n trackByProp: [{\n type: Input\n }],\n rowClass: [{\n type: Input\n }],\n groupedRows: [{\n type: Input\n }],\n groupExpansionDefault: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }],\n groupRowsBy: [{\n type: Input\n }],\n virtualization: [{\n type: Input\n }],\n summaryRow: [{\n type: Input\n }],\n summaryPosition: [{\n type: Input\n }],\n summaryHeight: [{\n type: Input\n }],\n pageSize: [{\n type: Input\n }],\n rows: [{\n type: Input\n }],\n columns: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n rowCount: [{\n type: Input\n }],\n bodyWidth: [{\n type: HostBinding,\n args: ['style.width']\n }],\n bodyHeight: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }],\n scroll: [{\n type: Output\n }],\n page: [{\n type: Output\n }],\n activate: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n detailToggle: [{\n type: Output\n }],\n rowContextmenu: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n scroller: [{\n type: ViewChild,\n args: [ScrollerComponent]\n }]\n });\n})();\n\n/**\n * Gets the next sort direction\n */\nfunction nextSortDir(sortType, current) {\n if (sortType === SortType.single) {\n if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else {\n return SortDirection.asc;\n }\n } else {\n if (!current) {\n return SortDirection.asc;\n } else if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else if (current === SortDirection.desc) {\n return undefined;\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n}\n/**\n * Adapted from fueld-ui on 6/216\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n */\nfunction orderByComparator(a, b) {\n if (a === null || typeof a === 'undefined') a = 0;\n if (b === null || typeof b === 'undefined') b = 0;\n if (a instanceof Date && b instanceof Date) {\n if (a < b) return -1;\n if (a > b) return 1;\n } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\n // Convert to string in case of a=0 or b=0\n a = String(a);\n b = String(b);\n // Isn't a number so lowercase the string to properly compare\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n } else {\n // Parse strings as numbers to compare properly\n if (parseFloat(a) < parseFloat(b)) return -1;\n if (parseFloat(a) > parseFloat(b)) return 1;\n }\n // equal each other\n return 0;\n}\n/**\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\n * does not sort the `rows` argument in place\n */\nfunction sortRows(rows, columns, dirs) {\n if (!rows) return [];\n if (!dirs || !dirs.length || !columns) return [...rows];\n /**\n * record the row ordering of results from prior sort operations (if applicable)\n * this is necessary to guarantee stable sorting behavior\n */\n const rowToIndexMap = new Map();\n rows.forEach((row, index) => rowToIndexMap.set(row, index));\n const temp = [...rows];\n const cols = columns.reduce((obj, col) => {\n if (col.comparator && typeof col.comparator === 'function') {\n obj[col.prop] = col.comparator;\n }\n return obj;\n }, {});\n // cache valueGetter and compareFn so that they\n // do not need to be looked-up in the sort function body\n const cachedDirs = dirs.map(dir => {\n const prop = dir.prop;\n return {\n prop,\n dir: dir.dir,\n valueGetter: getterForProp(prop),\n compareFn: cols[prop] || orderByComparator\n };\n });\n return temp.sort(function (rowA, rowB) {\n for (const cachedDir of cachedDirs) {\n // Get property and valuegetters for column to be sorted\n const {\n prop,\n valueGetter\n } = cachedDir;\n // Get A and B cell values from rows based on properties of the columns\n const propA = valueGetter(rowA, prop);\n const propB = valueGetter(rowB, prop);\n // Compare function gets five parameters:\n // Two cell values to be compared as propA and propB\n // Two rows corresponding to the cells as rowA and rowB\n // Direction of the sort for this column as SortDirection\n // Compare can be a standard JS comparison function (a,b) => -1|0|1\n // as additional parameters are silently ignored. The whole row and sort\n // direction enable more complex sort logic.\n const comparison = cachedDir.dir !== SortDirection.desc ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir) : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);\n // Don't return 0 yet in case of needing to sort by next property\n if (comparison !== 0) return comparison;\n }\n if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0;\n /**\n * all else being equal, preserve original order of the rows (stable sort)\n */\n return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1;\n });\n}\nclass DataTableHeaderCellComponent {\n constructor(cd) {\n this.cd = cd;\n this.sort = new EventEmitter();\n this.select = new EventEmitter();\n this.columnContextmenu = new EventEmitter(false);\n this.sortFn = this.onSort.bind(this);\n this.selectFn = this.select.emit.bind(this.select);\n this.cellContext = {\n column: this.column,\n sortDir: this.sortDir,\n sortFn: this.sortFn,\n allRowsSelected: this.allRowsSelected,\n selectFn: this.selectFn\n };\n }\n set allRowsSelected(value) {\n this._allRowsSelected = value;\n this.cellContext.allRowsSelected = value;\n }\n get allRowsSelected() {\n return this._allRowsSelected;\n }\n set column(column) {\n this._column = column;\n this.cellContext.column = column;\n this.cd.markForCheck();\n }\n get column() {\n return this._column;\n }\n set sorts(val) {\n this._sorts = val;\n this.sortDir = this.calcSortDir(val);\n this.cellContext.sortDir = this.sortDir;\n this.sortClass = this.calcSortClass(this.sortDir);\n this.cd.markForCheck();\n }\n get sorts() {\n return this._sorts;\n }\n get columnCssClasses() {\n let cls = 'datatable-header-cell';\n if (this.column.sortable) cls += ' sortable';\n if (this.column.resizeable) cls += ' resizeable';\n if (this.column.headerClass) {\n if (typeof this.column.headerClass === 'string') {\n cls += ' ' + this.column.headerClass;\n } else if (typeof this.column.headerClass === 'function') {\n const res = this.column.headerClass({\n column: this.column\n });\n if (typeof res === 'string') {\n cls += res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) cls += ` ${k}`;\n }\n }\n }\n }\n const sortDir = this.sortDir;\n if (sortDir) {\n cls += ` sort-active sort-${sortDir}`;\n }\n return cls;\n }\n get name() {\n // guaranteed to have a value by setColumnDefaults() in column-helper.ts\n return this.column.headerTemplate === undefined ? this.column.name : undefined;\n }\n get minWidth() {\n return this.column.minWidth;\n }\n get maxWidth() {\n return this.column.maxWidth;\n }\n get width() {\n return this.column.width;\n }\n get isCheckboxable() {\n return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox;\n }\n onContextmenu($event) {\n this.columnContextmenu.emit({\n event: $event,\n column: this.column\n });\n }\n ngOnInit() {\n this.sortClass = this.calcSortClass(this.sortDir);\n }\n calcSortDir(sorts) {\n if (sorts && this.column) {\n const sort = sorts.find(s => {\n return s.prop === this.column.prop;\n });\n if (sort) return sort.dir;\n }\n }\n onSort() {\n if (!this.column.sortable) return;\n const newValue = nextSortDir(this.sortType, this.sortDir);\n this.sort.emit({\n column: this.column,\n prevValue: this.sortDir,\n newValue\n });\n }\n calcSortClass(sortDir) {\n if (!this.cellContext.column.sortable) return;\n if (sortDir === SortDirection.asc) {\n return `sort-btn sort-asc ${this.sortAscendingIcon}`;\n } else if (sortDir === SortDirection.desc) {\n return `sort-btn sort-desc ${this.sortDescendingIcon}`;\n } else {\n return `sort-btn ${this.sortUnsetIcon}`;\n }\n }\n}\nDataTableHeaderCellComponent.ɵfac = function DataTableHeaderCellComponent_Factory(t) {\n return new (t || DataTableHeaderCellComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableHeaderCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableHeaderCellComponent,\n selectors: [[\"datatable-header-cell\"]],\n hostAttrs: [1, \"datatable-header-cell\"],\n hostVars: 11,\n hostBindings: function DataTableHeaderCellComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"contextmenu\", function DataTableHeaderCellComponent_contextmenu_HostBindingHandler($event) {\n return ctx.onContextmenu($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"title\", ctx.name);\n i0.ɵɵclassMap(ctx.columnCssClasses);\n i0.ɵɵstyleProp(\"height\", ctx.headerHeight, \"px\")(\"min-width\", ctx.minWidth, \"px\")(\"max-width\", ctx.maxWidth, \"px\")(\"width\", ctx.width, \"px\");\n }\n },\n inputs: {\n sortType: \"sortType\",\n sortAscendingIcon: \"sortAscendingIcon\",\n sortDescendingIcon: \"sortDescendingIcon\",\n sortUnsetIcon: \"sortUnsetIcon\",\n isTarget: \"isTarget\",\n targetMarkerTemplate: \"targetMarkerTemplate\",\n targetMarkerContext: \"targetMarkerContext\",\n allRowsSelected: \"allRowsSelected\",\n selectionType: \"selectionType\",\n column: \"column\",\n headerHeight: \"headerHeight\",\n sorts: \"sorts\"\n },\n outputs: {\n sort: \"sort\",\n select: \"select\",\n columnContextmenu: \"columnContextmenu\"\n },\n decls: 6,\n vars: 6,\n consts: [[1, \"datatable-header-cell-template-wrap\"], [4, \"ngIf\"], [\"class\", \"datatable-checkbox\", 4, \"ngIf\"], [\"class\", \"datatable-header-cell-wrapper\", 4, \"ngIf\"], [3, \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"datatable-checkbox\"], [\"type\", \"checkbox\", 3, \"change\", \"checked\"], [1, \"datatable-header-cell-wrapper\"], [1, \"datatable-header-cell-label\", \"draggable\", 3, \"click\", \"innerHTML\"]],\n template: function DataTableHeaderCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, DataTableHeaderCellComponent_1_Template, 1, 2, null, 1)(2, DataTableHeaderCellComponent_label_2_Template, 2, 1, \"label\", 2)(3, DataTableHeaderCellComponent_span_3_Template, 2, 1, \"span\", 3)(4, DataTableHeaderCellComponent_4_Template, 1, 2, null, 1);\n i0.ɵɵelementStart(5, \"span\", 4);\n i0.ɵɵlistener(\"click\", function DataTableHeaderCellComponent_Template_span_click_5_listener() {\n return ctx.onSort();\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.isTarget);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.isCheckboxable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.column.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵclassMap(ctx.sortClass);\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableHeaderCellComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-header-cell',\n template: `\n
\n \n \n \n \n \n \n \n \n \n
\n `,\n host: {\n class: 'datatable-header-cell'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }];\n }, {\n sortType: [{\n type: Input\n }],\n sortAscendingIcon: [{\n type: Input\n }],\n sortDescendingIcon: [{\n type: Input\n }],\n sortUnsetIcon: [{\n type: Input\n }],\n isTarget: [{\n type: Input\n }],\n targetMarkerTemplate: [{\n type: Input\n }],\n targetMarkerContext: [{\n type: Input\n }],\n allRowsSelected: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n column: [{\n type: Input\n }],\n headerHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n sort: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n columnContextmenu: [{\n type: Output\n }],\n columnCssClasses: [{\n type: HostBinding,\n args: ['class']\n }],\n name: [{\n type: HostBinding,\n args: ['attr.title']\n }],\n minWidth: [{\n type: HostBinding,\n args: ['style.minWidth.px']\n }],\n maxWidth: [{\n type: HostBinding,\n args: ['style.maxWidth.px']\n }],\n width: [{\n type: HostBinding,\n args: ['style.width.px']\n }],\n onContextmenu: [{\n type: HostListener,\n args: ['contextmenu', ['$event']]\n }]\n });\n})();\nclass DataTableHeaderComponent {\n constructor(cd) {\n this.cd = cd;\n this.sort = new EventEmitter();\n this.reorder = new EventEmitter();\n this.resize = new EventEmitter();\n this.select = new EventEmitter();\n this.columnContextmenu = new EventEmitter(false);\n this._columnGroupWidths = {\n total: 100\n };\n this._styleByGroup = {\n left: {},\n center: {},\n right: {}\n };\n this.destroyed = false;\n }\n set innerWidth(val) {\n this._innerWidth = val;\n setTimeout(() => {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n this.setStylesByGroup();\n }\n });\n }\n get innerWidth() {\n return this._innerWidth;\n }\n set headerHeight(val) {\n if (val !== 'auto') {\n this._headerHeight = `${val}px`;\n } else {\n this._headerHeight = val;\n }\n }\n get headerHeight() {\n return this._headerHeight;\n }\n set columns(val) {\n this._columns = val;\n const colsByPin = columnsByPin(val);\n this._columnsByPin = columnsByPinArr(val);\n setTimeout(() => {\n this._columnGroupWidths = columnGroupWidths(colsByPin, val);\n this.setStylesByGroup();\n });\n }\n get columns() {\n return this._columns;\n }\n set offsetX(val) {\n this._offsetX = val;\n this.setStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n ngOnDestroy() {\n this.destroyed = true;\n }\n onLongPressStart({\n event,\n model\n }) {\n model.dragging = true;\n this.dragEventTarget = event;\n }\n onLongPressEnd({\n event,\n model\n }) {\n this.dragEventTarget = event;\n // delay resetting so sort can be\n // prevented if we were dragging\n setTimeout(() => {\n // datatable component creates copies from columns on reorder\n // set dragging to false on new objects\n const column = this._columns.find(c => c.$$id === model.$$id);\n if (column) {\n column.dragging = false;\n }\n }, 5);\n }\n get headerWidth() {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n }\n return '100%';\n }\n trackByGroups(index, colGroup) {\n return colGroup.type;\n }\n columnTrackingFn(index, column) {\n return column.$$id;\n }\n onColumnResized(width, column) {\n if (width <= column.minWidth) {\n width = column.minWidth;\n } else if (width >= column.maxWidth) {\n width = column.maxWidth;\n }\n this.resize.emit({\n column,\n prevValue: column.width,\n newValue: width\n });\n }\n onColumnReordered({\n prevIndex,\n newIndex,\n model\n }) {\n const column = this.getColumn(newIndex);\n column.isTarget = false;\n column.targetMarkerContext = undefined;\n this.reorder.emit({\n column: model,\n prevValue: prevIndex,\n newValue: newIndex\n });\n }\n onTargetChanged({\n prevIndex,\n newIndex,\n initialIndex\n }) {\n if (prevIndex || prevIndex === 0) {\n const oldColumn = this.getColumn(prevIndex);\n oldColumn.isTarget = false;\n oldColumn.targetMarkerContext = undefined;\n }\n if (newIndex || newIndex === 0) {\n const newColumn = this.getColumn(newIndex);\n newColumn.isTarget = true;\n if (initialIndex !== newIndex) {\n newColumn.targetMarkerContext = {\n class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\n };\n }\n }\n }\n getColumn(index) {\n const leftColumnCount = this._columnsByPin[0].columns.length;\n if (index < leftColumnCount) {\n return this._columnsByPin[0].columns[index];\n }\n const centerColumnCount = this._columnsByPin[1].columns.length;\n if (index < leftColumnCount + centerColumnCount) {\n return this._columnsByPin[1].columns[index - leftColumnCount];\n }\n return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\n }\n onSort({\n column,\n prevValue,\n newValue\n }) {\n // if we are dragging don't sort!\n if (column.dragging) {\n return;\n }\n const sorts = this.calcNewSorts(column, prevValue, newValue);\n this.sort.emit({\n sorts,\n column,\n prevValue,\n newValue\n });\n }\n calcNewSorts(column, prevValue, newValue) {\n let idx = 0;\n if (!this.sorts) {\n this.sorts = [];\n }\n const sorts = this.sorts.map((s, i) => {\n s = {\n ...s\n };\n if (s.prop === column.prop) {\n idx = i;\n }\n return s;\n });\n if (newValue === undefined) {\n sorts.splice(idx, 1);\n } else if (prevValue) {\n sorts[idx].dir = newValue;\n } else {\n if (this.sortType === SortType.single) {\n sorts.splice(0, this.sorts.length);\n }\n sorts.push({\n dir: newValue,\n prop: column.prop\n });\n }\n return sorts;\n }\n setStylesByGroup() {\n this._styleByGroup.left = this.calcStylesByGroup('left');\n this._styleByGroup.center = this.calcStylesByGroup('center');\n this._styleByGroup.right = this.calcStylesByGroup('right');\n if (!this.destroyed) {\n this.cd.detectChanges();\n }\n }\n calcStylesByGroup(group) {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n const styles = {\n width: `${widths[group]}px`\n };\n if (group === 'center') {\n translateXY(styles, offsetX * -1, 0);\n } else if (group === 'right') {\n const totalDiff = widths.total - this.innerWidth;\n const offset = totalDiff * -1;\n translateXY(styles, offset, 0);\n }\n return styles;\n }\n}\nDataTableHeaderComponent.ɵfac = function DataTableHeaderComponent_Factory(t) {\n return new (t || DataTableHeaderComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableHeaderComponent,\n selectors: [[\"datatable-header\"]],\n hostAttrs: [1, \"datatable-header\"],\n hostVars: 4,\n hostBindings: function DataTableHeaderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"height\", ctx.headerHeight)(\"width\", ctx.headerWidth);\n }\n },\n inputs: {\n sortAscendingIcon: \"sortAscendingIcon\",\n sortDescendingIcon: \"sortDescendingIcon\",\n sortUnsetIcon: \"sortUnsetIcon\",\n scrollbarH: \"scrollbarH\",\n dealsWithGroup: \"dealsWithGroup\",\n targetMarkerTemplate: \"targetMarkerTemplate\",\n innerWidth: \"innerWidth\",\n sorts: \"sorts\",\n sortType: \"sortType\",\n allRowsSelected: \"allRowsSelected\",\n selectionType: \"selectionType\",\n reorderable: \"reorderable\",\n headerHeight: \"headerHeight\",\n columns: \"columns\",\n offsetX: \"offsetX\"\n },\n outputs: {\n sort: \"sort\",\n reorder: \"reorder\",\n resize: \"resize\",\n select: \"select\",\n columnContextmenu: \"columnContextmenu\"\n },\n decls: 2,\n vars: 4,\n consts: [[\"role\", \"row\", \"orderable\", \"\", 1, \"datatable-header-inner\", 3, \"reorder\", \"targetChanged\"], [3, \"class\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"ngStyle\"], [\"role\", \"columnheader\", \"resizeable\", \"\", \"long-press\", \"\", \"draggable\", \"\", 3, \"resizeEnabled\", \"pressModel\", \"pressEnabled\", \"dragX\", \"dragY\", \"dragModel\", \"dragEventTarget\", \"headerHeight\", \"isTarget\", \"targetMarkerTemplate\", \"targetMarkerContext\", \"column\", \"sortType\", \"sorts\", \"selectionType\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\", \"resize\", \"longPressStart\", \"longPressEnd\", \"sort\", \"select\", \"columnContextmenu\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"columnheader\", \"resizeable\", \"\", \"long-press\", \"\", \"draggable\", \"\", 3, \"resize\", \"longPressStart\", \"longPressEnd\", \"sort\", \"select\", \"columnContextmenu\", \"resizeEnabled\", \"pressModel\", \"pressEnabled\", \"dragX\", \"dragY\", \"dragModel\", \"dragEventTarget\", \"headerHeight\", \"isTarget\", \"targetMarkerTemplate\", \"targetMarkerContext\", \"column\", \"sortType\", \"sorts\", \"selectionType\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\"]],\n template: function DataTableHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"reorder\", function DataTableHeaderComponent_Template_div_reorder_0_listener($event) {\n return ctx.onColumnReordered($event);\n })(\"targetChanged\", function DataTableHeaderComponent_Template_div_targetChanged_0_listener($event) {\n return ctx.onTargetChanged($event);\n });\n i0.ɵɵtemplate(1, DataTableHeaderComponent_div_1_Template, 2, 5, \"div\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"width\", ctx._columnGroupWidths.total, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx._columnsByPin)(\"ngForTrackBy\", ctx.trackByGroups);\n }\n },\n dependencies: [DataTableHeaderCellComponent, OrderableDirective, i1.NgForOf, i1.NgStyle, ResizeableDirective, LongPressDirective, DraggableDirective],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-header',\n template: `\n \n \n \n \n \n \n `,\n host: {\n class: 'datatable-header'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }];\n }, {\n sortAscendingIcon: [{\n type: Input\n }],\n sortDescendingIcon: [{\n type: Input\n }],\n sortUnsetIcon: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n dealsWithGroup: [{\n type: Input\n }],\n targetMarkerTemplate: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n sortType: [{\n type: Input\n }],\n allRowsSelected: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n reorderable: [{\n type: Input\n }],\n headerHeight: [{\n type: HostBinding,\n args: ['style.height']\n }, {\n type: Input\n }],\n columns: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n sort: [{\n type: Output\n }],\n reorder: [{\n type: Output\n }],\n resize: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n columnContextmenu: [{\n type: Output\n }],\n headerWidth: [{\n type: HostBinding,\n args: ['style.width']\n }]\n });\n})();\n\n/**\n * Throttle a function\n */\nfunction throttle(func, wait, options) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n return function () {\n const now = +new Date();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nfunction throttleable(duration, options) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n return this[key];\n }\n };\n };\n}\n\n/**\n * Calculates the Total Flex Grow\n */\nfunction getTotalFlexGrow(columns) {\n let totalFlexGrow = 0;\n for (const c of columns) {\n totalFlexGrow += c.flexGrow || 0;\n }\n return totalFlexGrow;\n}\n/**\n * Adjusts the column widths.\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\n */\nfunction adjustColumnWidths(allColumns, expectedWidth) {\n const columnsWidth = columnsTotalWidth(allColumns);\n const totalFlexGrow = getTotalFlexGrow(allColumns);\n const colsByGroup = columnsByPin(allColumns);\n if (columnsWidth !== expectedWidth) {\n scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\n }\n}\n/**\n * Resizes columns based on the flexGrow property, while respecting manually set widths\n */\nfunction scaleColumns(colsByGroup, maxWidth, totalFlexGrow) {\n // calculate total width and flexgrow points for coulumns that can be resized\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n if (!column.canAutoResize) {\n maxWidth -= column.width;\n totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;\n } else {\n column.width = 0;\n }\n }\n }\n const hasMinWidth = {};\n let remainingWidth = maxWidth;\n // resize columns until no width is left to be distributed\n do {\n const widthPerFlexPoint = remainingWidth / totalFlexGrow;\n remainingWidth = 0;\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n // if the column can be resize and it hasn't reached its minimum width yet\n if (column.canAutoResize && !hasMinWidth[column.prop]) {\n const newWidth = column.width + column.flexGrow * widthPerFlexPoint;\n if (column.minWidth !== undefined && newWidth < column.minWidth) {\n remainingWidth += newWidth - column.minWidth;\n column.width = column.minWidth;\n hasMinWidth[column.prop] = true;\n } else {\n column.width = newWidth;\n }\n }\n }\n }\n } while (remainingWidth !== 0);\n}\n/**\n * Forces the width of the columns to\n * distribute equally but overflowing when necessary\n *\n * Rules:\n *\n * - If combined withs are less than the total width of the grid,\n * proportion the widths given the min / max / normal widths to fill the width.\n *\n * - If the combined widths, exceed the total width of the grid,\n * use the standard widths.\n *\n * - If a column is resized, it should always use that width\n *\n * - The proportional widths should never fall below min size if specified.\n *\n * - If the grid starts off small but then becomes greater than the size ( + / - )\n * the width should use the original width; not the newly proportioned widths.\n */\nfunction forceFillColumnWidths(allColumns, expectedWidth, startIdx, allowBleed, defaultColWidth = 300) {\n const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter(c => {\n return c.canAutoResize !== false;\n });\n for (const column of columnsToResize) {\n if (!column.$$oldWidth) {\n column.$$oldWidth = column.width;\n }\n }\n let additionWidthPerColumn = 0;\n let exceedsWindow = false;\n let contentWidth = getContentWidth(allColumns, defaultColWidth);\n let remainingWidth = expectedWidth - contentWidth;\n const columnsProcessed = [];\n const remainingWidthLimit = 1; // when to stop\n // This loop takes care of the\n do {\n additionWidthPerColumn = remainingWidth / columnsToResize.length;\n exceedsWindow = contentWidth >= expectedWidth;\n for (const column of columnsToResize) {\n if (exceedsWindow && allowBleed) {\n column.width = column.$$oldWidth || column.width || defaultColWidth;\n } else {\n const newSize = (column.width || defaultColWidth) + additionWidthPerColumn;\n if (column.minWidth && newSize < column.minWidth) {\n column.width = column.minWidth;\n columnsProcessed.push(column);\n } else if (column.maxWidth && newSize > column.maxWidth) {\n column.width = column.maxWidth;\n columnsProcessed.push(column);\n } else {\n column.width = newSize;\n }\n }\n column.width = Math.max(0, column.width);\n }\n contentWidth = getContentWidth(allColumns);\n remainingWidth = expectedWidth - contentWidth;\n removeProcessedColumns(columnsToResize, columnsProcessed);\n } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\n}\n/**\n * Remove the processed columns from the current active columns.\n */\nfunction removeProcessedColumns(columnsToResize, columnsProcessed) {\n for (const column of columnsProcessed) {\n const index = columnsToResize.indexOf(column);\n columnsToResize.splice(index, 1);\n }\n}\n/**\n * Gets the width of the columns\n */\nfunction getContentWidth(allColumns, defaultColWidth = 300) {\n let contentWidth = 0;\n for (const column of allColumns) {\n contentWidth += column.width || defaultColWidth;\n }\n return contentWidth;\n}\nclass DataTablePagerComponent {\n constructor() {\n this.change = new EventEmitter();\n this._count = 0;\n this._page = 1;\n this._size = 0;\n }\n set size(val) {\n this._size = val;\n this.pages = this.calcPages();\n }\n get size() {\n return this._size;\n }\n set count(val) {\n this._count = val;\n this.pages = this.calcPages();\n }\n get count() {\n return this._count;\n }\n set page(val) {\n this._page = val;\n this.pages = this.calcPages();\n }\n get page() {\n return this._page;\n }\n get totalPages() {\n const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);\n return Math.max(count || 0, 1);\n }\n canPrevious() {\n return this.page > 1;\n }\n canNext() {\n return this.page < this.totalPages;\n }\n prevPage() {\n this.selectPage(this.page - 1);\n }\n nextPage() {\n this.selectPage(this.page + 1);\n }\n selectPage(page) {\n if (page > 0 && page <= this.totalPages && page !== this.page) {\n this.page = page;\n this.change.emit({\n page\n });\n }\n }\n calcPages(page) {\n const pages = [];\n let startPage = 1;\n let endPage = this.totalPages;\n const maxSize = 5;\n const isMaxSized = maxSize < this.totalPages;\n page = page || this.page;\n if (isMaxSized) {\n startPage = page - Math.floor(maxSize / 2);\n endPage = page + Math.floor(maxSize / 2);\n if (startPage < 1) {\n startPage = 1;\n endPage = Math.min(startPage + maxSize - 1, this.totalPages);\n } else if (endPage > this.totalPages) {\n startPage = Math.max(this.totalPages - maxSize + 1, 1);\n endPage = this.totalPages;\n }\n }\n for (let num = startPage; num <= endPage; num++) {\n pages.push({\n number: num,\n text: num\n });\n }\n return pages;\n }\n}\nDataTablePagerComponent.ɵfac = function DataTablePagerComponent_Factory(t) {\n return new (t || DataTablePagerComponent)();\n};\nDataTablePagerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTablePagerComponent,\n selectors: [[\"datatable-pager\"]],\n hostAttrs: [1, \"datatable-pager\"],\n inputs: {\n pagerLeftArrowIcon: \"pagerLeftArrowIcon\",\n pagerRightArrowIcon: \"pagerRightArrowIcon\",\n pagerPreviousIcon: \"pagerPreviousIcon\",\n pagerNextIcon: \"pagerNextIcon\",\n size: \"size\",\n count: \"count\",\n page: \"page\"\n },\n outputs: {\n change: \"change\"\n },\n decls: 14,\n vars: 21,\n consts: [[1, \"pager\"], [\"role\", \"button\", \"aria-label\", \"go to first page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", \"aria-label\", \"go to previous page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", \"class\", \"pages\", 3, \"active\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"button\", \"aria-label\", \"go to next page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", \"aria-label\", \"go to last page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", 1, \"pages\"], [\"href\", \"javascript:void(0)\", 3, \"click\"]],\n template: function DataTablePagerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\", 0)(1, \"li\")(2, \"a\", 1);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_2_listener() {\n return ctx.selectPage(1);\n });\n i0.ɵɵelement(3, \"i\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"li\")(5, \"a\", 2);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_5_listener() {\n return ctx.prevPage();\n });\n i0.ɵɵelement(6, \"i\");\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(7, DataTablePagerComponent_li_7_Template, 3, 4, \"li\", 3);\n i0.ɵɵelementStart(8, \"li\")(9, \"a\", 4);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_9_listener() {\n return ctx.nextPage();\n });\n i0.ɵɵelement(10, \"i\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(11, \"li\")(12, \"a\", 5);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_12_listener() {\n return ctx.selectPage(ctx.totalPages);\n });\n i0.ɵɵelement(13, \"i\");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canPrevious());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerPreviousIcon);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canPrevious());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerLeftArrowIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.pages);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canNext());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerRightArrowIcon);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canNext());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerNextIcon);\n }\n },\n dependencies: [i1.NgForOf],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTablePagerComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-pager',\n template: `\n \n `,\n host: {\n class: 'datatable-pager'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, {\n pagerLeftArrowIcon: [{\n type: Input\n }],\n pagerRightArrowIcon: [{\n type: Input\n }],\n pagerPreviousIcon: [{\n type: Input\n }],\n pagerNextIcon: [{\n type: Input\n }],\n size: [{\n type: Input\n }],\n count: [{\n type: Input\n }],\n page: [{\n type: Input\n }],\n change: [{\n type: Output\n }]\n });\n})();\nclass DataTableFooterComponent {\n constructor() {\n this.selectedCount = 0;\n this.page = new EventEmitter();\n }\n get isVisible() {\n return this.rowCount / this.pageSize > 1;\n }\n get curPage() {\n return this.offset + 1;\n }\n}\nDataTableFooterComponent.ɵfac = function DataTableFooterComponent_Factory(t) {\n return new (t || DataTableFooterComponent)();\n};\nDataTableFooterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableFooterComponent,\n selectors: [[\"datatable-footer\"]],\n hostAttrs: [1, \"datatable-footer\"],\n inputs: {\n footerHeight: \"footerHeight\",\n rowCount: \"rowCount\",\n pageSize: \"pageSize\",\n offset: \"offset\",\n pagerLeftArrowIcon: \"pagerLeftArrowIcon\",\n pagerRightArrowIcon: \"pagerRightArrowIcon\",\n pagerPreviousIcon: \"pagerPreviousIcon\",\n pagerNextIcon: \"pagerNextIcon\",\n totalMessage: \"totalMessage\",\n footerTemplate: \"footerTemplate\",\n selectedCount: \"selectedCount\",\n selectedMessage: \"selectedMessage\"\n },\n outputs: {\n page: \"page\"\n },\n decls: 4,\n vars: 8,\n consts: [[1, \"datatable-footer-inner\", 3, \"ngClass\"], [4, \"ngIf\"], [\"class\", \"page-count\", 4, \"ngIf\"], [3, \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"pagerNextIcon\", \"page\", \"size\", \"count\", \"hidden\", \"change\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"page-count\"], [3, \"change\", \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"pagerNextIcon\", \"page\", \"size\", \"count\", \"hidden\"]],\n template: function DataTableFooterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, DataTableFooterComponent_1_Template, 1, 8, null, 1)(2, DataTableFooterComponent_div_2_Template, 3, 3, \"div\", 2)(3, DataTableFooterComponent_datatable_pager_3_Template, 1, 8, \"datatable-pager\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"height\", ctx.footerHeight, \"px\");\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(6, _c3, ctx.selectedMessage));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.footerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.footerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.footerTemplate);\n }\n },\n dependencies: [DataTablePagerComponent, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableFooterComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-footer',\n template: `\n \n \n \n
\n {{ selectedCount?.toLocaleString() }} {{ selectedMessage }} / \n {{ rowCount?.toLocaleString() }} {{ totalMessage }}\n
\n \n \n \n `,\n host: {\n class: 'datatable-footer'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, {\n footerHeight: [{\n type: Input\n }],\n rowCount: [{\n type: Input\n }],\n pageSize: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n pagerLeftArrowIcon: [{\n type: Input\n }],\n pagerRightArrowIcon: [{\n type: Input\n }],\n pagerPreviousIcon: [{\n type: Input\n }],\n pagerNextIcon: [{\n type: Input\n }],\n totalMessage: [{\n type: Input\n }],\n footerTemplate: [{\n type: Input\n }],\n selectedCount: [{\n type: Input\n }],\n selectedMessage: [{\n type: Input\n }],\n page: [{\n type: Output\n }]\n });\n})();\nclass DatatableComponent {\n constructor(scrollbarHelper, dimensionsHelper, cd, element, differs, columnChangesService, configuration) {\n this.scrollbarHelper = scrollbarHelper;\n this.dimensionsHelper = dimensionsHelper;\n this.cd = cd;\n this.columnChangesService = columnChangesService;\n this.configuration = configuration;\n /**\n * List of row objects that should be\n * represented as selected in the grid.\n * Default value: `[]`\n */\n this.selected = [];\n /**\n * Enable vertical scrollbars\n */\n this.scrollbarV = false;\n /**\n * Enable horz scrollbars\n */\n this.scrollbarH = false;\n /**\n * The row height; which is necessary\n * to calculate the height for the lazy rendering.\n */\n this.rowHeight = 30;\n /**\n * Type of column width distribution formula.\n * Example: flex, force, standard\n */\n this.columnMode = ColumnMode.standard;\n /**\n * The minimum header height in pixels.\n * Pass a falsey for no header\n */\n this.headerHeight = 30;\n /**\n * The minimum footer height in pixels.\n * Pass falsey for no footer\n */\n this.footerHeight = 0;\n /**\n * If the table should use external paging\n * otherwise its assumed that all data is preloaded.\n */\n this.externalPaging = false;\n /**\n * If the table should use external sorting or\n * the built-in basic sorting.\n */\n this.externalSorting = false;\n /**\n * Show the linear loading bar.\n * Default value: `false`\n */\n this.loadingIndicator = false;\n /**\n * Enable/Disable ability to re-order columns\n * by dragging them.\n */\n this.reorderable = true;\n /**\n * Swap columns on re-order columns or\n * move them.\n */\n this.swapColumns = true;\n /**\n * The type of sorting\n */\n this.sortType = SortType.single;\n /**\n * Array of sorted columns by property and type.\n * Default value: `[]`\n */\n this.sorts = [];\n /**\n * Css class overrides\n */\n this.cssClasses = {\n sortAscending: 'datatable-icon-up',\n sortDescending: 'datatable-icon-down',\n sortUnset: 'datatable-icon-sort-unset',\n pagerLeftArrow: 'datatable-icon-left',\n pagerRightArrow: 'datatable-icon-right',\n pagerPrevious: 'datatable-icon-prev',\n pagerNext: 'datatable-icon-skip'\n };\n /**\n * Message overrides for localization\n *\n * emptyMessage [default] = 'No data to display'\n * totalMessage [default] = 'total'\n * selectedMessage [default] = 'selected'\n */\n this.messages = {\n // Message to show when array is presented\n // but contains no values\n emptyMessage: 'No data to display',\n // Footer total message\n totalMessage: 'total',\n // Footer selected message\n selectedMessage: 'selected'\n };\n /**\n * A boolean you can use to set the detault behaviour of rows and groups\n * whether they will start expanded or not. If ommited the default is NOT expanded.\n *\n */\n this.groupExpansionDefault = false;\n /**\n * Property to which you can use for determining select all\n * rows on current page or not.\n *\n * @memberOf DatatableComponent\n */\n this.selectAllRowsOnPage = false;\n /**\n * A flag for row virtualization on / off\n */\n this.virtualization = true;\n /**\n * A flag for switching summary row on / off\n */\n this.summaryRow = false;\n /**\n * A height of summary row\n */\n this.summaryHeight = 30;\n /**\n * A property holds a summary row position: top/bottom\n */\n this.summaryPosition = 'top';\n /**\n * Body was scrolled typically in a `scrollbarV:true` scenario.\n */\n this.scroll = new EventEmitter();\n /**\n * A cell or row was focused via keyboard or mouse click.\n */\n this.activate = new EventEmitter();\n /**\n * A cell or row was selected.\n */\n this.select = new EventEmitter();\n /**\n * Column sort was invoked.\n */\n this.sort = new EventEmitter();\n /**\n * The table was paged either triggered by the pager or the body scroll.\n */\n this.page = new EventEmitter();\n /**\n * Columns were re-ordered.\n */\n this.reorder = new EventEmitter();\n /**\n * Column was resized.\n */\n this.resize = new EventEmitter();\n /**\n * The context menu was invoked on the table.\n * type indicates whether the header or the body was clicked.\n * content contains either the column or the row that was clicked.\n */\n this.tableContextmenu = new EventEmitter(false);\n /**\n * A row was expanded ot collapsed for tree\n */\n this.treeAction = new EventEmitter();\n this.rowCount = 0;\n this._offsetX = new BehaviorSubject(0);\n this._count = 0;\n this._offset = 0;\n this._subscriptions = [];\n /**\n * This will be used when displaying or selecting rows.\n * when tracking/comparing them, we'll use the value of this fn,\n *\n * (`fn(x) === fn(y)` instead of `x === y`)\n */\n this.rowIdentity = x => {\n if (this._groupRowsBy) {\n // each group in groupedRows are stored as {key, value: [rows]},\n // where key is the groupRowsBy index\n return x.key;\n } else {\n return x;\n }\n };\n // get ref to elm for measuring\n this.element = element.nativeElement;\n this.rowDiffer = differs.find({}).create();\n // apply global settings from Module.forRoot\n if (this.configuration && this.configuration.messages) {\n this.messages = {\n ...this.configuration.messages\n };\n }\n }\n /**\n * Rows that are displayed in the table.\n */\n set rows(val) {\n this._rows = val;\n if (val) {\n this._internalRows = [...val];\n }\n // auto sort on new updates\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));\n // recalculate sizes/etc\n this.recalculate();\n if (this._rows && this._groupRowsBy) {\n // If a column has been specified in _groupRowsBy created a new array with the data grouped by that row\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n this.cd.markForCheck();\n }\n /**\n * Gets the rows.\n */\n get rows() {\n return this._rows;\n }\n /**\n * This attribute allows the user to set the name of the column to group the data with\n */\n set groupRowsBy(val) {\n if (val) {\n this._groupRowsBy = val;\n if (this._rows && this._groupRowsBy) {\n // cretes a new array with the data grouped\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n }\n }\n get groupRowsBy() {\n return this._groupRowsBy;\n }\n /**\n * Columns to be displayed.\n */\n set columns(val) {\n if (val) {\n this._internalColumns = [...val];\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n }\n this._columns = val;\n }\n /**\n * Get the columns.\n */\n get columns() {\n return this._columns;\n }\n /**\n * The page size to be shown.\n * Default value: `undefined`\n */\n set limit(val) {\n this._limit = val;\n // recalculate sizes/etc\n this.recalculate();\n }\n /**\n * Gets the limit.\n */\n get limit() {\n return this._limit;\n }\n /**\n * The total count of all rows.\n * Default value: `0`\n */\n set count(val) {\n this._count = val;\n // recalculate sizes/etc\n this.recalculate();\n }\n /**\n * Gets the count.\n */\n get count() {\n return this._count;\n }\n /**\n * The current offset ( page - 1 ) shown.\n * Default value: `0`\n */\n set offset(val) {\n this._offset = val;\n }\n get offset() {\n return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0);\n }\n /**\n * CSS class applied if the header height if fixed height.\n */\n get isFixedHeader() {\n const headerHeight = this.headerHeight;\n return typeof headerHeight === 'string' ? headerHeight !== 'auto' : true;\n }\n /**\n * CSS class applied to the root element if\n * the row heights are fixed heights.\n */\n get isFixedRow() {\n return this.rowHeight !== 'auto';\n }\n /**\n * CSS class applied to root element if\n * vertical scrolling is enabled.\n */\n get isVertScroll() {\n return this.scrollbarV;\n }\n /**\n * CSS class applied to root element if\n * virtualization is enabled.\n */\n get isVirtualized() {\n return this.virtualization;\n }\n /**\n * CSS class applied to the root element\n * if the horziontal scrolling is enabled.\n */\n get isHorScroll() {\n return this.scrollbarH;\n }\n /**\n * CSS class applied to root element is selectable.\n */\n get isSelectable() {\n return this.selectionType !== undefined;\n }\n /**\n * CSS class applied to root is checkbox selection.\n */\n get isCheckboxSelection() {\n return this.selectionType === SelectionType.checkbox;\n }\n /**\n * CSS class applied to root if cell selection.\n */\n get isCellSelection() {\n return this.selectionType === SelectionType.cell;\n }\n /**\n * CSS class applied to root if single select.\n */\n get isSingleSelection() {\n return this.selectionType === SelectionType.single;\n }\n /**\n * CSS class added to root element if mulit select\n */\n get isMultiSelection() {\n return this.selectionType === SelectionType.multi;\n }\n /**\n * CSS class added to root element if mulit click select\n */\n get isMultiClickSelection() {\n return this.selectionType === SelectionType.multiClick;\n }\n /**\n * Column templates gathered from `ContentChildren`\n * if described in your markup.\n */\n set columnTemplates(val) {\n this._columnTemplates = val;\n this.translateColumns(val);\n }\n /**\n * Returns the column templates.\n */\n get columnTemplates() {\n return this._columnTemplates;\n }\n /**\n * Returns if all rows are selected.\n */\n get allRowsSelected() {\n let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length;\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n const indexes = this.bodyComponent.indexes;\n const rowsOnPage = indexes.last - indexes.first;\n allRowsSelected = this.selected.length === rowsOnPage;\n }\n return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected;\n }\n /**\n * Lifecycle hook that is called after data-bound\n * properties of a directive are initialized.\n */\n ngOnInit() {\n // need to call this immediatly to size\n // if the table is hidden the visibility\n // listener will invoke this itself upon show\n this.recalculate();\n }\n /**\n * Lifecycle hook that is called after a component's\n * view has been fully initialized.\n */\n ngAfterViewInit() {\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n // this has to be done to prevent the change detection\n // tree from freaking out because we are readjusting\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n requestAnimationFrame(() => {\n this.recalculate();\n // emit page for virtual server-side kickoff\n if (this.externalPaging && this.scrollbarV) {\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: 0\n });\n }\n });\n }\n /**\n * Lifecycle hook that is called after a component's\n * content has been fully initialized.\n */\n ngAfterContentInit() {\n this.columnTemplates.changes.subscribe(v => this.translateColumns(v));\n this.listenForColumnInputChanges();\n }\n /**\n * Translates the templates to the column objects\n */\n translateColumns(val) {\n if (val) {\n const arr = val.toArray();\n if (arr.length) {\n this._internalColumns = translateTemplates(arr);\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n this.sortInternalRows();\n this.cd.markForCheck();\n }\n }\n }\n /**\n * Creates a map with the data grouped by the user choice of grouping index\n *\n * @param originalArray the original array passed via parameter\n * @param groupByIndex the index of the column to group the data by\n */\n groupArrayBy(originalArray, groupBy) {\n // create a map to hold groups with their corresponding results\n const map = new Map();\n let i = 0;\n originalArray.forEach(item => {\n const key = item[groupBy];\n if (!map.has(key)) {\n map.set(key, [item]);\n } else {\n map.get(key).push(item);\n }\n i++;\n });\n const addGroup = (key, value) => {\n return {\n key,\n value\n };\n };\n // convert map back to a simple array of objects\n return Array.from(map, x => addGroup(x[0], x[1]));\n }\n /*\n * Lifecycle hook that is called when Angular dirty checks a directive.\n */\n ngDoCheck() {\n if (this.rowDiffer.diff(this.rows)) {\n if (!this.externalSorting) {\n this.sortInternalRows();\n } else {\n this._internalRows = [...this.rows];\n }\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));\n this.recalculatePages();\n this.cd.markForCheck();\n }\n }\n /**\n * Recalc's the sizes of the grid.\n *\n * Updated automatically on changes to:\n *\n * - Columns\n * - Rows\n * - Paging related\n *\n * Also can be manually invoked or upon window resize.\n */\n recalculate() {\n this.recalculateDims();\n this.recalculateColumns();\n this.cd.markForCheck();\n }\n /**\n * Window resize handler to update sizes.\n */\n onWindowResize() {\n this.recalculate();\n }\n /**\n * Recalulcates the column widths based on column width\n * distribution mode and scrollbar offsets.\n */\n recalculateColumns(columns = this._internalColumns, forceIdx = -1, allowBleed = this.scrollbarH) {\n if (!columns) return undefined;\n let width = this._innerWidth;\n if (this.scrollbarV) {\n width = width - this.scrollbarHelper.width;\n }\n if (this.columnMode === ColumnMode.force) {\n forceFillColumnWidths(columns, width, forceIdx, allowBleed);\n } else if (this.columnMode === ColumnMode.flex) {\n adjustColumnWidths(columns, width);\n }\n return columns;\n }\n /**\n * Recalculates the dimensions of the table size.\n * Internally calls the page size and row count calcs too.\n *\n */\n recalculateDims() {\n const dims = this.dimensionsHelper.getDimensions(this.element);\n this._innerWidth = Math.floor(dims.width);\n if (this.scrollbarV) {\n let height = dims.height;\n if (this.headerHeight) height = height - this.headerHeight;\n if (this.footerHeight) height = height - this.footerHeight;\n this.bodyHeight = height;\n }\n this.recalculatePages();\n }\n /**\n * Recalculates the pages after a update.\n */\n recalculatePages() {\n this.pageSize = this.calcPageSize();\n this.rowCount = this.calcRowCount();\n }\n /**\n * Body triggered a page event.\n */\n onBodyPage({\n offset\n }) {\n // Avoid pagination caming from body events like scroll when the table\n // has no virtualization and the external paging is enable.\n // This means, let's the developer handle pagination by my him(her) self\n if (this.externalPaging && !this.virtualization) {\n return;\n }\n this.offset = offset;\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n }\n /**\n * The body triggered a scroll event.\n */\n onBodyScroll(event) {\n this._offsetX.next(event.offsetX);\n this.scroll.emit(event);\n this.cd.detectChanges();\n }\n /**\n * The footer triggered a page event.\n */\n onFooterPage(event) {\n this.offset = event.page - 1;\n this.bodyComponent.updateOffsetY(this.offset);\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n }\n /**\n * Recalculates the sizes of the page\n */\n calcPageSize(val = this.rows) {\n // Keep the page size constant even if the row has been expanded.\n // This is because an expanded row is still considered to be a child of\n // the original row. Hence calculation would use rowHeight only.\n if (this.scrollbarV && this.virtualization) {\n const size = Math.ceil(this.bodyHeight / this.rowHeight);\n return Math.max(size, 0);\n }\n // if limit is passed, we are paging\n if (this.limit !== undefined) {\n return this.limit;\n }\n // otherwise use row length\n if (val) {\n return val.length;\n }\n // other empty :(\n return 0;\n }\n /**\n * Calculates the row count.\n */\n calcRowCount(val = this.rows) {\n if (!this.externalPaging) {\n if (!val) return 0;\n if (this.groupedRows) {\n return this.groupedRows.length;\n } else if (this.treeFromRelation != null && this.treeToRelation != null) {\n return this._internalRows.length;\n } else {\n return val.length;\n }\n }\n return this.count;\n }\n /**\n * The header triggered a contextmenu event.\n */\n onColumnContextmenu({\n event,\n column\n }) {\n this.tableContextmenu.emit({\n event,\n type: ContextmenuType.header,\n content: column\n });\n }\n /**\n * The body triggered a contextmenu event.\n */\n onRowContextmenu({\n event,\n row\n }) {\n this.tableContextmenu.emit({\n event,\n type: ContextmenuType.body,\n content: row\n });\n }\n /**\n * The header triggered a column resize event.\n */\n onColumnResize({\n column,\n newValue\n }) {\n /* Safari/iOS 10.2 workaround */\n if (column === undefined) {\n return;\n }\n let idx;\n const cols = this._internalColumns.map((c, i) => {\n c = {\n ...c\n };\n if (c.$$id === column.$$id) {\n idx = i;\n c.width = newValue;\n // set this so we can force the column\n // width distribution to be to this value\n c.$$oldWidth = newValue;\n }\n return c;\n });\n this.recalculateColumns(cols, idx);\n this._internalColumns = cols;\n this.resize.emit({\n column,\n newValue\n });\n }\n /**\n * The header triggered a column re-order event.\n */\n onColumnReorder({\n column,\n newValue,\n prevValue\n }) {\n const cols = this._internalColumns.map(c => {\n return {\n ...c\n };\n });\n if (this.swapColumns) {\n const prevCol = cols[newValue];\n cols[newValue] = column;\n cols[prevValue] = prevCol;\n } else {\n if (newValue > prevValue) {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i < newValue; i++) {\n cols[i] = cols[i + 1];\n }\n cols[newValue] = movedCol;\n } else {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i > newValue; i--) {\n cols[i] = cols[i - 1];\n }\n cols[newValue] = movedCol;\n }\n }\n this._internalColumns = cols;\n this.reorder.emit({\n column,\n newValue,\n prevValue\n });\n }\n /**\n * The header triggered a column sort event.\n */\n onColumnSort(event) {\n // clean selected rows\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n this.sorts = event.sorts;\n // this could be optimized better since it will resort\n // the rows again on the 'push' detection...\n if (this.externalSorting === false) {\n // don't use normal setter so we don't resort\n this.sortInternalRows();\n }\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));\n // Always go to first page when sorting to see the newly sorted data\n this.offset = 0;\n this.bodyComponent.updateOffsetY(this.offset);\n this.sort.emit(event);\n }\n /**\n * Toggle all row selection\n */\n onHeaderSelect(event) {\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n // before we splice, chk if we currently have all selected\n const first = this.bodyComponent.indexes.first;\n const last = this.bodyComponent.indexes.last;\n const allSelected = this.selected.length === last - first;\n // remove all existing either way\n this.selected = [];\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this._internalRows.slice(first, last));\n }\n } else {\n // before we splice, chk if we currently have all selected\n const allSelected = this.selected.length === this.rows.length;\n // remove all existing either way\n this.selected = [];\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this.rows);\n }\n }\n this.select.emit({\n selected: this.selected\n });\n }\n /**\n * A row was selected from body\n */\n onBodySelect(event) {\n this.select.emit(event);\n }\n /**\n * A row was expanded or collapsed for tree\n */\n onTreeAction(event) {\n const row = event.row;\n // TODO: For duplicated items this will not work\n const rowIndex = this._rows.findIndex(r => r[this.treeToRelation] === event.row[this.treeToRelation]);\n this.treeAction.emit({\n row,\n rowIndex\n });\n }\n ngOnDestroy() {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n /**\n * listen for changes to input bindings of all DataTableColumnDirective and\n * trigger the columnTemplates.changes observable to emit\n */\n listenForColumnInputChanges() {\n this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(() => {\n if (this.columnTemplates) {\n this.columnTemplates.notifyOnChanges();\n }\n }));\n }\n sortInternalRows() {\n this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts);\n }\n}\nDatatableComponent.ɵfac = function DatatableComponent_Factory(t) {\n return new (t || DatatableComponent)(i0.ɵɵdirectiveInject(ScrollbarHelper, 4), i0.ɵɵdirectiveInject(DimensionsHelper, 4), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(ColumnChangesService), i0.ɵɵdirectiveInject('configuration', 8));\n};\nDatatableComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DatatableComponent,\n selectors: [[\"ngx-datatable\"]],\n contentQueries: function DatatableComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DatatableRowDetailDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DatatableGroupHeaderDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DatatableFooterDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowDetail = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupHeader = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnTemplates = _t);\n }\n },\n viewQuery: function DatatableComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(DataTableBodyComponent, 5);\n i0.ɵɵviewQuery(DataTableHeaderComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.bodyComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerComponent = _t.first);\n }\n },\n hostAttrs: [1, \"ngx-datatable\"],\n hostVars: 22,\n hostBindings: function DatatableComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"resize\", function DatatableComponent_resize_HostBindingHandler() {\n return ctx.onWindowResize();\n }, false, i0.ɵɵresolveWindow);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"fixed-header\", ctx.isFixedHeader)(\"fixed-row\", ctx.isFixedRow)(\"scroll-vertical\", ctx.isVertScroll)(\"virtualized\", ctx.isVirtualized)(\"scroll-horz\", ctx.isHorScroll)(\"selectable\", ctx.isSelectable)(\"checkbox-selection\", ctx.isCheckboxSelection)(\"cell-selection\", ctx.isCellSelection)(\"single-selection\", ctx.isSingleSelection)(\"multi-selection\", ctx.isMultiSelection)(\"multi-click-selection\", ctx.isMultiClickSelection);\n }\n },\n inputs: {\n targetMarkerTemplate: \"targetMarkerTemplate\",\n rows: \"rows\",\n groupRowsBy: \"groupRowsBy\",\n groupedRows: \"groupedRows\",\n columns: \"columns\",\n selected: \"selected\",\n scrollbarV: \"scrollbarV\",\n scrollbarH: \"scrollbarH\",\n rowHeight: \"rowHeight\",\n columnMode: \"columnMode\",\n headerHeight: \"headerHeight\",\n footerHeight: \"footerHeight\",\n externalPaging: \"externalPaging\",\n externalSorting: \"externalSorting\",\n limit: \"limit\",\n count: \"count\",\n offset: \"offset\",\n loadingIndicator: \"loadingIndicator\",\n selectionType: \"selectionType\",\n reorderable: \"reorderable\",\n swapColumns: \"swapColumns\",\n sortType: \"sortType\",\n sorts: \"sorts\",\n cssClasses: \"cssClasses\",\n messages: \"messages\",\n rowClass: \"rowClass\",\n selectCheck: \"selectCheck\",\n displayCheck: \"displayCheck\",\n groupExpansionDefault: \"groupExpansionDefault\",\n trackByProp: \"trackByProp\",\n selectAllRowsOnPage: \"selectAllRowsOnPage\",\n virtualization: \"virtualization\",\n treeFromRelation: \"treeFromRelation\",\n treeToRelation: \"treeToRelation\",\n summaryRow: \"summaryRow\",\n summaryHeight: \"summaryHeight\",\n summaryPosition: \"summaryPosition\",\n rowIdentity: \"rowIdentity\"\n },\n outputs: {\n scroll: \"scroll\",\n activate: \"activate\",\n select: \"select\",\n sort: \"sort\",\n page: \"page\",\n reorder: \"reorder\",\n resize: \"resize\",\n tableContextmenu: \"tableContextmenu\",\n treeAction: \"treeAction\"\n },\n decls: 5,\n vars: 34,\n consts: [[\"role\", \"table\", \"visibilityObserver\", \"\", 3, \"visible\"], [\"role\", \"rowgroup\", 3, \"sorts\", \"sortType\", \"scrollbarH\", \"innerWidth\", \"offsetX\", \"dealsWithGroup\", \"columns\", \"headerHeight\", \"reorderable\", \"targetMarkerTemplate\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\", \"selectionType\", \"sort\", \"resize\", \"reorder\", \"select\", \"columnContextmenu\", 4, \"ngIf\"], [\"role\", \"rowgroup\", 3, \"page\", \"activate\", \"rowContextmenu\", \"select\", \"scroll\", \"treeAction\", \"groupRowsBy\", \"groupedRows\", \"rows\", \"groupExpansionDefault\", \"scrollbarV\", \"scrollbarH\", \"virtualization\", \"loadingIndicator\", \"externalPaging\", \"rowHeight\", \"rowCount\", \"offset\", \"trackByProp\", \"columns\", \"pageSize\", \"offsetX\", \"rowDetail\", \"groupHeader\", \"selected\", \"innerWidth\", \"bodyHeight\", \"selectionType\", \"emptyMessage\", \"rowIdentity\", \"rowClass\", \"selectCheck\", \"displayCheck\", \"summaryRow\", \"summaryHeight\", \"summaryPosition\"], [3, \"rowCount\", \"pageSize\", \"offset\", \"footerHeight\", \"footerTemplate\", \"totalMessage\", \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"selectedCount\", \"selectedMessage\", \"pagerNextIcon\", \"page\", 4, \"ngIf\"], [\"role\", \"rowgroup\", 3, \"sort\", \"resize\", \"reorder\", \"select\", \"columnContextmenu\", \"sorts\", \"sortType\", \"scrollbarH\", \"innerWidth\", \"offsetX\", \"dealsWithGroup\", \"columns\", \"headerHeight\", \"reorderable\", \"targetMarkerTemplate\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\", \"selectionType\"], [3, \"page\", \"rowCount\", \"pageSize\", \"offset\", \"footerHeight\", \"footerTemplate\", \"totalMessage\", \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"selectedCount\", \"selectedMessage\", \"pagerNextIcon\"]],\n template: function DatatableComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"visible\", function DatatableComponent_Template_div_visible_0_listener() {\n return ctx.recalculate();\n });\n i0.ɵɵtemplate(1, DatatableComponent_datatable_header_1_Template, 2, 17, \"datatable-header\", 1);\n i0.ɵɵelementStart(2, \"datatable-body\", 2);\n i0.ɵɵpipe(3, \"async\");\n i0.ɵɵlistener(\"page\", function DatatableComponent_Template_datatable_body_page_2_listener($event) {\n return ctx.onBodyPage($event);\n })(\"activate\", function DatatableComponent_Template_datatable_body_activate_2_listener($event) {\n return ctx.activate.emit($event);\n })(\"rowContextmenu\", function DatatableComponent_Template_datatable_body_rowContextmenu_2_listener($event) {\n return ctx.onRowContextmenu($event);\n })(\"select\", function DatatableComponent_Template_datatable_body_select_2_listener($event) {\n return ctx.onBodySelect($event);\n })(\"scroll\", function DatatableComponent_Template_datatable_body_scroll_2_listener($event) {\n return ctx.onBodyScroll($event);\n })(\"treeAction\", function DatatableComponent_Template_datatable_body_treeAction_2_listener($event) {\n return ctx.onTreeAction($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, DatatableComponent_datatable_footer_4_Template, 1, 12, \"datatable-footer\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.headerHeight);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"groupRowsBy\", ctx.groupRowsBy)(\"groupedRows\", ctx.groupedRows)(\"rows\", ctx._internalRows)(\"groupExpansionDefault\", ctx.groupExpansionDefault)(\"scrollbarV\", ctx.scrollbarV)(\"scrollbarH\", ctx.scrollbarH)(\"virtualization\", ctx.virtualization)(\"loadingIndicator\", ctx.loadingIndicator)(\"externalPaging\", ctx.externalPaging)(\"rowHeight\", ctx.rowHeight)(\"rowCount\", ctx.rowCount)(\"offset\", ctx.offset)(\"trackByProp\", ctx.trackByProp)(\"columns\", ctx._internalColumns)(\"pageSize\", ctx.pageSize)(\"offsetX\", i0.ɵɵpipeBind1(3, 32, ctx._offsetX))(\"rowDetail\", ctx.rowDetail)(\"groupHeader\", ctx.groupHeader)(\"selected\", ctx.selected)(\"innerWidth\", ctx._innerWidth)(\"bodyHeight\", ctx.bodyHeight)(\"selectionType\", ctx.selectionType)(\"emptyMessage\", ctx.messages.emptyMessage)(\"rowIdentity\", ctx.rowIdentity)(\"rowClass\", ctx.rowClass)(\"selectCheck\", ctx.selectCheck)(\"displayCheck\", ctx.displayCheck)(\"summaryRow\", ctx.summaryRow)(\"summaryHeight\", ctx.summaryHeight)(\"summaryPosition\", ctx.summaryPosition);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.footerHeight);\n }\n },\n dependencies: [DataTableHeaderComponent, DataTableBodyComponent, DataTableFooterComponent, VisibilityDirective, i1.NgIf, i1.AsyncPipe],\n styles: [\".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n});\n__decorate([throttleable(5)], DatatableComponent.prototype, \"onWindowResize\", null);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-datatable',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-datatable'\n },\n template: \"
\\n \\n \\n \\n \\n \\n \\n
\\n\",\n styles: [\".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\\n\"]\n }]\n }], function () {\n return [{\n type: ScrollbarHelper,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: DimensionsHelper,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }, {\n type: i0.KeyValueDiffers\n }, {\n type: ColumnChangesService\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['configuration']\n }]\n }];\n }, {\n targetMarkerTemplate: [{\n type: Input\n }],\n rows: [{\n type: Input\n }],\n groupRowsBy: [{\n type: Input\n }],\n groupedRows: [{\n type: Input\n }],\n columns: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n scrollbarV: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n columnMode: [{\n type: Input\n }],\n headerHeight: [{\n type: Input\n }],\n footerHeight: [{\n type: Input\n }],\n externalPaging: [{\n type: Input\n }],\n externalSorting: [{\n type: Input\n }],\n limit: [{\n type: Input\n }],\n count: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n loadingIndicator: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n reorderable: [{\n type: Input\n }],\n swapColumns: [{\n type: Input\n }],\n sortType: [{\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n cssClasses: [{\n type: Input\n }],\n messages: [{\n type: Input\n }],\n rowClass: [{\n type: Input\n }],\n selectCheck: [{\n type: Input\n }],\n displayCheck: [{\n type: Input\n }],\n groupExpansionDefault: [{\n type: Input\n }],\n trackByProp: [{\n type: Input\n }],\n selectAllRowsOnPage: [{\n type: Input\n }],\n virtualization: [{\n type: Input\n }],\n treeFromRelation: [{\n type: Input\n }],\n treeToRelation: [{\n type: Input\n }],\n summaryRow: [{\n type: Input\n }],\n summaryHeight: [{\n type: Input\n }],\n summaryPosition: [{\n type: Input\n }],\n scroll: [{\n type: Output\n }],\n activate: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n sort: [{\n type: Output\n }],\n page: [{\n type: Output\n }],\n reorder: [{\n type: Output\n }],\n resize: [{\n type: Output\n }],\n tableContextmenu: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n isFixedHeader: [{\n type: HostBinding,\n args: ['class.fixed-header']\n }],\n isFixedRow: [{\n type: HostBinding,\n args: ['class.fixed-row']\n }],\n isVertScroll: [{\n type: HostBinding,\n args: ['class.scroll-vertical']\n }],\n isVirtualized: [{\n type: HostBinding,\n args: ['class.virtualized']\n }],\n isHorScroll: [{\n type: HostBinding,\n args: ['class.scroll-horz']\n }],\n isSelectable: [{\n type: HostBinding,\n args: ['class.selectable']\n }],\n isCheckboxSelection: [{\n type: HostBinding,\n args: ['class.checkbox-selection']\n }],\n isCellSelection: [{\n type: HostBinding,\n args: ['class.cell-selection']\n }],\n isSingleSelection: [{\n type: HostBinding,\n args: ['class.single-selection']\n }],\n isMultiSelection: [{\n type: HostBinding,\n args: ['class.multi-selection']\n }],\n isMultiClickSelection: [{\n type: HostBinding,\n args: ['class.multi-click-selection']\n }],\n columnTemplates: [{\n type: ContentChildren,\n args: [DataTableColumnDirective]\n }],\n rowDetail: [{\n type: ContentChild,\n args: [DatatableRowDetailDirective]\n }],\n groupHeader: [{\n type: ContentChild,\n args: [DatatableGroupHeaderDirective]\n }],\n footer: [{\n type: ContentChild,\n args: [DatatableFooterDirective]\n }],\n bodyComponent: [{\n type: ViewChild,\n args: [DataTableBodyComponent]\n }],\n headerComponent: [{\n type: ViewChild,\n args: [DataTableHeaderComponent]\n }],\n rowIdentity: [{\n type: Input\n }],\n onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }]\n });\n})();\nclass NgxDatatableModule {\n /**\n * Configure global configuration via INgxDatatableConfig\n * @param configuration\n */\n static forRoot(configuration) {\n return {\n ngModule: NgxDatatableModule,\n providers: [{\n provide: 'configuration',\n useValue: configuration\n }]\n };\n }\n}\nNgxDatatableModule.ɵfac = function NgxDatatableModule_Factory(t) {\n return new (t || NgxDatatableModule)();\n};\nNgxDatatableModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxDatatableModule\n});\nNgxDatatableModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],\n imports: [[CommonModule]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgxDatatableModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],\n declarations: [DataTableFooterTemplateDirective, VisibilityDirective, DraggableDirective, ResizeableDirective, OrderableDirective, LongPressDirective, ScrollerComponent, DatatableComponent, DataTableColumnDirective, DataTableHeaderComponent, DataTableHeaderCellComponent, DataTableBodyComponent, DataTableFooterComponent, DataTablePagerComponent, ProgressBarComponent, DataTableBodyRowComponent, DataTableRowWrapperComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableBodyCellComponent, DataTableSelectionComponent, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DatatableFooterDirective, DatatableGroupHeaderTemplateDirective, DataTableSummaryRowComponent],\n exports: [DatatableComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableColumnDirective, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableFooterTemplateDirective, DatatableFooterDirective, DataTablePagerComponent, DatatableGroupHeaderTemplateDirective]\n }]\n }], null, null);\n})();\nvar ClickType;\n(function (ClickType) {\n ClickType[\"single\"] = \"single\";\n ClickType[\"double\"] = \"double\";\n})(ClickType || (ClickType = {}));\nif (typeof document !== 'undefined' && !document.elementsFromPoint) {\n document.elementsFromPoint = elementsFromPoint;\n}\n/*tslint:disable*/\n/**\n * Polyfill for `elementsFromPoint`\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint\n * https://gist.github.com/iddan/54d5d9e58311b0495a91bf06de661380\n * https://gist.github.com/oslego/7265412\n */\nfunction elementsFromPoint(x, y) {\n const elements = [];\n const previousPointerEvents = [];\n let current; // TODO: window.getComputedStyle should be used with inferred type (Element)\n let i;\n let d;\n //if (document === undefined) return elements;\n // get all elements via elementFromPoint, and remove them from hit-testing in order\n while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {\n // push the element and its current style\n elements.push(current);\n previousPointerEvents.push({\n value: current.style.getPropertyValue('pointer-events'),\n priority: current.style.getPropertyPriority('pointer-events')\n });\n // add \"pointer-events: none\", to get to the underlying element\n current.style.setProperty('pointer-events', 'none', 'important');\n }\n // restore the previous pointer-events values\n for (i = previousPointerEvents.length; d = previousPointerEvents[--i];) {\n elements[i].style.setProperty('pointer-events', d.value ? d.value : '', d.priority);\n }\n // return our results\n return elements;\n}\n/*tslint:enable*/\n\n/*\n * Public API Surface of ngx-datatable\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ClickType, ColumnChangesService, ColumnMode, ContextmenuType, DataTableBodyCellComponent, DataTableBodyComponent, DataTableBodyRowComponent, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableColumnDirective, DataTableColumnHeaderDirective, DataTableFooterComponent, DataTableFooterTemplateDirective, DataTableHeaderCellComponent, DataTableHeaderComponent, DataTablePagerComponent, DataTableRowWrapperComponent, DataTableSelectionComponent, DataTableSummaryRowComponent, DatatableComponent, DatatableFooterDirective, DatatableGroupHeaderDirective, DatatableGroupHeaderTemplateDirective, DatatableRowDetailDirective, DatatableRowDetailTemplateDirective, DimensionsHelper, DraggableDirective, Keys, LongPressDirective, NgxDatatableModule, OrderableDirective, ProgressBarComponent, ResizeableDirective, RowHeightCache, ScrollbarHelper, ScrollerComponent, SelectionType, SortDirection, SortType, VisibilityDirective, adjustColumnWidths, camelCase, columnGroupWidths, columnTotalWidth, columnsByPin, columnsByPinArr, columnsTotalWidth, deCamelCase, deepValueGetter, elementsFromPoint, emptyStringGetter, forceFillColumnWidths, getTotalFlexGrow, getVendorPrefixedName, getterForProp, groupRowsByParents, id, isNullOrUndefined, nextSortDir, numericIndexGetter, optionalGetterForProp, orderByComparator, selectRows, selectRowsBetween, setColumnDefaults, shallowValueGetter, sortRows, throttle, throttleable, translateTemplates, translateXY };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAM,MAAM,CAAC,GAAG;AAChB,IAAM,MAAM,CAAC,cAAc;AAC3B,IAAM,MAAM,SAAO;AAAA,EACjB,aAAa;AACf;AACA,SAAS,4CAA4C,IAAI,KAAK;AAC5D,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC;AAC9C,IAAG,qBAAW,SAAS,SAAS,mEAAmE,QAAQ;AACzG,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,iBAAiB,MAAM,CAAC;AAAA,IACvD,CAAC;AACD,IAAG,uBAAa,EAAE;AAAA,EACpB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,WAAW,OAAO,UAAU;AAAA,EAC5C;AACF;AACA,SAAS,gEAAgE,IAAI,KAAK;AAChF,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,KAAK,EAAE;AAAA,EACzB;AACF;AACA,SAAS,gEAAgE,IAAI,KAAK;AAChF,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,KAAK,EAAE;AAAA,EACzB;AACF;AACA,SAAS,gEAAgE,IAAI,KAAK;AAChF,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,KAAK,EAAE;AAAA,EACzB;AACF;AACA,SAAS,4DAA4D,IAAI,KAAK;AAC5E,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,UAAU,CAAC;AAChC,IAAG,qBAAW,SAAS,SAAS,sFAAsF;AACpH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,aAAa,CAAC;AAAA,IAC7C,CAAC;AACD,IAAG,yBAAe,GAAG,MAAM;AAC3B,IAAG,qBAAW,GAAG,iEAAiE,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,iEAAiE,GAAG,GAAG,KAAK,EAAE,EAAE,GAAG,iEAAiE,GAAG,GAAG,KAAK,EAAE;AACpQ,IAAG,uBAAa,EAAE;AAAA,EACpB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,YAAY,OAAO,eAAe,UAAU;AAC1D,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,QAAQ,OAAO,eAAe,SAAS;AACrD,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,eAAe,WAAW;AACvD,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,eAAe,cAAc,OAAO,eAAe,UAAU;AAAA,EAC5F;AACF;AACA,SAAS,mEAAmE,IAAI,KAAK;AAAC;AACtF,SAAS,qDAAqD,IAAI,KAAK;AACrE,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,oEAAoE,GAAG,GAAG,eAAe,EAAE;AAAA,EAC9G;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,oBAAoB,OAAO,OAAO,kBAAkB,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,WAAW,CAAC;AAAA,EAC/I;AACF;AACA,SAAS,mDAAmD,IAAI,KAAK;AACnE,MAAI,KAAK,GAAG;AACV,IAAG,kCAAwB,CAAC;AAC5B,IAAG,qBAAW,GAAG,6DAA6D,GAAG,GAAG,UAAU,CAAC,EAAE,GAAG,sDAAsD,GAAG,GAAG,MAAM,CAAC;AACvK,IAAG,gCAAsB;AAAA,EAC3B;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,CAAC,OAAO,OAAO,kBAAkB;AACvD,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,OAAO,kBAAkB;AAAA,EACxD;AACF;AACA,SAAS,2CAA2C,IAAI,KAAK;AAC3D,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,QAAQ,EAAE;AAAA,EAC5B;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,SAAS,OAAO,cAAc,EAAE,aAAa,OAAO,OAAU,wBAAc;AAAA,EAC5F;AACF;AACA,SAAS,oDAAoD,IAAI,KAAK;AAAC;AACvE,SAAS,sCAAsC,IAAI,KAAK;AACtD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,qDAAqD,GAAG,GAAG,eAAe,IAAI,GAAM,gCAAsB;AAAA,EAC7H;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,oBAAoB,OAAO,OAAO,YAAY,EAAE,2BAA2B,OAAO,WAAW;AAAA,EAC7G;AACF;AACA,SAAS,+DAA+D,IAAI,KAAK;AAC/E,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,uBAAuB,CAAC;AAC7C,IAAG,qBAAW,YAAY,SAAS,uGAAuG,QAAQ;AAChJ,YAAM,QAAW,wBAAc,GAAG,EAAE;AACpC,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,WAAW,QAAQ,KAAK,CAAC;AAAA,IACxD,CAAC,EAAE,cAAc,SAAS,2GAA2G;AACnI,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,aAAa,CAAC;AAAA,IAC7C,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,YAAY,IAAI;AACtB,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,OAAO,OAAO,GAAG,EAAE,SAAS,OAAO,KAAK,EAAE,YAAY,OAAO,QAAQ,EAAE,cAAc,OAAO,UAAU,EAAE,YAAY,OAAO,QAAQ,EAAE,UAAU,SAAS,EAAE,aAAa,OAAO,SAAS,EAAE,gBAAgB,OAAO,YAAY,EAAE,cAAc,OAAO,UAAU;AAAA,EAC7Q;AACF;AACA,SAAS,yCAAyC,IAAI,KAAK;AACzD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,qBAAW,GAAG,gEAAgE,GAAG,GAAG,uBAAuB,CAAC;AAC/G,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,cAAc,IAAI;AACxB,UAAM,SAAY,wBAAc;AAChC,IAAG,iCAAuB,kBAAkB,YAAY,MAAM,sBAAsB;AACpF,IAAG,qBAAW,WAAW,OAAO,aAAa,YAAY,IAAI,CAAC;AAC9D,IAAG,oBAAU;AACb,IAAG,qBAAW,WAAW,YAAY,OAAO,EAAE,gBAAgB,OAAO,gBAAgB;AAAA,EACvF;AACF;AACA,SAAS,2DAA2D,IAAI,KAAK;AAC3E,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,sBAAsB,CAAC;AAAA,EACzC;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,cAAc,OAAO,UAAU,EAAE,WAAW,OAAO,OAAO,EAAE,WAAW,OAAO,gBAAgB,EAAE,aAAa,OAAO,SAAS,EAAE,OAAO,OAAO,UAAU,EAAE,YAAY,EAAE;AAAA,EACvL;AACF;AACA,SAAS,4DAA4D,IAAI,KAAK;AAAC;AAC/E,SAAS,8CAA8C,IAAI,KAAK;AAC9D,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,6DAA6D,GAAG,GAAG,eAAe,CAAC;AAAA,EACtG;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,oBAAoB,OAAO,YAAY,QAAQ,EAAE,2BAA2B,OAAO,YAAY;AAAA,EAC/G;AACF;AACA,SAAS,4CAA4C,IAAI,KAAK;AAC5D,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,qBAAW,GAAG,+CAA+C,GAAG,GAAG,MAAM,CAAC;AAC7E,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,WAAW,OAAO,oBAAoB,CAAC;AACrD,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,eAAe,OAAO,YAAY,QAAQ;AAAA,EACzE;AACF;AACA,SAAS,mDAAmD,IAAI,KAAK;AACnE,MAAI,KAAK,GAAG;AACV,IAAG,uBAAa,GAAG,GAAG,CAAC,SAAS,4FAA4F,CAAC;AAAA,EAC/H;AACF;AACA,SAAS,4DAA4D,IAAI,KAAK;AAAC;AAC/E,SAAS,8CAA8C,IAAI,KAAK;AAC9D,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,6DAA6D,GAAG,GAAG,eAAe,CAAC;AAAA,EACtG;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,oBAAoB,OAAO,UAAU,QAAQ,EAAE,2BAA2B,OAAO,UAAU;AAAA,EAC3G;AACF;AACA,SAAS,4CAA4C,IAAI,KAAK;AAC5D,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,qBAAW,GAAG,+CAA+C,GAAG,GAAG,MAAM,CAAC;AAC7E,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,sBAAY,UAAU,OAAO,iBAAiB,IAAI;AACrD,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,aAAa,OAAO,UAAU,QAAQ;AAAA,EACrE;AACF;AACA,SAAS,qDAAqD,IAAI,KAAK;AACrE,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,oBAAoB;AAAA,EACtC;AACF;AACA,SAAS,6EAA6E,IAAI,KAAK;AAC7F,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,yBAAyB,EAAE;AAAA,EAC7C;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,aAAa,OAAO,aAAa,EAAE,WAAW,OAAO,OAAO,EAAE,cAAc,OAAO,UAAU,EAAE,QAAQ,OAAO,IAAI,EAAE,WAAW,OAAO,OAAO;AAAA,EAC7J;AACF;AACA,SAAS,kGAAkG,IAAI,KAAK;AAClH,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,sBAAsB,EAAE;AAC7C,IAAG,qBAAW,cAAc,SAAS,6IAA6I;AAChL,MAAG,wBAAc,GAAG;AACpB,YAAM,WAAc,wBAAc,EAAE;AACpC,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,aAAa,QAAQ,CAAC;AAAA,IACrD,CAAC,EAAE,YAAY,SAAS,yIAAyI,QAAQ;AACvK,MAAG,wBAAc,GAAG;AACpB,YAAM,OAAU,wBAAc,EAAE;AAChC,YAAM,SAAY,wBAAc,CAAC;AACjC,YAAM,cAAiB,sBAAY,CAAC;AACpC,aAAU,sBAAY,YAAY,WAAW,QAAQ,OAAO,QAAQ,QAAQ,IAAI,CAAC;AAAA,IACnF,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,WAAc,wBAAc,EAAE;AACpC,UAAM,SAAY,wBAAc,CAAC;AACjC,UAAM,cAAiB,sBAAY,CAAC;AACpC,IAAG,qBAAW,cAAc,YAAY,eAAe,QAAQ,CAAC,EAAE,cAAc,OAAO,UAAU,EAAE,WAAW,OAAO,OAAO,EAAE,WAAW,OAAO,OAAO,EAAE,aAAa,OAAO,aAAa,QAAQ,CAAC,EAAE,OAAO,QAAQ,EAAE,YAAY,OAAO,YAAY,QAAQ,CAAC,EAAE,YAAY,OAAO,eAAe,QAAQ,CAAC,EAAE,YAAY,OAAO,QAAQ,EAAE,gBAAgB,OAAO,YAAY,EAAE,cAAc,YAAY,SAAS,UAAU;AAAA,EAC9Z;AACF;AACA,SAAS,gHAAgH,IAAI,KAAK;AAChI,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,sBAAsB,EAAE;AAC7C,IAAG,qBAAW,YAAY,SAAS,uJAAuJ,QAAQ;AAChM,YAAM,QAAW,wBAAc,GAAG,EAAE;AACpC,MAAG,wBAAc,CAAC;AAClB,YAAM,cAAiB,sBAAY,CAAC;AACpC,aAAU,sBAAY,YAAY,WAAW,QAAQ,KAAK,CAAC;AAAA,IAC7D,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,UAAU,IAAI;AACpB,UAAM,WAAc,wBAAc,CAAC,EAAE;AACrC,UAAM,SAAY,wBAAc,CAAC;AACjC,UAAM,cAAiB,sBAAY,CAAC;AACpC,IAAG,qBAAW,cAAc,YAAY,eAAe,OAAO,CAAC,EAAE,cAAc,OAAO,UAAU,EAAE,WAAW,OAAO,OAAO,EAAE,WAAW,OAAO,OAAO,EAAE,aAAa,OAAO,aAAa,OAAO,CAAC,EAAE,OAAO,OAAO,EAAE,SAAS,SAAS,KAAK,EAAE,YAAY,OAAO,YAAY,OAAO,CAAC,EAAE,YAAY,OAAO,eAAe,OAAO,CAAC,EAAE,YAAY,OAAO,QAAQ;AAAA,EAC9V;AACF;AACA,SAAS,2FAA2F,IAAI,KAAK;AAC3G,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,iHAAiH,GAAG,IAAI,sBAAsB,EAAE;AAAA,EACnK;AACA,MAAI,KAAK,GAAG;AACV,UAAM,WAAc,wBAAc,EAAE;AACpC,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,WAAW,SAAS,KAAK,EAAE,gBAAgB,OAAO,aAAa;AAAA,EAC/E;AACF;AACA,SAAS,6EAA6E,IAAI,KAAK;AAC7F,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,yBAAyB,EAAE;AAChD,IAAG,qBAAW,kBAAkB,SAAS,6HAA6H,QAAQ;AAC5K,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,eAAe,KAAK,MAAM,CAAC;AAAA,IAC1D,CAAC;AACD,IAAG,qBAAW,GAAG,mGAAmG,GAAG,IAAI,sBAAsB,EAAE,EAAE,GAAG,4FAA4F,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB;AAC3S,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,WAAW,IAAI;AACrB,UAAM,OAAO,IAAI;AACjB,UAAM,0BAA6B,sBAAY,CAAC;AAChD,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,eAAe,OAAO,WAAW,EAAE,cAAc,OAAO,UAAU,EAAE,WAAW,OAAO,cAAc,QAAQ,CAAC,EAAE,aAAa,OAAO,SAAS,EAAE,eAAe,OAAO,WAAW,EAAE,WAAW,OAAO,OAAO,EAAE,mBAAmB,OAAO,mBAAmB,YAAY,SAAS,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,QAAQ,EAAE,YAAY,OAAO,eAAe,QAAQ,CAAC,EAAE,YAAY,OAAO,YAAY,YAAY,SAAS,IAAI,CAAC,CAAC;AACla,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,CAAC,OAAO,WAAW,EAAE,YAAY,uBAAuB;AAAA,EAChF;AACF;AACA,SAAS,6EAA6E,IAAI,KAAK;AAC7F,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,yBAAyB,EAAE;AAAA,EAC7C;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,WAAW,OAAO,0BAA0B,CAAC,EAAE,aAAa,OAAO,aAAa,EAAE,WAAW,OAAO,OAAO,EAAE,cAAc,OAAO,UAAU,EAAE,QAAQ,OAAO,IAAI,EAAE,WAAW,OAAO,OAAO;AAAA,EAC5M;AACF;AACA,SAAS,qDAAqD,IAAI,KAAK;AACrE,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,sBAAsB,CAAC;AAC5C,IAAG,qBAAW,UAAU,SAAS,0FAA0F,QAAQ;AACjI,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,aAAa,MAAM,CAAC;AAAA,IACnD,CAAC;AACD,IAAG,qBAAW,GAAG,8EAA8E,GAAG,GAAG,yBAAyB,CAAC,EAAE,GAAG,8EAA8E,GAAG,IAAI,yBAAyB,CAAC,EAAE,GAAG,8EAA8E,GAAG,GAAG,yBAAyB,CAAC;AACtW,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,cAAc,OAAO,UAAU,EAAE,cAAc,OAAO,UAAU,EAAE,gBAAgB,OAAO,YAAY,EAAE,eAAe,OAAO,qBAAqB,OAAO,OAAO,OAAO,kBAAkB,KAAK;AAC5M,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,cAAc,OAAO,oBAAoB,KAAK;AAC3E,IAAG,oBAAU;AACb,IAAG,qBAAW,WAAW,OAAO,IAAI,EAAE,gBAAgB,OAAO,aAAa;AAC1E,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,cAAc,OAAO,oBAAoB,QAAQ;AAAA,EAChF;AACF;AACA,SAAS,sCAAsC,IAAI,KAAK;AACtD,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,OAAO,EAAE;AAAA,EAC3B;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,aAAa,OAAO,cAAiB,wBAAc;AAAA,EACnE;AACF;AACA,SAAS,sDAAsD,IAAI,KAAK;AAAC;AACzE,SAAS,wCAAwC,IAAI,KAAK;AACxD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,uDAAuD,GAAG,GAAG,eAAe,CAAC;AAAA,EAChG;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,oBAAoB,OAAO,oBAAoB,EAAE,2BAA2B,OAAO,mBAAmB;AAAA,EACtH;AACF;AACA,SAAS,8CAA8C,IAAI,KAAK;AAC9D,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC;AAC9C,IAAG,qBAAW,UAAU,SAAS,wEAAwE;AACvG,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,OAAO,KAAK,CAAC,OAAO,eAAe,CAAC;AAAA,IACnE,CAAC;AACD,IAAG,uBAAa,EAAE;AAAA,EACpB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,WAAW,OAAO,eAAe;AAAA,EACjD;AACF;AACA,SAAS,6CAA6C,IAAI,KAAK;AAC7D,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC;AAC5C,IAAG,qBAAW,SAAS,SAAS,qEAAqE;AACnG,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,OAAO,CAAC;AAAA,IACvC,CAAC;AACD,IAAG,uBAAa,EAAE;AAAA,EACpB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,aAAa,OAAO,MAAS,wBAAc;AAAA,EAC3D;AACF;AACA,SAAS,sDAAsD,IAAI,KAAK;AAAC;AACzE,SAAS,wCAAwC,IAAI,KAAK;AACxD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,uDAAuD,GAAG,GAAG,eAAe,CAAC;AAAA,EAChG;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,oBAAoB,OAAO,OAAO,cAAc,EAAE,2BAA2B,OAAO,WAAW;AAAA,EAC/G;AACF;AACA,SAAS,gEAAgE,IAAI,KAAK;AAChF,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,yBAAyB,CAAC;AAC/C,IAAG,qBAAW,UAAU,SAAS,wGAAwG,QAAQ;AAC/I,YAAM,YAAe,wBAAc,GAAG,EAAE;AACxC,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,gBAAgB,QAAQ,SAAS,CAAC;AAAA,IACjE,CAAC,EAAE,kBAAkB,SAAS,gHAAgH,QAAQ;AACpJ,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,iBAAiB,MAAM,CAAC;AAAA,IACvD,CAAC,EAAE,gBAAgB,SAAS,8GAA8G,QAAQ;AAChJ,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,eAAe,MAAM,CAAC;AAAA,IACrD,CAAC,EAAE,QAAQ,SAAS,sGAAsG,QAAQ;AAChI,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,OAAO,MAAM,CAAC;AAAA,IAC7C,CAAC,EAAE,UAAU,SAAS,wGAAwG,QAAQ;AACpI,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,OAAO,KAAK,MAAM,CAAC;AAAA,IAClD,CAAC,EAAE,qBAAqB,SAAS,mHAAmH,QAAQ;AAC1J,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,kBAAkB,KAAK,MAAM,CAAC;AAAA,IAC7D,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,YAAY,IAAI;AACtB,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,iBAAiB,UAAU,UAAU,EAAE,cAAc,SAAS,EAAE,gBAAgB,OAAO,eAAe,UAAU,SAAS,EAAE,SAAS,OAAO,eAAe,UAAU,aAAa,UAAU,QAAQ,EAAE,SAAS,KAAK,EAAE,aAAa,SAAS,EAAE,mBAAmB,OAAO,eAAe,EAAE,gBAAgB,OAAO,YAAY,EAAE,YAAY,UAAU,QAAQ,EAAE,wBAAwB,OAAO,oBAAoB,EAAE,uBAAuB,UAAU,mBAAmB,EAAE,UAAU,SAAS,EAAE,YAAY,OAAO,QAAQ,EAAE,SAAS,OAAO,KAAK,EAAE,iBAAiB,OAAO,aAAa,EAAE,qBAAqB,OAAO,iBAAiB,EAAE,sBAAsB,OAAO,kBAAkB,EAAE,iBAAiB,OAAO,aAAa,EAAE,mBAAmB,OAAO,eAAe;AAAA,EACxvB;AACF;AACA,SAAS,wCAAwC,IAAI,KAAK;AACxD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,qBAAW,GAAG,iEAAiE,GAAG,IAAI,yBAAyB,CAAC;AACnH,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,cAAc,IAAI;AACxB,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,mBAAmB,YAAY,IAAI;AACjD,IAAG,qBAAW,WAAW,OAAO,cAAc,YAAY,IAAI,CAAC;AAC/D,IAAG,oBAAU;AACb,IAAG,qBAAW,WAAW,YAAY,OAAO,EAAE,gBAAgB,OAAO,gBAAgB;AAAA,EACvF;AACF;AACA,SAAS,sCAAsC,IAAI,KAAK;AACtD,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;AACvC,IAAG,qBAAW,SAAS,SAAS,2DAA2D;AACzF,YAAM,QAAW,wBAAc,GAAG,EAAE;AACpC,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,WAAW,MAAM,MAAM,CAAC;AAAA,IACvD,CAAC;AACD,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa,EAAE;AAAA,EACpB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,QAAQ,IAAI;AAClB,UAAM,SAAY,wBAAc;AAChC,IAAG,sBAAY,UAAU,MAAM,WAAW,OAAO,IAAI;AACrD,IAAG,sBAAY,cAAc,UAAU,MAAM,MAAM;AACnD,IAAG,oBAAU,CAAC;AACd,IAAG,6BAAmB,KAAK,MAAM,MAAM,GAAG;AAAA,EAC5C;AACF;AACA,IAAM,MAAM,SAAO;AAAA,EACjB,kBAAkB;AACpB;AACA,IAAM,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,QAAQ;AAAA,EACnC,UAAU;AAAA,EACV,UAAU;AAAA,EACV,eAAe;AAAA,EACf,SAAS;AAAA,EACT,QAAQ;AACV;AACA,SAAS,kDAAkD,IAAI,KAAK;AAAC;AACrE,SAAS,oCAAoC,IAAI,KAAK;AACpD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,mDAAmD,GAAG,GAAG,eAAe,CAAC;AAAA,EAC5F;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,oBAAoB,OAAO,eAAe,QAAQ,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,UAAU,OAAO,UAAU,OAAO,eAAe,OAAO,SAAS,OAAO,MAAM,CAAC;AAAA,EAChN;AACF;AACA,SAAS,+CAA+C,IAAI,KAAK;AAC/D,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,MAAM;AAC3B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU;AACb,IAAG,6BAAmB,KAAK,OAAO,iBAAiB,OAAO,OAAO,OAAO,cAAc,eAAe,GAAG,KAAK,OAAO,iBAAiB,KAAK;AAAA,EAC5I;AACF;AACA,SAAS,wCAAwC,IAAI,KAAK;AACxD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,qBAAW,GAAG,gDAAgD,GAAG,GAAG,QAAQ,CAAC;AAChF,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,QAAQ,OAAO,eAAe;AAC5C,IAAG,oBAAU;AACb,IAAG,6BAAmB,KAAK,OAAO,YAAY,OAAO,OAAO,OAAO,SAAS,eAAe,GAAG,KAAK,OAAO,cAAc,GAAG;AAAA,EAC7H;AACF;AACA,SAAS,oDAAoD,IAAI,KAAK;AACpE,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,mBAAmB,CAAC;AACzC,IAAG,qBAAW,UAAU,SAAS,sFAAsF,QAAQ;AAC7H,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,KAAK,KAAK,MAAM,CAAC;AAAA,IAChD,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,sBAAsB,OAAO,kBAAkB,EAAE,uBAAuB,OAAO,mBAAmB,EAAE,qBAAqB,OAAO,iBAAiB,EAAE,iBAAiB,OAAO,aAAa,EAAE,QAAQ,OAAO,OAAO,EAAE,QAAQ,OAAO,QAAQ,EAAE,SAAS,OAAO,QAAQ,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAChT;AACF;AACA,SAAS,+CAA+C,IAAI,KAAK;AAC/D,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,oBAAoB,CAAC;AAC1C,IAAG,iBAAO,GAAG,OAAO;AACpB,IAAG,qBAAW,QAAQ,SAAS,gFAAgF,QAAQ;AACrH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,aAAa,MAAM,CAAC;AAAA,IACnD,CAAC,EAAE,UAAU,SAAS,kFAAkF,QAAQ;AAC9G,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,eAAe,MAAM,CAAC;AAAA,IACrD,CAAC,EAAE,WAAW,SAAS,mFAAmF,QAAQ;AAChH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,gBAAgB,MAAM,CAAC;AAAA,IACtD,CAAC,EAAE,UAAU,SAAS,kFAAkF,QAAQ;AAC9G,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,eAAe,MAAM,CAAC;AAAA,IACrD,CAAC,EAAE,qBAAqB,SAAS,6FAA6F,QAAQ;AACpI,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,oBAAoB,MAAM,CAAC;AAAA,IAC1D,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,SAAS,OAAO,KAAK,EAAE,YAAY,OAAO,QAAQ,EAAE,cAAc,OAAO,UAAU,EAAE,cAAc,OAAO,WAAW,EAAE,WAAc,sBAAY,GAAG,IAAI,OAAO,QAAQ,CAAC,EAAE,kBAAkB,OAAO,gBAAgB,MAAS,EAAE,WAAW,OAAO,gBAAgB,EAAE,gBAAgB,OAAO,YAAY,EAAE,eAAe,OAAO,WAAW,EAAE,wBAAwB,OAAO,oBAAoB,EAAE,qBAAqB,OAAO,WAAW,aAAa,EAAE,sBAAsB,OAAO,WAAW,cAAc,EAAE,iBAAiB,OAAO,WAAW,SAAS,EAAE,mBAAmB,OAAO,eAAe,EAAE,iBAAiB,OAAO,aAAa;AAAA,EAC3nB;AACF;AACA,SAAS,+CAA+C,IAAI,KAAK;AAC/D,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,oBAAoB,CAAC;AAC1C,IAAG,qBAAW,QAAQ,SAAS,gFAAgF,QAAQ;AACrH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,aAAa,MAAM,CAAC;AAAA,IACnD,CAAC;AACD,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,YAAY,OAAO,QAAQ,EAAE,YAAY,OAAO,QAAQ,EAAE,UAAU,OAAO,MAAM,EAAE,gBAAgB,OAAO,YAAY,EAAE,kBAAkB,OAAO,MAAM,EAAE,gBAAgB,OAAO,SAAS,YAAY,EAAE,sBAAsB,OAAO,WAAW,cAAc,EAAE,uBAAuB,OAAO,WAAW,eAAe,EAAE,qBAAqB,OAAO,WAAW,aAAa,EAAE,iBAAiB,OAAO,SAAS,MAAM,EAAE,mBAAmB,CAAC,CAAC,OAAO,iBAAiB,OAAO,SAAS,eAAe,EAAE,iBAAiB,OAAO,WAAW,SAAS;AAAA,EACliB;AACF;AACA,IAAM,kBAAN,MAAsB;AAAA,EACpB,YAAYA,WAAU;AACpB,SAAK,WAAWA;AAChB,SAAK,QAAQ,KAAK,SAAS;AAAA,EAC7B;AAAA,EACA,WAAW;AACT,UAAM,QAAQ,KAAK,SAAS,cAAc,KAAK;AAC/C,UAAM,MAAM,aAAa;AACzB,UAAM,MAAM,QAAQ;AACpB,UAAM,MAAM,kBAAkB;AAC9B,SAAK,SAAS,KAAK,YAAY,KAAK;AACpC,UAAM,gBAAgB,MAAM;AAC5B,UAAM,MAAM,WAAW;AACvB,UAAM,QAAQ,KAAK,SAAS,cAAc,KAAK;AAC/C,UAAM,MAAM,QAAQ;AACpB,UAAM,YAAY,KAAK;AACvB,UAAM,kBAAkB,MAAM;AAC9B,UAAM,WAAW,YAAY,KAAK;AAClC,WAAO,gBAAgB;AAAA,EACzB;AACF;AACA,gBAAgB,YAAO,SAAS,wBAAwB,GAAG;AACzD,SAAO,KAAK,KAAK,iBAAoB,mBAAS,QAAQ,CAAC;AACzD;AACA,gBAAgB,aAAuB,gBAAG,6BAAmB;AAAA,EAC3D,OAAO;AAAA,EACP,SAAS,gBAAgB;AAC3B,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,iBAAiB,CAAC;AAAA,IACxF,MAAM;AAAA,EACR,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,QAAQ;AAAA,MACjB,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AAMH,IAAM,mBAAN,MAAuB;AAAA,EACrB,cAAc,SAAS;AACrB,WAAO,QAAQ,sBAAsB;AAAA,EACvC;AACF;AACA,iBAAiB,YAAO,SAAS,yBAAyB,GAAG;AAC3D,SAAO,KAAK,KAAK,kBAAkB;AACrC;AACA,iBAAiB,aAAuB,gBAAG,6BAAmB;AAAA,EAC5D,OAAO;AAAA,EACP,SAAS,iBAAiB;AAC5B,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,kBAAkB,CAAC;AAAA,IACzF,MAAM;AAAA,EACR,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AAMH,IAAM,uBAAN,MAA2B;AAAA,EACzB,cAAc;AACZ,SAAK,qBAAqB,IAAI,QAAQ;AAAA,EACxC;AAAA,EACA,IAAI,sBAAsB;AACxB,WAAO,KAAK,mBAAmB,aAAa;AAAA,EAC9C;AAAA,EACA,gBAAgB;AACd,SAAK,mBAAmB,KAAK;AAAA,EAC/B;AACF;AACA,qBAAqB,YAAO,SAAS,6BAA6B,GAAG;AACnE,SAAO,KAAK,KAAK,sBAAsB;AACzC;AACA,qBAAqB,aAAuB,gBAAG,6BAAmB;AAAA,EAChE,OAAO;AAAA,EACP,SAAS,qBAAqB;AAChC,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,sBAAsB,CAAC;AAAA,IAC7F,MAAM;AAAA,EACR,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,IAAM,mCAAN,MAAuC;AAAA,EACrC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AACF;AACA,iCAAiC,YAAO,SAAS,yCAAyC,GAAG;AAC3F,SAAO,KAAK,KAAK,kCAAqC,4BAAqB,WAAW,CAAC;AACzF;AACA,iCAAiC,YAAsB,gBAAG,4BAAkB;AAAA,EAC1E,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,iCAAiC,EAAE,CAAC;AACvD,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,kCAAkC,CAAC;AAAA,IACzG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AAaH,IAAM,sBAAN,MAA0B;AAAA,EACxB,YAAY,SAAS,MAAM;AACzB,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,YAAY;AACjB,SAAK,UAAU,IAAI,aAAa;AAAA,EAClC;AAAA,EACA,WAAW;AACT,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,cAAc;AACZ,iBAAa,KAAK,OAAO;AAAA,EAC3B;AAAA,EACA,qBAAqB;AAEnB,SAAK,KAAK,IAAI,MAAM;AAClB,WAAK,YAAY;AACjB,WAAK,QAAQ,KAAK,IAAI;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EACA,WAAW;AACT,UAAM,QAAQ,MAAM;AAElB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,KAAK,QAAQ;AACjB,UAAI,gBAAgB,aAAa;AAC/B,qBAAa,KAAK,OAAO;AACzB,aAAK,mBAAmB;AAAA,MAC1B,OAAO;AACL,qBAAa,KAAK,OAAO;AACzB,aAAK,KAAK,kBAAkB,MAAM;AAChC,eAAK,UAAU,WAAW,MAAM,MAAM,GAAG,EAAE;AAAA,QAC7C,CAAC;AAAA,MACH;AAAA,IACF;AACA,SAAK,UAAU,WAAW,MAAM,MAAM,CAAC;AAAA,EACzC;AACF;AACA,oBAAoB,YAAO,SAAS,4BAA4B,GAAG;AACjE,SAAO,KAAK,KAAK,qBAAwB,4BAAqB,UAAU,GAAM,4BAAqB,MAAM,CAAC;AAC5G;AACA,oBAAoB,YAAsB,gBAAG,4BAAkB;AAAA,EAC7D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC;AAAA,EAC1C,UAAU;AAAA,EACV,cAAc,SAAS,iCAAiC,IAAI,KAAK;AAC/D,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,WAAW,IAAI,SAAS;AAAA,IACzC;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qBAAqB,CAAC;AAAA,IAC5F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,eAAe;AAAA,IACxB,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAUH,IAAM,qBAAN,MAAyB;AAAA,EACvB,YAAY,SAAS;AACnB,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,YAAY,IAAI,aAAa;AAClC,SAAK,WAAW,IAAI,aAAa;AACjC,SAAK,UAAU,IAAI,aAAa;AAChC,SAAK,aAAa;AAClB,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA,EACA,YAAY,SAAS;AACnB,QAAI,QAAQ,iBAAiB,KAAK,QAAQ,iBAAiB,EAAE,gBAAgB,KAAK,UAAU,UAAU;AACpG,WAAK,YAAY,QAAQ,iBAAiB,EAAE,YAAY;AAAA,IAC1D;AAAA,EACF;AAAA,EACA,cAAc;AACZ,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EACA,UAAU,OAAO;AACf,QAAI,CAAC,KAAK,WAAY;AACtB,SAAK,aAAa;AAClB,SAAK,QAAQ,UAAU,OAAO,UAAU;AACxC,QAAI,KAAK,cAAc;AACrB,WAAK,qBAAqB;AAC1B,WAAK,QAAQ,KAAK;AAAA,QAChB;AAAA,QACA,SAAS,KAAK;AAAA,QACd,OAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,YAAY,OAAO;AAEjB,UAAM,YAAY,MAAM,OAAO,UAAU,SAAS,WAAW;AAC7D,QAAI,cAAc,KAAK,SAAS,KAAK,QAAQ;AAC3C,YAAM,eAAe;AACrB,WAAK,aAAa;AAClB,YAAM,eAAe;AAAA,QACnB,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,MACX;AACA,YAAM,UAAU,UAAU,UAAU,SAAS;AAC7C,WAAK,eAAe,QAAQ,UAAU,QAAM,KAAK,UAAU,EAAE,CAAC;AAC9D,YAAM,eAAe,UAAU,UAAU,WAAW,EAAE,KAAK,UAAU,OAAO,CAAC,EAAE,UAAU,QAAM,KAAK,KAAK,IAAI,YAAY,CAAC;AAC1H,WAAK,aAAa,IAAI,YAAY;AAClC,WAAK,UAAU,KAAK;AAAA,QAClB;AAAA,QACA,SAAS,KAAK;AAAA,QACd,OAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,KAAK,OAAO,cAAc;AACxB,QAAI,CAAC,KAAK,WAAY;AACtB,UAAM,IAAI,MAAM,UAAU,aAAa;AACvC,UAAM,IAAI,MAAM,UAAU,aAAa;AACvC,QAAI,KAAK,MAAO,MAAK,QAAQ,MAAM,OAAO,GAAG,CAAC;AAC9C,QAAI,KAAK,MAAO,MAAK,QAAQ,MAAM,MAAM,GAAG,CAAC;AAC7C,SAAK,QAAQ,UAAU,IAAI,UAAU;AACrC,SAAK,SAAS,KAAK;AAAA,MACjB;AAAA,MACA,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,uBAAuB;AACrB,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,YAAY;AAC9B,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AACF;AACA,mBAAmB,YAAO,SAAS,2BAA2B,GAAG;AAC/D,SAAO,KAAK,KAAK,oBAAuB,4BAAqB,UAAU,CAAC;AAC1E;AACA,mBAAmB,YAAsB,gBAAG,4BAAkB;AAAA,EAC5D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;AAAA,EACjC,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AAAA,EACA,UAAU,CAAI,8BAAoB;AACpC,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,oBAAoB,CAAC;AAAA,IAC3F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,sBAAN,MAA0B;AAAA,EACxB,YAAY,SAAS,UAAU;AAC7B,SAAK,WAAW;AAChB,SAAK,gBAAgB;AACrB,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,WAAW;AAChB,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA,EACA,kBAAkB;AAChB,UAAM,YAAY,KAAK;AACvB,SAAK,eAAe,UAAU,cAAc,MAAM;AAClD,QAAI,KAAK,eAAe;AACtB,gBAAU,SAAS,KAAK,cAAc,eAAe;AAAA,IACvD,OAAO;AACL,gBAAU,SAAS,KAAK,cAAc,8BAA8B;AAAA,IACtE;AACA,cAAU,YAAY,KAAK,SAAS,KAAK,YAAY;AAAA,EACvD;AAAA,EACA,cAAc;AACZ,SAAK,qBAAqB;AAC1B,QAAI,KAAK,SAAS,aAAa;AAC7B,WAAK,SAAS,YAAY,KAAK,YAAY;AAAA,IAC7C,WAAW,KAAK,cAAc;AAC5B,WAAK,SAAS,YAAY,KAAK,SAAS,WAAW,KAAK,YAAY,GAAG,KAAK,YAAY;AAAA,IAC1F;AAAA,EACF;AAAA,EACA,YAAY;AACV,SAAK,WAAW;AAChB,QAAI,KAAK,gBAAgB,CAAC,KAAK,aAAa,QAAQ;AAClD,WAAK,qBAAqB;AAC1B,WAAK,OAAO,KAAK,KAAK,QAAQ,WAAW;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,YAAY,OAAO;AACjB,UAAM,WAAW,MAAM,OAAO,UAAU,SAAS,eAAe;AAChE,UAAM,eAAe,KAAK,QAAQ;AAClC,UAAM,mBAAmB,MAAM;AAC/B,QAAI,UAAU;AACZ,YAAM,gBAAgB;AACtB,WAAK,WAAW;AAChB,YAAM,UAAU,UAAU,UAAU,SAAS;AAC7C,WAAK,eAAe,QAAQ,UAAU,QAAM,KAAK,UAAU,CAAC;AAC5D,YAAM,eAAe,UAAU,UAAU,WAAW,EAAE,KAAK,UAAU,OAAO,CAAC,EAAE,UAAU,OAAK,KAAK,KAAK,GAAG,cAAc,gBAAgB,CAAC;AAC1I,WAAK,aAAa,IAAI,YAAY;AAAA,IACpC;AAAA,EACF;AAAA,EACA,KAAK,OAAO,cAAc,kBAAkB;AAC1C,UAAM,YAAY,MAAM,UAAU;AAClC,UAAM,WAAW,eAAe;AAChC,UAAM,eAAe,CAAC,KAAK,YAAY,YAAY,KAAK;AACxD,UAAM,gBAAgB,CAAC,KAAK,YAAY,YAAY,KAAK;AACzD,QAAI,gBAAgB,eAAe;AACjC,WAAK,QAAQ,MAAM,QAAQ,GAAG,QAAQ;AAAA,IACxC;AAAA,EACF;AAAA,EACA,uBAAuB;AACrB,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,YAAY;AAC9B,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AACF;AACA,oBAAoB,YAAO,SAAS,4BAA4B,GAAG;AACjE,SAAO,KAAK,KAAK,qBAAwB,4BAAqB,UAAU,GAAM,4BAAqB,SAAS,CAAC;AAC/G;AACA,oBAAoB,YAAsB,gBAAG,4BAAkB;AAAA,EAC7D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;AAAA,EAClC,UAAU;AAAA,EACV,cAAc,SAAS,iCAAiC,IAAI,KAAK;AAC/D,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,aAAa,SAAS,iDAAiD,QAAQ;AAC3F,eAAO,IAAI,YAAY,MAAM;AAAA,MAC/B,CAAC;AAAA,IACH;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,cAAc,IAAI,aAAa;AAAA,IAChD;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,eAAe;AAAA,IACf,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,EACV;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qBAAqB,CAAC;AAAA,IAC5F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,sBAAsB;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAAA,IAChC,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,qBAAN,MAAyB;AAAA,EACvB,YAAY,SAASA,WAAU;AAC7B,SAAK,WAAWA;AAChB,SAAK,UAAU,IAAI,aAAa;AAChC,SAAK,gBAAgB,IAAI,aAAa;AACtC,SAAK,SAAS,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO;AAAA,EACxC;AAAA,EACA,qBAAqB;AAEnB,SAAK,oBAAoB;AACzB,SAAK,WAAW,QAAQ,UAAU,KAAK,oBAAoB,KAAK,IAAI,CAAC;AAAA,EACvE;AAAA,EACA,cAAc;AACZ,SAAK,WAAW,QAAQ,OAAK;AAC3B,QAAE,UAAU,YAAY;AACxB,QAAE,SAAS,YAAY;AACvB,QAAE,QAAQ,YAAY;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB;AACpB,UAAM,QAAQ,KAAK,OAAO,KAAK,KAAK,eAAe,CAAC;AACpD,QAAI,OAAO;AACT,YAAM,YAAY,CAAC;AAAA,QACjB;AAAA,QACA;AAAA,MACF,MAAM;AACJ,oBAAY;AAAA,UACV;AAAA,QACF,CAAC;AACD,YAAI,cAAc;AAChB,uBAAa,UAAU,UAAU,KAAK,YAAY,KAAK,IAAI,CAAC;AAC5D,uBAAa,SAAS,UAAU,KAAK,WAAW,KAAK,IAAI,CAAC;AAC1D,uBAAa,QAAQ,UAAU,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,QAC1D;AAAA,MACF;AACA,YAAM,cAAc,CAAC;AAAA,QACnB;AAAA,MACF,MAAM;AACJ,YAAI,eAAe;AACjB,wBAAc,UAAU,YAAY;AACpC,wBAAc,SAAS,YAAY;AACnC,wBAAc,QAAQ,YAAY;AAAA,QACpC;AAAA,MACF;AACA,YAAM,iBAAiB,SAAS;AAEhC,YAAM,mBAAmB,WAAW;AAAA,IACtC;AAAA,EACF;AAAA,EACA,cAAc;AACZ,SAAK,YAAY,CAAC;AAClB,QAAI,IAAI;AACR,eAAW,WAAW,KAAK,WAAW,QAAQ,GAAG;AAC/C,YAAM,MAAM,QAAQ;AACpB,YAAM,OAAO,SAAS,IAAI,WAAW,SAAS,GAAG,CAAC;AAClD,WAAK,UAAU,QAAQ,UAAU,IAAI,IAAI;AAAA,QACvC;AAAA,QACA,OAAO,OAAO,SAAS,IAAI,YAAY,SAAS,GAAG,CAAC;AAAA,QACpD,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,UAAU,KAAK,UAAU,MAAM,IAAI;AACzC,UAAM,SAAS,KAAK,SAAS,OAAO,KAAK;AACzC,QAAI,QAAQ;AACV,UAAI,KAAK,sBAAsB,OAAO,GAAG;AACvC,aAAK,cAAc,KAAK;AAAA,UACtB,WAAW,KAAK;AAAA,UAChB,UAAU,OAAO;AAAA,UACjB,cAAc,QAAQ;AAAA,QACxB,CAAC;AACD,aAAK,oBAAoB,OAAO;AAAA,MAClC;AAAA,IACF,WAAW,KAAK,sBAAsB,QAAQ,OAAO;AACnD,WAAK,cAAc,KAAK;AAAA,QACtB,WAAW,KAAK;AAAA,QAChB,cAAc,QAAQ;AAAA,MACxB,CAAC;AACD,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,UAAU,KAAK,UAAU,MAAM,IAAI;AACzC,UAAM,SAAS,KAAK,SAAS,OAAO,KAAK;AACzC,QAAI,QAAQ;AACV,WAAK,QAAQ,KAAK;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,UAAU,OAAO;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AACA,SAAK,oBAAoB;AACzB,YAAQ,MAAM,OAAO;AAAA,EACvB;AAAA,EACA,SAAS,OAAO,OAAO;AACrB,QAAI,IAAI;AACR,UAAM,IAAI,MAAM,KAAK,MAAM;AAC3B,UAAM,IAAI,MAAM,KAAK,MAAM;AAC3B,UAAM,UAAU,KAAK,SAAS,kBAAkB,GAAG,CAAC;AACpD,eAAW,QAAQ,KAAK,WAAW;AAEjC,YAAM,MAAM,KAAK,UAAU,IAAI;AAE/B,UAAI,MAAM,SAAS,QAAQ,QAAQ,KAAK,QAAM,OAAO,IAAI,OAAO,GAAG;AACjE,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,WAAW,QAAQ,EAAE,OAAO,CAAC,KAAK,SAAS;AACrD,UAAI,KAAK,UAAU,IAAI,IAAI;AAC3B,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;AACA,mBAAmB,YAAO,SAAS,2BAA2B,GAAG;AAC/D,SAAO,KAAK,KAAK,oBAAuB,4BAAqB,eAAe,GAAM,4BAAkB,QAAQ,CAAC;AAC/G;AACA,mBAAmB,YAAsB,gBAAG,4BAAkB;AAAA,EAC5D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;AAAA,EACjC,gBAAgB,SAAS,kCAAkC,IAAI,KAAK,UAAU;AAC5E,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,UAAU,oBAAoB,CAAC;AAAA,IACnD;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,aAAa;AAAA,IAChE;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,eAAe;AAAA,EACjB;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,oBAAoB,CAAC;AAAA,IAC3F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,QAAQ;AAAA,MACjB,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,oBAAoB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,qBAAN,MAAyB;AAAA,EACvB,cAAc;AACZ,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,SAAK,iBAAiB,IAAI,aAAa;AACvC,SAAK,eAAe,IAAI,aAAa;AACrC,SAAK,eAAe,IAAI,aAAa;AACrC,SAAK,SAAS;AACd,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,YAAY,OAAO;AAEjB,QAAI,MAAM,UAAU,KAAK,CAAC,KAAK,aAAc;AAE7C,UAAM,SAAS,MAAM;AACrB,QAAI,OAAO,UAAU,SAAS,eAAe,EAAG;AAChD,SAAK,SAAS,MAAM;AACpB,SAAK,SAAS,MAAM;AACpB,SAAK,WAAW;AAChB,SAAK,iBAAiB;AACtB,UAAM,UAAU,UAAU,UAAU,SAAS;AAC7C,SAAK,eAAe,QAAQ,UAAU,QAAM,KAAK,UAAU,CAAC;AAC5D,SAAK,UAAU,WAAW,MAAM;AAC9B,WAAK,iBAAiB;AACtB,WAAK,eAAe,KAAK;AAAA,QACvB;AAAA,QACA,OAAO,KAAK;AAAA,MACd,CAAC;AACD,WAAK,aAAa,IAAI,UAAU,UAAU,WAAW,EAAE,KAAK,UAAU,OAAO,CAAC,EAAE,UAAU,gBAAc,KAAK,YAAY,UAAU,CAAC,CAAC;AACrI,WAAK,KAAK,KAAK;AAAA,IACjB,GAAG,KAAK,QAAQ;AAChB,SAAK,KAAK,KAAK;AAAA,EACjB;AAAA,EACA,YAAY,OAAO;AACjB,QAAI,KAAK,YAAY,CAAC,KAAK,gBAAgB;AACzC,YAAM,SAAS,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,IAAI;AACvD,YAAM,SAAS,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,IAAI;AACvD,UAAI,UAAU,QAAQ;AACpB,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,KAAK,OAAO;AACV,QAAI,KAAK,gBAAgB;AACvB,WAAK,UAAU,WAAW,MAAM;AAC9B,aAAK,aAAa,KAAK;AAAA,UACrB;AAAA,UACA,OAAO,KAAK;AAAA,QACd,CAAC;AACD,aAAK,KAAK,KAAK;AAAA,MACjB,GAAG,EAAE;AAAA,IACP;AAAA,EACF;AAAA,EACA,WAAW;AACT,iBAAa,KAAK,OAAO;AACzB,SAAK,iBAAiB;AACtB,SAAK,WAAW;AAChB,SAAK,qBAAqB;AAC1B,SAAK,aAAa,KAAK;AAAA,MACrB,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,YAAY;AACV,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,cAAc;AACZ,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EACA,uBAAuB;AACrB,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,YAAY;AAC9B,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AACF;AACA,mBAAmB,YAAO,SAAS,2BAA2B,GAAG;AAC/D,SAAO,KAAK,KAAK,oBAAoB;AACvC;AACA,mBAAmB,YAAsB,gBAAG,4BAAkB;AAAA,EAC5D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;AAAA,EAClC,UAAU;AAAA,EACV,cAAc,SAAS,gCAAgC,IAAI,KAAK;AAC9D,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,aAAa,SAAS,gDAAgD,QAAQ;AAC1F,eAAO,IAAI,YAAY,MAAM;AAAA,MAC/B,CAAC;AAAA,IACH;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,SAAS,IAAI,KAAK,EAAE,aAAa,IAAI,WAAW;AAAA,IACjE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,oBAAoB,CAAC;AAAA,IAC3F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC,aAAa;AAAA,IACtB,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAAA,IAChC,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,oBAAN,MAAwB;AAAA,EACtB,YAAY,QAAQ,SAAS,UAAU;AACrC,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,iBAAiB;AACtB,SAAK,iBAAiB;AACtB,SAAK,uBAAuB;AAC5B,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA,EACA,WAAW;AAET,QAAI,KAAK,cAAc,KAAK,YAAY;AACtC,YAAM,WAAW,KAAK;AACtB,WAAK,gBAAgB,SAAS,WAAW,SAAS,WAAW,KAAK,OAAO,CAAC;AAC1E,WAAK,uBAAuB,KAAK,WAAW,KAAK,IAAI;AACrD,WAAK,cAAc,iBAAiB,UAAU,KAAK,oBAAoB;AAAA,IACzE;AAAA,EACF;AAAA,EACA,cAAc;AACZ,QAAI,KAAK,sBAAsB;AAC7B,WAAK,cAAc,oBAAoB,UAAU,KAAK,oBAAoB;AAC1E,WAAK,uBAAuB;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,UAAU,SAAS;AACjB,QAAI,KAAK,eAAe;AACtB,WAAK,cAAc,YAAY;AAAA,IACjC;AAAA,EACF;AAAA,EACA,WAAW,OAAO;AAChB,UAAM,MAAM,MAAM;AAClB,0BAAsB,MAAM;AAC1B,WAAK,aAAa,IAAI;AACtB,WAAK,aAAa,IAAI;AACtB,WAAK,aAAa;AAAA,IACpB,CAAC;AAAA,EACH;AAAA,EACA,eAAe;AACb,QAAI;AACJ,QAAI,KAAK,aAAa,KAAK,gBAAgB;AACzC,kBAAY;AAAA,IACd,WAAW,KAAK,aAAa,KAAK,gBAAgB;AAChD,kBAAY;AAAA,IACd;AACA,SAAK,OAAO,KAAK;AAAA,MACf;AAAA,MACA,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,IACnB,CAAC;AACD,SAAK,iBAAiB,KAAK;AAC3B,SAAK,iBAAiB,KAAK;AAAA,EAC7B;AACF;AACA,kBAAkB,YAAO,SAAS,0BAA0B,GAAG;AAC7D,SAAO,KAAK,KAAK,mBAAsB,4BAAqB,MAAM,GAAM,4BAAqB,UAAU,GAAM,4BAAqB,SAAS,CAAC;AAC9I;AACA,kBAAkB,YAAsB,gBAAG,4BAAkB;AAAA,EAC3D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,oBAAoB,CAAC;AAAA,EAClC,WAAW,CAAC,GAAG,kBAAkB;AAAA,EACjC,UAAU;AAAA,EACV,cAAc,SAAS,+BAA+B,IAAI,KAAK;AAC7D,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,UAAU,IAAI,cAAc,IAAI,EAAE,SAAS,IAAI,aAAa,IAAI;AAAA,IACjF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,aAAa;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU,SAAS,2BAA2B,IAAI,KAAK;AACrD,QAAI,KAAK,GAAG;AACV,MAAG,0BAAgB;AACnB,MAAG,uBAAa,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,mBAAmB,CAAC;AAAA,IAC1F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,GAAG;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,IACzB,GAAG;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,wCAAN,MAA4C;AAAA,EAC1C,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AACF;AACA,sCAAsC,YAAO,SAAS,8CAA8C,GAAG;AACrG,SAAO,KAAK,KAAK,uCAA0C,4BAAqB,WAAW,CAAC;AAC9F;AACA,sCAAsC,YAAsB,gBAAG,4BAAkB;AAAA,EAC/E,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,uCAAuC,EAAE,CAAC;AAC7D,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,uCAAuC,CAAC;AAAA,IAC9G,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AACH,IAAM,gCAAN,MAAoC;AAAA,EAClC,cAAc;AAIZ,SAAK,YAAY;AAIjB,SAAK,SAAS,IAAI,aAAa;AAAA,EACjC;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,kBAAkB,KAAK;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB,OAAO;AACvB,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB;AAChB,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB;AAClB,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AACA,8BAA8B,YAAO,SAAS,sCAAsC,GAAG;AACrF,SAAO,KAAK,KAAK,+BAA+B;AAClD;AACA,8BAA8B,YAAsB,gBAAG,4BAAkB;AAAA,EACvE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,4BAA4B,CAAC;AAAA,EAC1C,gBAAgB,SAAS,6CAA6C,IAAI,KAAK,UAAU;AACvF,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,UAAU,uCAAuC,GAAG,WAAW;AAAA,IACnF;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,iBAAiB,GAAG;AAAA,IACvE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,gBAAgB,CAAC,GAAG,YAAY,gBAAgB;AAAA,EAClD;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,EACV;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,+BAA+B,CAAC;AAAA,IACtG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,UAAU;AAAA,IACnB,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,uCAAuC;AAAA,QAC5C,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAKH,SAAS,oBAAoB;AAC3B,SAAO;AACT;AAKA,SAAS,cAAc,MAAM;AAC3B,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACT,OAAO;AAEL,QAAI,KAAK,QAAQ,GAAG,MAAM,IAAI;AAC5B,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAOA,SAAS,mBAAmB,KAAK,OAAO;AACtC,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,OAAO,SAAS,MAAM;AACzB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,IAAI,KAAK;AACvB,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAOA,SAAS,mBAAmB,KAAK,WAAW;AAC1C,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AACA,MAAI,CAAC,OAAO,CAAC,WAAW;AACtB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,IAAI,SAAS;AAC3B,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAIA,SAAS,gBAAgB,KAAK,MAAM;AAClC,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AACA,MAAI,CAAC,OAAO,CAAC,MAAM;AACjB,WAAO;AAAA,EACT;AAGA,MAAI,UAAU,IAAI,IAAI;AACtB,MAAI,YAAY,QAAW;AACzB,WAAO;AAAA,EACT;AACA,YAAU;AACV,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,MAAM,QAAQ;AAChB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,gBAAU,QAAQ,MAAM,CAAC,CAAC;AAE1B,UAAI,YAAY,UAAa,YAAY,MAAM;AAC7C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,sBAAsB,MAAM;AACnC,SAAO,SAAS,SAAO,cAAc,IAAI,EAAE,KAAK,IAAI;AACtD;AAqCA,SAAS,mBAAmB,MAAM,MAAM,IAAI;AAC1C,MAAI,QAAQ,IAAI;AACd,UAAM,WAAW,CAAC;AAClB,UAAM,IAAI,KAAK;AACf,QAAI,OAAO;AACX,aAAS,CAAC,IAAI,IAAI,SAAS;AAC3B,UAAM,UAAU,KAAK,OAAO,CAAC,KAAK,SAAS;AACzC,YAAM,UAAU,GAAG,IAAI;AACvB,UAAI,IAAI,QAAQ,OAAO,MAAM,IAAI;AAC/B,YAAI,KAAK,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAE1B,eAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC;AAAA,IAC9C;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAE1B,aAAO,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;AAC3B,UAAI,SAAS;AACb,YAAM,YAAY,KAAK,KAAK,GAAG;AAC/B,UAAI,CAAC,CAAC,aAAa,QAAQ,QAAQ,SAAS,IAAI,IAAI;AAClD,iBAAS;AAAA,MACX;AACA,WAAK,SAAS,SAAS,MAAM;AAC7B,WAAK,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI;AAC/C,WAAK,OAAO,SAAS,KAAK,IAAI;AAAA,IAChC;AACA,QAAI,eAAe,CAAC;AACpB,aAAS,CAAC,EAAE,QAAQ,WAAY;AAC9B,qBAAe,CAAC,GAAG,cAAc,KAAK,GAAG;AAAA,IAC3C,GAAG,IAAI;AACP,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,IAAM,WAAN,MAAe;AAAA,EACb,YAAY,MAAM,MAAM;AACtB,QAAI,CAAC,KAAK;AACR,YAAM;AAAA,QACJ,OAAO;AAAA,QACP,YAAY;AAAA,MACd;AAAA,IACF;AACA,SAAK,MAAM;AACX,SAAK,SAAS;AACd,SAAK,WAAW,CAAC;AAAA,EACnB;AAAA,EACA,QAAQ,GAAG,WAAW;AACpB,QAAI,KAAK,IAAI,YAAY,MAAM,YAAY;AACzC,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,IAAI,GAAG,KAAK;AACpD,cAAM,QAAQ,KAAK,SAAS,CAAC;AAC7B,UAAE,MAAM,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,CAAC;AACvD,YAAI,UAAW,OAAM,QAAQ,MAAM,OAAO,SAAS;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AACF;AAMA,SAAS,UAAU,KAAK;AAEtB,QAAM,IAAI,QAAQ,kBAAkB,GAAG;AAEvC,QAAM,IAAI,QAAQ,qBAAqB,KAAK;AAE5C,QAAM,IAAI,QAAQ,4BAA4B,EAAE,EAAE,KAAK,EAAE,YAAY;AAErE,QAAM,IAAI,QAAQ,wBAAwB,SAAU,GAAG,GAAG,GAAG;AAC3D,WAAO,EAAE,KAAK,IAAI,EAAE,YAAY;AAAA,EAClC,CAAC;AACD,SAAO;AACT;AAKA,SAAS,YAAY,KAAK;AACxB,SAAO,IAAI,QAAQ,YAAY,WAAS,IAAI,KAAK,EAAE,EAAE,QAAQ,MAAM,WAAS,MAAM,YAAY,CAAC;AACjG;AAMA,SAAS,KAAK;AACZ,UAAQ,UAAU,KAAK,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE,GAAG,MAAM,EAAE;AAChF;AAKA,SAAS,kBAAkB,SAAS;AAClC,MAAI,CAAC,QAAS;AAId,MAAI,kBAAkB;AACtB,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC,OAAO,MAAM;AAChB,aAAO,OAAO,GAAG;AAAA,IACnB;AAGA,QAAI,kBAAkB,OAAO,IAAI,KAAK,OAAO,MAAM;AACjD,aAAO,OAAO,UAAU,OAAO,IAAI;AAAA,IACrC;AACA,QAAI,CAAC,OAAO,eAAe;AACzB,aAAO,gBAAgB,cAAc,OAAO,IAAI;AAAA,IAClD;AAEA,QAAI,CAAC,kBAAkB,OAAO,IAAI,KAAK,kBAAkB,OAAO,IAAI,GAAG;AACrE,aAAO,OAAO,YAAY,OAAO,OAAO,IAAI,CAAC;AAAA,IAC/C;AACA,QAAI,kBAAkB,OAAO,IAAI,KAAK,kBAAkB,OAAO,IAAI,GAAG;AACpE,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,CAAC,OAAO,eAAe,YAAY,GAAG;AACxC,aAAO,aAAa;AAAA,IACtB;AACA,QAAI,CAAC,OAAO,eAAe,UAAU,GAAG;AACtC,aAAO,WAAW;AAAA,IACpB;AACA,QAAI,CAAC,OAAO,eAAe,WAAW,GAAG;AACvC,aAAO,YAAY;AAAA,IACrB;AACA,QAAI,CAAC,OAAO,eAAe,eAAe,GAAG;AAC3C,aAAO,gBAAgB;AAAA,IACzB;AACA,QAAI,CAAC,OAAO,eAAe,OAAO,GAAG;AACnC,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,CAAC,OAAO,eAAe,cAAc,GAAG;AAC1C,aAAO,eAAe;AAAA,IACxB,OAAO;AACL,UAAI,OAAO,gBAAgB,CAAC,iBAAiB;AAG3C,0BAAkB;AAAA,MACpB,OAAO;AAGL,eAAO,eAAe;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AACA,SAAS,kBAAkB,OAAO;AAChC,SAAO,UAAU,QAAQ,UAAU;AACrC;AAIA,SAAS,mBAAmB,WAAW;AACrC,QAAM,SAAS,CAAC;AAChB,aAAW,QAAQ,WAAW;AAC5B,UAAM,MAAM,CAAC;AACb,UAAM,QAAQ,OAAO,oBAAoB,IAAI;AAC7C,eAAW,QAAQ,OAAO;AACxB,UAAI,IAAI,IAAI,KAAK,IAAI;AAAA,IACvB;AACA,QAAI,KAAK,gBAAgB;AACvB,UAAI,iBAAiB,KAAK;AAAA,IAC5B;AACA,QAAI,KAAK,cAAc;AACrB,UAAI,eAAe,KAAK;AAAA,IAC1B;AACA,QAAI,KAAK,aAAa;AACpB,UAAI,cAAc,KAAK;AAAA,IACzB;AACA,QAAI,KAAK,iBAAiB;AACxB,UAAI,kBAAkB,KAAK;AAAA,IAC7B;AACA,WAAO,KAAK,GAAG;AAAA,EACjB;AACA,SAAO;AACT;AACA,IAAI;AAAA,CACH,SAAUC,aAAY;AACrB,EAAAA,YAAW,UAAU,IAAI;AACzB,EAAAA,YAAW,MAAM,IAAI;AACrB,EAAAA,YAAW,OAAO,IAAI;AACxB,GAAG,eAAe,aAAa,CAAC,EAAE;AAClC,IAAI;AAAA,CACH,SAAUC,gBAAe;AACxB,EAAAA,eAAc,QAAQ,IAAI;AAC1B,EAAAA,eAAc,OAAO,IAAI;AACzB,EAAAA,eAAc,YAAY,IAAI;AAC9B,EAAAA,eAAc,MAAM,IAAI;AACxB,EAAAA,eAAc,UAAU,IAAI;AAC9B,GAAG,kBAAkB,gBAAgB,CAAC,EAAE;AACxC,IAAI;AAAA,CACH,SAAUC,WAAU;AACnB,EAAAA,UAAS,QAAQ,IAAI;AACrB,EAAAA,UAAS,OAAO,IAAI;AACtB,GAAG,aAAa,WAAW,CAAC,EAAE;AAC9B,IAAI;AAAA,CACH,SAAUC,kBAAiB;AAC1B,EAAAA,iBAAgB,QAAQ,IAAI;AAC5B,EAAAA,iBAAgB,MAAM,IAAI;AAC5B,GAAG,oBAAoB,kBAAkB,CAAC,EAAE;AAC5C,IAAM,iCAAN,MAAqC;AAAA,EACnC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AACF;AACA,+BAA+B,YAAO,SAAS,uCAAuC,GAAG;AACvF,SAAO,KAAK,KAAK,gCAAmC,4BAAqB,WAAW,CAAC;AACvF;AACA,+BAA+B,YAAsB,gBAAG,4BAAkB;AAAA,EACxE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,iCAAiC,EAAE,CAAC;AACvD,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,gCAAgC,CAAC;AAAA,IACvG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AACH,IAAM,+BAAN,MAAmC;AAAA,EACjC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AACF;AACA,6BAA6B,YAAO,SAAS,qCAAqC,GAAG;AACnF,SAAO,KAAK,KAAK,8BAAiC,4BAAqB,WAAW,CAAC;AACrF;AACA,6BAA6B,YAAsB,gBAAG,4BAAkB;AAAA,EACtE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,+BAA+B,EAAE,CAAC;AACrD,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,8BAA8B,CAAC;AAAA,IACrG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AACH,IAAM,gCAAN,MAAoC;AAAA,EAClC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AACF;AACA,8BAA8B,YAAO,SAAS,sCAAsC,GAAG;AACrF,SAAO,KAAK,KAAK,+BAAkC,4BAAqB,WAAW,CAAC;AACtF;AACA,8BAA8B,YAAsB,gBAAG,4BAAkB;AAAA,EACvE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,6BAA6B,EAAE,CAAC;AACnD,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,+BAA+B,CAAC;AAAA,IACtG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AACH,IAAM,2BAAN,MAA+B;AAAA,EAC7B,YAAY,sBAAsB;AAChC,SAAK,uBAAuB;AAC5B,SAAK,gBAAgB;AAAA,EACvB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,sBAAsB,KAAK;AAAA,EACzC;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO,KAAK,wBAAwB,KAAK;AAAA,EAC3C;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK,4BAA4B,KAAK;AAAA,EAC/C;AAAA,EACA,cAAc;AACZ,QAAI,KAAK,eAAe;AACtB,WAAK,gBAAgB;AAAA,IACvB,OAAO;AACL,WAAK,qBAAqB,cAAc;AAAA,IAC1C;AAAA,EACF;AACF;AACA,yBAAyB,YAAO,SAAS,iCAAiC,GAAG;AAC3E,SAAO,KAAK,KAAK,0BAA6B,4BAAkB,oBAAoB,CAAC;AACvF;AACA,yBAAyB,YAAsB,gBAAG,4BAAkB;AAAA,EAClE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,sBAAsB,CAAC;AAAA,EACpC,gBAAgB,SAAS,wCAAwC,IAAI,KAAK,UAAU;AAClF,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,UAAU,8BAA8B,GAAG,WAAW;AACxE,MAAG,yBAAe,UAAU,gCAAgC,GAAG,WAAW;AAC1E,MAAG,yBAAe,UAAU,+BAA+B,GAAG,WAAW;AAAA,IAC3E;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,qBAAqB,GAAG;AACzE,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,uBAAuB,GAAG;AAC3E,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,2BAA2B,GAAG;AAAA,IACjF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,UAAU;AAAA,IACV,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,WAAW;AAAA,IACX,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,oBAAoB,CAAC,GAAG,gBAAgB,oBAAoB;AAAA,IAC5D,sBAAsB,CAAC,GAAG,kBAAkB,sBAAsB;AAAA,IAClE,0BAA0B,CAAC,GAAG,sBAAsB,0BAA0B;AAAA,EAChF;AAAA,EACA,UAAU,CAAI,8BAAoB;AACpC,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,0BAA0B,CAAC;AAAA,IACjG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,EACH,GAAG;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,MACN,MAAM,CAAC,cAAc;AAAA,IACvB,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,MACN,MAAM,CAAC,8BAA8B;AAAA,QACnC,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,IACD,sBAAsB,CAAC;AAAA,MACrB,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,IACzB,CAAC;AAAA,IACD,sBAAsB,CAAC;AAAA,MACrB,MAAM;AAAA,MACN,MAAM,CAAC,gCAAgC;AAAA,QACrC,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,IACD,0BAA0B,CAAC;AAAA,MACzB,MAAM;AAAA,MACN,MAAM,CAAC,oBAAoB;AAAA,IAC7B,CAAC;AAAA,IACD,0BAA0B,CAAC;AAAA,MACzB,MAAM;AAAA,MACN,MAAM,CAAC,+BAA+B;AAAA,QACpC,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,sCAAN,MAA0C;AAAA,EACxC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AACF;AACA,oCAAoC,YAAO,SAAS,4CAA4C,GAAG;AACjG,SAAO,KAAK,KAAK,qCAAwC,4BAAqB,WAAW,CAAC;AAC5F;AACA,oCAAoC,YAAsB,gBAAG,4BAAkB;AAAA,EAC7E,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,qCAAqC,EAAE,CAAC;AAC3D,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qCAAqC,CAAC;AAAA,IAC5G,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG,IAAI;AACT,GAAG;AACH,IAAM,8BAAN,MAAkC;AAAA,EAChC,cAAc;AAKZ,SAAK,YAAY;AAIjB,SAAK,SAAS,IAAI,aAAa;AAAA,EACjC;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,kBAAkB,KAAK;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,KAAK;AACnB,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB;AACd,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB;AAChB,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AACA,4BAA4B,YAAO,SAAS,oCAAoC,GAAG;AACjF,SAAO,KAAK,KAAK,6BAA6B;AAChD;AACA,4BAA4B,YAAsB,gBAAG,4BAAkB;AAAA,EACrE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,0BAA0B,CAAC;AAAA,EACxC,gBAAgB,SAAS,2CAA2C,IAAI,KAAK,UAAU;AACrF,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,UAAU,qCAAqC,GAAG,WAAW;AAAA,IACjF;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,iBAAiB,GAAG;AAAA,IACvE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,gBAAgB,CAAC,GAAG,YAAY,gBAAgB;AAAA,EAClD;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,EACV;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,6BAA6B,CAAC;AAAA,IACpG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,UAAU;AAAA,IACnB,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,qCAAqC;AAAA,QAC1C,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,2BAAN,MAA+B;AAAA,EAC7B,IAAI,WAAW;AACb,WAAO,KAAK,kBAAkB,KAAK;AAAA,EACrC;AACF;AACA,yBAAyB,YAAO,SAAS,iCAAiC,GAAG;AAC3E,SAAO,KAAK,KAAK,0BAA0B;AAC7C;AACA,yBAAyB,YAAsB,gBAAG,4BAAkB;AAAA,EAClE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,sBAAsB,CAAC;AAAA,EACpC,gBAAgB,SAAS,wCAAwC,IAAI,KAAK,UAAU;AAClF,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,UAAU,kCAAkC,GAAG,WAAW;AAAA,IAC9E;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,iBAAiB,GAAG;AAAA,IACvE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,IACd,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,gBAAgB,CAAC,GAAG,YAAY,gBAAgB;AAAA,EAClD;AACF,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,0BAA0B,CAAC;AAAA,IACjG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,UAAU;AAAA,IACnB,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,kCAAkC;AAAA,QACvC,MAAM;AAAA,MACR,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAKH,SAAS,aAAa,MAAM;AAC1B,QAAM,MAAM;AAAA,IACV,MAAM,CAAC;AAAA,IACP,QAAQ,CAAC;AAAA,IACT,OAAO,CAAC;AAAA,EACV;AACA,MAAI,MAAM;AACR,eAAW,OAAO,MAAM;AACtB,UAAI,IAAI,YAAY;AAClB,YAAI,KAAK,KAAK,GAAG;AAAA,MACnB,WAAW,IAAI,aAAa;AAC1B,YAAI,MAAM,KAAK,GAAG;AAAA,MACpB,OAAO;AACL,YAAI,OAAO,KAAK,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAIA,SAAS,kBAAkB,QAAQ,KAAK;AACtC,SAAO;AAAA,IACL,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAClC,QAAQ,iBAAiB,OAAO,MAAM;AAAA,IACtC,OAAO,iBAAiB,OAAO,KAAK;AAAA,IACpC,OAAO,KAAK,MAAM,iBAAiB,GAAG,CAAC;AAAA,EACzC;AACF;AAIA,SAAS,iBAAiB,SAAS,MAAM;AACvC,MAAI,aAAa;AACjB,MAAI,SAAS;AACX,eAAW,KAAK,SAAS;AACvB,YAAM,MAAM,QAAQ,EAAE,IAAI;AAC1B,YAAM,QAAQ,MAAM,EAAE,IAAI,IAAI,EAAE;AAChC,mBAAa,aAAa,WAAW,KAAK;AAAA,IAC5C;AAAA,EACF;AACA,SAAO;AACT;AAIA,SAAS,kBAAkB,SAAS,MAAM;AACxC,MAAI,aAAa;AACjB,aAAW,UAAU,SAAS;AAC5B,UAAM,MAAM,QAAQ,OAAO,IAAI;AAC/B,iBAAa,cAAc,MAAM,OAAO,IAAI,IAAI,OAAO;AAAA,EACzD;AACA,SAAO;AACT;AACA,SAAS,gBAAgB,KAAK;AAC5B,QAAM,eAAe,CAAC;AACtB,QAAM,YAAY,aAAa,GAAG;AAClC,eAAa,KAAK;AAAA,IAChB,MAAM;AAAA,IACN,SAAS,UAAU,MAAM;AAAA,EAC3B,CAAC;AACD,eAAa,KAAK;AAAA,IAChB,MAAM;AAAA,IACN,SAAS,UAAU,QAAQ;AAAA,EAC7B,CAAC;AACD,eAAa,KAAK;AAAA,IAChB,MAAM;AAAA,IACN,SAAS,UAAU,OAAO;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;AAWA,IAAM,iBAAN,MAAqB;AAAA,EACnB,cAAc;AAMZ,SAAK,YAAY,CAAC;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,SAAK,YAAY,CAAC;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAU,SAAS;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,OAAO,OAAO,cAAc;AAClC,UAAM,aAAa,OAAO,oBAAoB;AAC9C,QAAI,CAAC,QAAQ,MAAM,SAAS,GAAG;AAC7B,YAAM,IAAI,MAAM;AAAA,2CACqB,SAAS,iCAAiC;AAAA,IACjF;AAEA,QAAI,CAAC,cAAc,MAAM,eAAe,GAAG;AACzC,YAAM,IAAI,MAAM;AAAA,2CACqB,eAAe,iCAAiC;AAAA,IACvF;AACA,UAAM,IAAI,kBAAkB,WAAW,KAAK;AAC5C,SAAK,YAAY,IAAI,MAAM,CAAC;AAC5B,aAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,WAAK,UAAU,CAAC,IAAI;AAAA,IACtB;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,YAAM,MAAM,KAAK,CAAC;AAClB,UAAI,mBAAmB;AACvB,UAAI,MAAM;AACR,2BAAmB,UAAU,GAAG;AAAA,MAClC;AAGA,YAAM,WAAW,cAAc,IAAI,GAAG;AACtC,UAAI,OAAO,UAAU;AACnB,YAAI,YAAY;AACd,gBAAM,QAAQ,WAAW,IAAI,GAAG;AAChC,8BAAoB,gBAAgB,KAAK,KAAK;AAAA,QAChD,OAAO;AACL,8BAAoB;AAAA,QACtB;AAAA,MACF;AACA,WAAK,OAAO,GAAG,gBAAgB;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,SAAS;AACnB,QAAI,YAAY,EAAG,QAAO;AAC1B,WAAO,KAAK,aAAa,OAAO;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,YAAY,aAAa;AAC9B,QAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,YAAM,IAAI,MAAM,mBAAmB,UAAU,eAAe,WAAW;AAAA,0CACnC;AAAA,IACtC;AACA,UAAM,IAAI,KAAK,UAAU;AACzB,kBAAc;AACd,WAAO,aAAa,GAAG;AACrB,WAAK,UAAU,UAAU,KAAK;AAC9B,oBAAc,aAAa;AAAA,IAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,SAAS;AACb,QAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,YAAM,IAAI,MAAM,kBAAkB,OAAO,8CAA8C;AAAA,IACzF;AACA,QAAI,MAAM;AACV,eAAW;AACX,WAAO,WAAW,GAAG;AACnB,aAAO,KAAK,UAAU,OAAO;AAC7B,iBAAW,UAAU,UAAU,KAAK;AAAA,IACtC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,UAAU,UAAU;AAC/B,WAAO,KAAK,MAAM,QAAQ,IAAI,KAAK,MAAM,WAAW,CAAC;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,KAAK;AAChB,QAAI,CAAC,KAAK,UAAU,OAAQ,QAAO;AACnC,QAAI,MAAM;AACV,UAAM,aAAa,KAAK,UAAU;AAElC,UAAM,aAAa,KAAK,IAAI,GAAG,WAAW,SAAS,CAAC,EAAE,SAAS,CAAC;AAChE,aAAS,YAAY,YAAY,cAAc,GAAG,cAAc,GAAG;AACjE,YAAM,UAAU,MAAM;AACtB,UAAI,UAAU,cAAc,OAAO,KAAK,UAAU,OAAO,GAAG;AAC1D,eAAO,KAAK,UAAU,OAAO;AAC7B,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO,MAAM;AAAA,EACf;AACF;AACA,IAAM,QAAQ,CAAC;AACf,IAAM,YAAY,OAAO,aAAa,cAAc,SAAS,cAAc,KAAK,EAAE,QAAQ;AAG1F,IAAM,SAAS,WAAY;AACzB,QAAM,SAAS,OAAO,WAAW,cAAc,OAAO,iBAAiB,SAAS,iBAAiB,EAAE,IAAI;AACvG,QAAM,QAAQ,OAAO,WAAW,cAAc,MAAM,UAAU,MAAM,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,mBAAmB,IAAI;AACvH,QAAM,MAAM,UAAU,OAAO,MAAM,CAAC,IAAI;AAExC,QAAM,MAAM,OAAO,QAAQ,cAAc,kBAAkB,MAAM,IAAI,OAAO,MAAM,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI;AACxG,SAAO,MAAM;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,KAAK,IAAI,GAAG;AAAA,IACZ,IAAI,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,OAAO,CAAC;AAAA,EACzC,IAAI;AACN,EAAE;AACF,SAAS,sBAAsB,UAAU;AACvC,QAAM,OAAO,UAAU,QAAQ;AAC/B,MAAI,CAAC,MAAM,IAAI,GAAG;AAChB,QAAI,WAAW,UAAa,UAAU,OAAO,MAAM,QAAQ,MAAM,QAAW;AAC1E,YAAM,IAAI,IAAI,OAAO,MAAM;AAAA,IAC7B,WAAW,UAAU,QAAQ,MAAM,QAAW;AAC5C,YAAM,IAAI,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO,MAAM,IAAI;AACnB;AAGA,IAAM,YAAY,OAAO,WAAW,cAAc,sBAAsB,WAAW,IAAI;AACvF,IAAM,qBAAqB,OAAO,WAAW,cAAc,sBAAsB,oBAAoB,IAAI;AACzG,IAAM,mBAAmB,OAAO,WAAW,cAAc,CAAC,CAAC,sBAAsB,WAAW,IAAI;AAChG,IAAM,qBAAqB,OAAO,WAAW,cAAc,CAAC,CAAC,sBAAsB,aAAa,IAAI;AACpG,IAAM,KAAK,OAAO,WAAW,cAAc,OAAO,UAAU,YAAY;AACxE,IAAM,WAAW,WAAW,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,EAAE;AAC3D,SAAS,YAAY,QAAQ,GAAG,GAAG;AACjC,MAAI,OAAO,cAAc,eAAe,kBAAkB;AACxD,QAAI,CAAC,YAAY,oBAAoB;AACnC,aAAO,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC;AAC5C,aAAO,kBAAkB,IAAI;AAAA,IAC/B,OAAO;AACL,aAAO,UAAU,SAAS,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;AAAA,IACvD;AAAA,EACF,OAAO;AACL,WAAO,MAAM,GAAG,CAAC;AACjB,WAAO,OAAO,GAAG,CAAC;AAAA,EACpB;AACF;AACA,IAAM,uBAAN,MAA2B;AAAC;AAC5B,qBAAqB,YAAO,SAAS,6BAA6B,GAAG;AACnE,SAAO,KAAK,KAAK,sBAAsB;AACzC;AACA,qBAAqB,YAAsB,gBAAG,4BAAkB;AAAA,EAC9D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,oBAAoB,CAAC;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,QAAQ,eAAe,GAAG,iBAAiB,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC;AAAA,EACpF,UAAU,SAAS,8BAA8B,IAAI,KAAK;AACxD,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC;AAC1C,MAAG,oBAAU,GAAG,OAAO,CAAC;AACxB,MAAG,uBAAa,EAAE;AAAA,IACpB;AAAA,EACF;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,sBAAsB,CAAC;AAAA,IAC7F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOV,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,SAAS,WAAW,UAAU,KAAK,WAAW;AAC5C,QAAM,gBAAgB,UAAU,KAAK,QAAQ;AAC7C,MAAI,gBAAgB,IAAI;AACtB,aAAS,OAAO,eAAe,CAAC;AAAA,EAClC,OAAO;AACL,aAAS,KAAK,GAAG;AAAA,EACnB;AACA,SAAO;AACT;AACA,SAAS,kBAAkB,UAAU,MAAM,OAAO,WAAW,WAAW;AACtE,QAAM,UAAU,QAAQ;AACxB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,MAAM,KAAK,CAAC;AAClB,UAAM,UAAU,KAAK,aAAa,KAAK;AACvC,UAAM,SAAS,KAAK,aAAa,KAAK;AACtC,QAAI,QAAQ;AAAA,MACV,OAAO;AAAA,MACP,KAAK;AAAA,IACP;AACA,QAAI,SAAS;AACX,cAAQ;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,MACP;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,QACN,OAAO;AAAA,QACP,KAAK,QAAQ;AAAA,MACf;AAAA,IACF;AACA,QAAI,WAAW,UAAU,CAAC,WAAW,SAAS;AAG5C,UAAI,KAAK,MAAM,SAAS,KAAK,MAAM,KAAK;AACtC,iBAAS,KAAK,GAAG;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,IAAI;AAAA,CACH,SAAUC,OAAM;AACf,EAAAA,MAAKA,MAAK,IAAI,IAAI,EAAE,IAAI;AACxB,EAAAA,MAAKA,MAAK,MAAM,IAAI,EAAE,IAAI;AAC1B,EAAAA,MAAKA,MAAK,QAAQ,IAAI,EAAE,IAAI;AAC5B,EAAAA,MAAKA,MAAK,QAAQ,IAAI,EAAE,IAAI;AAC5B,EAAAA,MAAKA,MAAK,MAAM,IAAI,EAAE,IAAI;AAC1B,EAAAA,MAAKA,MAAK,OAAO,IAAI,EAAE,IAAI;AAC7B,GAAG,SAAS,OAAO,CAAC,EAAE;AACtB,IAAM,8BAAN,MAAkC;AAAA,EAChC,cAAc;AACZ,SAAK,WAAW,IAAI,aAAa;AACjC,SAAK,SAAS,IAAI,aAAa;AAAA,EACjC;AAAA,EACA,UAAU,OAAO,OAAO,KAAK;AAC3B,QAAI,CAAC,KAAK,cAAe;AACzB,UAAM,SAAS,KAAK,kBAAkB,cAAc;AACpD,UAAM,QAAQ,KAAK,kBAAkB,cAAc;AACnD,UAAM,aAAa,KAAK,kBAAkB,cAAc;AACxD,QAAI,WAAW,CAAC;AAChB,QAAI,SAAS,UAAU,YAAY;AACjC,UAAI,MAAM,UAAU;AAClB,mBAAW,kBAAkB,CAAC,GAAG,KAAK,MAAM,OAAO,KAAK,WAAW,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA,MACtG,WAAW,MAAM,WAAW,MAAM,WAAW,cAAc,QAAQ;AACjE,mBAAW,WAAW,CAAC,GAAG,KAAK,QAAQ,GAAG,KAAK,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA,MAClF,OAAO;AACL,mBAAW,WAAW,CAAC,GAAG,KAAK,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA,MAClE;AAAA,IACF,OAAO;AACL,iBAAW,WAAW,CAAC,GAAG,KAAK,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA,IAClE;AACA,QAAI,OAAO,KAAK,gBAAgB,YAAY;AAC1C,iBAAW,SAAS,OAAO,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,IACxD;AACA,SAAK,SAAS,OAAO,GAAG,KAAK,SAAS,MAAM;AAC5C,SAAK,SAAS,KAAK,GAAG,QAAQ;AAC9B,SAAK,YAAY;AACjB,SAAK,OAAO,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,WAAW,OAAO,OAAO;AACvB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,KAAK,kBAAkB,cAAc;AACpD,UAAM,SAAS,CAAC,WAAW,SAAS,WAAW,SAAS,eAAe,UAAU,SAAS;AAC1F,QAAI,QAAQ;AACV,WAAK,UAAU,OAAO,OAAO,GAAG;AAAA,IAClC,WAAW,SAAS,WAAW;AAC7B,UAAI,MAAM,YAAY,KAAK,QAAQ;AACjC,aAAK,UAAU,OAAO,OAAO,GAAG;AAAA,MAClC,OAAO;AACL,aAAK,gBAAgB,KAAK;AAAA,MAC5B;AAAA,IACF;AACA,SAAK,SAAS,KAAK,KAAK;AAAA,EAC1B;AAAA,EACA,gBAAgB,OAAO;AACrB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,MAAM;AACV,UAAM,cAAc,YAAY,KAAK,MAAM,YAAY,KAAK,QAAQ,YAAY,KAAK,SAAS,YAAY,KAAK;AAC/G,QAAI,aAAa;AACf,YAAM,kBAAkB,KAAK,kBAAkB,cAAc;AAC7D,UAAI,CAAC,MAAM,eAAe,CAAC,iBAAiB;AAC1C,aAAK,SAAS,MAAM,YAAY,OAAO;AAAA,MACzC,WAAW,iBAAiB;AAC1B,aAAK,UAAU,MAAM,aAAa,MAAM,YAAY,SAAS,MAAM,SAAS;AAAA,MAC9E;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS,YAAY,SAAS;AAC5B,UAAM,iBAAiB,KAAK,eAAe,YAAY,OAAO;AAC9D,QAAI,eAAgB,gBAAe,MAAM;AAAA,EAC3C;AAAA,EACA,eAAe,YAAY,SAAS;AAClC,UAAM,gBAAgB,WAAW;AACjC,QAAI,eAAe;AACjB,UAAI;AACJ,UAAI,YAAY,KAAK,IAAI;AACvB,uBAAe,cAAc;AAAA,MAC/B,WAAW,YAAY,KAAK,MAAM;AAChC,uBAAe,cAAc;AAAA,MAC/B;AACA,UAAI,gBAAgB,aAAa,SAAS,QAAQ;AAChD,eAAO,aAAa,SAAS,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,aAAa,YAAY,SAAS,WAAW;AACrD,QAAI;AACJ,QAAI,YAAY,KAAK,MAAM;AACzB,wBAAkB,YAAY;AAAA,IAChC,WAAW,YAAY,KAAK,OAAO;AACjC,wBAAkB,YAAY;AAAA,IAChC,WAAW,YAAY,KAAK,MAAM,YAAY,KAAK,MAAM;AACvD,YAAM,iBAAiB,KAAK,eAAe,YAAY,OAAO;AAC9D,UAAI,gBAAgB;AAClB,cAAM,WAAW,eAAe,uBAAuB,qBAAqB;AAC5E,YAAI,SAAS,OAAQ,mBAAkB,SAAS,SAAS;AAAA,MAC3D;AAAA,IACF;AACA,QAAI,gBAAiB,iBAAgB,MAAM;AAAA,EAC7C;AAAA,EACA,eAAe,KAAK;AAClB,WAAO,KAAK,kBAAkB,KAAK,KAAK,QAAQ,IAAI;AAAA,EACtD;AAAA,EACA,kBAAkB,KAAK,UAAU;AAC/B,QAAI,CAAC,YAAY,CAAC,SAAS,OAAQ,QAAO;AAC1C,UAAM,QAAQ,KAAK,YAAY,GAAG;AAClC,WAAO,SAAS,UAAU,OAAK;AAC7B,YAAMC,MAAK,KAAK,YAAY,CAAC;AAC7B,aAAOA,QAAO;AAAA,IAChB,CAAC;AAAA,EACH;AACF;AACA,4BAA4B,YAAO,SAAS,oCAAoC,GAAG;AACjF,SAAO,KAAK,KAAK,6BAA6B;AAChD;AACA,4BAA4B,YAAsB,gBAAG,4BAAkB;AAAA,EACrE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,qBAAqB,CAAC;AAAA,EACnC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU,SAAS,qCAAqC,IAAI,KAAK;AAC/D,QAAI,KAAK,GAAG;AACV,MAAG,0BAAgB;AACnB,MAAG,uBAAa,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,6BAA6B,CAAC;AAAA,IACpG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAI;AAAA,CACH,SAAUC,gBAAe;AACxB,EAAAA,eAAc,KAAK,IAAI;AACvB,EAAAA,eAAc,MAAM,IAAI;AAC1B,GAAG,kBAAkB,gBAAgB,CAAC,EAAE;AACxC,IAAM,6BAAN,MAAiC;AAAA,EAC/B,YAAY,SAAS,IAAI;AACvB,SAAK,KAAK;AACV,SAAK,WAAW,IAAI,aAAa;AACjC,SAAK,aAAa,IAAI,aAAa;AACnC,SAAK,YAAY;AACjB,SAAK,qBAAqB,KAAK,iBAAiB,KAAK,IAAI;AACzD,SAAK,aAAa,KAAK,SAAS,KAAK,KAAK,KAAK,QAAQ;AACvD,SAAK,cAAc;AAAA,MACjB,oBAAoB,KAAK;AAAA,MACzB,YAAY,KAAK;AAAA,MACjB,KAAK,KAAK;AAAA,MACV,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,UAAU,KAAK;AAAA,MACf,YAAY,KAAK;AAAA,MACjB,cAAc,KAAK,aAAa,KAAK,IAAI;AAAA,IAC3C;AACA,SAAK,WAAW,QAAQ;AAAA,EAC1B;AAAA,EACA,IAAI,MAAM,OAAO;AACf,SAAK,SAAS;AACd,SAAK,YAAY,QAAQ;AACzB,SAAK,kBAAkB;AACvB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,UAAU,KAAK;AACjB,SAAK,aAAa;AAClB,SAAK,YAAY,YAAY;AAC7B,SAAK,kBAAkB;AACvB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,WAAW,KAAK;AAClB,SAAK,cAAc;AACnB,SAAK,YAAY,aAAa;AAC9B,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,SAAS,KAAK;AAChB,SAAK,YAAY;AACjB,SAAK,YAAY,WAAW;AAC5B,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,SAAS,KAAK;AAChB,SAAK,YAAY;AACjB,SAAK,YAAY,WAAW;AAC5B,SAAK,kBAAkB;AACvB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,OAAO,QAAQ;AACjB,SAAK,UAAU;AACf,SAAK,YAAY,SAAS;AAC1B,SAAK,kBAAkB;AACvB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,IAAI,KAAK;AACX,SAAK,OAAO;AACZ,SAAK,YAAY,MAAM;AACvB,SAAK,kBAAkB;AACvB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,MAAM;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,KAAK;AACb,SAAK,SAAS;AACd,SAAK,cAAc,KAAK,YAAY,GAAG;AAAA,EACzC;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,WAAW,QAAQ;AACrB,QAAI,WAAW,eAAe,WAAW,cAAc,WAAW,aAAa,WAAW,YAAY;AACpG,WAAK,cAAc;AAAA,IACrB,OAAO;AACL,WAAK,cAAc;AAAA,IACrB;AACA,SAAK,YAAY,aAAa,KAAK;AACnC,SAAK,kBAAkB;AACvB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,mBAAmB;AACrB,QAAI,MAAM;AACV,QAAI,KAAK,OAAO,WAAW;AACzB,UAAI,OAAO,KAAK,OAAO,cAAc,UAAU;AAC7C,eAAO,MAAM,KAAK,OAAO;AAAA,MAC3B,WAAW,OAAO,KAAK,OAAO,cAAc,YAAY;AACtD,cAAM,MAAM,KAAK,OAAO,UAAU;AAAA,UAChC,KAAK,KAAK;AAAA,UACV,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,WAAW,KAAK;AAAA,QAClB,CAAC;AACD,YAAI,OAAO,QAAQ,UAAU;AAC3B,iBAAO,MAAM;AAAA,QACf,WAAW,OAAO,QAAQ,UAAU;AAClC,gBAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,qBAAW,KAAK,MAAM;AACpB,gBAAI,IAAI,CAAC,MAAM,MAAM;AACnB,qBAAO,IAAI,CAAC;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,KAAK,SAAS;AACjB,aAAO;AAAA,IACT;AACA,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACT;AACA,QAAI,KAAK,YAAY,cAAc,KAAK;AACtC,aAAO;AAAA,IACT;AACA,QAAI,KAAK,YAAY,cAAc,MAAM;AACvC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,SAAS;AACX,UAAM,SAAS,KAAK;AACpB,QAAI,MAAM,MAAM,GAAG;AACjB,aAAO;AAAA,IACT;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EACA,YAAY;AACV,SAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,cAAc;AACZ,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,MAAM;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,oBAAoB;AAClB,QAAI,QAAQ;AACZ,QAAI,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ;AAC7B,cAAQ;AAAA,IACV,OAAO;AACL,YAAM,MAAM,KAAK,OAAO,cAAc,KAAK,KAAK,KAAK,OAAO,IAAI;AAChE,YAAM,WAAW,KAAK,OAAO;AAC7B,UAAI,UAAU;AACZ,gBAAQ,SAAS,UAAU,GAAG;AAAA,MAChC,WAAW,UAAU,QAAW;AAC9B,gBAAQ;AAAA,MACV;AAAA,IACF;AACA,QAAI,KAAK,UAAU,OAAO;AACxB,WAAK,QAAQ;AACb,WAAK,YAAY,QAAQ;AACzB,WAAK,iBAAiB,UAAU,QAAQ,UAAU,SAAY,KAAK,UAAU,KAAK,IAAI;AACtF,WAAK,GAAG,aAAa;AAAA,IACvB;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,SAAS;AACP,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,QAAQ,OAAO;AACb,SAAK,SAAS,KAAK;AAAA,MACjB,MAAM;AAAA,MACN;AAAA,MACA,KAAK,KAAK;AAAA,MACV,OAAO,KAAK;AAAA,MACZ,WAAW,KAAK;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,IACpB,CAAC;AAAA,EACH;AAAA,EACA,WAAW,OAAO;AAChB,SAAK,SAAS,KAAK;AAAA,MACjB,MAAM;AAAA,MACN;AAAA,MACA,KAAK,KAAK;AAAA,MACV,OAAO,KAAK;AAAA,MACZ,WAAW,KAAK;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,IACpB,CAAC;AAAA,EACH;AAAA,EACA,UAAU,OAAO;AACf,UAAM,UAAU,MAAM;AACtB,UAAM,eAAe,MAAM,WAAW,KAAK;AAC3C,UAAM,WAAW,YAAY,KAAK,UAAU,YAAY,KAAK,QAAQ,YAAY,KAAK,MAAM,YAAY,KAAK,QAAQ,YAAY,KAAK;AACtI,QAAI,YAAY,cAAc;AAC5B,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,SAAS,KAAK;AAAA,QACjB,MAAM;AAAA,QACN;AAAA,QACA,KAAK,KAAK;AAAA,QACV,OAAO,KAAK;AAAA,QACZ,WAAW,KAAK;AAAA,QAChB,QAAQ,KAAK;AAAA,QACb,OAAO,KAAK;AAAA,QACZ,aAAa,KAAK;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,iBAAiB,OAAO;AACtB,SAAK,SAAS,KAAK;AAAA,MACjB,MAAM;AAAA,MACN;AAAA,MACA,KAAK,KAAK;AAAA,MACV,OAAO,KAAK;AAAA,MACZ,WAAW,KAAK;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,YAAY,OAAO;AACjB,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AACA,UAAM,OAAO,MAAM,KAAK,OAAK;AAC3B,aAAO,EAAE,SAAS,KAAK,OAAO;AAAA,IAChC,CAAC;AACD,QAAI,MAAM;AACR,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU,MAAM;AACd,QAAI,CAAC,KAAK,SAAS;AACjB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,QAAQ,mBAAmB,EAAE;AAAA,EAC3C;AAAA,EACA,eAAe;AACb,SAAK,WAAW,KAAK,KAAK,GAAG;AAAA,EAC/B;AAAA,EACA,eAAe,QAAQ,KAAK;AAC1B,UAAM,cAAc,OAAO,mBAAmB,OAAO,OAAO,kBAAkB;AAC9E,WAAO,OAAO,eAAe,IAAI,QAAQ,cAAc;AAAA,EACzD;AACF;AACA,2BAA2B,YAAO,SAAS,mCAAmC,GAAG;AAC/E,SAAO,KAAK,KAAK,4BAA+B,4BAAqB,UAAU,GAAM,4BAAqB,iBAAiB,CAAC;AAC9H;AACA,2BAA2B,YAAsB,gBAAG,4BAAkB;AAAA,EACpE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,qBAAqB,CAAC;AAAA,EACnC,WAAW,SAAS,iCAAiC,IAAI,KAAK;AAC5D,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,KAAK,GAAG,gBAAgB;AAAA,IACzC;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,eAAe,GAAG;AAAA,IACrE;AAAA,EACF;AAAA,EACA,UAAU;AAAA,EACV,cAAc,SAAS,wCAAwC,IAAI,KAAK;AACtE,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,SAAS,SAAS,sDAAsD;AACpF,eAAO,IAAI,QAAQ;AAAA,MACrB,CAAC,EAAE,QAAQ,SAAS,qDAAqD;AACvE,eAAO,IAAI,OAAO;AAAA,MACpB,CAAC,EAAE,SAAS,SAAS,oDAAoD,QAAQ;AAC/E,eAAO,IAAI,QAAQ,MAAM;AAAA,MAC3B,CAAC,EAAE,YAAY,SAAS,uDAAuD,QAAQ;AACrF,eAAO,IAAI,WAAW,MAAM;AAAA,MAC9B,CAAC,EAAE,WAAW,SAAS,sDAAsD,QAAQ;AACnF,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,CAAC;AAAA,IACH;AACA,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,IAAI,gBAAgB;AAClC,MAAG,sBAAY,SAAS,IAAI,OAAO,IAAI,EAAE,aAAa,IAAI,UAAU,IAAI,EAAE,aAAa,IAAI,UAAU,IAAI,EAAE,UAAU,IAAI,MAAM;AAAA,IACjI;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,GAAG,2BAA2B,GAAG,CAAC,SAAS,sBAAsB,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,aAAa,GAAG,MAAM,GAAG,CAAC,GAAG,oBAAoB,GAAG,CAAC,QAAQ,YAAY,GAAG,SAAS,SAAS,GAAG,CAAC,SAAS,yBAAyB,GAAG,YAAY,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,yBAAyB,GAAG,SAAS,UAAU,GAAG,CAAC,SAAS,gCAAgC,GAAG,MAAM,GAAG,CAAC,SAAS,0BAA0B,GAAG,MAAM,GAAG,CAAC,SAAS,4BAA4B,GAAG,MAAM,GAAG,CAAC,GAAG,QAAQ,yBAAyB,GAAG,CAAC,GAAG,QAAQ,mBAAmB,GAAG,CAAC,GAAG,QAAQ,qBAAqB,GAAG,CAAC,GAAG,oBAAoB,yBAAyB,GAAG,CAAC,GAAG,SAAS,WAAW,CAAC;AAAA,EACxrB,UAAU,SAAS,oCAAoC,IAAI,KAAK;AAC9D,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,MAAG,qBAAW,GAAG,6CAA6C,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,oDAAoD,GAAG,GAAG,gBAAgB,CAAC,EAAE,GAAG,4CAA4C,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,uCAAuC,GAAG,GAAG,MAAM,CAAC;AACvR,MAAG,uBAAa;AAAA,IAClB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,eAAe,IAAI,eAAe,IAAI,QAAQ,IAAI,GAAG,GAAG,IAAI;AAC3E,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,OAAO,iBAAiB,CAAC,IAAI,gBAAgB,IAAI,aAAa,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE;AACxH,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,OAAO,YAAY;AAC7C,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,CAAC,IAAI,OAAO,YAAY;AAC9C,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,OAAO,YAAY;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,cAAc,CAAI,MAAS,gBAAgB;AAAA,EAC3C,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,4BAA4B,CAAC;AAAA,IACnG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,iBAAiB,wBAAwB;AAAA,MACzC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuCZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,KAAK,CAAC;AAAA,MACJ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,QACrB,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,CAAC,OAAO;AAAA,IAChB,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,IACzB,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,MACN,MAAM,CAAC,cAAc;AAAA,IACvB,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,MACN,MAAM,CAAC,OAAO;AAAA,IAChB,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,MACN,MAAM,CAAC,MAAM;AAAA,IACf,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,MACN,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAAA,IAC5B,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AAAA,IAC/B,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;AAAA,IAC9B,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,4BAAN,MAAgC;AAAA,EAC9B,YAAY,SAAS,iBAAiB,IAAI,SAAS;AACjD,SAAK,UAAU;AACf,SAAK,kBAAkB;AACvB,SAAK,KAAK;AACV,SAAK,aAAa;AAClB,SAAK,WAAW,IAAI,aAAa;AACjC,SAAK,aAAa,IAAI,aAAa;AACnC,SAAK,eAAe;AAAA,MAClB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,MACT,OAAO,CAAC;AAAA,IACV;AACA,SAAK,WAAW,QAAQ;AACxB,SAAK,aAAa,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO;AAAA,EAC5C;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,SAAK,WAAW;AAChB,SAAK,mBAAmB,GAAG;AAC3B,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,WAAW,KAAK;AAClB,QAAI,KAAK,UAAU;AACjB,YAAM,WAAW,aAAa,KAAK,QAAQ;AAC3C,WAAK,qBAAqB,kBAAkB,UAAU,KAAK,QAAQ;AAAA,IACrE;AACA,SAAK,cAAc;AACnB,SAAK,mBAAmB;AACxB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,SAAK,WAAW;AAChB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,WAAW;AACb,QAAI,MAAM;AACV,QAAI,KAAK,YAAY;AACnB,aAAO;AAAA,IACT;AACA,QAAI,KAAK,WAAW,MAAM,GAAG;AAC3B,aAAO;AAAA,IACT;AACA,QAAI,KAAK,WAAW,MAAM,GAAG;AAC3B,aAAO;AAAA,IACT;AACA,QAAI,KAAK,UAAU;AACjB,YAAM,MAAM,KAAK,SAAS,KAAK,GAAG;AAClC,UAAI,OAAO,QAAQ,UAAU;AAC3B,eAAO,IAAI,GAAG;AAAA,MAChB,WAAW,OAAO,QAAQ,UAAU;AAClC,cAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,mBAAW,KAAK,MAAM;AACpB,cAAI,IAAI,CAAC,MAAM,MAAM;AACnB,mBAAO,IAAI,CAAC;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EACA,YAAY;AACV,QAAI,KAAK,WAAW,KAAK,KAAK,GAAG,GAAG;AAClC,WAAK,GAAG,aAAa;AAAA,IACvB;AAAA,EACF;AAAA,EACA,cAAc,OAAO,UAAU;AAC7B,WAAO,SAAS;AAAA,EAClB;AAAA,EACA,iBAAiB,OAAO,QAAQ;AAC9B,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,qBAAqB;AACnB,SAAK,aAAa,OAAO,KAAK,kBAAkB,MAAM;AACtD,SAAK,aAAa,SAAS,KAAK,kBAAkB,QAAQ;AAC1D,SAAK,aAAa,QAAQ,KAAK,kBAAkB,OAAO;AACxD,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,kBAAkB,OAAO;AACvB,UAAM,SAAS,KAAK;AACpB,UAAM,UAAU,KAAK;AACrB,UAAM,SAAS;AAAA,MACb,OAAO,GAAG,OAAO,KAAK,CAAC;AAAA,IACzB;AACA,QAAI,UAAU,QAAQ;AACpB,kBAAY,QAAQ,SAAS,CAAC;AAAA,IAChC,WAAW,UAAU,SAAS;AAC5B,YAAM,YAAY,SAAS,KAAK,aAAa,IAAI,CAAC;AAClD,YAAM,YAAY,OAAO,QAAQ;AACjC,YAAM,aAAa,YAAY;AAC/B,YAAM,UAAU,aAAa,KAAK,gBAAgB,SAAS;AAC3D,kBAAY,QAAQ,QAAQ,CAAC;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EACA,WAAW,OAAO,OAAO;AACvB,UAAM,YAAY;AAClB,UAAM,aAAa,KAAK;AACxB,SAAK,SAAS,KAAK,KAAK;AAAA,EAC1B;AAAA,EACA,UAAU,OAAO;AACf,UAAM,UAAU,MAAM;AACtB,UAAM,cAAc,MAAM,WAAW,KAAK;AAC1C,UAAM,WAAW,YAAY,KAAK,UAAU,YAAY,KAAK,QAAQ,YAAY,KAAK,MAAM,YAAY,KAAK,QAAQ,YAAY,KAAK;AACtI,QAAI,YAAY,aAAa;AAC3B,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,SAAS,KAAK;AAAA,QACjB,MAAM;AAAA,QACN;AAAA,QACA,KAAK,KAAK;AAAA,QACV,YAAY,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,aAAa,OAAO;AAClB,SAAK,SAAS,KAAK;AAAA,MACjB,MAAM;AAAA,MACN;AAAA,MACA,KAAK,KAAK;AAAA,MACV,YAAY,KAAK;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EACA,mBAAmB,MAAM,KAAK,SAAS;AACrC,SAAK,WAAW;AAChB,UAAM,YAAY,aAAa,KAAK,QAAQ;AAC5C,SAAK,gBAAgB,gBAAgB,KAAK,QAAQ;AAClD,SAAK,qBAAqB,kBAAkB,WAAW,KAAK,QAAQ;AAAA,EACtE;AAAA,EACA,eAAe;AACb,SAAK,WAAW,KAAK;AAAA,EACvB;AACF;AACA,0BAA0B,YAAO,SAAS,kCAAkC,GAAG;AAC7E,SAAO,KAAK,KAAK,2BAA8B,4BAAqB,eAAe,GAAM,4BAAkB,iBAAiB,CAAC,GAAM,4BAAqB,iBAAiB,GAAM,4BAAqB,UAAU,CAAC;AACjN;AACA,0BAA0B,YAAsB,gBAAG,4BAAkB;AAAA,EACnE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,oBAAoB,CAAC;AAAA,EAClC,UAAU;AAAA,EACV,cAAc,SAAS,uCAAuC,IAAI,KAAK;AACrE,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,WAAW,SAAS,qDAAqD,QAAQ;AAC7F,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,CAAC,EAAE,cAAc,SAAS,wDAAwD,QAAQ;AACxF,eAAO,IAAI,aAAa,MAAM;AAAA,MAChC,CAAC;AAAA,IACH;AACA,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,IAAI,QAAQ;AAC1B,MAAG,sBAAY,UAAU,IAAI,WAAW,IAAI,EAAE,SAAS,IAAI,oBAAoB,IAAI;AAAA,IACrF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,GAAG,SAAS,WAAW,GAAG,SAAS,WAAW,cAAc,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,QAAQ,QAAQ,YAAY,MAAM,GAAG,OAAO,SAAS,YAAY,cAAc,YAAY,UAAU,aAAa,gBAAgB,cAAc,YAAY,cAAc,GAAG,SAAS,WAAW,cAAc,GAAG,CAAC,QAAQ,QAAQ,YAAY,MAAM,GAAG,YAAY,cAAc,OAAO,SAAS,YAAY,cAAc,YAAY,UAAU,aAAa,gBAAgB,YAAY,CAAC;AAAA,EACtd,UAAU,SAAS,mCAAmC,IAAI,KAAK;AAC7D,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,GAAG,0CAA0C,GAAG,GAAG,OAAO,CAAC;AAAA,IAC3E;AACA,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,WAAW,IAAI,aAAa,EAAE,gBAAgB,IAAI,aAAa;AAAA,IAC/E;AAAA,EACF;AAAA,EACA,cAAc,CAAC,4BAA+B,SAAY,OAAO;AAAA,EACjE,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,2BAA2B,CAAC;AAAA,IAClG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,iBAAiB,wBAAwB;AAAA,MACzC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAyBZ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,QACX,MAAM;AAAA,MACR,CAAC;AAAA,IACH,GAAG;AAAA,MACD,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,KAAK,CAAC;AAAA,MACJ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,OAAO;AAAA,IAChB,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,GAAG;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,IACzB,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;AAAA,IAC9B,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;AAAA,IACjC,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,SAAS,eAAe,OAAO;AAC7B,QAAM,kBAAkB,MAAM,OAAO,UAAQ,CAAC,CAAC,IAAI;AACnD,MAAI,CAAC,gBAAgB,QAAQ;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,KAAK,UAAQ,OAAO,SAAS,QAAQ,GAAG;AAC1D,WAAO;AAAA,EACT;AACA,SAAO,gBAAgB,OAAO,CAAC,KAAK,SAAS,MAAM,IAAI;AACzD;AACA,SAAS,YAAY,OAAO;AAC1B,SAAO;AACT;AACA,IAAM,+BAAN,MAAmC;AAAA,EACjC,cAAc;AACZ,SAAK,aAAa,CAAC;AAAA,EACrB;AAAA,EACA,cAAc;AACZ,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,MAAM;AAC/B;AAAA,IACF;AACA,SAAK,sBAAsB;AAC3B,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,wBAAwB;AACtB,SAAK,mBAAmB,KAAK,QAAQ,IAAI,SAAQ,iCAC5C,MAD4C;AAAA,MAE/C,cAAc,IAAI;AAAA,IACpB,EAAE;AAAA,EACJ;AAAA,EACA,eAAe;AACb,SAAK,aAAa,CAAC;AACnB,SAAK,QAAQ,OAAO,SAAO,CAAC,IAAI,eAAe,EAAE,QAAQ,SAAO;AAC9D,YAAM,wBAAwB,KAAK,KAAK,IAAI,SAAO,IAAI,IAAI,IAAI,CAAC;AAChE,YAAM,UAAU,KAAK,mBAAmB,GAAG;AAC3C,WAAK,WAAW,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,UAAU,QAAQ,qBAAqB,CAAC,IAAI,QAAQ,qBAAqB;AAAA,IAC3H,CAAC;AAAA,EACH;AAAA,EACA,mBAAmB,QAAQ;AACzB,QAAI,OAAO,gBAAgB,QAAW;AACpC,aAAO;AAAA,IACT,WAAW,OAAO,gBAAgB,MAAM;AACtC,aAAO;AAAA,IACT,OAAO;AACL,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACF;AACA,6BAA6B,YAAO,SAAS,qCAAqC,GAAG;AACnF,SAAO,KAAK,KAAK,8BAA8B;AACjD;AACA,6BAA6B,YAAsB,gBAAG,4BAAkB;AAAA,EACtE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,uBAAuB,CAAC;AAAA,EACrC,WAAW,CAAC,GAAG,uBAAuB;AAAA,EACtC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AAAA,EACA,UAAU,CAAI,8BAAoB;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,YAAY,MAAM,GAAG,cAAc,WAAW,WAAW,aAAa,OAAO,YAAY,GAAG,MAAM,GAAG,CAAC,YAAY,MAAM,GAAG,cAAc,WAAW,WAAW,aAAa,OAAO,UAAU,CAAC;AAAA,EACxM,UAAU,SAAS,sCAAsC,IAAI,KAAK;AAChE,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,GAAG,4DAA4D,GAAG,GAAG,sBAAsB,CAAC;AAAA,IAC5G;AACA,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,QAAQ,IAAI,cAAc,IAAI,gBAAgB;AAAA,IAC9D;AAAA,EACF;AAAA,EACA,cAAc,CAAC,2BAA8B,IAAI;AAAA,EACjD,eAAe;AACjB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,8BAA8B,CAAC;AAAA,IACrG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,+BAAN,MAAmC;AAAA,EACjC,YAAY,IAAI,SAAS;AACvB,SAAK,KAAK;AACV,SAAK,UAAU;AACf,SAAK,iBAAiB,IAAI,aAAa,KAAK;AAC5C,SAAK,YAAY;AACjB,SAAK,eAAe;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,IACjB;AACA,SAAK,aAAa;AAAA,MAChB,KAAK,KAAK;AAAA,MACV,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,IACjB;AACA,SAAK,YAAY,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO;AAAA,EAC3C;AAAA,EACA,IAAI,SAAS,KAAK;AAChB,SAAK,YAAY;AACjB,SAAK,WAAW,WAAW;AAC3B,SAAK,aAAa,WAAW;AAC7B,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,SAAS,KAAK;AAChB,SAAK,YAAY;AACjB,SAAK,aAAa,WAAW;AAC7B,SAAK,WAAW,WAAW;AAC3B,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,YAAY;AACV,QAAI,KAAK,UAAU,KAAK,KAAK,GAAG,GAAG;AACjC,WAAK,WAAW,MAAM,KAAK;AAC3B,WAAK,aAAa,QAAQ,KAAK;AAC/B,WAAK,GAAG,aAAa;AAAA,IACvB;AAAA,EACF;AAAA,EACA,cAAc,QAAQ;AACpB,SAAK,eAAe,KAAK;AAAA,MACvB,OAAO;AAAA,MACP,KAAK,KAAK;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB;AACpB,UAAM,SAAS,CAAC;AAChB,WAAO,WAAW,IAAI,iBAAiB,KAAK,UAAU;AACtD,WAAO,qBAAqB,IAAI;AAChC,WAAO,OAAO,IAAI,KAAK;AACvB,WAAO;AAAA,EACT;AACF;AACA,6BAA6B,YAAO,SAAS,qCAAqC,GAAG;AACnF,SAAO,KAAK,KAAK,8BAAiC,4BAAqB,iBAAiB,GAAM,4BAAqB,eAAe,CAAC;AACrI;AACA,6BAA6B,YAAsB,gBAAG,4BAAkB;AAAA,EACtE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,uBAAuB,CAAC;AAAA,EACrC,WAAW,CAAC,GAAG,uBAAuB;AAAA,EACtC,cAAc,SAAS,0CAA0C,IAAI,KAAK;AACxE,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,eAAe,SAAS,4DAA4D,QAAQ;AACxG,eAAO,IAAI,cAAc,MAAM;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,KAAK;AAAA,IACL,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,EAClB;AAAA,EACA,oBAAoB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,SAAS,0BAA0B,GAAG,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,wBAAwB,GAAG,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,0BAA0B,GAAG,SAAS,GAAG,CAAC,GAAG,oBAAoB,yBAAyB,GAAG,CAAC,GAAG,sBAAsB,CAAC;AAAA,EAC3Q,UAAU,SAAS,sCAAsC,IAAI,KAAK;AAChE,QAAI,KAAK,GAAG;AACV,MAAG,0BAAgB;AACnB,MAAG,qBAAW,GAAG,6CAA6C,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,oDAAoD,GAAG,GAAG,cAAc,CAAC,EAAE,GAAG,6CAA6C,GAAG,GAAG,OAAO,CAAC;AAAA,IAC5N;AACA,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,QAAQ,IAAI,eAAe,IAAI,YAAY,QAAQ;AACjE,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,eAAe,IAAI,YAAY,YAAY,IAAI,YAAY,CAAC,IAAI,eAAe,CAAC,IAAI,YAAY,QAAQ;AAClI,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,aAAa,IAAI,UAAU,YAAY,IAAI,QAAQ;AAAA,IAC/E;AAAA,EACF;AAAA,EACA,cAAc,CAAI,MAAS,SAAY,gBAAgB;AAAA,EACvD,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,8BAA8B,CAAC;AAAA,IACrG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,iBAAiB,wBAAwB;AAAA,MACzC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAwBV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,KAAK,CAAC;AAAA,MACJ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AAAA,IAClC,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,yBAAN,MAA6B;AAAA;AAAA;AAAA;AAAA,EAI3B,YAAY,IAAI;AACd,SAAK,KAAK;AACV,SAAK,WAAW,CAAC;AACjB,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,OAAO,IAAI,aAAa;AAC7B,SAAK,WAAW,IAAI,aAAa;AACjC,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,eAAe,IAAI,aAAa;AACrC,SAAK,iBAAiB,IAAI,aAAa,KAAK;AAC5C,SAAK,aAAa,IAAI,aAAa;AACnC,SAAK,kBAAkB,IAAI,eAAe;AAC1C,SAAK,OAAO,CAAC;AACb,SAAK,UAAU;AACf,SAAK,UAAU,CAAC;AAChB,SAAK,aAAa,oBAAI,QAAQ;AAC9B,SAAK,gBAAgB,CAAC;AAItB,SAAK,qBAAqB,CAAC,KAAK,UAAU;AACxC,UAAI,CAAC,KAAK,WAAW;AACnB,eAAO;AAAA,MACT;AACA,YAAM,YAAY,KAAK,UAAU;AACjC,aAAO,OAAO,cAAc,aAAa,UAAU,KAAK,KAAK,IAAI;AAAA,IACnE;AAEA,SAAK,gBAAgB,CAAC,OAAO,QAAQ;AACnC,YAAM,MAAM,KAAK,YAAY,GAAG;AAChC,UAAI,KAAK,aAAa;AACpB,eAAO,IAAI,KAAK,WAAW;AAAA,MAC7B,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,SAAS,KAAK;AAChB,SAAK,YAAY;AACjB,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,KAAK,KAAK;AACZ,SAAK,QAAQ;AACb,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,SAAK,WAAW;AAChB,UAAM,YAAY,aAAa,GAAG;AAClC,SAAK,oBAAoB,kBAAkB,WAAW,GAAG;AAAA,EAC3D;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,OAAO,KAAK;AACd,SAAK,UAAU;AACf,QAAI,CAAC,KAAK,cAAc,KAAK,cAAc,CAAC,KAAK,eAAgB,MAAK,aAAa;AAAA,EACrF;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,SAAS,KAAK;AAChB,SAAK,YAAY;AACjB,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,YAAY;AACd,QAAI,KAAK,YAAY;AACnB,aAAO,KAAK,aAAa;AAAA,IAC3B,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,IAAI,WAAW,KAAK;AAClB,QAAI,KAAK,YAAY;AACnB,WAAK,cAAc,MAAM;AAAA,IAC3B,OAAO;AACL,WAAK,cAAc;AAAA,IACrB;AACA,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,gBAAgB;AAClB,WAAO,CAAC,CAAC,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,eAAe;AACjB,QAAI,KAAK,cAAc,KAAK,kBAAkB,KAAK,UAAU;AAC3D,aAAO,KAAK,gBAAgB,MAAM,KAAK,WAAW,CAAC;AAAA,IACrD;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,QAAI,KAAK,WAAW;AAClB,WAAK,WAAW,KAAK,UAAU,OAAO,UAAU,CAAC;AAAA,QAC/C;AAAA,QACA;AAAA,MACF,MAAM;AACJ,YAAI,SAAS,OAAO;AAClB,eAAK,mBAAmB,KAAK;AAAA,QAC/B;AACA,YAAI,SAAS,OAAO;AAClB,eAAK,cAAc,KAAK;AAAA,QAC1B;AAGA,aAAK,cAAc;AACnB,aAAK,WAAW;AAChB,aAAK,GAAG,aAAa;AAAA,MACvB,CAAC;AAAA,IACH;AACA,QAAI,KAAK,aAAa;AACpB,WAAK,WAAW,KAAK,YAAY,OAAO,UAAU,CAAC;AAAA,QACjD;AAAA,QACA;AAAA,MACF,MAAM;AACJ,YAAI,SAAS,SAAS;AACpB,eAAK,mBAAmB,KAAK;AAAA,QAC/B;AACA,YAAI,SAAS,OAAO;AAClB,eAAK,cAAc,KAAK;AAAA,QAC1B;AAGA,aAAK,cAAc;AACnB,aAAK,WAAW;AAChB,aAAK,GAAG,aAAa;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc;AACZ,QAAI,KAAK,aAAa,KAAK,aAAa;AACtC,WAAK,SAAS,YAAY;AAAA,IAC5B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,QAAQ;AAEpB,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AACA,QAAI,KAAK,cAAc,KAAK,kBAAkB,QAAQ;AAEpD,YAAM,WAAW,KAAK,WAAW;AACjC,eAAS,KAAK,gBAAgB,MAAM,WAAW,CAAC;AAAA,IAClD,WAAW,KAAK,cAAc,CAAC,KAAK,gBAAgB;AAClD,eAAS;AAAA,IACX;AACA,SAAK,SAAS,UAAU,UAAU,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,OAAO;AAClB,UAAM,aAAa,MAAM;AACzB,UAAM,aAAa,MAAM;AAGzB,QAAI,KAAK,YAAY,cAAc,KAAK,YAAY,YAAY;AAC9D,WAAK,OAAO,KAAK;AAAA,QACf,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,WAAW,MAAM,SAAS;AAC/B,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,WAAW;AACpB,QAAI,SAAS,KAAK,QAAQ,QAAQ,KAAK;AACvC,QAAI,cAAc,MAAM;AACtB,eAAS,KAAK,KAAK,MAAM;AAAA,IAC3B,WAAW,cAAc,QAAQ;AAC/B,eAAS,KAAK,MAAM,MAAM;AAAA,IAC5B;AACA,QAAI,cAAc,UAAa,CAAC,MAAM,MAAM,GAAG;AAC7C,WAAK,KAAK,KAAK;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,QAAI,WAAW;AACf,QAAI,MAAM;AACV,UAAM,OAAO,CAAC;AAId,QAAI,KAAK,aAAa;AACpB,UAAI,kBAAkB;AAGtB,UAAI,KAAK,YAAY,WAAW,GAAG;AACjC,0BAAkB,KAAK,YAAY,CAAC,EAAE,MAAM;AAAA,MAC9C;AACA,aAAO,WAAW,QAAQ,WAAW,KAAK,YAAY,QAAQ;AAE5D,cAAM,QAAQ,KAAK,YAAY,QAAQ;AACvC,aAAK,WAAW,IAAI,OAAO,QAAQ;AACnC,YAAI,MAAM,OAAO;AAEf,gBAAM,MAAM,QAAQ,CAAC,GAAG,MAAM;AAC5B,kBAAM,OAAO,GAAG,QAAQ,IAAI,CAAC;AAC7B,iBAAK,WAAW,IAAI,GAAG,IAAI;AAAA,UAC7B,CAAC;AAAA,QACH;AACA,aAAK,GAAG,IAAI;AACZ;AAEA;AAAA,MACF;AAAA,IACF,OAAO;AACL,aAAO,WAAW,QAAQ,WAAW,KAAK,UAAU;AAClD,cAAM,MAAM,KAAK,KAAK,QAAQ;AAC9B,YAAI,KAAK;AAEP,eAAK,WAAW,IAAI,KAAK,QAAQ;AACjC,eAAK,GAAG,IAAI;AAAA,QACd;AACA;AACA;AAAA,MACF;AAAA,IACF;AACA,SAAK,OAAO;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,KAAK;AAEhB,QAAI,OAAO,KAAK,cAAc,YAAY;AACxC,aAAO,KAAK,UAAU,GAAG;AAAA,IAC3B;AACA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe,OAAO;AACpB,QAAI,YAAY;AAChB,QAAI,MAAM,OAAO;AACf,eAAS,QAAQ,GAAG,QAAQ,MAAM,MAAM,QAAQ,SAAS;AACvD,qBAAa,KAAK,sBAAsB,MAAM,MAAM,KAAK,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,sBAAsB,KAAK;AACzB,QAAI,YAAY,KAAK,aAAa,GAAG;AACrC,UAAM,WAAW,KAAK,eAAe,GAAG;AAExC,QAAI,UAAU;AACZ,mBAAa,KAAK,mBAAmB,GAAG;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,cAAc,MAAM;AAClB,UAAM,SAAS,CAAC;AAEhB,QAAI,KAAK,aAAa;AACpB,aAAO,QAAQ,KAAK,kBAAkB;AAAA,IACxC;AACA,QAAI,KAAK,cAAc,KAAK,gBAAgB;AAC1C,UAAI,MAAM;AACV,UAAI,KAAK,aAAa;AAEpB,cAAM,MAAM,KAAK,KAAK,SAAS,CAAC;AAChC,cAAM,MAAM,KAAK,YAAY,GAAG,IAAI;AAAA,MACtC,OAAO;AACL,cAAM,KAAK,YAAY,IAAI;AAAA,MAC7B;AAIA,YAAM,MAAM,KAAK,gBAAgB,MAAM,MAAM,CAAC;AAC9C,kBAAY,QAAQ,GAAG,GAAG;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,4BAA4B;AAC1B,QAAI,CAAC,KAAK,cAAc,CAAC,KAAK,QAAQ,CAAC,KAAK,KAAK,QAAQ;AACvD,aAAO;AAAA,IACT;AACA,UAAM,SAAS;AAAA,MACb,UAAU;AAAA,IACZ;AACA,UAAM,MAAM,KAAK,gBAAgB,MAAM,KAAK,KAAK,SAAS,CAAC;AAC3D,gBAAY,QAAQ,GAAG,GAAG;AAC1B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB;AACd,eAAW,MAAM,KAAK,mBAAmB,OAAO,GAAG;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB;AACd,QAAI,QAAQ;AACZ,QAAI,OAAO;AACX,QAAI,KAAK,YAAY;AACnB,UAAI,KAAK,gBAAgB;AAIvB,cAAM,SAAS,SAAS,KAAK,YAAY,CAAC;AAC1C,gBAAQ,KAAK,gBAAgB,YAAY,KAAK,OAAO;AACrD,eAAO,KAAK,gBAAgB,YAAY,SAAS,KAAK,OAAO,IAAI;AAAA,MACnE,OAAO;AAGL,gBAAQ;AACR,eAAO,KAAK;AAAA,MACd;AAAA,IACF,OAAO;AAGL,UAAI,CAAC,KAAK,gBAAgB;AACxB,gBAAQ,KAAK,IAAI,KAAK,SAAS,KAAK,UAAU,CAAC;AAAA,MACjD;AACA,aAAO,KAAK,IAAI,QAAQ,KAAK,UAAU,KAAK,QAAQ;AAAA,IACtD;AACA,SAAK,UAAU;AAAA,MACb;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,wBAAwB;AACtB,QAAI,CAAC,KAAK,cAAc,KAAK,cAAc,CAAC,KAAK,gBAAgB;AAC/D;AAAA,IACF;AAIA,SAAK,gBAAgB,WAAW;AAEhC,QAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ;AACjC,YAAM,gBAAgB,oBAAI,IAAI;AAC9B,iBAAW,OAAO,KAAK,MAAM;AAC3B,YAAI,KAAK,eAAe,GAAG,GAAG;AAC5B,wBAAc,IAAI,GAAG;AAAA,QACvB;AAAA,MACF;AACA,WAAK,gBAAgB,UAAU;AAAA,QAC7B,MAAM,KAAK;AAAA,QACX,WAAW,KAAK;AAAA,QAChB,iBAAiB,KAAK;AAAA,QACtB,iBAAiB,KAAK,cAAc,KAAK;AAAA,QACzC,UAAU,KAAK;AAAA,QACf,YAAY,KAAK;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,2BAA2B;AAIzB,UAAM,wBAAwB,KAAK,QAAQ;AAC3C,QAAI,KAAK,cAAc,KAAK,gBAAgB;AAC1C,YAAM,eAAe,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AACzE,aAAO,gBAAgB,KAAK,UAAU,wBAAwB,IAAI;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,mBAAmB,KAAK;AAEtB,UAAM,wBAAwB,KAAK,yBAAyB;AAC5D,UAAM,iBAAiB,KAAK,kBAAkB,KAAK,KAAK,aAAa;AACrE,UAAM,WAAW,iBAAiB;AAElC,QAAI,KAAK,cAAc,KAAK,gBAAgB;AAC1C,YAAM,kBAAkB,KAAK,mBAAmB,GAAG,KAAK,WAAW,KAAK;AAExE,YAAM,MAAM,KAAK,YAAY,GAAG;AAChC,WAAK,gBAAgB,OAAO,KAAK,eAAe;AAAA,IAClD;AAEA,QAAI,UAAU;AACZ,WAAK,cAAc,OAAO,gBAAgB,CAAC;AAAA,IAC7C,OAAO;AACL,WAAK,cAAc,KAAK,GAAG;AAAA,IAC7B;AACA,SAAK,aAAa,KAAK;AAAA,MACrB,MAAM,CAAC,GAAG;AAAA,MACV,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,UAAU;AAEtB,SAAK,gBAAgB,CAAC;AAEtB,UAAM,wBAAwB,KAAK,yBAAyB;AAC5D,QAAI,UAAU;AACZ,iBAAW,OAAO,KAAK,MAAM;AAC3B,aAAK,cAAc,KAAK,GAAG;AAAA,MAC7B;AAAA,IACF;AACA,QAAI,KAAK,YAAY;AAEnB,WAAK,aAAa;AAAA,IACpB;AAEA,SAAK,aAAa,KAAK;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe;AACb,SAAK,sBAAsB;AAC3B,SAAK,cAAc;AACnB,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB,OAAO,QAAQ;AAC9B,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,OAAO;AACnB,UAAM,SAAS,KAAK;AACpB,UAAM,UAAU,KAAK;AACrB,UAAM,SAAS;AAAA,MACb,OAAO,GAAG,OAAO,KAAK,CAAC;AAAA,IACzB;AACA,QAAI,UAAU,QAAQ;AACpB,kBAAY,QAAQ,SAAS,CAAC;AAAA,IAChC,WAAW,UAAU,SAAS;AAC5B,YAAM,YAAY,SAAS,KAAK,aAAa,IAAI,CAAC;AAClD,YAAM,YAAY,OAAO,QAAQ;AACjC,YAAM,aAAa,YAAY;AAC/B,YAAM,SAAS,aAAa;AAC5B,kBAAY,QAAQ,QAAQ,CAAC;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe,KAAK;AAClB,QAAI,KAAK,cAAc,WAAW,KAAK,KAAK,uBAAuB;AACjE,iBAAW,SAAS,KAAK,aAAa;AACpC,aAAK,cAAc,KAAK,KAAK;AAAA,MAC/B;AAAA,IACF;AACA,WAAO,KAAK,kBAAkB,KAAK,KAAK,aAAa,IAAI;AAAA,EAC3D;AAAA,EACA,kBAAkB,KAAK,UAAU;AAC/B,QAAI,CAAC,YAAY,CAAC,SAAS,OAAQ,QAAO;AAC1C,UAAM,QAAQ,KAAK,YAAY,GAAG;AAClC,WAAO,SAAS,UAAU,OAAK;AAC7B,YAAMD,MAAK,KAAK,YAAY,CAAC;AAC7B,aAAOA,QAAO;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,KAAK;AACf,WAAO,KAAK,WAAW,IAAI,GAAG,KAAK;AAAA,EACrC;AAAA,EACA,aAAa,KAAK;AAChB,SAAK,WAAW,KAAK;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AACA,uBAAuB,YAAO,SAAS,+BAA+B,GAAG;AACvE,SAAO,KAAK,KAAK,wBAA2B,4BAAqB,iBAAiB,CAAC;AACrF;AACA,uBAAuB,YAAsB,gBAAG,4BAAkB;AAAA,EAChE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,gBAAgB,CAAC;AAAA,EAC9B,WAAW,SAAS,6BAA6B,IAAI,KAAK;AACxD,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,mBAAmB,CAAC;AAAA,IACrC;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,WAAW,GAAG;AAAA,IACjE;AAAA,EACF;AAAA,EACA,WAAW,CAAC,GAAG,gBAAgB;AAAA,EAC/B,UAAU;AAAA,EACV,cAAc,SAAS,oCAAoC,IAAI,KAAK;AAClE,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,SAAS,IAAI,SAAS,EAAE,UAAU,IAAI,UAAU;AAAA,IACjE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,eAAe;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,uBAAuB;AAAA,IACvB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,UAAU,YAAY,YAAY,QAAQ,eAAe,iBAAiB,iBAAiB,aAAa,GAAG,CAAC,GAAG,cAAc,cAAc,gBAAgB,eAAe,UAAU,GAAG,MAAM,GAAG,CAAC,SAAS,aAAa,GAAG,aAAa,GAAG,MAAM,GAAG,CAAC,GAAG,UAAU,cAAc,cAAc,gBAAgB,aAAa,GAAG,CAAC,GAAG,aAAa,WAAW,cAAc,QAAQ,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,eAAe,cAAc,WAAW,aAAa,eAAe,WAAW,mBAAmB,OAAO,YAAY,YAAY,kBAAkB,GAAG,SAAS,WAAW,cAAc,GAAG,CAAC,QAAQ,OAAO,GAAG,WAAW,aAAa,WAAW,cAAc,QAAQ,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,aAAa,WAAW,cAAc,QAAQ,SAAS,GAAG,CAAC,GAAG,kBAAkB,eAAe,cAAc,WAAW,aAAa,eAAe,WAAW,mBAAmB,OAAO,YAAY,UAAU,GAAG,CAAC,QAAQ,OAAO,YAAY,MAAM,GAAG,cAAc,cAAc,WAAW,WAAW,aAAa,OAAO,YAAY,YAAY,YAAY,gBAAgB,cAAc,cAAc,YAAY,GAAG,QAAQ,UAAU,GAAG,CAAC,QAAQ,OAAO,YAAY,MAAM,GAAG,cAAc,YAAY,cAAc,cAAc,WAAW,WAAW,aAAa,OAAO,YAAY,YAAY,YAAY,gBAAgB,YAAY,GAAG,CAAC,QAAQ,OAAO,YAAY,MAAM,GAAG,cAAc,cAAc,WAAW,WAAW,aAAa,OAAO,SAAS,YAAY,YAAY,YAAY,YAAY,GAAG,SAAS,WAAW,cAAc,GAAG,CAAC,QAAQ,OAAO,YAAY,MAAM,GAAG,YAAY,cAAc,cAAc,WAAW,WAAW,aAAa,OAAO,SAAS,YAAY,YAAY,UAAU,GAAG,CAAC,QAAQ,OAAO,GAAG,WAAW,aAAa,WAAW,cAAc,QAAQ,SAAS,GAAG,CAAC,GAAG,aAAa,GAAG,WAAW,CAAC;AAAA,EACv1D,UAAU,SAAS,gCAAgC,IAAI,KAAK;AAC1D,QAAI,KAAK,GAAG;AACV,YAAM,MAAS,2BAAiB;AAChC,MAAG,qBAAW,GAAG,sDAAsD,GAAG,GAAG,sBAAsB,CAAC;AACpG,MAAG,yBAAe,GAAG,uBAAuB,GAAG,CAAC;AAChD,MAAG,qBAAW,UAAU,SAAS,sEAAsE,QAAQ;AAC7G,QAAG,wBAAc,GAAG;AACpB,eAAU,sBAAY,IAAI,OAAO,KAAK,MAAM,CAAC;AAAA,MAC/C,CAAC,EAAE,YAAY,SAAS,wEAAwE,QAAQ;AACtG,QAAG,wBAAc,GAAG;AACpB,eAAU,sBAAY,IAAI,SAAS,KAAK,MAAM,CAAC;AAAA,MACjD,CAAC;AACD,MAAG,qBAAW,GAAG,sDAAsD,GAAG,GAAG,sBAAsB,CAAC,EAAE,GAAG,uCAAuC,GAAG,GAAG,OAAO,CAAC;AAC9J,MAAG,uBAAa;AAAA,IAClB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,QAAQ,IAAI,gBAAgB;AAC1C,MAAG,oBAAU;AACb,MAAG,qBAAW,YAAY,IAAI,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,eAAe,IAAI,WAAW,EAAE,iBAAiB,IAAI,aAAa,EAAE,iBAAiB,IAAI,aAAa,EAAE,eAAe,IAAI,WAAW;AAChM,MAAG,oBAAU,CAAC;AACd,MAAG,qBAAW,QAAQ,IAAI,QAAQ,OAAO,OAAO,IAAI,KAAK,MAAM;AAC/D,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,EAAE,IAAI,QAAQ,OAAO,OAAO,IAAI,KAAK,WAAW,CAAC,IAAI,gBAAgB;AAAA,IAC7F;AAAA,EACF;AAAA,EACA,cAAc,CAAC,sBAAsB,6BAA6B,mBAAmB,8BAA8B,8BAA8B,2BAA8B,MAAS,SAAY,OAAO;AAAA,EAC3M,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,wBAAwB,CAAC;AAAA,IAC/F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkGV,iBAAiB,wBAAwB;AAAA,MACzC,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,uBAAuB,CAAC;AAAA,MACtB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,aAAa;AAAA,IACtB,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,GAAG;AAAA,MACD,MAAM;AAAA,MACN,MAAM,CAAC,cAAc;AAAA,IACvB,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAKH,SAAS,YAAY,UAAU,SAAS;AACtC,MAAI,aAAa,SAAS,QAAQ;AAChC,QAAI,YAAY,cAAc,KAAK;AACjC,aAAO,cAAc;AAAA,IACvB,OAAO;AACL,aAAO,cAAc;AAAA,IACvB;AAAA,EACF,OAAO;AACL,QAAI,CAAC,SAAS;AACZ,aAAO,cAAc;AAAA,IACvB,WAAW,YAAY,cAAc,KAAK;AACxC,aAAO,cAAc;AAAA,IACvB,WAAW,YAAY,cAAc,MAAM;AACzC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;AAKA,SAAS,kBAAkB,GAAG,GAAG;AAC/B,MAAI,MAAM,QAAQ,OAAO,MAAM,YAAa,KAAI;AAChD,MAAI,MAAM,QAAQ,OAAO,MAAM,YAAa,KAAI;AAChD,MAAI,aAAa,QAAQ,aAAa,MAAM;AAC1C,QAAI,IAAI,EAAG,QAAO;AAClB,QAAI,IAAI,EAAG,QAAO;AAAA,EACpB,WAAW,MAAM,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,MAAM,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;AAEvF,QAAI,OAAO,CAAC;AACZ,QAAI,OAAO,CAAC;AAEZ,QAAI,EAAE,YAAY,IAAI,EAAE,YAAY,EAAG,QAAO;AAC9C,QAAI,EAAE,YAAY,IAAI,EAAE,YAAY,EAAG,QAAO;AAAA,EAChD,OAAO;AAEL,QAAI,WAAW,CAAC,IAAI,WAAW,CAAC,EAAG,QAAO;AAC1C,QAAI,WAAW,CAAC,IAAI,WAAW,CAAC,EAAG,QAAO;AAAA,EAC5C;AAEA,SAAO;AACT;AAKA,SAAS,SAAS,MAAM,SAAS,MAAM;AACrC,MAAI,CAAC,KAAM,QAAO,CAAC;AACnB,MAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,QAAS,QAAO,CAAC,GAAG,IAAI;AAKtD,QAAM,gBAAgB,oBAAI,IAAI;AAC9B,OAAK,QAAQ,CAAC,KAAK,UAAU,cAAc,IAAI,KAAK,KAAK,CAAC;AAC1D,QAAM,OAAO,CAAC,GAAG,IAAI;AACrB,QAAM,OAAO,QAAQ,OAAO,CAAC,KAAK,QAAQ;AACxC,QAAI,IAAI,cAAc,OAAO,IAAI,eAAe,YAAY;AAC1D,UAAI,IAAI,IAAI,IAAI,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAGL,QAAM,aAAa,KAAK,IAAI,SAAO;AACjC,UAAM,OAAO,IAAI;AACjB,WAAO;AAAA,MACL;AAAA,MACA,KAAK,IAAI;AAAA,MACT,aAAa,cAAc,IAAI;AAAA,MAC/B,WAAW,KAAK,IAAI,KAAK;AAAA,IAC3B;AAAA,EACF,CAAC;AACD,SAAO,KAAK,KAAK,SAAU,MAAM,MAAM;AACrC,eAAW,aAAa,YAAY;AAElC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AAEJ,YAAM,QAAQ,YAAY,MAAM,IAAI;AACpC,YAAM,QAAQ,YAAY,MAAM,IAAI;AAQpC,YAAM,aAAa,UAAU,QAAQ,cAAc,OAAO,UAAU,UAAU,OAAO,OAAO,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,UAAU,OAAO,OAAO,MAAM,MAAM,UAAU,GAAG;AAErL,UAAI,eAAe,EAAG,QAAO;AAAA,IAC/B;AACA,QAAI,EAAE,cAAc,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,GAAI,QAAO;AAIlE,WAAO,cAAc,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,IAAI,KAAK;AAAA,EAClE,CAAC;AACH;AACA,IAAM,+BAAN,MAAmC;AAAA,EACjC,YAAY,IAAI;AACd,SAAK,KAAK;AACV,SAAK,OAAO,IAAI,aAAa;AAC7B,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,oBAAoB,IAAI,aAAa,KAAK;AAC/C,SAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AACnC,SAAK,WAAW,KAAK,OAAO,KAAK,KAAK,KAAK,MAAM;AACjD,SAAK,cAAc;AAAA,MACjB,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,iBAAiB,KAAK;AAAA,MACtB,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAAA,EACA,IAAI,gBAAgB,OAAO;AACzB,SAAK,mBAAmB;AACxB,SAAK,YAAY,kBAAkB;AAAA,EACrC;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,OAAO,QAAQ;AACjB,SAAK,UAAU;AACf,SAAK,YAAY,SAAS;AAC1B,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,KAAK;AACb,SAAK,SAAS;AACd,SAAK,UAAU,KAAK,YAAY,GAAG;AACnC,SAAK,YAAY,UAAU,KAAK;AAChC,SAAK,YAAY,KAAK,cAAc,KAAK,OAAO;AAChD,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,mBAAmB;AACrB,QAAI,MAAM;AACV,QAAI,KAAK,OAAO,SAAU,QAAO;AACjC,QAAI,KAAK,OAAO,WAAY,QAAO;AACnC,QAAI,KAAK,OAAO,aAAa;AAC3B,UAAI,OAAO,KAAK,OAAO,gBAAgB,UAAU;AAC/C,eAAO,MAAM,KAAK,OAAO;AAAA,MAC3B,WAAW,OAAO,KAAK,OAAO,gBAAgB,YAAY;AACxD,cAAM,MAAM,KAAK,OAAO,YAAY;AAAA,UAClC,QAAQ,KAAK;AAAA,QACf,CAAC;AACD,YAAI,OAAO,QAAQ,UAAU;AAC3B,iBAAO;AAAA,QACT,WAAW,OAAO,QAAQ,UAAU;AAClC,gBAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,qBAAW,KAAK,MAAM;AACpB,gBAAI,IAAI,CAAC,MAAM,KAAM,QAAO,IAAI,CAAC;AAAA,UACnC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,UAAM,UAAU,KAAK;AACrB,QAAI,SAAS;AACX,aAAO,qBAAqB,OAAO;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO;AAET,WAAO,KAAK,OAAO,mBAAmB,SAAY,KAAK,OAAO,OAAO;AAAA,EACvE;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO,KAAK,OAAO,gBAAgB,KAAK,OAAO,sBAAsB,KAAK,kBAAkB,cAAc;AAAA,EAC5G;AAAA,EACA,cAAc,QAAQ;AACpB,SAAK,kBAAkB,KAAK;AAAA,MAC1B,OAAO;AAAA,MACP,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,WAAW;AACT,SAAK,YAAY,KAAK,cAAc,KAAK,OAAO;AAAA,EAClD;AAAA,EACA,YAAY,OAAO;AACjB,QAAI,SAAS,KAAK,QAAQ;AACxB,YAAM,OAAO,MAAM,KAAK,OAAK;AAC3B,eAAO,EAAE,SAAS,KAAK,OAAO;AAAA,MAChC,CAAC;AACD,UAAI,KAAM,QAAO,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EACA,SAAS;AACP,QAAI,CAAC,KAAK,OAAO,SAAU;AAC3B,UAAM,WAAW,YAAY,KAAK,UAAU,KAAK,OAAO;AACxD,SAAK,KAAK,KAAK;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,cAAc,SAAS;AACrB,QAAI,CAAC,KAAK,YAAY,OAAO,SAAU;AACvC,QAAI,YAAY,cAAc,KAAK;AACjC,aAAO,qBAAqB,KAAK,iBAAiB;AAAA,IACpD,WAAW,YAAY,cAAc,MAAM;AACzC,aAAO,sBAAsB,KAAK,kBAAkB;AAAA,IACtD,OAAO;AACL,aAAO,YAAY,KAAK,aAAa;AAAA,IACvC;AAAA,EACF;AACF;AACA,6BAA6B,YAAO,SAAS,qCAAqC,GAAG;AACnF,SAAO,KAAK,KAAK,8BAAiC,4BAAqB,iBAAiB,CAAC;AAC3F;AACA,6BAA6B,YAAsB,gBAAG,4BAAkB;AAAA,EACtE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,uBAAuB,CAAC;AAAA,EACrC,WAAW,CAAC,GAAG,uBAAuB;AAAA,EACtC,UAAU;AAAA,EACV,cAAc,SAAS,0CAA0C,IAAI,KAAK;AACxE,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,eAAe,SAAS,4DAA4D,QAAQ;AACxG,eAAO,IAAI,cAAc,MAAM;AAAA,MACjC,CAAC;AAAA,IACH;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,SAAS,IAAI,IAAI;AAChC,MAAG,qBAAW,IAAI,gBAAgB;AAClC,MAAG,sBAAY,UAAU,IAAI,cAAc,IAAI,EAAE,aAAa,IAAI,UAAU,IAAI,EAAE,aAAa,IAAI,UAAU,IAAI,EAAE,SAAS,IAAI,OAAO,IAAI;AAAA,IAC7I;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,eAAe;AAAA,IACf,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,GAAG,qCAAqC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,sBAAsB,GAAG,MAAM,GAAG,CAAC,SAAS,iCAAiC,GAAG,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,oBAAoB,yBAAyB,GAAG,CAAC,GAAG,oBAAoB,GAAG,CAAC,QAAQ,YAAY,GAAG,UAAU,SAAS,GAAG,CAAC,GAAG,+BAA+B,GAAG,CAAC,GAAG,+BAA+B,aAAa,GAAG,SAAS,WAAW,CAAC;AAAA,EAC9Z,UAAU,SAAS,sCAAsC,IAAI,KAAK;AAChE,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,MAAG,qBAAW,GAAG,yCAAyC,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,+CAA+C,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,8CAA8C,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,yCAAyC,GAAG,GAAG,MAAM,CAAC;AACxQ,MAAG,yBAAe,GAAG,QAAQ,CAAC;AAC9B,MAAG,qBAAW,SAAS,SAAS,8DAA8D;AAC5F,eAAO,IAAI,OAAO;AAAA,MACpB,CAAC;AACD,MAAG,uBAAa,EAAE;AAAA,IACpB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,QAAQ;AAClC,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,cAAc;AACxC,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,CAAC,IAAI,OAAO,cAAc;AAChD,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,OAAO,cAAc;AAC/C,MAAG,oBAAU;AACb,MAAG,qBAAW,IAAI,SAAS;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,cAAc,CAAI,MAAS,gBAAgB;AAAA,EAC3C,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,8BAA8B,CAAC;AAAA,IACrG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAuBV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,sBAAsB,CAAC;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,GAAG;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,CAAC,OAAO;AAAA,IAChB,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,MACN,MAAM,CAAC,YAAY;AAAA,IACrB,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,IACzB,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AAAA,IAClC,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,2BAAN,MAA+B;AAAA,EAC7B,YAAY,IAAI;AACd,SAAK,KAAK;AACV,SAAK,OAAO,IAAI,aAAa;AAC7B,SAAK,UAAU,IAAI,aAAa;AAChC,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,oBAAoB,IAAI,aAAa,KAAK;AAC/C,SAAK,qBAAqB;AAAA,MACxB,OAAO;AAAA,IACT;AACA,SAAK,gBAAgB;AAAA,MACnB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,MACT,OAAO,CAAC;AAAA,IACV;AACA,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,IAAI,WAAW,KAAK;AAClB,SAAK,cAAc;AACnB,eAAW,MAAM;AACf,UAAI,KAAK,UAAU;AACjB,cAAM,WAAW,aAAa,KAAK,QAAQ;AAC3C,aAAK,qBAAqB,kBAAkB,UAAU,KAAK,QAAQ;AACnE,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,aAAa,KAAK;AACpB,QAAI,QAAQ,QAAQ;AAClB,WAAK,gBAAgB,GAAG,GAAG;AAAA,IAC7B,OAAO;AACL,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,SAAK,WAAW;AAChB,UAAM,YAAY,aAAa,GAAG;AAClC,SAAK,gBAAgB,gBAAgB,GAAG;AACxC,eAAW,MAAM;AACf,WAAK,qBAAqB,kBAAkB,WAAW,GAAG;AAC1D,WAAK,iBAAiB;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,SAAK,WAAW;AAChB,SAAK,iBAAiB;AAAA,EACxB;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EACA,cAAc;AACZ,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,IACf;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,WAAW;AACjB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,eAAe;AAAA,IACb;AAAA,IACA;AAAA,EACF,GAAG;AACD,SAAK,kBAAkB;AAGvB,eAAW,MAAM;AAGf,YAAM,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,SAAS,MAAM,IAAI;AAC5D,UAAI,QAAQ;AACV,eAAO,WAAW;AAAA,MACpB;AAAA,IACF,GAAG,CAAC;AAAA,EACN;AAAA,EACA,IAAI,cAAc;AAChB,QAAI,KAAK,YAAY;AACnB,aAAO,KAAK,aAAa;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc,OAAO,UAAU;AAC7B,WAAO,SAAS;AAAA,EAClB;AAAA,EACA,iBAAiB,OAAO,QAAQ;AAC9B,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,gBAAgB,OAAO,QAAQ;AAC7B,QAAI,SAAS,OAAO,UAAU;AAC5B,cAAQ,OAAO;AAAA,IACjB,WAAW,SAAS,OAAO,UAAU;AACnC,cAAQ,OAAO;AAAA,IACjB;AACA,SAAK,OAAO,KAAK;AAAA,MACf;AAAA,MACA,WAAW,OAAO;AAAA,MAClB,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,SAAS,KAAK,UAAU,QAAQ;AACtC,WAAO,WAAW;AAClB,WAAO,sBAAsB;AAC7B,SAAK,QAAQ,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EACA,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,QAAI,aAAa,cAAc,GAAG;AAChC,YAAM,YAAY,KAAK,UAAU,SAAS;AAC1C,gBAAU,WAAW;AACrB,gBAAU,sBAAsB;AAAA,IAClC;AACA,QAAI,YAAY,aAAa,GAAG;AAC9B,YAAM,YAAY,KAAK,UAAU,QAAQ;AACzC,gBAAU,WAAW;AACrB,UAAI,iBAAiB,UAAU;AAC7B,kBAAU,sBAAsB;AAAA,UAC9B,OAAO,gBAAgB,OAAO,eAAe,WAAW,kBAAkB,cAAc;AAAA,QAC1F;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,OAAO;AACf,UAAM,kBAAkB,KAAK,cAAc,CAAC,EAAE,QAAQ;AACtD,QAAI,QAAQ,iBAAiB;AAC3B,aAAO,KAAK,cAAc,CAAC,EAAE,QAAQ,KAAK;AAAA,IAC5C;AACA,UAAM,oBAAoB,KAAK,cAAc,CAAC,EAAE,QAAQ;AACxD,QAAI,QAAQ,kBAAkB,mBAAmB;AAC/C,aAAO,KAAK,cAAc,CAAC,EAAE,QAAQ,QAAQ,eAAe;AAAA,IAC9D;AACA,WAAO,KAAK,cAAc,CAAC,EAAE,QAAQ,QAAQ,kBAAkB,iBAAiB;AAAA,EAClF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AAED,QAAI,OAAO,UAAU;AACnB;AAAA,IACF;AACA,UAAM,QAAQ,KAAK,aAAa,QAAQ,WAAW,QAAQ;AAC3D,SAAK,KAAK,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,aAAa,QAAQ,WAAW,UAAU;AACxC,QAAI,MAAM;AACV,QAAI,CAAC,KAAK,OAAO;AACf,WAAK,QAAQ,CAAC;AAAA,IAChB;AACA,UAAM,QAAQ,KAAK,MAAM,IAAI,CAAC,GAAG,MAAM;AACrC,UAAI,mBACC;AAEL,UAAI,EAAE,SAAS,OAAO,MAAM;AAC1B,cAAM;AAAA,MACR;AACA,aAAO;AAAA,IACT,CAAC;AACD,QAAI,aAAa,QAAW;AAC1B,YAAM,OAAO,KAAK,CAAC;AAAA,IACrB,WAAW,WAAW;AACpB,YAAM,GAAG,EAAE,MAAM;AAAA,IACnB,OAAO;AACL,UAAI,KAAK,aAAa,SAAS,QAAQ;AACrC,cAAM,OAAO,GAAG,KAAK,MAAM,MAAM;AAAA,MACnC;AACA,YAAM,KAAK;AAAA,QACT,KAAK;AAAA,QACL,MAAM,OAAO;AAAA,MACf,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,SAAK,cAAc,OAAO,KAAK,kBAAkB,MAAM;AACvD,SAAK,cAAc,SAAS,KAAK,kBAAkB,QAAQ;AAC3D,SAAK,cAAc,QAAQ,KAAK,kBAAkB,OAAO;AACzD,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,GAAG,cAAc;AAAA,IACxB;AAAA,EACF;AAAA,EACA,kBAAkB,OAAO;AACvB,UAAM,SAAS,KAAK;AACpB,UAAM,UAAU,KAAK;AACrB,UAAM,SAAS;AAAA,MACb,OAAO,GAAG,OAAO,KAAK,CAAC;AAAA,IACzB;AACA,QAAI,UAAU,UAAU;AACtB,kBAAY,QAAQ,UAAU,IAAI,CAAC;AAAA,IACrC,WAAW,UAAU,SAAS;AAC5B,YAAM,YAAY,OAAO,QAAQ,KAAK;AACtC,YAAM,SAAS,YAAY;AAC3B,kBAAY,QAAQ,QAAQ,CAAC;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AACF;AACA,yBAAyB,YAAO,SAAS,iCAAiC,GAAG;AAC3E,SAAO,KAAK,KAAK,0BAA6B,4BAAqB,iBAAiB,CAAC;AACvF;AACA,yBAAyB,YAAsB,gBAAG,4BAAkB;AAAA,EAClE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,kBAAkB,CAAC;AAAA,EAChC,WAAW,CAAC,GAAG,kBAAkB;AAAA,EACjC,UAAU;AAAA,EACV,cAAc,SAAS,sCAAsC,IAAI,KAAK;AACpE,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,UAAU,IAAI,YAAY,EAAE,SAAS,IAAI,WAAW;AAAA,IACrE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,QAAQ,OAAO,aAAa,IAAI,GAAG,0BAA0B,GAAG,WAAW,eAAe,GAAG,CAAC,GAAG,SAAS,WAAW,GAAG,SAAS,WAAW,cAAc,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,QAAQ,gBAAgB,cAAc,IAAI,cAAc,IAAI,aAAa,IAAI,GAAG,iBAAiB,cAAc,gBAAgB,SAAS,SAAS,aAAa,mBAAmB,gBAAgB,YAAY,wBAAwB,uBAAuB,UAAU,YAAY,SAAS,iBAAiB,qBAAqB,sBAAsB,iBAAiB,mBAAmB,UAAU,kBAAkB,gBAAgB,QAAQ,UAAU,qBAAqB,GAAG,SAAS,WAAW,cAAc,GAAG,CAAC,QAAQ,gBAAgB,cAAc,IAAI,cAAc,IAAI,aAAa,IAAI,GAAG,UAAU,kBAAkB,gBAAgB,QAAQ,UAAU,qBAAqB,iBAAiB,cAAc,gBAAgB,SAAS,SAAS,aAAa,mBAAmB,gBAAgB,YAAY,wBAAwB,uBAAuB,UAAU,YAAY,SAAS,iBAAiB,qBAAqB,sBAAsB,iBAAiB,iBAAiB,CAAC;AAAA,EAC5nC,UAAU,SAAS,kCAAkC,IAAI,KAAK;AAC5D,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,MAAG,qBAAW,WAAW,SAAS,yDAAyD,QAAQ;AACjG,eAAO,IAAI,kBAAkB,MAAM;AAAA,MACrC,CAAC,EAAE,iBAAiB,SAAS,+DAA+D,QAAQ;AAClG,eAAO,IAAI,gBAAgB,MAAM;AAAA,MACnC,CAAC;AACD,MAAG,qBAAW,GAAG,yCAAyC,GAAG,GAAG,OAAO,CAAC;AACxE,MAAG,uBAAa;AAAA,IAClB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,SAAS,IAAI,mBAAmB,OAAO,IAAI;AAC1D,MAAG,oBAAU;AACb,MAAG,qBAAW,WAAW,IAAI,aAAa,EAAE,gBAAgB,IAAI,aAAa;AAAA,IAC/E;AAAA,EACF;AAAA,EACA,cAAc,CAAC,8BAA8B,oBAAuB,SAAY,SAAS,qBAAqB,oBAAoB,kBAAkB;AAAA,EACpJ,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,0BAA0B,CAAC;AAAA,IACjG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkDV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAS;AAAA,IACX,CAAC;AAAA,EACH,GAAG;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,sBAAsB,CAAC;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,cAAc;AAAA,IACvB,GAAG;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,aAAa;AAAA,IACtB,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAKH,SAAS,SAAS,MAAM,MAAM,SAAS;AACrC,YAAU,WAAW,CAAC;AACtB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,UAAU;AACd,MAAI,WAAW;AACf,WAAS,QAAQ;AACf,eAAW,QAAQ,YAAY,QAAQ,IAAI,CAAC,oBAAI,KAAK;AACrD,cAAU;AACV,aAAS,KAAK,MAAM,SAAS,IAAI;AAAA,EACnC;AACA,SAAO,WAAY;AACjB,UAAM,MAAM,CAAC,oBAAI,KAAK;AACtB,QAAI,CAAC,YAAY,QAAQ,YAAY,OAAO;AAC1C,iBAAW;AAAA,IACb;AACA,UAAM,YAAY,QAAQ,MAAM;AAChC,cAAU;AACV,WAAO;AACP,QAAI,aAAa,GAAG;AAClB,mBAAa,OAAO;AACpB,gBAAU;AACV,iBAAW;AACX,eAAS,KAAK,MAAM,SAAS,IAAI;AAAA,IACnC,WAAW,CAAC,WAAW,QAAQ,aAAa,OAAO;AACjD,gBAAU,WAAW,OAAO,SAAS;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AACF;AASA,SAAS,aAAa,UAAU,SAAS;AACvC,SAAO,SAAS,eAAe,QAAQ,KAAK,YAAY;AACtD,WAAO;AAAA,MACL,cAAc;AAAA,MACd,YAAY,WAAW;AAAA,MACvB,KAAK,SAAS,SAAS;AACrB,eAAO,eAAe,MAAM,KAAK;AAAA,UAC/B,cAAc;AAAA,UACd,YAAY,WAAW;AAAA,UACvB,OAAO,SAAS,WAAW,OAAO,UAAU,OAAO;AAAA,QACrD,CAAC;AACD,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACF;AAKA,SAAS,iBAAiB,SAAS;AACjC,MAAI,gBAAgB;AACpB,aAAW,KAAK,SAAS;AACvB,qBAAiB,EAAE,YAAY;AAAA,EACjC;AACA,SAAO;AACT;AAKA,SAAS,mBAAmB,YAAY,eAAe;AACrD,QAAM,eAAe,kBAAkB,UAAU;AACjD,QAAM,gBAAgB,iBAAiB,UAAU;AACjD,QAAM,cAAc,aAAa,UAAU;AAC3C,MAAI,iBAAiB,eAAe;AAClC,iBAAa,aAAa,eAAe,aAAa;AAAA,EACxD;AACF;AAIA,SAAS,aAAa,aAAa,UAAU,eAAe;AAE1D,aAAW,QAAQ,aAAa;AAC9B,eAAW,UAAU,YAAY,IAAI,GAAG;AACtC,UAAI,CAAC,OAAO,eAAe;AACzB,oBAAY,OAAO;AACnB,yBAAiB,OAAO,WAAW,OAAO,WAAW;AAAA,MACvD,OAAO;AACL,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACA,QAAM,cAAc,CAAC;AACrB,MAAI,iBAAiB;AAErB,KAAG;AACD,UAAM,oBAAoB,iBAAiB;AAC3C,qBAAiB;AACjB,eAAW,QAAQ,aAAa;AAC9B,iBAAW,UAAU,YAAY,IAAI,GAAG;AAEtC,YAAI,OAAO,iBAAiB,CAAC,YAAY,OAAO,IAAI,GAAG;AACrD,gBAAM,WAAW,OAAO,QAAQ,OAAO,WAAW;AAClD,cAAI,OAAO,aAAa,UAAa,WAAW,OAAO,UAAU;AAC/D,8BAAkB,WAAW,OAAO;AACpC,mBAAO,QAAQ,OAAO;AACtB,wBAAY,OAAO,IAAI,IAAI;AAAA,UAC7B,OAAO;AACL,mBAAO,QAAQ;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,mBAAmB;AAC9B;AAoBA,SAAS,sBAAsB,YAAY,eAAe,UAAU,YAAY,kBAAkB,KAAK;AACrG,QAAM,kBAAkB,WAAW,MAAM,WAAW,GAAG,WAAW,MAAM,EAAE,OAAO,OAAK;AACpF,WAAO,EAAE,kBAAkB;AAAA,EAC7B,CAAC;AACD,aAAW,UAAU,iBAAiB;AACpC,QAAI,CAAC,OAAO,YAAY;AACtB,aAAO,aAAa,OAAO;AAAA,IAC7B;AAAA,EACF;AACA,MAAI,yBAAyB;AAC7B,MAAI,gBAAgB;AACpB,MAAI,eAAe,gBAAgB,YAAY,eAAe;AAC9D,MAAI,iBAAiB,gBAAgB;AACrC,QAAM,mBAAmB,CAAC;AAC1B,QAAM,sBAAsB;AAE5B,KAAG;AACD,6BAAyB,iBAAiB,gBAAgB;AAC1D,oBAAgB,gBAAgB;AAChC,eAAW,UAAU,iBAAiB;AACpC,UAAI,iBAAiB,YAAY;AAC/B,eAAO,QAAQ,OAAO,cAAc,OAAO,SAAS;AAAA,MACtD,OAAO;AACL,cAAM,WAAW,OAAO,SAAS,mBAAmB;AACpD,YAAI,OAAO,YAAY,UAAU,OAAO,UAAU;AAChD,iBAAO,QAAQ,OAAO;AACtB,2BAAiB,KAAK,MAAM;AAAA,QAC9B,WAAW,OAAO,YAAY,UAAU,OAAO,UAAU;AACvD,iBAAO,QAAQ,OAAO;AACtB,2BAAiB,KAAK,MAAM;AAAA,QAC9B,OAAO;AACL,iBAAO,QAAQ;AAAA,QACjB;AAAA,MACF;AACA,aAAO,QAAQ,KAAK,IAAI,GAAG,OAAO,KAAK;AAAA,IACzC;AACA,mBAAe,gBAAgB,UAAU;AACzC,qBAAiB,gBAAgB;AACjC,2BAAuB,iBAAiB,gBAAgB;AAAA,EAC1D,SAAS,iBAAiB,uBAAuB,gBAAgB,WAAW;AAC9E;AAIA,SAAS,uBAAuB,iBAAiB,kBAAkB;AACjE,aAAW,UAAU,kBAAkB;AACrC,UAAM,QAAQ,gBAAgB,QAAQ,MAAM;AAC5C,oBAAgB,OAAO,OAAO,CAAC;AAAA,EACjC;AACF;AAIA,SAAS,gBAAgB,YAAY,kBAAkB,KAAK;AAC1D,MAAI,eAAe;AACnB,aAAW,UAAU,YAAY;AAC/B,oBAAgB,OAAO,SAAS;AAAA,EAClC;AACA,SAAO;AACT;AACA,IAAM,0BAAN,MAA8B;AAAA,EAC5B,cAAc;AACZ,SAAK,SAAS,IAAI,aAAa;AAC/B,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACf;AAAA,EACA,IAAI,KAAK,KAAK;AACZ,SAAK,QAAQ;AACb,SAAK,QAAQ,KAAK,UAAU;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,KAAK;AACb,SAAK,SAAS;AACd,SAAK,QAAQ,KAAK,UAAU;AAAA,EAC9B;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,KAAK,KAAK;AACZ,SAAK,QAAQ;AACb,SAAK,QAAQ,KAAK,UAAU;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,aAAa;AACf,UAAM,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,KAAK,QAAQ,KAAK,IAAI;AAClE,WAAO,KAAK,IAAI,SAAS,GAAG,CAAC;AAAA,EAC/B;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,UAAU;AACR,WAAO,KAAK,OAAO,KAAK;AAAA,EAC1B;AAAA,EACA,WAAW;AACT,SAAK,WAAW,KAAK,OAAO,CAAC;AAAA,EAC/B;AAAA,EACA,WAAW;AACT,SAAK,WAAW,KAAK,OAAO,CAAC;AAAA,EAC/B;AAAA,EACA,WAAW,MAAM;AACf,QAAI,OAAO,KAAK,QAAQ,KAAK,cAAc,SAAS,KAAK,MAAM;AAC7D,WAAK,OAAO;AACZ,WAAK,OAAO,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,UAAU,MAAM;AACd,UAAM,QAAQ,CAAC;AACf,QAAI,YAAY;AAChB,QAAI,UAAU,KAAK;AACnB,UAAM,UAAU;AAChB,UAAM,aAAa,UAAU,KAAK;AAClC,WAAO,QAAQ,KAAK;AACpB,QAAI,YAAY;AACd,kBAAY,OAAO,KAAK,MAAM,UAAU,CAAC;AACzC,gBAAU,OAAO,KAAK,MAAM,UAAU,CAAC;AACvC,UAAI,YAAY,GAAG;AACjB,oBAAY;AACZ,kBAAU,KAAK,IAAI,YAAY,UAAU,GAAG,KAAK,UAAU;AAAA,MAC7D,WAAW,UAAU,KAAK,YAAY;AACpC,oBAAY,KAAK,IAAI,KAAK,aAAa,UAAU,GAAG,CAAC;AACrD,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AACA,aAAS,MAAM,WAAW,OAAO,SAAS,OAAO;AAC/C,YAAM,KAAK;AAAA,QACT,QAAQ;AAAA,QACR,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;AACA,wBAAwB,YAAO,SAAS,gCAAgC,GAAG;AACzE,SAAO,KAAK,KAAK,yBAAyB;AAC5C;AACA,wBAAwB,YAAsB,gBAAG,4BAAkB;AAAA,EACjE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,iBAAiB,CAAC;AAAA,EAC/B,WAAW,CAAC,GAAG,iBAAiB;AAAA,EAChC,QAAQ;AAAA,IACN,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,QAAQ,UAAU,cAAc,oBAAoB,QAAQ,sBAAsB,GAAG,OAAO,GAAG,CAAC,QAAQ,UAAU,cAAc,uBAAuB,QAAQ,sBAAsB,GAAG,OAAO,GAAG,CAAC,QAAQ,UAAU,SAAS,SAAS,GAAG,UAAU,GAAG,SAAS,SAAS,GAAG,CAAC,QAAQ,UAAU,cAAc,mBAAmB,QAAQ,sBAAsB,GAAG,OAAO,GAAG,CAAC,QAAQ,UAAU,cAAc,mBAAmB,QAAQ,sBAAsB,GAAG,OAAO,GAAG,CAAC,QAAQ,UAAU,GAAG,OAAO,GAAG,CAAC,QAAQ,sBAAsB,GAAG,OAAO,CAAC;AAAA,EAC5iB,UAAU,SAAS,iCAAiC,IAAI,KAAK;AAC3D,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AAChD,MAAG,qBAAW,SAAS,SAAS,sDAAsD;AACpF,eAAO,IAAI,WAAW,CAAC;AAAA,MACzB,CAAC;AACD,MAAG,oBAAU,GAAG,GAAG;AACnB,MAAG,uBAAa,EAAE;AAClB,MAAG,yBAAe,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACpC,MAAG,qBAAW,SAAS,SAAS,sDAAsD;AACpF,eAAO,IAAI,SAAS;AAAA,MACtB,CAAC;AACD,MAAG,oBAAU,GAAG,GAAG;AACnB,MAAG,uBAAa,EAAE;AAClB,MAAG,qBAAW,GAAG,uCAAuC,GAAG,GAAG,MAAM,CAAC;AACrE,MAAG,yBAAe,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACpC,MAAG,qBAAW,SAAS,SAAS,sDAAsD;AACpF,eAAO,IAAI,SAAS;AAAA,MACtB,CAAC;AACD,MAAG,oBAAU,IAAI,GAAG;AACpB,MAAG,uBAAa,EAAE;AAClB,MAAG,yBAAe,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC;AACtC,MAAG,qBAAW,SAAS,SAAS,uDAAuD;AACrF,eAAO,IAAI,WAAW,IAAI,UAAU;AAAA,MACtC,CAAC;AACD,MAAG,oBAAU,IAAI,GAAG;AACpB,MAAG,uBAAa,EAAE,EAAE;AAAA,IACtB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,oBAAU;AACb,MAAG,sBAAY,YAAY,CAAC,IAAI,YAAY,CAAC;AAC7C,MAAG,oBAAU,CAAC;AACd,MAAG,qBAAW,IAAI,iBAAiB;AACnC,MAAG,oBAAU;AACb,MAAG,sBAAY,YAAY,CAAC,IAAI,YAAY,CAAC;AAC7C,MAAG,oBAAU,CAAC;AACd,MAAG,qBAAW,IAAI,kBAAkB;AACpC,MAAG,oBAAU;AACb,MAAG,qBAAW,WAAW,IAAI,KAAK;AAClC,MAAG,oBAAU;AACb,MAAG,sBAAY,YAAY,CAAC,IAAI,QAAQ,CAAC;AACzC,MAAG,oBAAU,CAAC;AACd,MAAG,qBAAW,IAAI,mBAAmB;AACrC,MAAG,oBAAU;AACb,MAAG,sBAAY,YAAY,CAAC,IAAI,QAAQ,CAAC;AACzC,MAAG,oBAAU,CAAC;AACd,MAAG,qBAAW,IAAI,aAAa;AAAA,IACjC;AAAA,EACF;AAAA,EACA,cAAc,CAAI,OAAO;AAAA,EACzB,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,yBAAyB,CAAC;AAAA,IAChG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmCV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,2BAAN,MAA+B;AAAA,EAC7B,cAAc;AACZ,SAAK,gBAAgB;AACrB,SAAK,OAAO,IAAI,aAAa;AAAA,EAC/B;AAAA,EACA,IAAI,YAAY;AACd,WAAO,KAAK,WAAW,KAAK,WAAW;AAAA,EACzC;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AACA,yBAAyB,YAAO,SAAS,iCAAiC,GAAG;AAC3E,SAAO,KAAK,KAAK,0BAA0B;AAC7C;AACA,yBAAyB,YAAsB,gBAAG,4BAAkB;AAAA,EAClE,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,kBAAkB,CAAC;AAAA,EAChC,WAAW,CAAC,GAAG,kBAAkB;AAAA,EACjC,QAAQ;AAAA,IACN,cAAc;AAAA,IACd,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,GAAG,0BAA0B,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,cAAc,GAAG,MAAM,GAAG,CAAC,GAAG,sBAAsB,uBAAuB,qBAAqB,iBAAiB,QAAQ,QAAQ,SAAS,UAAU,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,oBAAoB,yBAAyB,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,UAAU,sBAAsB,uBAAuB,qBAAqB,iBAAiB,QAAQ,QAAQ,SAAS,QAAQ,CAAC;AAAA,EACjc,UAAU,SAAS,kCAAkC,IAAI,KAAK;AAC5D,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,MAAG,qBAAW,GAAG,qCAAqC,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,yCAAyC,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,qDAAqD,GAAG,GAAG,mBAAmB,CAAC;AACnN,MAAG,uBAAa;AAAA,IAClB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,UAAU,IAAI,cAAc,IAAI;AAC/C,MAAG,qBAAW,WAAc,0BAAgB,GAAG,KAAK,IAAI,eAAe,CAAC;AACxE,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,cAAc;AACxC,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,CAAC,IAAI,cAAc;AACzC,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,CAAC,IAAI,cAAc;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,cAAc,CAAC,yBAA4B,SAAY,MAAS,gBAAgB;AAAA,EAChF,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,0BAA0B,CAAC;AAAA,IACjG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAqCV,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB,wBAAwB;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC,GAAG,MAAM;AAAA,IACR,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,qBAAN,MAAyB;AAAA,EACvB,YAAY,iBAAiB,kBAAkB,IAAI,SAAS,SAAS,sBAAsB,eAAe;AACxG,SAAK,kBAAkB;AACvB,SAAK,mBAAmB;AACxB,SAAK,KAAK;AACV,SAAK,uBAAuB;AAC5B,SAAK,gBAAgB;AAMrB,SAAK,WAAW,CAAC;AAIjB,SAAK,aAAa;AAIlB,SAAK,aAAa;AAKlB,SAAK,YAAY;AAKjB,SAAK,aAAa,WAAW;AAK7B,SAAK,eAAe;AAKpB,SAAK,eAAe;AAKpB,SAAK,iBAAiB;AAKtB,SAAK,kBAAkB;AAKvB,SAAK,mBAAmB;AAKxB,SAAK,cAAc;AAKnB,SAAK,cAAc;AAInB,SAAK,WAAW,SAAS;AAKzB,SAAK,QAAQ,CAAC;AAId,SAAK,aAAa;AAAA,MAChB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,WAAW;AAAA,IACb;AAQA,SAAK,WAAW;AAAA;AAAA;AAAA,MAGd,cAAc;AAAA;AAAA,MAEd,cAAc;AAAA;AAAA,MAEd,iBAAiB;AAAA,IACnB;AAMA,SAAK,wBAAwB;AAO7B,SAAK,sBAAsB;AAI3B,SAAK,iBAAiB;AAItB,SAAK,aAAa;AAIlB,SAAK,gBAAgB;AAIrB,SAAK,kBAAkB;AAIvB,SAAK,SAAS,IAAI,aAAa;AAI/B,SAAK,WAAW,IAAI,aAAa;AAIjC,SAAK,SAAS,IAAI,aAAa;AAI/B,SAAK,OAAO,IAAI,aAAa;AAI7B,SAAK,OAAO,IAAI,aAAa;AAI7B,SAAK,UAAU,IAAI,aAAa;AAIhC,SAAK,SAAS,IAAI,aAAa;AAM/B,SAAK,mBAAmB,IAAI,aAAa,KAAK;AAI9C,SAAK,aAAa,IAAI,aAAa;AACnC,SAAK,WAAW;AAChB,SAAK,WAAW,IAAI,gBAAgB,CAAC;AACrC,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,iBAAiB,CAAC;AAOvB,SAAK,cAAc,OAAK;AACtB,UAAI,KAAK,cAAc;AAGrB,eAAO,EAAE;AAAA,MACX,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAEA,SAAK,UAAU,QAAQ;AACvB,SAAK,YAAY,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO;AAEzC,QAAI,KAAK,iBAAiB,KAAK,cAAc,UAAU;AACrD,WAAK,WAAW,mBACX,KAAK,cAAc;AAAA,IAE1B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,KAAK,KAAK;AACZ,SAAK,QAAQ;AACb,QAAI,KAAK;AACP,WAAK,gBAAgB,CAAC,GAAG,GAAG;AAAA,IAC9B;AAEA,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,iBAAiB;AAAA,IACxB;AAEA,SAAK,gBAAgB,mBAAmB,KAAK,eAAe,sBAAsB,KAAK,gBAAgB,GAAG,sBAAsB,KAAK,cAAc,CAAC;AAEpJ,SAAK,YAAY;AACjB,QAAI,KAAK,SAAS,KAAK,cAAc;AAEnC,WAAK,cAAc,KAAK,aAAa,KAAK,OAAO,KAAK,YAAY;AAAA,IACpE;AACA,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,YAAY,KAAK;AACnB,QAAI,KAAK;AACP,WAAK,eAAe;AACpB,UAAI,KAAK,SAAS,KAAK,cAAc;AAEnC,aAAK,cAAc,KAAK,aAAa,KAAK,OAAO,KAAK,YAAY;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,QAAQ,KAAK;AACf,QAAI,KAAK;AACP,WAAK,mBAAmB,CAAC,GAAG,GAAG;AAC/B,wBAAkB,KAAK,gBAAgB;AACvC,WAAK,mBAAmB;AAAA,IAC1B;AACA,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAM,KAAK;AACb,SAAK,SAAS;AAEd,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAM,KAAK;AACb,SAAK,SAAS;AAEd,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAO,KAAK;AACd,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,IAAI,KAAK,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,WAAW,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,gBAAgB;AAClB,UAAM,eAAe,KAAK;AAC1B,WAAO,OAAO,iBAAiB,WAAW,iBAAiB,SAAS;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,aAAa;AACf,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,eAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,eAAe;AACjB,WAAO,KAAK,kBAAkB;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,sBAAsB;AACxB,WAAO,KAAK,kBAAkB,cAAc;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,kBAAkB;AACpB,WAAO,KAAK,kBAAkB,cAAc;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,oBAAoB;AACtB,WAAO,KAAK,kBAAkB,cAAc;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,mBAAmB;AACrB,WAAO,KAAK,kBAAkB,cAAc;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,wBAAwB;AAC1B,WAAO,KAAK,kBAAkB,cAAc;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,gBAAgB,KAAK;AACvB,SAAK,mBAAmB;AACxB,SAAK,iBAAiB,GAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,kBAAkB;AACpB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,kBAAkB;AACpB,QAAI,kBAAkB,KAAK,QAAQ,KAAK,YAAY,KAAK,SAAS,WAAW,KAAK,KAAK;AACvF,QAAI,KAAK,iBAAiB,KAAK,qBAAqB;AAClD,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,aAAa,QAAQ,OAAO,QAAQ;AAC1C,wBAAkB,KAAK,SAAS,WAAW;AAAA,IAC7C;AACA,WAAO,KAAK,YAAY,KAAK,QAAQ,KAAK,KAAK,WAAW,KAAK;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AAIT,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB;AAChB,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,iBAAiB;AAAA,IACxB;AAGA,QAAI,OAAO,0BAA0B,aAAa;AAChD;AAAA,IACF;AACA,0BAAsB,MAAM;AAC1B,WAAK,YAAY;AAEjB,UAAI,KAAK,kBAAkB,KAAK,YAAY;AAC1C,aAAK,KAAK,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,UAAU,KAAK;AAAA,UACf,OAAO,KAAK;AAAA,UACZ,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB;AACnB,SAAK,gBAAgB,QAAQ,UAAU,OAAK,KAAK,iBAAiB,CAAC,CAAC;AACpE,SAAK,4BAA4B;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB,KAAK;AACpB,QAAI,KAAK;AACP,YAAM,MAAM,IAAI,QAAQ;AACxB,UAAI,IAAI,QAAQ;AACd,aAAK,mBAAmB,mBAAmB,GAAG;AAC9C,0BAAkB,KAAK,gBAAgB;AACvC,aAAK,mBAAmB;AACxB,aAAK,iBAAiB;AACtB,aAAK,GAAG,aAAa;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eAAe,SAAS;AAEnC,UAAM,MAAM,oBAAI,IAAI;AACpB,QAAI,IAAI;AACR,kBAAc,QAAQ,UAAQ;AAC5B,YAAM,MAAM,KAAK,OAAO;AACxB,UAAI,CAAC,IAAI,IAAI,GAAG,GAAG;AACjB,YAAI,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA,MACrB,OAAO;AACL,YAAI,IAAI,GAAG,EAAE,KAAK,IAAI;AAAA,MACxB;AACA;AAAA,IACF,CAAC;AACD,UAAM,WAAW,CAAC,KAAK,UAAU;AAC/B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,KAAK,OAAK,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY;AACV,QAAI,KAAK,UAAU,KAAK,KAAK,IAAI,GAAG;AAClC,UAAI,CAAC,KAAK,iBAAiB;AACzB,aAAK,iBAAiB;AAAA,MACxB,OAAO;AACL,aAAK,gBAAgB,CAAC,GAAG,KAAK,IAAI;AAAA,MACpC;AAEA,WAAK,gBAAgB,mBAAmB,KAAK,eAAe,sBAAsB,KAAK,gBAAgB,GAAG,sBAAsB,KAAK,cAAc,CAAC;AACpJ,WAAK,iBAAiB;AACtB,WAAK,GAAG,aAAa;AAAA,IACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,cAAc;AACZ,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,SAAK,GAAG,aAAa;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB;AACf,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB,UAAU,KAAK,kBAAkB,WAAW,IAAI,aAAa,KAAK,YAAY;AAC/F,QAAI,CAAC,QAAS,QAAO;AACrB,QAAI,QAAQ,KAAK;AACjB,QAAI,KAAK,YAAY;AACnB,cAAQ,QAAQ,KAAK,gBAAgB;AAAA,IACvC;AACA,QAAI,KAAK,eAAe,WAAW,OAAO;AACxC,4BAAsB,SAAS,OAAO,UAAU,UAAU;AAAA,IAC5D,WAAW,KAAK,eAAe,WAAW,MAAM;AAC9C,yBAAmB,SAAS,KAAK;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB;AAChB,UAAM,OAAO,KAAK,iBAAiB,cAAc,KAAK,OAAO;AAC7D,SAAK,cAAc,KAAK,MAAM,KAAK,KAAK;AACxC,QAAI,KAAK,YAAY;AACnB,UAAI,SAAS,KAAK;AAClB,UAAI,KAAK,aAAc,UAAS,SAAS,KAAK;AAC9C,UAAI,KAAK,aAAc,UAAS,SAAS,KAAK;AAC9C,WAAK,aAAa;AAAA,IACpB;AACA,SAAK,iBAAiB;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAmB;AACjB,SAAK,WAAW,KAAK,aAAa;AAClC,SAAK,WAAW,KAAK,aAAa;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AAAA,IACT;AAAA,EACF,GAAG;AAID,QAAI,KAAK,kBAAkB,CAAC,KAAK,gBAAgB;AAC/C;AAAA,IACF;AACA,SAAK,SAAS;AACd,SAAK,KAAK,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,OAAO;AAClB,SAAK,SAAS,KAAK,MAAM,OAAO;AAChC,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,GAAG,cAAc;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,OAAO;AAClB,SAAK,SAAS,MAAM,OAAO;AAC3B,SAAK,cAAc,cAAc,KAAK,MAAM;AAC5C,SAAK,KAAK,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,IACf,CAAC;AACD,QAAI,KAAK,qBAAqB;AAC5B,WAAK,WAAW,CAAC;AACjB,WAAK,OAAO,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,MAAM,KAAK,MAAM;AAI5B,QAAI,KAAK,cAAc,KAAK,gBAAgB;AAC1C,YAAM,OAAO,KAAK,KAAK,KAAK,aAAa,KAAK,SAAS;AACvD,aAAO,KAAK,IAAI,MAAM,CAAC;AAAA,IACzB;AAEA,QAAI,KAAK,UAAU,QAAW;AAC5B,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,KAAK;AACP,aAAO,IAAI;AAAA,IACb;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,MAAM,KAAK,MAAM;AAC5B,QAAI,CAAC,KAAK,gBAAgB;AACxB,UAAI,CAAC,IAAK,QAAO;AACjB,UAAI,KAAK,aAAa;AACpB,eAAO,KAAK,YAAY;AAAA,MAC1B,WAAW,KAAK,oBAAoB,QAAQ,KAAK,kBAAkB,MAAM;AACvE,eAAO,KAAK,cAAc;AAAA,MAC5B,OAAO;AACL,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AACA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB;AAAA,IAClB;AAAA,IACA;AAAA,EACF,GAAG;AACD,SAAK,iBAAiB,KAAK;AAAA,MACzB;AAAA,MACA,MAAM,gBAAgB;AAAA,MACtB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB;AAAA,IACf;AAAA,IACA;AAAA,EACF,GAAG;AACD,SAAK,iBAAiB,KAAK;AAAA,MACzB;AAAA,MACA,MAAM,gBAAgB;AAAA,MACtB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe;AAAA,IACb;AAAA,IACA;AAAA,EACF,GAAG;AAED,QAAI,WAAW,QAAW;AACxB;AAAA,IACF;AACA,QAAI;AACJ,UAAM,OAAO,KAAK,iBAAiB,IAAI,CAAC,GAAG,MAAM;AAC/C,UAAI,mBACC;AAEL,UAAI,EAAE,SAAS,OAAO,MAAM;AAC1B,cAAM;AACN,UAAE,QAAQ;AAGV,UAAE,aAAa;AAAA,MACjB;AACA,aAAO;AAAA,IACT,CAAC;AACD,SAAK,mBAAmB,MAAM,GAAG;AACjC,SAAK,mBAAmB;AACxB,SAAK,OAAO,KAAK;AAAA,MACf;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,OAAO,KAAK,iBAAiB,IAAI,OAAK;AAC1C,aAAO,mBACF;AAAA,IAEP,CAAC;AACD,QAAI,KAAK,aAAa;AACpB,YAAM,UAAU,KAAK,QAAQ;AAC7B,WAAK,QAAQ,IAAI;AACjB,WAAK,SAAS,IAAI;AAAA,IACpB,OAAO;AACL,UAAI,WAAW,WAAW;AACxB,cAAM,WAAW,KAAK,SAAS;AAC/B,iBAAS,IAAI,WAAW,IAAI,UAAU,KAAK;AACzC,eAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAA,QACtB;AACA,aAAK,QAAQ,IAAI;AAAA,MACnB,OAAO;AACL,cAAM,WAAW,KAAK,SAAS;AAC/B,iBAAS,IAAI,WAAW,IAAI,UAAU,KAAK;AACzC,eAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAA,QACtB;AACA,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,IACF;AACA,SAAK,mBAAmB;AACxB,SAAK,QAAQ,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,OAAO;AAElB,QAAI,KAAK,qBAAqB;AAC5B,WAAK,WAAW,CAAC;AACjB,WAAK,OAAO,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AACA,SAAK,QAAQ,MAAM;AAGnB,QAAI,KAAK,oBAAoB,OAAO;AAElC,WAAK,iBAAiB;AAAA,IACxB;AAEA,SAAK,gBAAgB,mBAAmB,KAAK,eAAe,sBAAsB,KAAK,gBAAgB,GAAG,sBAAsB,KAAK,cAAc,CAAC;AAEpJ,SAAK,SAAS;AACd,SAAK,cAAc,cAAc,KAAK,MAAM;AAC5C,SAAK,KAAK,KAAK,KAAK;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe,OAAO;AACpB,QAAI,KAAK,iBAAiB,KAAK,qBAAqB;AAElD,YAAM,QAAQ,KAAK,cAAc,QAAQ;AACzC,YAAM,OAAO,KAAK,cAAc,QAAQ;AACxC,YAAM,cAAc,KAAK,SAAS,WAAW,OAAO;AAEpD,WAAK,WAAW,CAAC;AAEjB,UAAI,CAAC,aAAa;AAChB,aAAK,SAAS,KAAK,GAAG,KAAK,cAAc,MAAM,OAAO,IAAI,CAAC;AAAA,MAC7D;AAAA,IACF,OAAO;AAEL,YAAM,cAAc,KAAK,SAAS,WAAW,KAAK,KAAK;AAEvD,WAAK,WAAW,CAAC;AAEjB,UAAI,CAAC,aAAa;AAChB,aAAK,SAAS,KAAK,GAAG,KAAK,IAAI;AAAA,MACjC;AAAA,IACF;AACA,SAAK,OAAO,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,IACjB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,OAAO;AAClB,SAAK,OAAO,KAAK,KAAK;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,OAAO;AAClB,UAAM,MAAM,MAAM;AAElB,UAAM,WAAW,KAAK,MAAM,UAAU,OAAK,EAAE,KAAK,cAAc,MAAM,MAAM,IAAI,KAAK,cAAc,CAAC;AACpG,SAAK,WAAW,KAAK;AAAA,MACnB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,cAAc;AACZ,SAAK,eAAe,QAAQ,kBAAgB,aAAa,YAAY,CAAC;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,8BAA8B;AAC5B,SAAK,eAAe,KAAK,KAAK,qBAAqB,oBAAoB,UAAU,MAAM;AACrF,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgB,gBAAgB;AAAA,MACvC;AAAA,IACF,CAAC,CAAC;AAAA,EACJ;AAAA,EACA,mBAAmB;AACjB,SAAK,gBAAgB,SAAS,KAAK,eAAe,KAAK,kBAAkB,KAAK,KAAK;AAAA,EACrF;AACF;AACA,mBAAmB,YAAO,SAAS,2BAA2B,GAAG;AAC/D,SAAO,KAAK,KAAK,oBAAuB,4BAAkB,iBAAiB,CAAC,GAAM,4BAAkB,kBAAkB,CAAC,GAAM,4BAAqB,iBAAiB,GAAM,4BAAqB,UAAU,GAAM,4BAAqB,eAAe,GAAM,4BAAkB,oBAAoB,GAAM,4BAAkB,iBAAiB,CAAC,CAAC;AAC3U;AACA,mBAAmB,YAAsB,gBAAG,4BAAkB;AAAA,EAC5D,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,eAAe,CAAC;AAAA,EAC7B,gBAAgB,SAAS,kCAAkC,IAAI,KAAK,UAAU;AAC5E,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,UAAU,6BAA6B,CAAC;AAC1D,MAAG,yBAAe,UAAU,+BAA+B,CAAC;AAC5D,MAAG,yBAAe,UAAU,0BAA0B,CAAC;AACvD,MAAG,yBAAe,UAAU,0BAA0B,CAAC;AAAA,IACzD;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,YAAY,GAAG;AAChE,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,cAAc,GAAG;AAClE,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,SAAS,GAAG;AAC7D,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,kBAAkB;AAAA,IACrE;AAAA,EACF;AAAA,EACA,WAAW,SAAS,yBAAyB,IAAI,KAAK;AACpD,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,wBAAwB,CAAC;AACxC,MAAG,sBAAY,0BAA0B,CAAC;AAAA,IAC5C;AACA,QAAI,KAAK,GAAG;AACV,UAAI;AACJ,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,gBAAgB,GAAG;AACpE,MAAG,yBAAe,KAAQ,sBAAY,CAAC,MAAM,IAAI,kBAAkB,GAAG;AAAA,IACxE;AAAA,EACF;AAAA,EACA,WAAW,CAAC,GAAG,eAAe;AAAA,EAC9B,UAAU;AAAA,EACV,cAAc,SAAS,gCAAgC,IAAI,KAAK;AAC9D,QAAI,KAAK,GAAG;AACV,MAAG,qBAAW,UAAU,SAAS,+CAA+C;AAC9E,eAAO,IAAI,eAAe;AAAA,MAC5B,GAAG,OAAU,yBAAe;AAAA,IAC9B;AACA,QAAI,KAAK,GAAG;AACV,MAAG,sBAAY,gBAAgB,IAAI,aAAa,EAAE,aAAa,IAAI,UAAU,EAAE,mBAAmB,IAAI,YAAY,EAAE,eAAe,IAAI,aAAa,EAAE,eAAe,IAAI,WAAW,EAAE,cAAc,IAAI,YAAY,EAAE,sBAAsB,IAAI,mBAAmB,EAAE,kBAAkB,IAAI,eAAe,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,yBAAyB,IAAI,qBAAqB;AAAA,IACpb;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,sBAAsB;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,aAAa;AAAA,IACb,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,qBAAqB;AAAA,IACrB,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,CAAC,QAAQ,SAAS,sBAAsB,IAAI,GAAG,SAAS,GAAG,CAAC,QAAQ,YAAY,GAAG,SAAS,YAAY,cAAc,cAAc,WAAW,kBAAkB,WAAW,gBAAgB,eAAe,wBAAwB,qBAAqB,sBAAsB,iBAAiB,mBAAmB,iBAAiB,QAAQ,UAAU,WAAW,UAAU,qBAAqB,GAAG,MAAM,GAAG,CAAC,QAAQ,YAAY,GAAG,QAAQ,YAAY,kBAAkB,UAAU,UAAU,cAAc,eAAe,eAAe,QAAQ,yBAAyB,cAAc,cAAc,kBAAkB,oBAAoB,kBAAkB,aAAa,YAAY,UAAU,eAAe,WAAW,YAAY,WAAW,aAAa,eAAe,YAAY,cAAc,cAAc,iBAAiB,gBAAgB,eAAe,YAAY,eAAe,gBAAgB,cAAc,iBAAiB,iBAAiB,GAAG,CAAC,GAAG,YAAY,YAAY,UAAU,gBAAgB,kBAAkB,gBAAgB,sBAAsB,uBAAuB,qBAAqB,iBAAiB,mBAAmB,iBAAiB,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,YAAY,GAAG,QAAQ,UAAU,WAAW,UAAU,qBAAqB,SAAS,YAAY,cAAc,cAAc,WAAW,kBAAkB,WAAW,gBAAgB,eAAe,wBAAwB,qBAAqB,sBAAsB,iBAAiB,mBAAmB,eAAe,GAAG,CAAC,GAAG,QAAQ,YAAY,YAAY,UAAU,gBAAgB,kBAAkB,gBAAgB,sBAAsB,uBAAuB,qBAAqB,iBAAiB,mBAAmB,eAAe,CAAC;AAAA,EAC3qD,UAAU,SAAS,4BAA4B,IAAI,KAAK;AACtD,QAAI,KAAK,GAAG;AACV,MAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,MAAG,qBAAW,WAAW,SAAS,qDAAqD;AACrF,eAAO,IAAI,YAAY;AAAA,MACzB,CAAC;AACD,MAAG,qBAAW,GAAG,gDAAgD,GAAG,IAAI,oBAAoB,CAAC;AAC7F,MAAG,yBAAe,GAAG,kBAAkB,CAAC;AACxC,MAAG,iBAAO,GAAG,OAAO;AACpB,MAAG,qBAAW,QAAQ,SAAS,2DAA2D,QAAQ;AAChG,eAAO,IAAI,WAAW,MAAM;AAAA,MAC9B,CAAC,EAAE,YAAY,SAAS,+DAA+D,QAAQ;AAC7F,eAAO,IAAI,SAAS,KAAK,MAAM;AAAA,MACjC,CAAC,EAAE,kBAAkB,SAAS,qEAAqE,QAAQ;AACzG,eAAO,IAAI,iBAAiB,MAAM;AAAA,MACpC,CAAC,EAAE,UAAU,SAAS,6DAA6D,QAAQ;AACzF,eAAO,IAAI,aAAa,MAAM;AAAA,MAChC,CAAC,EAAE,UAAU,SAAS,6DAA6D,QAAQ;AACzF,eAAO,IAAI,aAAa,MAAM;AAAA,MAChC,CAAC,EAAE,cAAc,SAAS,iEAAiE,QAAQ;AACjG,eAAO,IAAI,aAAa,MAAM;AAAA,MAChC,CAAC;AACD,MAAG,uBAAa;AAChB,MAAG,qBAAW,GAAG,gDAAgD,GAAG,IAAI,oBAAoB,CAAC;AAC7F,MAAG,uBAAa;AAAA,IAClB;AACA,QAAI,KAAK,GAAG;AACV,MAAG,oBAAU;AACb,MAAG,qBAAW,QAAQ,IAAI,YAAY;AACtC,MAAG,oBAAU;AACb,MAAG,qBAAW,eAAe,IAAI,WAAW,EAAE,eAAe,IAAI,WAAW,EAAE,QAAQ,IAAI,aAAa,EAAE,yBAAyB,IAAI,qBAAqB,EAAE,cAAc,IAAI,UAAU,EAAE,cAAc,IAAI,UAAU,EAAE,kBAAkB,IAAI,cAAc,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,kBAAkB,IAAI,cAAc,EAAE,aAAa,IAAI,SAAS,EAAE,YAAY,IAAI,QAAQ,EAAE,UAAU,IAAI,MAAM,EAAE,eAAe,IAAI,WAAW,EAAE,WAAW,IAAI,gBAAgB,EAAE,YAAY,IAAI,QAAQ,EAAE,WAAc,sBAAY,GAAG,IAAI,IAAI,QAAQ,CAAC,EAAE,aAAa,IAAI,SAAS,EAAE,eAAe,IAAI,WAAW,EAAE,YAAY,IAAI,QAAQ,EAAE,cAAc,IAAI,WAAW,EAAE,cAAc,IAAI,UAAU,EAAE,iBAAiB,IAAI,aAAa,EAAE,gBAAgB,IAAI,SAAS,YAAY,EAAE,eAAe,IAAI,WAAW,EAAE,YAAY,IAAI,QAAQ,EAAE,eAAe,IAAI,WAAW,EAAE,gBAAgB,IAAI,YAAY,EAAE,cAAc,IAAI,UAAU,EAAE,iBAAiB,IAAI,aAAa,EAAE,mBAAmB,IAAI,eAAe;AAC5+B,MAAG,oBAAU,CAAC;AACd,MAAG,qBAAW,QAAQ,IAAI,YAAY;AAAA,IACxC;AAAA,EACF;AAAA,EACA,cAAc,CAAC,0BAA0B,wBAAwB,0BAA0B,qBAAwB,MAAS,SAAS;AAAA,EACrI,QAAQ,CAAC,onJAAonJ;AAAA,EAC7nJ,eAAe;AAAA,EACf,iBAAiB;AACnB,CAAC;AACD,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,mBAAmB,WAAW,kBAAkB,IAAI;AAAA,CACjF,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,oBAAoB,CAAC;AAAA,IAC3F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,iBAAiB,wBAAwB;AAAA,MACzC,eAAe,oBAAkB;AAAA,MACjC,MAAM;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,MACV,QAAQ,CAAC,onJAAonJ;AAAA,IAC/nJ,CAAC;AAAA,EACH,CAAC,GAAG,WAAY;AACd,WAAO,CAAC;AAAA,MACN,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,QACX,MAAM;AAAA,MACR,CAAC;AAAA,IACH,GAAG;AAAA,MACD,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,QACX,MAAM;AAAA,MACR,CAAC;AAAA,IACH,GAAG;AAAA,MACD,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAM;AAAA,IACR,GAAG;AAAA,MACD,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,QACX,MAAM;AAAA,MACR,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM,CAAC,eAAe;AAAA,MACxB,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG;AAAA,IACD,sBAAsB,CAAC;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,IACD,uBAAuB,CAAC;AAAA,MACtB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,CAAC;AAAA,MACL,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,IACR,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,oBAAoB;AAAA,IAC7B,CAAC;AAAA,IACD,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,IAC1B,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,uBAAuB;AAAA,IAChC,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,IACD,cAAc,CAAC;AAAA,MACb,MAAM;AAAA,MACN,MAAM,CAAC,kBAAkB;AAAA,IAC3B,CAAC;AAAA,IACD,qBAAqB,CAAC;AAAA,MACpB,MAAM;AAAA,MACN,MAAM,CAAC,0BAA0B;AAAA,IACnC,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,MACN,MAAM,CAAC,sBAAsB;AAAA,IAC/B,CAAC;AAAA,IACD,mBAAmB,CAAC;AAAA,MAClB,MAAM;AAAA,MACN,MAAM,CAAC,wBAAwB;AAAA,IACjC,CAAC;AAAA,IACD,kBAAkB,CAAC;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,CAAC,uBAAuB;AAAA,IAChC,CAAC;AAAA,IACD,uBAAuB,CAAC;AAAA,MACtB,MAAM;AAAA,MACN,MAAM,CAAC,6BAA6B;AAAA,IACtC,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,MACN,MAAM,CAAC,wBAAwB;AAAA,IACjC,CAAC;AAAA,IACD,WAAW,CAAC;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC,2BAA2B;AAAA,IACpC,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,CAAC,6BAA6B;AAAA,IACtC,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,MACN,MAAM,CAAC,wBAAwB;AAAA,IACjC,CAAC;AAAA,IACD,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,MACN,MAAM,CAAC,sBAAsB;AAAA,IAC/B,CAAC;AAAA,IACD,iBAAiB,CAAC;AAAA,MAChB,MAAM;AAAA,MACN,MAAM,CAAC,wBAAwB;AAAA,IACjC,CAAC;AAAA,IACD,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,gBAAgB,CAAC;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,eAAe;AAAA,IACxB,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,qBAAN,MAAM,oBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvB,OAAO,QAAQ,eAAe;AAC5B,WAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW,CAAC;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AACF;AACA,mBAAmB,YAAO,SAAS,2BAA2B,GAAG;AAC/D,SAAO,KAAK,KAAK,oBAAoB;AACvC;AACA,mBAAmB,YAAsB,gBAAG,2BAAiB;AAAA,EAC3D,MAAM;AACR,CAAC;AACD,mBAAmB,YAAsB,gBAAG,2BAAiB;AAAA,EAC3D,WAAW,CAAC,iBAAiB,kBAAkB,oBAAoB;AAAA,EACnE,SAAS,CAAC,CAAC,YAAY,CAAC;AAC1B,CAAC;AAAA,CACA,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,oBAAoB,CAAC;AAAA,IAC3F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,SAAS,CAAC,YAAY;AAAA,MACtB,WAAW,CAAC,iBAAiB,kBAAkB,oBAAoB;AAAA,MACnE,cAAc,CAAC,kCAAkC,qBAAqB,oBAAoB,qBAAqB,oBAAoB,oBAAoB,mBAAmB,oBAAoB,0BAA0B,0BAA0B,8BAA8B,wBAAwB,0BAA0B,yBAAyB,sBAAsB,2BAA2B,8BAA8B,6BAA6B,+BAA+B,qCAAqC,4BAA4B,6BAA6B,gCAAgC,8BAA8B,+BAA+B,0BAA0B,uCAAuC,4BAA4B;AAAA,MAC9vB,SAAS,CAAC,oBAAoB,6BAA6B,+BAA+B,qCAAqC,0BAA0B,gCAAgC,8BAA8B,+BAA+B,kCAAkC,0BAA0B,yBAAyB,qCAAqC;AAAA,IAClX,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,IAAI;AAAA,CACH,SAAUE,YAAW;AACpB,EAAAA,WAAU,QAAQ,IAAI;AACtB,EAAAA,WAAU,QAAQ,IAAI;AACxB,GAAG,cAAc,YAAY,CAAC,EAAE;AAChC,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,mBAAmB;AAClE,WAAS,oBAAoB;AAC/B;AASA,SAAS,kBAAkB,GAAG,GAAG;AAC/B,QAAM,WAAW,CAAC;AAClB,QAAM,wBAAwB,CAAC;AAC/B,MAAI;AACJ,MAAI;AACJ,MAAI;AAGJ,UAAQ,UAAU,SAAS,iBAAiB,GAAG,CAAC,MAAM,SAAS,QAAQ,OAAO,MAAM,MAAM,WAAW,MAAM;AAEzG,aAAS,KAAK,OAAO;AACrB,0BAAsB,KAAK;AAAA,MACzB,OAAO,QAAQ,MAAM,iBAAiB,gBAAgB;AAAA,MACtD,UAAU,QAAQ,MAAM,oBAAoB,gBAAgB;AAAA,IAC9D,CAAC;AAED,YAAQ,MAAM,YAAY,kBAAkB,QAAQ,WAAW;AAAA,EACjE;AAEA,OAAK,IAAI,sBAAsB,QAAQ,IAAI,sBAAsB,EAAE,CAAC,KAAI;AACtE,aAAS,CAAC,EAAE,MAAM,YAAY,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,QAAQ;AAAA,EACpF;AAEA,SAAO;AACT;","names":["document","ColumnMode","SelectionType","SortType","ContextmenuType","Keys","id","SortDirection","ClickType"],"x_google_ignoreList":[0]}